You are not logged in.

#1 2019-02-03 07:40:53

johnraff
nullglob
From: Nagoya, Japan
Registered: 2015-09-09
Posts: 5,604
Website

jgmenu as default menu generator for Lithium?

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)


John
--------------------
( a boring Japan blog , Japan Links, idle twitterings  and GitStuff )
In case you forget, the rules.

Offline

#2 2019-02-03 11:19:51

damo
....moderator....
Registered: 2015-08-20
Posts: 5,010

Re: jgmenu as default menu generator for Lithium?

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...

FORUM RULES and posting guidelines «» Help page for forum post formatting
Artwork on DeviantArt  «» BunsenLabs on DeviantArt

Offline

#3 2019-02-03 23:18:14

malm
jgmenu developer
Registered: 2016-10-13
Posts: 449
Website

Re: jgmenu as default menu generator for Lithium?

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).

Offline

#4 2019-02-04 02:23:30

johnraff
nullglob
From: Nagoya, Japan
Registered: 2015-09-09
Posts: 5,604
Website

Re: jgmenu as default menu generator for Lithium?

damo wrote:

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?


John
--------------------
( a boring Japan blog , Japan Links, idle twitterings  and GitStuff )
In case you forget, the rules.

Offline

#5 2019-02-04 02:26:04

johnraff
nullglob
From: Nagoya, Japan
Registered: 2015-09-09
Posts: 5,604
Website

Re: jgmenu as default menu generator for Lithium?

malm wrote:

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?


John
--------------------
( a boring Japan blog , Japan Links, idle twitterings  and GitStuff )
In case you forget, the rules.

Offline

#6 2019-02-04 02:32:06

johnraff
nullglob
From: Nagoya, Japan
Registered: 2015-09-09
Posts: 5,604
Website

Re: jgmenu as default menu generator for Lithium?

damo wrote:

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.


John
--------------------
( a boring Japan blog , Japan Links, idle twitterings  and GitStuff )
In case you forget, the rules.

Offline

#7 2019-02-16 07:38:38

johnraff
nullglob
From: Nagoya, Japan
Registered: 2015-09-09
Posts: 5,604
Website

Re: jgmenu as default menu generator for Lithium?

Guys, if you've got a Lithium system to hand, try out malm's suggested menu:

malm wrote:

@John - you've given me some thinking time smile

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)


John
--------------------
( a boring Japan blog , Japan Links, idle twitterings  and GitStuff )
In case you forget, the rules.

Offline

#8 2019-02-16 08:11:37

hhh
Meep!
Registered: 2015-09-17
Posts: 8,099
Website

Re: jgmenu as default menu generator for Lithium?

I'll try to install it, should be easy but you never know...

Offline

#9 2019-02-16 11:52:54

malm
jgmenu developer
Registered: 2016-10-13
Posts: 449
Website

Re: jgmenu as default menu generator for Lithium?

I have some spare time over the next couple of days, so can support/discuss/develop/upversion/etc

Offline

#10 2019-03-06 04:58:41

hhh
Meep!
Registered: 2015-09-17
Posts: 8,099
Website

Re: jgmenu as default menu generator for Lithium?

Installed as per the instructions, it produces a helium-ish menu that could easily be mistaken for the Openbox menu...

Screenshot_2019-03-05_23-50-53.md.png

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

#11 2019-03-06 05:23:21

hhh
Meep!
Registered: 2015-09-17
Posts: 8,099
Website

Re: jgmenu as default menu generator for Lithium?

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

Screenshot_2019-03-06_00-20-36.md.png

-edit- @malm, brilliant! @John, it gets my yes-vote.

Last edited by hhh (2019-03-15 01:13:37)

Offline

#12 2019-03-06 06:15:26

hhh
Meep!
Registered: 2015-09-17
Posts: 8,099
Website

Re: jgmenu as default menu generator for Lithium?

^ 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

#13 2019-03-06 21:41:28

hhh
Meep!
Registered: 2015-09-17
Posts: 8,099
Website

Re: jgmenu as default menu generator for Lithium?

ops 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

#14 2019-03-06 21:48:27

malm
jgmenu developer
Registered: 2016-10-13
Posts: 449
Website

Re: jgmenu as default menu generator for Lithium?

^ 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)

Offline

#15 2019-03-06 21:52:17

malm
jgmenu developer
Registered: 2016-10-13
Posts: 449
Website

Re: jgmenu as default menu generator for Lithium?

@hhh - passing ships

No worries - not received that way.

Normally rhinohide

Offline

#16 2019-03-06 22:06:00

hhh
Meep!
Registered: 2015-09-17
Posts: 8,099
Website

Re: jgmenu as default menu generator for Lithium?

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

#17 2019-03-06 22:10:26

damo
....moderator....
Registered: 2015-08-20
Posts: 5,010

Re: jgmenu as default menu generator for Lithium?

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 smile

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...

FORUM RULES and posting guidelines «» Help page for forum post formatting
Artwork on DeviantArt  «» BunsenLabs on DeviantArt

Offline

#18 2019-03-06 23:26:47

hhh
Meep!
Registered: 2015-09-17
Posts: 8,099
Website

Re: jgmenu as default menu generator for Lithium?

BTW, I was wrong. A script would have to read the menu colors from ~/.config/openbox/rc.xml, not from .gtkrc*.

Offline

#19 2019-03-07 03:32:07

johnraff
nullglob
From: Nagoya, Japan
Registered: 2015-09-09
Posts: 5,604
Website

Re: jgmenu as default menu generator for Lithium?

^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. neutral
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.


John
--------------------
( a boring Japan blog , Japan Links, idle twitterings  and GitStuff )
In case you forget, the rules.

Offline

#20 2019-03-08 06:14:55

malm
jgmenu developer
Registered: 2016-10-13
Posts: 449
Website

Re: jgmenu as default menu generator for Lithium?

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.

Offline

#21 2019-03-11 21:43:07

malm
jgmenu developer
Registered: 2016-10-13
Posts: 449
Website

Re: jgmenu as default menu generator for Lithium?

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

jgmenu-obtheme.c

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 big_smile

@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.

Offline

#22 2019-03-12 05:03:01

hhh
Meep!
Registered: 2015-09-17
Posts: 8,099
Website

Re: jgmenu as default menu generator for Lithium?

@malm, I'm honored!

Last edited by hhh (2019-03-15 01:14:52)

Offline

#23 2019-03-13 01:10:32

johnraff
nullglob
From: Nagoya, Japan
Registered: 2015-09-09
Posts: 5,604
Website

Re: jgmenu as default menu generator for Lithium?

malm wrote:

@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.


John
--------------------
( a boring Japan blog , Japan Links, idle twitterings  and GitStuff )
In case you forget, the rules.

Offline

#24 2019-03-13 06:15:21

hhh
Meep!
Registered: 2015-09-17
Posts: 8,099
Website

Re: jgmenu as default menu generator for Lithium?

malm wrote:

@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! monkey

Last edited by hhh (2019-03-13 06:16:30)

Offline

#25 2019-03-13 06:44:40

hhh
Meep!
Registered: 2015-09-17
Posts: 8,099
Website

Re: jgmenu as default menu generator for Lithium?

malm wrote:

@hhh - all for you big_smile

Dude, rock-star level 100.

Screenshot_2019-03-13_02-43-47.md.png

Offline

Board footer

Powered by FluxBB