The JWM (Joe’s Window Manager) environment used in FunOS is fast, lightweight, and highly customizable. One of its essential components is the application menu — the gateway to launching programs and accessing key system functionality. In FunOS, the JWM menu configuration is managed through an XML-based file located at:
~/.config/jwm/menu
This article provides an in-depth explanation of the structure, elements, and customization options of the JWM menu file in FunOS.

1. Backing Up Before Editing
Before making changes to this file, it’s a good idea to back it up:
cp ~/.config/jwm/menu ~/.config/jwm/menu.bak
If anything goes wrong, you can easily restore the original.
2. Accessing the Menu File
You can access the JWM Menu configuration file in two main ways:
a. File Manager
- Click Menu > File Manager
- Press Ctrl + H or click View > Show Hidden to display hidden files.
- Navigate to the
.config/jwm/
directory and open themenu
file with a text editor.
b. Terminal
mousepad ~/.config/jwm/menu
This opens the file in the Mousepad text editor, allowing you to view or modify its contents.
3. What is the ~/.config/jwm/menu
File?
The menu
file defines the structure of the main JWM menu. It uses standard XML syntax and includes programs, separators, dynamic includes, and control options like logout and menu reloading.
4. Default Menu Configuration in FunOS
Here is the default contents of the file in FunOS:
<?xml version='1.0' encoding='utf-8'?>
<JWM>
<RootMenu onroot="123" height="20">
<Program icon="lxterminal" label="Terminal" tooltip="Use the command line">lxterminal</Program>
<Program icon="system-file-manager" label="File Manager" tooltip="Browse the file system and manage the files">pcmanfm</Program>
<Program icon="org.xfce.mousepad" label="Text Editor" tooltip="Simple Text Editor">mousepad</Program>
<Program icon="firefox-esr" label="Web Browser" tooltip="Browse the World Wide Web">firefox-esr</Program>
<Program icon="nitrogen" label="Set Wallpaper" tooltip="Browse and set desktop backgrounds">nitrogen</Program>
<Separator />
<Program icon="org.gnome.Evince" label="Documentation" tooltip="FunOS Documentation">firefox-esr -new-tab https://funos.org/documentation/</Program>
<Separator />
<Include>$HOME/.jwmrc-mjwm</Include>
<Separator />
<Include>$HOME/.config/jwm/themes-list</Include>
<Separator />
<Program icon="system-reboot" label="Reload menu" confirm="false">mjwm --no-backup && jwm -reload</Program>
<Separator />
<Program icon="system-shutdown" label="Log Out">/usr/bin/funos-logout</Program>
</RootMenu>
</JWM>
5. Breakdown of Menu Elements
<RootMenu onroot="123" height="20">
This is the main container for the menu. The onroot="123"
attribute indicates that this menu appears when you click the desktop background (root window). The height
sets the height of menu entries.
<Program ...>
This element defines a menu entry that launches an application. Key attributes:
icon
: Icon displayed next to the label.label
: Text shown in the menu.tooltip
: (Optional) Text shown on hover.- Content between tags: The command to execute.
Example:
<Program icon="lxterminal" label="Terminal" tooltip="Use the command line">lxterminal</Program>
This launches the LXTerminal when selected.
<Separator />
Creates a visual break between sections of the menu. Useful for grouping related items.
<Include>...</Include>
Includes external XML files into the menu structure. This allows modular configuration.
a. ~/.jwmrc-mjwm
<Include>$HOME/.jwmrc-mjwm</Include>
This file is automatically generated by mjwm, a FunOS utility that dynamically builds a Freedesktop-compliant application menu from .desktop
files. It is updated every time you click “Reload menu” or run:
mjwm --no-backup && jwm -reload
b. ~/.config/jwm/themes-list
<Include>$HOME/.config/jwm/themes-list</Include>
This file adds a submenu that allows users to switch between available JWM themes by copying the selected theme to the ~/.config/jwm/theme
file and restarting JWM.
Reload Menu
<Program icon="system-reboot" label="Reload menu" confirm="false">mjwm --no-backup && jwm -reload</Program>
This menu entry rebuilds the application menu and reloads JWM. It’s useful after installing new applications or modifying .desktop
files.
Log Out
<Program icon="system-shutdown" label="Log Out">/usr/bin/funos-logout</Program>
Executes the FunOS logout script to end the session.
6. Customizing the Menu
You can edit the menu file directly to:
- Add new programs (e.g., custom apps or scripts)
- Reorganize or remove default entries
- Add your own
<Menu>
blocks for nested menus
Example: Add GIMP to the menu
<Program icon="gimp" label="GIMP" tooltip="Create images and edit photographs">gimp</Program>
7. Applying Changes
After making changes to the menu configuration (~/.config/jwm/menu
), you need to reload or restart JWM to apply the updates.
You can do this in one of the following ways:
Option 1: Run in Terminal
jwm -restart
or
jwm -reload
Option 2: Use the Menu
Click the Menu button in the lower-left corner, then select Reload menu.
8. Summary
The ~/.config/jwm/menu
file is the core of the JWM menu system in FunOS. With its clean XML structure, it’s both powerful and easy to customize. By understanding each element — from launching programs to including external configurations — you can tailor your desktop experience to your exact preferences.
Leave a Reply