to   (Translation provided by Digital Altavista)

Mike's Whiteboard (Wishlist)

I've finally come to the conclusion that my brain will not stop producing ideas just because I have no more spare time. To the end of getting some of those ideas out of my feeble mind, I have created this page. Here I will list many of the concepts I have aswell as simple rants and vague project ideas as they come to me. Feel free to use these ideas, I hereby place them, as they stand here, under the GPL, if that is indeed possible.

Categorical List


The X system is very powerful and extensible, but I'd love to see a few refinements in it and related apps:

Per-user config

I want to be able to have a ~/.xfree86.conf file to be able to have per-user resolution options, etc. for each user on an XFree86 system.

PnP support

Evidently monitors can report data about their capabilities; Windows has been doing it for some time. If Windows can do it, so can we, right? Well, where's my PnP monitor software to give me an appropriate X configuration based on my monitor's capabilities?


I'd love to have a better backgrounds configuration program. The old configuration tool at least allowed you to specify a background with an overlaid image, something sadly lacking in the new GUI configure program. That said, I'm being picky because I don't know of any other window managers that let you do this in the first place (great memory saver).

I'm sure everyone's thought this one -- a good configuration tool for themes. It should be a nice looking interface to associate (drag'n'drop?) images with specific areas of a window's borders, etc. Ditto for GTK+ BTW.


If you aren't familiar with epplets, visit the following: Sample epplets

Home X terminals

This isn't an application project idea but more a marketing issue. I think it would be great if some Linux-focussed hardware companies started marketing home X terminals and server machines. A typical PC sold today is more than sufficient as a household server box (running the X client applications) and there are a dearth of <$800 machines available that would make great X servers. Configure a home client-server system so that the household could add any number of additional X terminals at a later time (via wireless networking, etc.).

Bill Gates & Company keep talking about PCs and appliance computers -- we have that reality right now with standard Linux boxes, properly configured. Let's make it a reality that a person can come home and turn on their TV-connected PC (connected to the home server) and run the apps they were using from the office while having their kids use the same server from their room on their inexpensive terminal box for playing games. Each terminal can have sound cards or video cards as per the demands of each machine but not need any significant amount of CPU, memory or disk capacity.


XOSVIEW in action GKrellM in action (Original note:) I would like to have a nice epplet version of xosview which even in its customized form (as shown to the right) doesn't quite please me as much as a themed epplet would.

It would be nice if it were possible, as with the stats bar in Nuts & Bolts Deluxe to customise individual widgets for each stat being collected ... whether to be eventually merged to appear as one conglomerate or to be shown randomly around the screen. A dial here, a percentage there, a flowing history graph in the other corner ...
Note:Epplets do this.

That said, I've just recently discovered GKrellM (shown to the right) and have decided that it will replace xosview for the foreseable future. I would like customisation of the colours and the mount applets are pretty ugly, but its a good use of screen real estate. One note: I want to collect statistics on the disk activity on my hard drives seperately, not just all together. Individual hard drive selection is a Good Idea(TM). Also, a better separation of types of memory and CPU use would be nice (as xosview does).

Reasons I would still like this in epplet form: I think that as individual epplets, these graphs, etc. could be displaced on the screen separately and the whole would be much nicer to configure. Of course, a proper use of shared memory, etc. by the epplet library is necessary to make this efficient, but I don't see why it would be to difficult to achieve.


Another Epplet I would love to have is a list of the top running processes by name in a multi column format (configurable). Personally, I would have it sort by CPU usage


XV sampleI'd like a Gnome-ized version of XV. It shouldn't be too hard to take XV and simply replace its GUI with GTK+ widgets, but it's not my ballpark. I just want it to look uniform with the rest of my desktop. Besides, it could be an autoconf option (./configure --with-gnome ... maybe even autodetected).

In fact, for the most part the XV main window is already packed in a GTKish type of a way. That looks to me like a VBOX packed with a top HBOX for those buttons), a middle HBOX (for a scrolling file list and a VBOX of buttons), and a bottom HBOX (for the remaining buttons). Those buttons sections would of course be divided up into a couple HBOXes and then packed, but you get the idea. The "480x270 ..." information would of course be relegated to the status bar.

Font selection

It would be nice to have a quick little GTK+ program that allowed you to type arbitrary text (at the bottom of the dialog) and then select several fonts from a drop-down list to preview that text in. The selection list should somehow preview the font as well.

Font preview dialog
  • Arial *
  • Times *
  • Courier
  • Arbitrary String [Arial]
  • Arbitrary String [Times]
  • Enter string: "Arbitrary String"

    Screen captures

    A command-line capturing program that just takes "xscreencap --all screen.jpg" and exports it to the file.

    In case you're wondering, those screenshots are mostly taken while running the Enlightenment window manager. Themese for E (as it is commonly referred to) can be found at GTK+ programs can be themed as well; see For more screenshots of my machine, check out my screenshots list.

    Clipboard support

    One thing that is frequently lamented in X is the lack of a universal cut and paste system. There is a mouse-based system that most X users are aware of, that is, to highlight the text and then middle-click elsewhere to paste it. The problem with this system is that it isn't possible to, say, highlight the text you want to replace and paste in the previously copied text.

    What may help to solve this while not requiring new application support mechanisms is a separate clipboard application. This could be run as an applet on a taskbar or as an epplet under E. This application would support all known drag'n'drop and cut'n'paste systems and would allow the dropping of a copied item on top of a previous one (replacing it) or next to it (adding it). These could then be later dragged off the clipboard and onto another application to drop them there. Simply clicking on an item would cause it to be put into the X selection system (as though it were highlighted text / graphics in a program) to be pasted normally.

    TV Recording

    A product has recently been developed by a company (who I'll reference here if I can remember at some point) that allows you to record TV programming on a small VCR-like device and play them back, even as they are recording. This functionality should be simple to build in software on a Linux box with a TV tuner card.

    Part of the selling factor of this feature is that you can simply program it to record all shows with certain actors or themes based on an online database of this programming information. This part might be more difficult, but watching by times, etc. shouldn't be hard.

    Old capabilities, new interfaces

    There are many features of a Unix operating system. Some of these are old and still very powerful today but unknown by new users. These systems need some form of user interface to help the user get acquainted and use these features. Examples follow:


    Note: this goes well with my idea of home network computing (above).

    I think the whole idea of suspending a session is being handled wrong. In X, it is usually attempted to tell the applications that they are being shut down and they then save their state information. If the application and/or window manager do this properly, when you log in next, all the applications you were using would re-appear just as they were before. Does this happen in even 20% of cases? Not a chance.

    What would be much more intelligent (unless I'm missing something) is a process suspend-to-disk function that would put each app into a suspended state (unless it refused -- requiring user intervention) like hitting Ctrl-Z at the CLI. The applications' code and data spaces would be either marked for swapping or the kernel would notice (eventually) that they were inactive. Done properly, a user's session could be swapped out and not take almost any ressources. When the user next logged in, they would have their applications un-suspended and continue work.

    If configured well, this would work incredibly for remotely accessed apps. The application server would hold the suspended app on disk while the user left. They could log in remotely from another X terminal and have their session continue transparently. This is almost easy to do right now (unless I'm missing something).


    Lots of daemons run on the average machine, dumping data via the syslog daemon. It would be nice if an application (or series of applications) were available to monitor these daemons other than by following the logs. If a system administrator is of the habit of logging into a terminal, basic summary data given through a nicer interface than the log file would be nice. Most *nix people are probably against the idea of having GUI apps to monitor and/or modify daemon operation but it seems obvious.

    File hosting

    Among the most popular programs today are those for file exchange like Hotline or Napster. Most Linux distributions come with an FTP server. which is more than sufficient for file serving from your machine. A proper interface to configuring an FTP server and new interfaces to using search systems like Archie would be a great use of old and proven protocols and utilities.

    Timing events

    When I want to set a reminder for something, I often wonder why there isn't a good GUI based interface for CRON. The cron daemon (installed on almost all Unix systems) can handle all kinds of timing events but seems to be quite intimidating for most users (I can see why) if they're even aware of its existence. Why not create a "Scheduled Events" program like Windows 98 has introduced (which pretends to be a folder under "My Computer")?



    I would like to have a message in my kernel log when my drives power down or back up ... that's all.


    Generic APIs

    No, I'm not talking about merging KDE and GTK+. I'm talking about within the Gnome Gtk+ environment. I've noticed that a lot of application designers like the tabbed application environment (eg: GRIP, Gnome-Config, Gnome-Napster) whereas opening new windows is both easier for the user and more esthetically pleasing. Sure, it saves some screen real-estate to use tabs, but when a user changes tabs, they don't know if they've "closed" that tab or just hidden it. The perfect example here is GRIP's use of a tab for the "about" box. When you change tabs, you've left the about box "open". Why?

    It should be possible to request a multi-window interface system from the toolkit without specifically designing multiple tabs or windows. The designer simply disables those controls on other "windows/tabs" that shouldn't be available when others are open (note: the GIMP save dialog while the saving progress bar is running). The user preferences could dictate whether to use a tabbed or multi-window system.

    Kernel profiling

    TOP You'll notice in the image to the left an occasion where I was running TOP to see what was using up all my CPU's (K6-200) cycles. What bothered me was that although I could see that over a quarter of my CPU time was spent servicing the "system" (red-tape anyone? :), I couldn't see where it was being spent. AFAIK, there is no way to tell if that time is being spent on the IDE bus, servicing the SWAP subsystem or handling TCP/IP requests.

    At one point SGI offered a kernel patch to allow kernel profiling, but it was rejected (probably slowed the system down significantly or something). It was, if I remember correctly, to profile the system at a debugger level ... not for general administrator (or user) information. This type of information could be useful, though, for keeping the kernel developers up to date on what is actually being done by the kernel on a day to day basis.

    User apps


    I once used an OS called TSX/lite for PCs which was a quite powerful DOS replacement that could execute both DOS apps and TSX compiled apps. At any rate, it had a few excellent CLI tools that I miss, most especially its version of dir (ls). It allowed for command-line options such as "dir /since=yesterday" or "dir c:\*.txt d:\*.doc /before="2 months" /contains="Mike"". These would be nice long-options under Linux. Not necessarily the same, but the full-word parsing operands like "2 months ago" and the like.

    More importantly yet, a well-designed search tool for X that can handle most of the filesystem's options (search by static flag, or by creation date and modification date) as well as inclusive and exclusive of each other, ands and ors, etc. Include full grep-like search capabilities but with natural language type options as well as regex.

    Website maintenance

    I'd love to have a website maintenance program (not part of a GUI HTML builder app) that handled uploading newly changed or created files on my local website directory to my website's ftp site. It should only run when prompted and have a batch mode (for running in a user's crontab) or an interactive mode (prompting before overwriting, etc.).


    If you haven't yet met up with ICQ, you aren't really on the Internet. (Liking it or not is another issue). I am a programmer in the GICQ/LIBICQ effort and would love to make an epplet version of an ICQ status window with a context menu for your contacts, etc.

    In general, the ICQ clone development teams (of which there are several) write their own code wrappers for ICQ function calls and handling. This work is shared by taking each others' C or C++ code and simply using what seems useable. It is my opinion that good programming practice would have led to the creation of an ICQ library. It turns out that this library does exist (and has for some time) but that people working on their own clones weren't willing to put the effort into properly abstracting the ICQ layer and working together on this common back-end. Please read my libicq page as I am now the primary maintainer of this library. Feel free to help port the other clones to this library.

    Office apps

    Several office productivity apps exist, but I'd like a few good standalone protocols for some useful things:

    Contact exchange

    I think a better use of the vcard format would be very useful. A vcard library maybe? Or a better extension of the format? Let's all support it, so we have the same information.


    Planning your days, weeks and years can be either wonderfully easy or tedious, depending on your calendar app. But making those apps work together (one office using MS Exchange, another using Lotus Notes) can be the worst experience of your life. Standardising a useful form of the vcal format could help the issue rest in peace. I envision a MIME attachment to an E-mail message that contains a vcal section describing the name, date, place of the appointment / reminder with attached vcard data sections for each person mentioned (if appropriate). This could be parsed out easily by a calendar app if the message was saved, or drag'n'dropped to that app.


    Raw/Wav files

    It would be nice to have a quick command-line toolset to convert between various WAV compression types. Yes, I'm aware of SOX, but there are a lot of things you can do with Windows sound recorder that you can't do with sox (pretty embarassing).

    ESD Stuff

    ESD (ESounD) allows the mixing of several audio streams into a singal stream that is output to /dev/audio. It would be nice if there were a few more management-type applications for ESD (to go along with the apps that support it for output).

    One useful app would be an equalizer with per-channel and overall equalisation possible. Modern CPUs are capable of such real-time audio modification/mixing and it would eliminate the need for this functionality to be included in applications like MP3 players.

    Note: given that there are already GPL'd applications that include fairly well-written equalisation functions, this should prove almost simplistic to a programmer familliar with the internals of ESounD.

    MP3 Playing

    I'd love to have a finer grain of control over mixing my songs from one to the next. I like to actually properly DJ my songs together so they sound right (not just randomly play them). It would be nice to specify which songs can come after which songs and have the "random play" randomly mix these songs properly.

    I'd also like to be able to specify mixing effects like "fade into next song for 5 seconds" and the like. With today's processors, real-time mixing like this shouldn't be a big deal. I know a lot of people still play MP3s on 486's, but that doesn't mean that everyone has to have a limited feature set.

    MP3 Ripping

    CDPARANOIA is the best CD ripping software out there, but the main front-end to it, GRIP has got to be the worst designed GUI I've seen in a long time. It uses way too many tabs and should open new windows to show status on operations, not update tabbed windows that aren't apparent. It would be nice if GRIP were given a completely new interface for the same program (technically, not difficult. In reality, depends on the code style).

    Speaking of CDPARANOIA, it would be great if it came with a CD ripping HOWTO, including making its root-dependance go away. For some reason it demands to be run as root (or setuid) with no instructions as to which devices need to be readable, etc. to work (and better, why?).

    Sysadmin stuff

    Network Analysis

    Anasil is a great network analysis program for Windows PCs, but what about Linux? How about a GUI-based program to show activity on the LAN? What if it were an integrated feature in a "network neighbourhood" type of explorer? Click on icon for machine, have stats show up next to it ... TCP/IP traffic, collisions, total bandwidth, IPX broadcast frequency, machines connected to ... etc.

    Network Monitoring

    Concept: monitor a set of machines and/or routers on a network and notify if something goes wrong.

    My idea would be to have a daemon + front-end pair. The daemon would periodically contact the hosts in its configuration and check the various statuses configured for each host (a ping, at least). The daemon would use syslog and/or E-mail and/or HylaFAX type paging to notify the system administrator if something noteworthy or bad happened.

    The front end would allow the sysadmin to add or remove machines from the list, group certain machines under certain customised group names, and set notification options for groups as well as for individual machines. Machines could optionally just be pinged for response or have something more elaborate happen, like a full nmap scan performed on them to watch for zombies, etc..

    The front end would also have an interface to simply look at the machines in their current status and quickly access histories for each machine and/or group. Machines could be placed on the screen (as with What's Up Gold) and connected by lines to show their network dependance. This way, if a segment of the network was down, the sysadmin could see that the router wasn't responding and remote restart it (if possible).

    Instant Notifications

    In the old days, the network admin just checked his/her E-mail often enough to catch those logging issues and/or intrusion attempts and/or power faults. These days, being flooded by E-mail, we often don't see these alerts in a timely fashion. I'd love to have a well-written ICQ-compatible (maybe?) instant-messanger for the command-line that can send such messages from a script.

    Firewall Configuration File

    The current (RedHat) method of saving and restoring one's ipchains firewall data is to use the included ipchains-save and ipchains-restore commands along with an init.d entry that loads them on startup. This works fine, but doesn't allow the easy saving of comments (when you want to overwrite your ipchains file) nor is it easy to get set up unless you use an outside program.

    I would propose a C-like configuration file like those used by current versions of bind. I envision something like:

    chain input {
    	jump DENY {
    		device !eth1;
    	jump ALLOW {
    		device lo;

    A lot of thought would need to be put in to make sure that the hierarchies worked properly to make a coherent ipchains list and that it was just as powerful as the ipchains command-line.

    Log Viewer

    I administer several servers remotely and use my logcolorise script to catch errors and other significant entries. What I would love to write is a cross between tail -f /var/log/messages | and the functionality of less with the ability to sort, filter, search and select individual entries (to see those long lines in a pop-up window, word-wrapped). The whole shabang would be curses based to allow easy remote log viewing, potentially compilable for Gnome as well.


    I have several scripts that I use to monitor if certain Internet and internal network links are up or down, if services are running, etc. There are also SNMP traps and programs like APCUPSD that I want to have the emergency output from notify me immediately. I would love to have one program, always running like syslog (on steroids) that would use a common configuration file to notify me in different ways about certain events. IE, if an internal network connection is down, page me by modem and page my supervisor after 20 minutes if its still down. If the Internet is down but the network is up, E-mail me (internal) and another tech, and page me if its still down 5 minutes later. Page me if the UPS power goes out or comes back, but E-mail me if the battery needs replacing. Send a wall message to everyone if the server's going to shut down or the disk is filling up (and page me for the latter), etc. Enough examples?

    It seems straightforward to write one ... I just don't have time.

    To be written:

  • A good Maximum PC type review of hubs and switches.
  • "Arbitrary UDP routing protocol" or AURP (RFC style). It would specify a way for arbitrarily named dynamically assigned IP machines to register with non-persistent trusted servers so others with dynamic IPs could find them and route UDP traffic through said servers. Each side would be unaware of the true IP destination. Trust systems would be required a-la PKI. Excellent for personal file servers.

    Click for complete statistics This page Copyright © 2016 Michael T. Babcock. <[email protected]> It was last updated on the 10th of May, 2000.