You are not logged in.
This is about a suggestion to use jgmenu to generate the BunsenLabs default menu in Lithium.
It would be, by default, essentially the same menu we have now in Helium, but no longer relying on Openbox to generate it.
The topic has already come up, and people seem to be interested, but before making a final decision we might want to see exactly how it could work out in BL.
WHY?
*) Modularity: it will make the menu independent of openbox, so even if people switch to scrotwm or something the menu will still work.
*) Also, if in the FUTURE we are obliged to drop openbox and use some wayland-related window manager, at least the menu will not need redoing (beyond removing the openbox config entries).
*) Users who want an auto-updating apps menu can easily get one, either inside the default menu or as a separate item with icons and bells. (In fact, if an "apps" submenu would not slow down the menu or use extra RAM, then we could consider enabling it by default.)
BUT...
*) It would be extra download/disk space, though I don't think it's all that much.
*) Backward compatibility: we would have to be careful not to break users' existing setups. I think that might be possible, but the details have to be worked out.
*) Key and mouse bindings. Is there a simple transparent way to set keyboard shortcuts outside of rc.xml so they would survive uninstalling openbox? If so, we could consider pulling out all the keybinds that aren't directly openbox-related and putting them in another file. Likewise with the mouse desktop right-click.
*) And... we might tentatively consider removing some of the app pipemenus? That would lose the "install" functionality though, so I'm not quite sure... Opinions?
EDIT: See here for an example of how it could be implemented: https://forums.bunsenlabs.org/viewtopic … 740#p82740
Last edited by johnraff (2019-03-16 04:57:53)
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), idle Twitterings and GitStuff )
Offline
I love the static OB menu and pipemenus, so personally I will continue using them. However, I guess most users coming to BL are expecting a more familiar dynamic menu with icons.
Is there an easy way of having a choice, either in bl-welcome, and/or in Preferences?
Be Excellent to Each Other...
The Bunsenlabs Lithium Desktop » Here
FORUM RULES and posting guidelines «» Help page for forum post formatting
Artwork on DeviantArt «» BunsenLabs on DeviantArt
Offline
A couple of thoughts.
jgmenu is not 100% wayland compatible - mostly due to pointer/keyboard grab.
As a long-running applications (default) it's "instant", but uses a small amount of RAM. It was similar to tint2 when I last checked with ps_mem.
Another advantage is that jgmenu supports type-to-search. So even if all we do is make it look exactly like the current menu, we could ^tag() all system applications at the bottom (invisible, but searchable).
Online
I love the static OB menu and pipemenus
My thinking was to provide this by default, but using jgmenu to do it. Then users could very easily extend or change it to other setups, some of which we might provide configuration for.
Maybe, though, an auto-updating "apps" submenu (easily commented out) could be added to the default menu?
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), idle Twitterings and GitStuff )
Offline
jgmenu is not 100% wayland compatible
Ah OK. What do you think is the probability that it can be made so, say, by the time of Debian Bullseye or perhaps the one after that?
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), idle Twitterings and GitStuff )
Offline
Is there an easy way of having a choice, either in bl-welcome, and/or in Preferences?
Exact implementation is still vague (and why I started this thread) but maybe, even if jgmenu ends up configured independently, we should continue to provide a very similar openbox/menu.xml. Then switching would mean changing some entries in rc.xml from jgmenu calls back to openbox menu calls. If a shortcut in Preferences seemed like a popular move it might not be too hard to write a little script to do those edits.
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), idle Twitterings and GitStuff )
Offline
Guys, if you've got a Lithium system to hand, try out malm's suggested menu:
@John - you've given me some thinking time
Having thought about it, my advice would be to:
Set csv_cmd = lx
Convert the static elements of menu.xml to CSV format and put that in prepend.csv
Add a ^tag(lx-apps) at the bottom of prepend.csv so that we can access .desktop application if we want to
Use our current pipe-menu scripts as they are
This type of setup would have the following advantages over some of the other options discussed in this thread:
Allows us to keep menu.xml as it is whilst adding support for .desktop applications and potentially rationalising some menu items (sorry if I'm being too bold here).
Allows the user to easily revert to a traditional built-in openbox menu (with untouched menu.xml), should they wish to.
Avoids hacky 'jgmenu_run ob' constructs and the introduction of new features (which we sometimes take a while to gain confidence in)
Allows easy theme change using 'jgmenu init -i'
Allows type-to-search including all apps with .desktop files rather than just the current menu.xml entries
Allows the addition of a widget such as a search box (although that's not needed for type-to-search support).
Other advantages over built-in openbox menu:
Gettext style localisation support - which we can gradually add to after Lithium release
Better alignment of "Display keybind in menu" pipe-menu
Try this:
prepend.csv:
# BunsenLabs Main Menu Run Program,gmrun ^sep() Terminal,x-terminal-emulator Web Browser,x-www-browser File Manager,bl-file-manager Text Editor,bl-text-editor Media Player,bl-media-player ^sep() Applications,^checkout(lx-apps) ^sep() Accessories,^checkout(bl-accessories) Graphics,^pipe(jgmenu_run ob --cmd="bl-graphics-pipemenu" --tag="bl-graphics-pipemenu") Multimedia,^pipe(jgmenu_run ob --cmd="bl-multimedia-pipemenu" --tag="bl-multimedia-pipemenu") Network,^checkout(bl-network) Office,^checkout(bl-office) ^sep() Places,^pipe(jgmenu_run ob --cmd="bl-places-pipemenu" --tag="bl-places-pipemenu") Recent Files,^pipe(jgmenu_run ob --cmd="bl-recent-files-pipemenu -rl15" --tag="bl-recent-files-pipemenu") ^sep() Preferences,^checkout(bl-preferences) System,^checkout(bl-system) ^sep() Help & Resources,^pipe(jgmenu_run ob --cmd="bl-help-pipemenu" --tag="bl-help-pipemenu") Display Keybinds,^pipe(jgmenu_run ob --cmd="bl-kb-pipemenu" --tag="bl-kb-pipemenu") ^sep() Lock Screen,bl-lock Exit,bl-exit Accessories,^tag(bl-accessories) Back,^back() Catfish File Search,catfish Archive Manager,file-roller Task Manager (htop),x-terminal-emulator -T 'htop task manager' -e htop System Information (hardinfo),hardinfo Network,^tag(bl-network) Back,^back() WWW Browsers,^pipe(jgmenu_run ob --cmd="bl-x-www-browser-pipemenu" --tag="bl-x-www-browser-pipemenu") Filezilla FTP Client,filezilla Transmission BitTorrent Client,transmission-gtk HexChat IRC Client,hexchat Remote Filesystems,gigolo Remote Desktop,^pipe(jgmenu_run ob --cmd="bl-remote-desktop-pipemenu" --tag="bl-remote-desktop-pipemenu") SSH,^pipe(jgmenu_run ob --cmd="bl-sshconfig-pipemenu" --tag="bl-sshconfig-pipemenu") Office,^tag(bl-office) Back,^back() LibreOffice,^pipe(jgmenu_run ob --cmd="bl-libreoffice-pipemenu" --tag="bl-libreoffice-pipemenu") Gnumeric Spreadsheet,gnumeric Calculator,galculator Evince PDF Viewer,evince Preferences,^tag(bl-preferences) Back,^back() Openbox,^checkout(bl-obConfig) Compositor,^pipe(jgmenu_run ob --cmd="bl-compositor" --tag="bl-compositor") Conky,^pipe(jgmenu_run ob --cmd="bl-conky-pipemenu" --tag="bl-conky-pipemenu") Tint2,^pipe(jgmenu_run ob --cmd="bl-tint2-pipemenu" --tag="bl-tint2-pipemenu") Appearance,lxappearance Font configuration,bl-text-editor ~/.config/fontconfig/fonts.conf BLOB Themes Manager,bl-obthemes Wallpaper,nitrogen Notifications,xfce4-notifyd-config Power Management,xfce4-power-manager-settings dmenu,^checkout(bl-dmenuconfig) gmrun,^checkout(bl-gmrunconfig) Display,^checkout(bl-DisplaySettings) Openbox,^tag(bl-obConfig) Back,^back() Edit menu.xml,bl-text-editor ~/.config/openbox/menu.xml Edit rc.xml,bl-text-editor ~/.config/openbox/rc.xml Edit autostart,bl-text-editor ~/.config/openbox/autostart ^sep() Menu Editor,obmenu WM Preferences,obconf How to Edit Menu,yad --button="OK":0 --center --window-icon=distributor-logo-bunsenlabs --text-info --title="How to Edit the Menu" --filename="/usr/share/bunsen/docs/helpfile-menu.txt" --width=900 --height=700 --fontname=Monospace ^sep() Reconfigure,openbox --reconfigure Restart,openbox --restart dmenu,^tag(bl-dmenuconfig) Back,^back() Edit Start-up Script,bl-text-editor ~/.config/dmenu/dmenu-bind.sh ^sep(Help) man page,x-terminal-emulator -T 'man dmenu' -e man dmenu gmrun,^tag(bl-gmrunconfig) Back,^back() Edit Config File,bl-text-editor ~/.gmrunrc ^sep(Help) man page,x-terminal-emulator -T 'man gmrun' -e man gmrun Display,^tag(bl-DisplaySettings) Back,^back() ARandR Screen Layout Editor,arandr ^sep(Help) man xrandr,x-terminal-emulator -T 'man xrandr' -e man xrandr System,^tag(bl-system) Back,^back() Printers,^pipe(jgmenu_run ob --cmd="bl-printing-pipemenu" --tag="bl-printing-pipemenu") Synaptic Package Manager,pkexec synaptic Login Settings,pkexec bl-text-editor /etc/lightdm/lightdm-gtk-greeter.conf /etc/lightdm/lightdm.conf GParted,pkexec gparted Edit Debian Alternatives,galternatives ^sep() About Bunsen Alternatives,yad --button="OK":0 --center --window-icon=distributor-logo-bunsenlabs --text-info --title="About Bunsen Alternatives" --filename="/usr/share/bunsen/docs/helpfile-bl-alternatives.txt" --width=900 --height=700 --fontname=Monospace ^tag(lx-apps)
jgmenurc:
tint2_look = 0 at_pointer = 1 csv_cmd = lx menu_width = 150 menu_padding_top = 0 menu_padding_right = 0 menu_padding_bottom = 0 menu_padding_left = 0 menu_radius = 1 sub_spacing = 6 item_margin_x = 1 item_margin_y = 1 item_height = 21 sep_height = 4 sep_halign = right font = Sans 10 icon_size = 0 arrow_string = › arrow_width = 8 color_menu_bg = #C8CFCB 100 color_menu_border = #C8CFCB 8 color_norm_bg = #C8CFCB 00 color_norm_fg = #13071B 100 color_sel_bg = #74998B 100 color_sel_fg = #101010 100 color_sel_border = #74998B 8 color_sep_fg = #101010 80
Install jgmenu, lxmenu-data and libmenu-cache3 then make prepend.csv and jgmenurc as he posted. You can display the menu with 'jgmenu_run' or bind it to the keyboard.
I think this is pretty close (theming aside) to something we could use, no?
Last edited by johnraff (2019-03-16 04:46:50)
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), idle Twitterings and GitStuff )
Offline
I'll try to install it, should be easy but you never know...
Offline
I have some spare time over the next couple of days, so can support/discuss/develop/upversion/etc
Online
Installed as per the instructions, it produces a helium-ish menu that could easily be mistaken for the Openbox menu...
But is there no way for it to just inherit the theme and icons from lxappearance/.gtkrc-2.0.mine? I'm done with configuring our utilities on a per-theme basis, it's why I want us to dump tint2 (yes, I want to kill tint2 with fire and dump it in a Romanian ditch in Transylvania. Also ditch Paper icons, I'm sick to death of that blank icon appearing in my taskbar when I open Thunar, no other icon theme does that. I know Paper was my suggestion in the first place, but that bug is awful).
A personal preference of course. If you all want to stay hard-core text-config I can live with it.
-edit- I mean, shit, and sorry, @malm, if it's just that I don't know some simple configs that would fix what I'm talking about, but it doesn't even inherit my system font.
Last edited by hhh (2019-03-06 05:08:16)
Offline
Never mind, it was just a few simple configs. I stripped the font and theme lines out of the rc file and had everything except the selected background right. So, just one config line to fix it...
tint2_look = 0
at_pointer = 1
csv_cmd = lx
menu_width = 150
menu_padding_top = 0
menu_padding_right = 0
menu_padding_bottom = 0
menu_padding_left = 0
menu_radius = 1
sub_spacing = 6
item_margin_x = 1
item_margin_y = 1
item_height = 21
sep_height = 4
sep_halign = right
icon_size = 0
arrow_string = ›
arrow_width = 8
color_sel_bg = #346077 100
-edit- @malm, brilliant! @John, it gets my yes-vote.
Last edited by hhh (2019-03-15 01:13:37)
Offline
^ Er, no, the background color is black by default and the transparency seems to be at about 80, so I assume I have to theme those colors/transparencies and probably a few others. And it's not a drop-in for the root menu in rc.xml, is it? You have to make it an actual entry like...
<keybind key="W-space">
<action name="Execute">
<startupnotify>
<enabled>true</enabled>
<name>Run Program</name>
</startupnotify>
<command>jgmenu_run</command>
</action>
</keybind>
I'm being critical here, sorry for that.
Last edited by hhh (2019-03-06 06:17:27)
Offline
^ Those posts came off as all sorts of pissy and ungrateful for the work done on jgmenu, that's not how I meant it. Humble apologies!
Offline
^ yes, would have to edit rc.xml like you say.
We read icon theme and font from gtk config file, but not colours.
Could we write a script to read gtk colours and set these in tint2 and jgmenurc.
Transparency generally doesn’t work too well with the main menu in my opinion (certainly not below 80 anyway)
Online
@hhh - passing ships
No worries - not received that way.
Normally rhinohide
Online
Thanks malm! It's a great menu, and getting better all the time.
A script to detect the set Openbox theme and apply it as the jgmenu theme would be incredible. I guess it would need user input for the name of the theme to detect, or could that be read from the gtkrc-2.0.mine file? I'm guessing this wouldn't be an easy script to whip together.
-edit- BTW, I prefer menus and notifications to be fully opaque.
Last edited by hhh (2019-03-15 01:14:14)
Offline
A little O/T, but what is the issue with Tint2 colours? I like the way it can be made as contrasting or matching as you like, and taking colours from the gtk or OB means they would have to be processed anyway so the panel is visible.
Tint2 suits me a lot more than any other panel I've tried. I'm a fan
BTW, I prefer menus and notifications to be fully opaque.
+1
Last edited by damo (2019-03-06 22:11:14)
Be Excellent to Each Other...
The Bunsenlabs Lithium Desktop » Here
FORUM RULES and posting guidelines «» Help page for forum post formatting
Artwork on DeviantArt «» BunsenLabs on DeviantArt
Offline
BTW, I was wrong. A script would have to read the menu colors from ~/.config/openbox/rc.xml, not from .gtkrc*.
Offline
^there are no menu colours set in rc.xml. The openbox theme name is set there, so the colour data has to be looked up wherever the openbox theme is stored.
About the keyboard shortcut to launch the menu - yes it would have to be set in rc.xml.
Which - it has only now ocurred to me - would make the menu dependent on Openbox anyway.
So I would like to raise the idea of using xbindkeys and xbindkeys-config for all application-launching keybinds, leaving rc.xml only for openbox-specific stuff. That would mean menu and keybinds would go on working under any other window manager - freedom for users, and for us in the future.
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), idle Twitterings and GitStuff )
Offline
Struggling to get near computer for a few days. Will take a look Sun/Mon
Should be easy to read ob theme file and use that to set some jgmenu colours.
We could do the same for tint2, but would take a bit longer due to config file complexity.
Online
I've written a module to (a) read the theme from rc.xml; (b) find the corresponding themerc; (c) parse this themerc and add corresponding key/value pairs in jgmenurc
Try it using
jgmenu init --apply-obtheme
It doesn't cover all eventualities (e.g. gradients), but is a starter for ten.
@hhh - all for you
@hhh, I can cobble together something small/quick for setting tint2 - but was a bit unsure what you were looking for. Is it just font name which is frustrating. Would you actually be looking to set the panel colours based on openbox themes?
@johnraff, I'm not against xbindkeys, but reflect that it seems easier to let each Window Manager define their own key-binds.
Online
@malm, I'm honored!
Last edited by hhh (2019-03-15 01:14:52)
Offline
@johnraff, I'm not against xbindkeys, but reflect that it seems easier to let each Window Manager define their own key-binds.
Understood. I'm not suggesting using xbindkeys for all keybinds, but only for global, wm-independent, calls - mainly (perhaps only) launching apps. So openbox's rc.xml will go on defining keybinds for manipulating windows - maximize, move desktop etc - in fact everything related to openbox.
My reason for advocating a third-party app for global keybinds is the same as for suggesting moving from the openbox menu to jgmenu in the first place - to make it independent of the window manager. Without an externally defined keybind to launch jgmenu it would continue to depend on having openbox running (or else require the user to configure it themselves). Having done that, it seems to make sense to define keybinds for x-terminal-emulator, bl-file-manager etc in the same place.
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), idle Twitterings and GitStuff )
Offline
@hhh, I can cobble together something small/quick for setting tint2
Not on my account, please. I use xfce4-panel because it inherits the GTK theme. I use a GUI wherever possible, I hate manual configs!
Last edited by hhh (2019-03-13 06:16:30)
Offline
Offline