Clone or download
johanmalm jgmenu.c: fix sticky submenu
The unwanted 'sticky submenu' behaviour can be re-produced by taking
the following steps:

  - start jgmenu in long-running mode (stay_alive = 1)
  - enter a submenu
  - click outside the menu to close it or click on an item in the submenu
  - run jgmenu_run to awake the menu (the submenu is still highlighted)
  - hovering mouse over submenu fails to open it (this is the unwanted
    behaviour)
  - the submenu can be 'unstuck' by opening another submenu and then
    returning to the previous

Reported-by: @johnraff
Latest commit 6840085 Oct 16, 2018
Permalink
Failed to load latest commit information.
data jgmenu.svg: improve shape Apr 16, 2018
debian Add release notes for v1.3 Sep 18, 2018
docs Add release notes for v1.3 Sep 18, 2018
examples Add "sep_halign" config option (issue #36) Sep 22, 2018
noncore config: add columns variable Sep 15, 2018
ppa Ubuntu PPA script Nov 15, 2017
scripts Add release notes for v1.3 Sep 18, 2018
tests sbuf: add sbuf_replace() Sep 24, 2018
.gitattributes jgmenu.c: re-wrote functions to accept linked list Nov 8, 2016
.gitignore Makefile: add auto dependency generation (-MMD -MP) Jan 17, 2018
INSTALL.md xrandr: update references to xinerama (issue #61) Aug 12, 2018
LICENSE initial commit Jan 26, 2015
Makefile xrandr: update references to xinerama (issue #61) Aug 12, 2018
Makefile.inc jgmenu.c: use setitimer() instead of timer_* Oct 8, 2018
README.md Add release notes for v1.3 Sep 18, 2018
TODO Update TODO Sep 24, 2018
align.h multiwin: open submenu is new window (issue #3) Aug 19, 2017
args.c jgmenu.c: remove modes Dec 9, 2017
args.h jgmenu.c: remove modes Dec 9, 2017
argv-buf.c argv-buf.c: fix triple quote bug (issue #41) Oct 10, 2017
argv-buf.h argv-buf.c: fix triple quote bug (issue #41) Oct 10, 2017
back.c Add back.c to modulise back_string() function Jun 1, 2017
back.h back.h: change mode Mar 12, 2018
bl.c bl.c: fixed compiler warning Apr 28, 2017
bl.h Add bl.c to read BunsenLabs tint2 session file Apr 27, 2017
cache.c cache.c: check return value of system() May 30, 2017
cache.h cache.c: tidy up May 29, 2017
charset.c jgmenu.c: utf-8 validate menu data Feb 8, 2018
charset.h jgmenu.c: utf-8 validate menu data Feb 8, 2018
compat.c filter.c: made search case-insensitive Nov 23, 2016
compat.h filter.c: made search case-insensitive Nov 23, 2016
config.c Add "sep_halign" config option (issue #36) Sep 22, 2018
config.h Add "sep_halign" config option (issue #36) Sep 22, 2018
filter.c filter.c: do not print needle to stdout Jul 22, 2017
filter.h Add widgets.c Jul 19, 2017
flex-array.h Added hashmap Jan 5, 2017
fmt.c lx: improve format parsing Jan 20, 2018
fmt.h lx: add generic name (issue #10) Jan 19, 2018
font.c font.c: fix typo Jun 22, 2017
font.h Change icon-theme and font fallbacks (issue #31) Jun 21, 2017
geometry.c geometry.c: set submenu text width correctly Sep 15, 2018
geometry.h geometry.c: remove geo_set_screen_area() Jun 4, 2018
gtkconf.c theme: add precedence option and parse gtk config (issue #31) Jun 19, 2017
gtkconf.h theme: add precedence option and parse gtk config (issue #31) Jun 19, 2017
hashmap.c Added hashmap Jan 5, 2017
hashmap.h hashmap.h: fixed bug Jan 7, 2017
icon-find.c Clean up icon-find.c and xdgdirs.c Oct 23, 2017
icon-find.h icon-find: clean up #2 Jul 24, 2017
icon.c icons: set widget svg icon size correctly Aug 3, 2018
icon.h icons: set widget svg icon size correctly Aug 3, 2018
isprog.c config: add terminal_exec and terminal_args (issue #28) Jul 1, 2017
isprog.h config: add terminal_exec and terminal_args (issue #28) Jul 1, 2017
jgmenu-lx.c lx: replace & with & for pango markup Sep 24, 2018
jgmenu-ob.c ob: set PWD correctly when executing --cmd command Oct 15, 2018
jgmenu-pmenu.py pmenu: replace & with & for pango markup Sep 23, 2018
jgmenu-socket.c Add UID to socket name for multi-user system Jan 4, 2018
jgmenu-unity-hack.py Created unity-hack Nov 18, 2016
jgmenu-xdg.c Move cat() to util.c Jan 1, 2018
jgmenu.c jgmenu.c: fix sticky submenu Oct 16, 2018
jgmenu_run jgmenu_run: remove legacy message Mar 19, 2018
list.h Added xdgicon.c + sbuf.c Jun 23, 2016
lockfile.c Tidy up symbol declarations Mar 3, 2017
lockfile.h Tidy up symbol declarations Mar 3, 2017
pm.c jgmenu.c: improve code readability 3 Sep 16, 2018
pm.h jgmenu.c: improve code readability 3 Sep 16, 2018
restart.c restart.c: exclude --hide-on-startup Jul 14, 2018
restart.h restart.c: exclude --hide-on-startup Jul 14, 2018
sbuf.c sbuf: add sbuf_replace() Sep 24, 2018
sbuf.h sbuf: add sbuf_replace() Sep 24, 2018
socket.c Add UID to socket name for multi-user system Jan 4, 2018
socket.h Add UID to socket name for multi-user system Jan 4, 2018
t2conf.c t2conf.c: abort if no tint2rc config file exists Jun 3, 2018
t2conf.h Refactor the setting of font and icon_theme May 7, 2017
t2env.c Remove excessive info messages Jun 3, 2018
t2env.h Use UNIX socket to communicate tint2 env variables Apr 14, 2017
terminal.c config: add terminal_exec and terminal_args (issue #28) Jul 1, 2017
terminal.h Add support for programs which run in terminal Jun 4, 2017
theme.c Change icon-theme and font fallbacks (issue #31) Jun 21, 2017
theme.h Change icon-theme and font fallbacks (issue #31) Jun 21, 2017
unix_sockets.c Use UNIX socket to communicate tint2 env variables Apr 14, 2017
unix_sockets.h Use UNIX socket to communicate tint2 env variables Apr 14, 2017
util.c Move remove_caret_markup_closing_bracket() Aug 4, 2018
util.h Move remove_caret_markup_closing_bracket() Aug 4, 2018
watch.c watch.c: detect added/removed files Jun 8, 2018
watch.h Add watch.c Jun 3, 2018
widgets.c widgets.c: fix semantics Aug 11, 2018
widgets.h widgets: enable left-click Aug 4, 2018
workarea.c Make workarea and config file info messages optional May 20, 2018
workarea.h Use _NET_WORKAREA for margin and position (issue #21) Jan 27, 2018
x11-ui.c Add "sep_halign" config option (issue #36) Sep 22, 2018
x11-ui.h Add workarea.c (issue #21) Jan 24, 2018
xdgapps.c xdgapps.c: survive unicode file (issue #46) Feb 9, 2018
xdgapps.h Coding style fixes Aug 23, 2016
xdgdirs.c xdgdirs: use new sbuf_expand_env_var() Jun 3, 2018
xdgdirs.h xdg: move find_menu_file() Dec 9, 2017
xpm-color-table.h Fix checkpatch.pl warnings May 5, 2017
xpm-loader.c xpm-loader.c: remove fall-throughs Oct 15, 2017
xpm-loader.h XPM loader: buggy Oct 15, 2016
xsettings-helper.c Refactor the setting of font and icon_theme May 7, 2017
xsettings-helper.h Added jgmenu-xsettings.c Sep 17, 2016
xsettings.c Fix checkpatch.pl warnings May 5, 2017
xsettings.h Fix checkpatch.pl warnings May 5, 2017

README.md

jgmenu
jgmenu

A simple X11 menu

[Install] [Tutorial] [Wiki] [Screenshots]

jgmenu

jgmenu is a stand-alone, simple and contemporary-looking menu application for Linux and BSD.

Although it was originally written to be used with openbox and tint2, it is not in any way dependent on these and runs well with other panels and window managers.

It is hackable with a clean, small code base.

It is designed for customisation, scripting, ricing and tweaking

It can optionally use some appearance settings from XSettings, tint2 and GTK.

It does not depend on any toolkits such as GTK and Qt, but uses cairo and pango to render the menu directly onto an X11 window.

It can display the following types of menu (or any combination of):

  • bespoke menu using a jgmenu flavoured CSV format

  • application menu (XDG compatible) with localisation support

  • pipe menus

  • openbox XML menu including openbox pipe-menus

It can display SVG, PNG and XPM icons.

It has UTF-8 search support.

It has been compiled and run on OpenBSD, FreeBSD and various Linux distributions including Bunsenlabs, Arch, Ubuntu, Alpine, Void and Mint.

Authors

Authors who have contributed more than a few of lines of code to at least two files in the top-level directory include:

@johanmalm

  • main author

@o9000

  • wrote the pmenu module
  • produced the xsettings client and xpm loader
  • provided much advice on early design choices
  • provided much technical guidance on icon related code, inter-process communication (IPC), the main loop select() and self-pipe constructs, and more (see git log for full details)

There many who have contributed in other ways including, but not limited to:

Vladimir-csp

  • has contributed a great deal with suggestions, bug reports and advice on XDG compliance

Various members of the BunsenLabs and ArchLabs communities have also helped with testing, documentation, ideas and inspiration to keep this project going.

Versioning

We use semver 2.0.0, except that at patch-level zero, the ".0" is omitted. For example, 1.0.0 would become 1.0.