Mjwm
mjwm creates JWM application menu from (freedesktop) desktop files
Install / Use
/learn @chiku/MjwmREADME
mjwm
Overview
mjwm creates JWM's menu from (freedesktop) desktop files. Include the generated file in the rootmenu section of your ~/.jwmrc
Read more about JWM (Joe's Window Manager) at http://joewing.net/projects/jwm
mjwm is based on mjm by insmyic gminsm@gmail.com http://sourceforge.net/projects/mjm
Dependencies
The application runs on a POSIX system with a C++ runtime.
For compiling the aplication you need make, automake, autoconf and a recent C++ compiler. This application has compiled fine with g++ versions 4.6, 4.8 & 4.9, 5.3, 10 and clang++ 3.3, 3.4, 3.5, 3.7 & 12.
Installation from source
-
Clone the repository
-
From the root of the application run
./autogen.sh
./configure --prefix=/usr
make
sudo make install
Options
Usage: mjwm [options]
Optional arguments:
-c, --category-file=[FILE] Use an external category file. Overrides the
built in categories. Please look at
default.mjwm to write your own category files.
--help Show this help.
--iconize=[THEME] Search for icon files by name in $HOME,
$XDG_DATA_DIRS/icons, and /usr/share/pixmaps.
Icon file names would be absolute paths to
icons in the specified directories. Hicolor
icon theme is used if no theme name is given.
-i, --input-directory=[DIRECTORY]
Directory to scan for '.desktop' files. Multiple
directories, if provided, must be separated by
colons. [Default: application directories
under $XDG_DATA_HOME & $XDG_DATA_DIRS]
--language=[NAME] The language for which the menu would be build.
--no-backup Do not create any backup files.
-o, --output-file=[FILE] Outfile file [Default: $HOME/.jwmrc-mjwm]
-v --verbose Verbose output.
--version Show version information.
mjwm reads $TERM environment variable to select the program for running
terminal programs. mjwm supports xterm, alacritty and sakura terminals.
If $TERM is not recognized, mjwm chooses xterm.
Usage
- Run the script
mjwm
- Edit your
$HOME/.jwmrcfile and add<Include>$HOME/.jwmrc-mjwm</Include>underRootMenu.
<JWM>
<!-- SNIP SNIP -->
<RootMenu onroot="12">
<!-- Other Menu Entries -->
<Include>$HOME/.jwmrc-mjwm</Include>
<!-- Other Menu Entries -->
</RootMenu>
<!-- SNIP SNIP -->
</JWM>
- Reload JWM
jwm -reload
Alternate usage
- Edit yout
$HOME/.jwmrcfile and add<Include>exec:mjwm --no-backup --iconize=Tango --silent --output /dev/stdout</Include>underRootMenu.
<JWM>
<!-- SNIP SNIP -->
<RootMenu onroot="12">
<!-- Other Menu Entries -->
<Include>exec:mjwm --no-backup --iconize=Tango --silent --output /dev/stdout</Include>
<!-- Other Menu Entries -->
</RootMenu>
<!-- SNIP SNIP -->
</JWM>
- Reload JWM
jwm -reload
Examples
Generate menu entries for files inside /usr/local/share/applications
mjwm -i /usr/local/share/applications
Generate menu entries for files inside multiple directories /usr/local/share/applications, /usr/share/applications & ~/.local/share/applications
mjwm -i /usr/local/share/applications:/usr/share/applications:~/.local/share/applications
Create menu entries with absolute path names to icons images from Hicolor theme
mjwm --iconize
Create menu entries with absolute path names to icons images from Faenza theme
mjwm --iconize=Faenza # this works as well : mjwm --iconize Faenza
Use categories from as an external file Look at data/default.mjwm to create your own category file
mjwm -c data/default.mjwm
Create menu entries with terminal set to alacritty.
TERM=alacritty mjwm
Write the output menu entries to console instead of file.
mjwm --no-backup --silent --output /dev/stdout
Running tests
-
Clone the repository
-
From the root of the application run
./autogen.sh
./configure
VERBOSE=true make check
mjwm uses Doctest for unit tests. Doctest is released under the MIT License.
Exit codes
- 0 - All okay
- 1 - Couldn't access file for read or write (e.g. couldn't create output file)
- 2 - Invalid command line arguments
License
This tool is released under the GPLv2 license. Please refer to COPYING for license information.
Related Skills
node-connect
339.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
339.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.9kCommit, push, and open a PR
