In FunOS, the default application menu is powered by JWM (Joe’s Window Manager). While functional and lightweight, the JWM menu requires users to manually click “Reload menu” after installing or uninstalling applications for changes to take effect.
By replacing the default JWM menu with jgmenu, you gain a modern and responsive menu experience that automatically refreshes whenever new applications are added or removed. This tutorial will guide you step-by-step on how to configure jgmenu as the main menu in FunOS.
What is jgmenu?
jgmenu is a lightweight, standalone, and highly customizable application menu designed for use with window managers like JWM, Openbox, i3, or Fluxbox. It is written in C and uses Xlib, making it extremely fast and efficient, especially on low-resource systems.
Unlike traditional menus that are hardcoded or static, jgmenu dynamically reads .desktop
files and automatically updates its entries when new applications are installed or removed—no need to manually refresh or rebuild the menu.
Key features of jgmenu include:
- Automatically detects and lists installed applications
- Highly configurable through
csv
-style config files - Supports submenus, separators, and icons
- Can be integrated into any panel or tray
- Works great with minimal desktop environments and standalone window managers
In FunOS, jgmenu can be a powerful replacement for the default JWM menu, offering greater flexibility and ease of use for users who frequently customize or install new applications.
Why Replace the JWM Menu with jgmenu?
- No more manual “Reload menu”
- Automatically detects new applications
- Customizable layout and style
- Supports icon themes
- Clean and minimal interface
How to Replace the JWM Menu with jgmenu in FunOS
To replace the default JWM Menu with jgmenu in FunOS, follow these steps:
1. Install jgmenu
Open the Terminal and run the following commands:
sudo apt update
sudo apt install jgmenu
2. Initialize jgmenu Configuration
Initialize the default configuration files with:
jgmenu_run init
This will create a config directory at ~/.config/jgmenu/
containing a default jgmenurc
file.
3. Create a Prepend Configuration
Prepend entries are shown before the automatically generated application list. Open the prepend config file:
mousepad $HOME/.config/jgmenu/prepend.csv
Paste the following content:
Terminal,lxterminal,lxterminal
File manager,pcmanfm,system-file-manager
Text Editor,mousepad,org.xfce.mousepad
Web Browser,firefox-esr,firefox-esr
Set Wallpaper,nitrogen,nitrogen
^sep()
Documentation,firefox-esr -new-tab https://funos.org/documentation,org.gnome.Evince
^sep()
The
^sep()
line adds a separator in the menu.
Save and close Mousepad.
4. Create an Append Configuration
Append entries are shown after the automatically generated application list. Open the append config file:
mousepad $HOME/.config/jgmenu/append.csv
Paste the following:
^sep()
Themes,^checkout(themes-list),preferences-desktop-theme
^sep()
Log Out,/usr/bin/funos-logout,system-shutdown
^tag(themes-list)
Adwaita Dark,cp -a .config/jwm/themes/Adwaita-Dark .config/jwm/theme && jwm -restart
Black,cp -a .config/jwm/themes/Black .config/jwm/theme && jwm -restart
Blue Day,cp -a .config/jwm/themes/Blue-Day .config/jwm/theme && jwm -restart
Brown,cp -a .config/jwm/themes/Brown .config/jwm/theme && jwm -restart
Cappuccino,cp -a .config/jwm/themes/Cappuccino .config/jwm/theme && jwm -restart
Clearlooks,cp -a .config/jwm/themes/Clearlooks .config/jwm/theme && jwm -restart
Coffee Cream,cp -a .config/jwm/themes/Coffee-Cream .config/jwm/theme && jwm -restart
Coper,cp -a .config/jwm/themes/Coper .config/jwm/theme && jwm -restart
Default,cp -a .config/jwm/themes/Default .config/jwm/theme && jwm -restart
Gold,cp -a .config/jwm/themes/Gold .config/jwm/theme && jwm -restart
Green,cp -a .config/jwm/themes/Green .config/jwm/theme && jwm -restart
Ice,cp -a .config/jwm/themes/Ice .config/jwm/theme && jwm -restart
Military,cp -a .config/jwm/themes/Military .config/jwm/theme && jwm -restart
Pastel,cp -a .config/jwm/themes/Pastel .config/jwm/theme && jwm -restart
Pretty Pink,cp -a .config/jwm/themes/Pretty-Pink .config/jwm/theme && jwm -restart
Red,cp -a .config/jwm/themes/Red .config/jwm/theme && jwm -restart
Shades of Grey,cp -a .config/jwm/themes/Shades-of-Grey .config/jwm/theme && jwm -restart
Sunny Day,cp -a .config/jwm/themes/Sunny-Day .config/jwm/theme && jwm -restart
White,cp -a .config/jwm/themes/White .config/jwm/theme && jwm -restart
Save and close Mousepad.
5. Set an Icon Theme for jgmenu
Open the configuration file:
mousepad $HOME/.config/jgmenu/jgmenurc
Find this line:
# icon_theme =
Replace it with:
icon_theme = Papirus
This enables icons in the jgmenu using the Papirus icon theme.
Save and close Mousepad.
6. Modify JWM Tray to Use jgmenu
Backup your current tray configuration file:
cp $HOME/.config/jwm/tray $HOME/.config/jwm/tray.bak
Edit the tray configuration file:
mousepad $HOME/.config/jwm/tray
Locate this line:
<TrayButton popup="Menu" icon="/opt/artwork/jwmkit/traybutton.svg">root:1</TrayButton>
Replace it with:
<TrayButton popup="Menu" icon="/opt/artwork/jwmkit/traybutton.svg">exec:jgmenu_run</TrayButton>
Save and close Mousepad.
7. Modify JWM Main Configuration
Backup your current JWM main configuration file:
cp $HOME/.jwmrc $HOME/.jwmrc.bak
Edit the JWM main configuration file:
mousepad $HOME/.jwmrc
Find and delete the following line:
<Include>$HOME/.config/jwm/menu</Include>
The final content should look like this:
<?xml version="1.0" encoding="UTF-8"?>
<JWM>
<Include>$HOME/.config/jwm/keys</Include>
<Include>$HOME/.config/jwm/preferences</Include>
<Include>$HOME/.config/jwm/start</Include>
<Include>$HOME/.config/jwm/theme</Include>
<Include>$HOME/.config/jwm/tray</Include>
<Include>$HOME/.config/jwm/icons</Include>
</JWM>
Save and close Mousepad.
8. Restart JWM
To apply all changes:
jwm -restart
9. Hide Screensaver Entries
To remove unnecessary screensaver launchers from the menu:
sudo mv /usr/share/applications/screensavers /opt
Result: jgmenu in Action
Now when you click the Menu button in the lower-left corner, jgmenu will appear instead of the old JWM menu. Any applications you install or uninstall will be automatically reflected in the menu—no more manual reloads!
Before (Default JWM Menu)

After (jgmenu Activated)

Conclusion
Replacing the JWM menu with jgmenu brings a more dynamic and modern menu experience to FunOS, especially for users who frequently install or remove applications. jgmenu not only looks sleek but also improves usability by automatically updating its content.
If you ever want to revert to the original JWM menu, simply restore your backups:
mv $HOME/.config/jwm/tray.bak $HOME/.config/jwm/tray
mv $HOME/.jwmrc.bak $HOME/.jwmrc
jwm -restart
Happy customizing!
Leave a Reply