A Standard for Application Starters
Most X users start applications from an X terminal. To do this, you must know the names of the programs, pass parameters each time you run them and include the programs in your search path.
Instead of calling applications from the terminal, you can use an application starter, a program that shows a list or menu of installed applications and lets you choose the one to start. Some starters show pretty icons and are very appealing with features like clocks, load meters, etc.
The problem is that each starter has a different way of describing the list of installed applications. Usually, this information is written in a text file in some format. For example, the starter of FVWM reads the .fvwmrc file for this information. Other window managers (WM) use different formats and files. If you use various WMs, things can get a bit messy.
Creating a standard format, location and name for application starters simplifies the process of creating, changing and exchanging information. Another advantage is in program installation. The installation process can read this file (open format and location) and automatically add the necessary entries to access the installed components. For example, when installing StarOffice, it would be nice if a group called StarOffice was created automatically with scalc, swrite and the rest.
This article proposes a standard format and a standard location for this application starter file and presents QStart, a starter which I have written (using the Qt Toolkit) in this format.
The file, plain ASCII, consists of two parts: configuration parameters and menu definition.
The first part is used to define parameters, such as the directory in which icons are located. Each line starts with a reserved keyword, followed by the necessary parameters separated by a semicolon:
Only one standard reserved word, IconDir dir, is defined in which dir is the directory where the starter searches for the icons referred to in the Menu Definition.
Other reserved words can be added for different starters. For QStart, I have defined one more word (see next section).
As an example, the next lines can be used to configure QStart to search the icons in /usr/local/icons and place the button, which pops up the menu, at position 0,0 of the screen.
IconDir /usr/local/icons Position 0;0
To avoid future problems, consider carefully whether to add new reserved words. My idea with standard words is that these are words which are absolutely necessary to any application starter.
As new starters arrive, new words will appear. It might be a good idea to use generic words. Here are some ideas:
ConfigFile file: define a specific file for extra, specific configuration.
Show elem1;elem2;...: show a clock or the work areas in the starter, for example Show Clock;WorkArea;IconsOnly.
Style style: use a different style to show the list of applications, for example Style Modern.
In order to keep track of future development, I have mounted a site at http://w3.ualg.pt/~ranasta/starter/ to centralize all related information.
The second part is the menu definition with the same syntax: a reserved word at the start of the line, followed by the parameters separated by a semicolon. All the applications are defined inside groups or menus. The main menu has the name “Main” and is the starting point. The menu name, or id, should be interpreted in a case insensitive manner; that is, writing “Main”, “MAIN” or “main” should have the same effect. The reserved words should be interpreted in the same manner. Starting and ending a menu definition are the reserved words Menu and End.
Here, id is the name of the menu for internal identification; the menu with an id of main is the starting point. title is the title of the menu and icon is the icon file name.
Between Menu and End are menu items:
Separator: draw a separator, normally a horizontal line.
Text text: draw the text.
Image filename: draw the image stored in filename.
Program text;icon;command: an application. text is the text that appears on the menu entry; icon is the associated icon; command is the command invoked when this option is called.
SubMenu id: an entry point to menu id. The title and icon of the menu id should appear as data to this entry.
Two examples of Menu blocks are shown here:
Menu Main;Applications;apps.xbm Program Terminal;xterm.xbm;xterm Program Editor;edit.xmb;nedit Separator Text Groups SubMenu Graphics End Menu Graphics;Graphics;graph.xbm Text Image Program GIMP;gimp.xbm;gimp Program Paint;paint.xbm;paint Separator Text Draw Program tgif;tgif.xbm;tgif End
|Designing Electronics with Linux||May 22, 2013|
|Dynamic DNS—an Object Lesson in Problem Solving||May 21, 2013|
|Using Salt Stack and Vagrant for Drupal Development||May 20, 2013|
|Making Linux and Android Get Along (It's Not as Hard as It Sounds)||May 16, 2013|
|Drupal Is a Framework: Why Everyone Needs to Understand This||May 15, 2013|
|Home, My Backup Data Center||May 13, 2013|
- Linux Systems Administrator
- New Products
- Senior Perl Developer
- Technical Support Rep
- UX Designer
- Designing Electronics with Linux
- Dynamic DNS—an Object Lesson in Problem Solving
- Using Salt Stack and Vagrant for Drupal Development
- Making Linux and Android Get Along (It's Not as Hard as It Sounds)
- Have you tried Boxen? It's a
4 hours 50 min ago
- seo services in india
9 hours 22 min ago
- For KDE install kio-mtp
9 hours 23 min ago
- Evernote is much more...
11 hours 23 min ago
- Reply to comment | Linux Journal
20 hours 8 min ago
- Dynamic DNS
20 hours 42 min ago
- Reply to comment | Linux Journal
21 hours 41 min ago
- Reply to comment | Linux Journal
22 hours 31 min ago
- Not free anymore
1 day 2 hours ago
1 day 6 hours ago
Enter to Win an Adafruit Pi Cobbler Breakout Kit for Raspberry Pi
It's Raspberry Pi month at Linux Journal. Each week in May, Adafruit will be giving away a Pi-related prize to a lucky, randomly drawn LJ reader. Winners will be announced weekly.
Fill out the fields below to enter to win this week's prize-- a Pi Cobbler Breakout Kit for Raspberry Pi.
Congratulations to our winners so far:
- 5-8-13, Pi Starter Pack: Jack Davis
- 5-15-13, Pi Model B 512MB RAM: Patrick Dunn
- 5-21-13, Prototyping Pi Plate Kit: Philip Kirby
- Next winner announced on 5-27-13!
Free Webinar: Hadoop
How to Build an Optimal Hadoop Cluster to Store and Maintain Unlimited Amounts of Data Using Microservers
Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.
Some of key questions to be discussed are:
- What is the “typical” Hadoop cluster and what should be installed on the different machine types?
- Why should you consider the typical workload patterns when making your hardware decisions?
- Are all microservers created equal for Hadoop deployments?
- How do I plan for expansion if I require more compute, memory, storage or networking?