Page MenuHomeLubuntu Development

fix keyboard shortcuts
Closed, ResolvedPublic

Description

We had this before and it got lost. I think I managed to consolidate all the comments and everything…

We made the Super key the default shortcut for opening the menu. This is a no brainer. Unfortunately, I discovered this makes the Openbox Super key combos not work. LXQt does not consider Openbox the canonical window manager of the desktop environment, so they won't do anything to fix this. So I'd like to propose a multi-tiered solution:

  • As much as possible, we move shortcuts defined by Openbox to being defined by lxqt-globalkeys. This won't work for the window manager specific stuff.
  • Redefine the remaining Super key combos in Openbox to not use the Super key. This will unfortunately violate the way things have been done in the past, but at least we'll have functionality.
  • If reasonable, apply the above as much as possible to 18.10, too. It's been brought up a few times.

The logic here is that there are options that lxqt-globalkeys provides that Openbox simply cannot accomplish. Plus, it theoretically can be used as the place to look for most shortcuts. Application specific shortcuts (such as window manager ones) would be in those applications. Not to mention the fact that it's easy to graphically edit shortcuts in lxqt-globalkeys but it is simply not possible in Openbox. Openbox requires manually editing an XML file, knowing all of its particular quirks (such as the name of the actions and the ways to depict certain keys) and manually forcing Openbox to reconfigure. That's a lot to ask if what we're trying to produce is something usable and intuitive. I'd like to use it less and less because of that. And then there's the fact that should someone (myself included) choose to use a different window manager, non-window manager shortcuts are not removed.

We could delete these

     <keybind key="W-F1">
	    <action name="GoToDesktop"><to>1</to></action>
	  </keybind>
	  <keybind key="W-F2">
	    <action name="GoToDesktop"><to>2</to></action>
	  </keybind>
	  <keybind key="W-F3">
	    <action name="GoToDesktop"><to>3</to></action>
	  </keybind>
	  <keybind key="W-F4">
	    <action name="GoToDesktop"><to>4</to></action>
	  </keybind>

These are currently defined as Ctrl + F-key using client command /panel/desktopswitch/desktop_#.

     <keybind key="W-d">
	    <action name="ToggleShowDesktop"/>
	  </keybind>

This is currently defined as Ctrl + Alt + D using panel/showdesktop/show_hide.

	  <!--  Lubuntu specific : Keybindings -->
	
	  <!-- Keybindings for running applications on Home + E -->
	  <keybind key="W-e">
	    <action name="Execute">
	      <startupnotify>
	        <enabled>true</enabled>
	        <name>File manager</name>
	      </startupnotify>
	      <command>pcmanfm-qt</command>
	    </action>
	  </keybind>

This is currently set to Ctrl + Alt + E.

	  <!-- Keybindings for running Run menu from Lxpanel on Home + R-->
	  <keybind key="W-r">
	    <action name="Execute">
	      <command>lxqt-runner</command>
	    </action>
	  </keybind>

This is currently set to Alt + F2 with /runner/show_hide_dialog.

	  <!-- Keybindings for window switching with the arrow keys -->
	  <keybind key="W-S-Right">
	    <action name="DirectionalCycleWindows">
	      <direction>right</direction>
	    </action>
	  </keybind>
	  <keybind key="W-S-Left">
	    <action name="DirectionalCycleWindows">
	      <direction>left</direction>
	    </action>
	  </keybind>
	  <keybind key="W-S-Up">
	    <action name="DirectionalCycleWindows">
	      <direction>up</direction>
	    </action>
	  </keybind>
	  <keybind key="W-S-Down">
	    <action name="DirectionalCycleWindows">
	      <direction>down</direction>
	    </action>
	  </keybind>

You can activate different "tasks" with Meta + # with /panel/taskbar/task_# although that's not really the same.

On the other hand, + Alt + is likely sufficient.

These are unique and deserve discussion

	    <!--
	        Lubuntu specific.
	        Keybindings for window tiling
	    -->
	    <!--
	        # HalfLeftScreen
	    -->
	  <keybind key="W-Left">
	    <action name="UnmaximizeFull"/>
	    <action name="MoveResizeTo">
	      <x>0</x>
	      <y>0</y>
	      <height>100%</height>
	      <width>50%</width>
	    </action>
	  </keybind>
	    <!--
	        # HalfRightScreen
	    -->
	  <keybind key="W-Right">
	    <action name="UnmaximizeFull"/>
	    <action name="MoveResizeTo">
	      <x>-0</x>
	      <y>0</y>
	      <height>100%</height>
	      <width>50%</width>
	    </action>
	  </keybind>
	    <!--
	        # HalfUpperScreen
	    -->
	  <keybind key="W-Up">
	    <action name="UnmaximizeFull"/>
	    <action name="MoveResizeTo">
	      <x>0</x>
	      <y>0</y>
	      <width>100%</width>
	      <height>50%</height>
	    </action>
	  </keybind>
	    <!--
	        # HalfLowerScreen
	    -->
	  <keybind key="W-Down">
	    <action name="UnmaximizeFull"/>
	    <action name="MoveResizeTo">
	      <x>0</x>
	      <y>-0</y>
	      <width>100%</width>
	      <height>50%</height>
	    </action>
	  </keybind>

Apparently window tiling is contentious. I assert that if you want that, you should get a tiling window manager! Even KWin doesn't really handle tiling. There's a script out there to make it work but reading some discussion on it, it's not foolproof. The Lubuntu "solution" wasn't really ideal, either (and was not an Openbox one, but one we developed) and is probably best described a window arrangement hack that vaguely resembled tiling. We should support the things we know we can support and that work well. That's not one of them.

If push comes to shove, I think the best solution would be to use Alt + arrow keys for tiling. Or maybe Control + Alt + + arrow keys. I don't consider it a "top level" shortcut. It would be nicer to use Alt + arrow keys for something most everyone is going to use.

BTW here's what we have in lxqt-globalkeys:

Comment=Switch to desktop 7
Comment=Switch to desktop 10
Comment=Switch to desktop 11

The above are all unset.

Comment=Show/hide runner dialog

This one does not show in globalkeys.conf (bug) but it's set to Alt+F2.

Openbox sets this to Super+R but ideally we remove that as discussed above since it doesn't actually work (unless you use the right Super key with it or unset the left Super key for the menu). The Super that was used for the menu was the left one. The right Super functions normally as far as Openbox. Not every keyboard has a right Super, however.

However, It should be further noted that the Super that was used for the menu was the left one. The right Super functions normally as far as Openbox. Not every keyboard has a right Super however. I think we will still want to make sure the bindings match in the end. However, It seems that in combinations, lxqt-globalkeys makes no distinction between right and left Super keys and instead refers to them all as Meta.

However, tt seems that in combinations, lxqt-globalkeys makes no distinction between right and left Super keys and instead refers to them all as Meta.

[Control+Alt+D]
Comment=Show desktop
[Super_L]
Comment=Show/hide main menu

There's desktopy stuff.

[XF86AudioLowerVolume]
Comment=Decrease sound volume
[XF86AudioMute]
Comment=Mute/unmute sound volume
[XF86AudioRaiseVolume]
Comment=Increase sound volume

There's audio stuff.

[XF86MonBrightnessDown]
Comment=\x2600 \x2193
[XF86MonBrightnessUp]
Comment=\x2600 \x2191
[Shift+Control+F6]
Comment=\x2600 \x2193
[Shift+Control+F7]
Comment=\x2600 \x2191

There's two options for raising/lowering the brightness (expressed as ☀ ↑ and ☀ ↓).

[Control+Alt+E]
Comment=Pcmanfm
[Control+Alt+I]
Comment=Web browser
[Control+Alt+L]
Comment=lockscreen
[Print]
Comment=screen shot

There's programs run by hotkeys.

[Control+F1]
Comment=Switch to desktop 1
[Control+F12]
Comment=Switch to desktop 12
[Control+F2]
Comment=Switch to desktop 2
[Control+F3]
Comment=Switch to desktop 3
[Control+F4]
Comment=Switch to desktop 4
[Control+F5]
Comment=Switch to desktop 5
[Control+F6]
Comment=Switch to desktop 6
[Control+F8]
Comment=Switch to desktop 8
[Control+F9]
Comment=Switch to desktop 9
[Meta+0]
Comment=Activate task 10
[Meta+1]
Comment=Activate task 1
[Meta+2]
Comment=Activate task 2
[Meta+3]
Comment=Activate task 3
[Meta+4]
Comment=Activate task 4
[Meta+5]
Comment=Activate task 5
[Meta+6]
Comment=Activate task 6
[Meta+7]
Comment=Activate task 7
[Meta+8]
Comment=Activate task 8
[Meta+9]
Comment=Activate task 9

Here's ones not involving the Super key we need to deal with:

Add to lxqt-globalkeys

	  <!-- Keybindings for desktop switching -->
	  <keybind key="C-A-Left">
	    <action name="GoToDesktop"><to>left</to><wrap>no</wrap></action>
	  </keybind>
	  <keybind key="C-A-Right">
	    <action name="GoToDesktop"><to>right</to><wrap>no</wrap></action>
	  </keybind>
	  <keybind key="C-A-Up">
	    <action name="GoToDesktop"><to>up</to><wrap>no</wrap></action>
	  </keybind>
	  <keybind key="C-A-Down">
	    <action name="GoToDesktop"><to>down</to><wrap>no</wrap></action>
	  </keybind>

	  <keybind key="A-space">
	    <action name="ShowMenu"><menu>client-menu</menu></action>
	  </keybind>

	  <!-- Launch task manager on Ctrl + Alt + Del-->
	  <keybind key="C-A-Delete">
	    <action name="Execute">
	      <command>qps</command>
	    </action>
	  </keybind>
	
	  <!-- Launch a terminal on Ctrl + Alt + T-->
	  <keybind key="C-A-T">
	    <action name="Execute">
	      <command>qterminal</command>
	    </action>
	  </keybind>
	
	  <!-- Keybinding for terminal button-->
	  <keybind key="XF86WWW">
	    <action name="Execute">
	      <command>qterminal</command>
	    </action>
	  </keybind>
	  <keybind key="XF86Terminal">
	    <action name="Execute">
	      <command>qterminal</command>
	    </action>
	  </keybind>

	  <!-- Keybinding for computer button-->
	  <keybind key="XF86MyComputer">
	    <action name="Execute">
	      <command>pcmanfm-qt</command>
	    </action>
	  </keybind>

Keep these as is

	  <!-- Keybindings for Multimedia Keys and LCD Backlight (alternative when not using gnome-power-manager or xfce4-volumed) -->
	  <keybind key="C-F10">
	    <action name="Execute">
	      <command>xbacklight -dec 10</command>
	    </action>
	  </keybind>
	  <keybind key="C-F11">
	    <action name="Execute">
	      <command>xbacklight -inc 10</command>
	    </action>
	  </keybind>

xbacklight isn't even installed we'd want to swap those out for the appropriate lxqt-config-brightness command. Also maybe we should set these to switch to the 10th and 11th desktops and come up with new solutions for the actual keystroke, like media keys.

	  <keybind key="C-F7">
	    <action name="Execute">
	      <command>xset dpms force off</command>
	    </action>
	  </keybind>

This is a monitor shutdown. There may be a better way to do this.

Miscellaneous

	  <keybind key="S-A-Left">
	    <action name="SendToDesktop"><to>left</to><wrap>no</wrap></action>
	  </keybind>
	  <keybind key="S-A-Right">
	    <action name="SendToDesktop"><to>right</to><wrap>no</wrap></action>
	  </keybind>
	  <keybind key="S-A-Up">
	    <action name="SendToDesktop"><to>up</to><wrap>no</wrap></action>
	  </keybind>
	  <keybind key="S-A-Down">
	    <action name="SendToDesktop"><to>down</to><wrap>no</wrap></action>
	  </keybind>

I wonder if we can get upstream to support these.

Commented out - let's delete

	  <!-- Keybindings for running Menu from Lxpanel -->
	<!--
	  <keybind key="A-F1">
	    <action name="Execute">
	      <command>lxpanelctl menu</command>
	    </action>
	  </keybind>
	  <keybind key="C-Escape">
	    <action name="Execute">
	      <command>lxpanelctl menu</command>
	    </action>
	  </keybind>
	-->

These we could just add as alternatives to Alt + Space and Super. I kind of feel like maybe that's ALOT, but who knows.

	  <!-- Lock the screen on Ctrl + Alt + l-->
	  <!--
	  <keybind key="C-A-l">
	    <action name="Execute">
	      <command>lxsession-default lock</command>
	    </action>
	  </keybind>
	-->

We already have this set in lxqt-globalkeys.

	  <!-- Keybinding for calculator button-->
	  <!--
	  <keybind key="XF86Calculator">
	    <action name="Execute">
	      <command>lxsession-default calculator</command>
	    </action>
	  </keybind>
	-->
	
	  <!--
	      Take a screenshot of the current window with scrot when Alt+Print are pressed
	  -->
	  <!--
	  <keybind key="Print">
	    <action name="Execute">
	      <command>lxsession-default screenshot</command>
	    </action>
	  </keybind>
	  <keybind key="A-Print">
	    <action name="Execute">
	      <command>lxsession-default screenshot window</command>
	    </action>
	  </keybind>
	  -->
	
	  <!-- Launch logout when push on the shutdown button -->
	  <!--
	  <keybind key="XF86PowerOff">
	    <action name="Execute">
	      <command>lxsession-default quit</command>
	    </action>
	  </keybind>
	-->

Not sure why we even have these if they're commented out. Maybe we should add them? They are LXDE commands, so whatever they are, they're old.

While we're at all this, too, we should probably deal with missing keys, especially those media keys. We have at least one bug report about the missing Eject key.

Event Timeline

wxl triaged this task as High priority.Apr 14 2019, 5:16 AM
wxl created this task.

Btw, what is this useful for? It focuses between panel and pcmanfm-qt. More like between panel and desktop manager I guess.. Check the attached link to see it in action.

<keybind key="C-A-Tab">
    <action name="NextWindow">
      <panels>yes</panels><desktop>yes</desktop>
      <finalactions>
        <action name="Focus"/>
        <action name="Raise"/>
        <action name="Unshade"/>
      </finalactions>
    </action>
  </keybind>

Link(Ctrl+Alt+Tab)

I think Ctrl+Alt+Tab aims to cycle between windows on all desktops. simillar to ubuntu's same shortcut as mentioned on this page But sigh! both lubuntu and ubuntu fail to achieve this. even in ubuntu 19.04 Ctrl+Alt+Tab switches between Topbar and windows.

Looking at the documentation for the NextWindow action it looks like it allows you to cycle between the panel and the desktop. That said, I can't figure out what's useful about that once you're on the panel. Maybe if the panel had its own shortcuts that weren't globally accessible, that might make sense. Kill it with fire.

Hey! checkout these files.
Replace the following files with respective files from attached archive:

  1. .config/openbox/lxqt-rc.xml
  2. .config/lxqt/globalkeyshortcuts.conf

Note: remember to backup original files before replacing.

Now run:

openbox  --reconfigure

and open Menu->Preferences->Lxqt settings->Shortcut Keys

you can see a few changes there and test rest by manually pressing different combinations like C-S-A-Direction, C-A-direction, A-tab, Super+d/e/r C-A-Delete, etc.

let me know if any changes are required.
Here is the archive:

Better specification:

Remove from Openbox and add to lxqt-globalkeys:

  • GoToDesktop = W + $F-key ¹
  • ToggleShowDesktop = W + d ¹
  • Execute pcmanfm-qt = W + e ¹ / XF86MyComputer
  • Execute lxqt-runner = W + r ¹
  • GoToDesktop = C + A + $direction
  • ShowMenu = A + space
  • Execute qps = C + A + Delete
  • Execute qterminal = C + A + t / XF86Terminal
  • Execute x-www-browser = XF86WWW (currently this runs qterminal?!)
  • NextWindow = C + A + Tab
  • Remove any commented definitions:
    • lxpanelctl menu
    • lxsession-default lock
    • lxsession-default calculator
    • lxsession-default screenshot
    • lxsession-default screenshot window
    • lxsession-default quit

Remove entirely from Openbox:

  • Execute xbacklight = C + F10/11
  • Execute xset dpms force off = C + F7
  • Weird window tiling = W + $direction

Change in Openbox:

  • DirectionalCycleWindows = W + S + $directionA + S + $direction
  • SendToDesktop = S + A + $directionC + A + S + $direction

Also:

  • Deal with missing media keys, such as Eject

¹ Already defined in lxqt-globalkeys

GoToDesktop = C + A + $direction cannot be added to lxqt-global config. It works from openbox conf.
Reason:
Apparently, 'panel/desktopswitch/left' or 'panel/desktopswitch/next' doesn't work as a command.

ShowMenu = A + space can't be put into lxqt-global config. It will remain in openbox conf.
Reason: can't find equivalent command of 'client-menu' which is used for same task in openbox config.

Shortcuts for buttons like XF86MyComputer and XF86WWW and XF86Terminal are set through openbox conf.
Reason: my keyboard doesn't has those buttons, I can't set them through lxqt-conf.

NextWindow = C + A + Tab
Alt+Tab is already doing that. Present function of C-A-Tab is cycling between desktop manager and panel (pcmanfm-qt and panel in this case. Scroll up for ss) So purging C-A-Tab.

Don't have the eject key on my system. Can't set up the Eject key.

Apart from these few things, everything is as you specified.

For openbox and for lxqt, I am assuming that both the local config files are generated from the ones kept at /etc/xdg/openbox/lxqt-rc.xml and /etc/xdg/lxqt/globalkeyshortcuts.conf (Tell me if I am wrong.)

We change both of them at global level only. So new config files created at user creation have our changes,
This is the modified openbox config file.(lxqt-rc.xml)
and
This is the modified globalshortcuts.conf file.

To check the working for now, paste them in place of their local versions and run

openbox --reconfigure

and restart the system.
Then check the shortcuts from Menu->Preferences->Lxqt settings->Shortcut Keys.

Note: This openbox configuration file will change your openbox settings to those of root user. Rebooting is required because simply logging out and logging back in doesn't apply the changes made to globalshortcuts.conf file.

I just checked, The lubuntu-default-settings package doesn't have globalkeyshortcuts.conf in the in the src. I mean it's not in this folder:
https://phab.lubuntu.me/source/lubuntu-default-settings/browse/ubuntu%252Feoan/src/etc/xdg/xdg-Lubuntu/lxqt/

But it's there under /etc/xdg/lxqt/ in a new installation.
What to do?

Anything with a W key will need to be removed from Openbox or we're going to run into trouble.

For the media keys, we should be able to just modify the configuration. Set it to something, anything, and then modify the actual file.

Oh, yeah, keep Alt + space! Getting to the Openbox menu is only possible through Openbox.

Also, you might want to put those modified files either in a repo somewhere, or use a differential revision on Phab, or put them in the paste application. One thing that is good and bad about share.riseup.net is that it gets purged often.

Finally, the configuration for LXQt shortcuts is actually in rLXQTGLOBALKEYSPACKAGING. We patched the default configuration file so everyone using LXQt (whether or not they're using Lubuntu) gets all the goodies.

Yeah nothing has Super key in openbox.

By media keys you mean the XF86Terminal, My computer and WWW keys I guess. As you said, I tried setting any key to them and then changing the globalkeyshortcuts file. But even after that, the changes are not applied. I guess leaving them in openbox is better.

Keeping alt space

So, now I will do arc diff for this file then head over to rLXQTGLOBALKEYSPACKAGING

Quick Note: Whilst I'm too slow for useful testing, I have noted the https://manual.lubuntu.me/F/keyboard_shortcuts.html as it stands now will require change, eg. S-A-Left|Right no longer do the SendToDesktopToLeft ...

Good call @guiverc. We need to add changing the manual to the specification. There's actually two places:

sorry, what wil be done with the weird window tiling? ctrl+alt+arrows? that's now for desktop change, but also ctrl+Fx does that.

@hmollercl
The window tilling shortcuts are removed.
Yup! the 'Ctrl+Alt+arrows' switch desktops. Like they switch to the next desktop in that direction.
'Ctrl+Fx' is not set for anything. I think you mean 'Super+Fx' ? That switches to the desktop numbered 'x'

Also, yup! @wxl the previous riseup uploads got erased I guess or the site's not working, says privacy error. Tho they are present in D17 and D18 resp. I will add them here nevertheless.

Here is lxqt-rc.xml. The openbox conf. :

Here is lxqt-globalkeys conf. :

Ctrl+F1 goes to desktop 1, Ctrl+F2 goes to desktop 2, and so on.
Alt+something normally does things in the app you are using at the moment. I.e. Alt opens the menu of the app.

As I said on IRC, the "window tiling" shortcuts are not anywhere near real window tiling. It's a substandard implementation. I'm not willing to compromise other things just to support something that doesn't even work well compared to an actual tiling window manager. So I would opt to remove it. If someone's going to insist on it, it must not be a first or second level shortcut and it must not use the Super key.

The other thing I said is that if we want to try to make things "standard", rather than relying on what Ubuntu or Windows does, we need to look at what everyone does. Failing any consistency, we should just forge our own path. As far as I know, there is no specification for shortcuts, really.

Hey @wxl I commented out the media keys from lxqt-rc.conf and added them to globalkeyshortcuts.conf. Those which were transfered were Mycomputer and Calculator. I couldn't add the Terminal key. I tried setting it to something else and then change it by editing the file but no. that entry disappeared after a reboot.
Also, added a couple of new media keys, (got hands on an extra keyboard for sometime):

  • Mail : Opens trojita
  • HomePage: Opens Firefox

You can find the updated globalkeyshortcuts.conf here on P9 .

Now this should be the ideal config file. But if I put it in place and reboot then after reboot the "Ctrl+Fx" shortcuts appear out of no where with desktopswitch2 and "Super+Fx" doesn't work. When checked in gui, the "Super+Fx" shortcuts are displayed in italics. I don't know what italics is for. Lines appear bold if you set two functions for single shortcut but I have no idea what italics means here.
You can see the difference in lines with id nos 28 and 29 here in next picture.

Now, If I use desktopswitch2 for "Super+Fx", everything works as expected and "Ctrl+Fx" shortcuts don't show up after reboot. This being the case with me. I would like to see if others can verify this. @kc2bez can you verify this please?

Also, if you are testing the above file from paste, I suggest first commenting out media files from lxqt-rc.conf as in this paste P10 .

P.S Very vague shot but @wxl what vm are you testing this in? configs of the vm?
Mine is a qemu BIOS vm with 2gb ram.

I pulled down P10 and replaced my openbox lxqt-rc.xml
I then pulled down P9 and replaced my globalkeyshortcuts.conf

Here are a few things I noted:
lxqt-runner is switched back to A+F2not W+r It looks like that definition is in the application. The global shortcuts picks up the application setting.

desktopswitch2? Where is that from?
The Super +Fx seems to revert to C + Fx. I am guessing that is similar to the above scenario. The desktop switching app is bound to certain keys?

XF86HomePage should we bind that to Firefox or set it to xdg-open about:blank like C+A+i
Probably the same with XF86Mail though xdg-mail seems to have a small issue right now. Looks like we need to make an adjustment to the mimeapps.

@kc2bez Thanks!
About desktopswitch2, for me, if I change desktopswitch in P9 with desktopswitch2, the super+Fx keys retain themselves, they do not revert to Ctrl+Fx

Runner shortcut reverting to alt+F2 is not the case with me. I will test everything again on a fresh vm.

About XF86 HomePage, yeah I will change that to xdg-open about:blank.

About XF86Mail, I have set it to open trojita but it should be xdg-mail, shouldn't it? Aaand I guess xdg-mail is opening something else due to defaults set in mimeapps.list. I will dig up on that mimeapps.list, might have missed adding trojita to x-scheme-handler/mailto while I completed my first task. (Refer T3)
I will create a new differential for it.

Hey! @wxl I tested this pull request It works fine. Even the Super+Fx key bindings work fine as they should. I will now try packaging it. The only problem is, the patch is not on master branch, its on xdg-config branch. So after downloading source, I will just checkout that branch and then build it. hopefully it will work.

@The_LoudSpeaker Oh jeez I didn't even notice it was in a branch. I don't understand. Anyways, you can go to a commit on GitHub and just append .patch to the URI and you'll get a patch you can use with patch or quilt (the latter here). Make sure when you're testing, you're testing the application of the patch to the version of the software we have in the repos. A patch might apply cleanly to upstream (which is almost always ahead of us, commit-wise, if not release-wise) but not downstream. I look forward to your differential revision 😄

The build failed. I pasted the log into P19. The makefiles that might be causing the issue must be P20 and P21. (They are refrenced in lines 427 and 425 of P19 resp.)

It does build on the upstream code, though?

I didn't. I was asking if it did. Can you take the most recent upstream release (from GitHub) and patch it and build it? You can just use their normal build instructions to answer that question.

I took the most recent code. Checked out to the xdg-config branch. Then built it using normal instructions. It did build and also got installed locally and that was how I tested it. I will try tomorrow without checking out to that branch. Will get back once done.

I'm confused as to how you're building the source.

If it helps you, here's how the CI does unstable builds, and how I would do such a test build locally.

The relevant part of the build that's failing is this:

/home/raman/Style/Work/lxqt-globalkeys/daemon/core.cpp: In member function ‘void Core::saveConfig()’:
/home/raman/Style/Work/lxqt-globalkeys/daemon/core.cpp:735:24: error: ‘mConfigFile’ was not declared in this scope
     QSettings settings(mConfigFile, QSettings::IniFormat);

When in the pull request, that line was replaced.

Here's how I would personally do this:

  1. Get it to build locally from the aforementioned branch that the pull request was merged into.
  2. Write a reproducible test case for ensuring the changes work as intended. Include instructions on how you built and installed this.
  3. Try to cherry-pick the patch and apply it to the stable release. Instructions for doing this can be found in the packaging guide.
  4. Once you can get it to build locally and have tested it using your testcase, create a Phab diff. If it looks good, we'll merge it, and then test the build via the CI stable build. If it works there, we'll upload.

The patch was merged. The patch wasn't applied initially to master branch coz it is a part of PR#60 and now it was merged 19hrs ago. Ref:
https://github.com/lxqt/lxqt-globalkeys/pull/123#issuecomment-515904488
I will try building it from latest code on master branch.

soooo, as far as I understand, we need this commit as a patch for the latest upstream release.

Here's what I did:

  • clone the upstream source.
  • search for the commit and create a patch using the commands
git log

and

git diff bd9cb26d217ef7633570c947e5e7e410564eafc1 bd9cb26d217ef7633570c947e5e7e410564eafc1^ > ~/xdg-final.patch
  • Now, cloned the phab repo i.e rLXQTGLOBALKEYSPACKAGING to a different location.
  • uscan --download-current-version
  • tar -x --strip-components=1 -f ../lxqt-globalkeys_0.14.1.orig.tar.xz
  • quilt push -a
  • quilt import ~/xdg-final.patch
  • quilt push

Here's what I get: P24

Idk what is wrong here. The original source from git with latest code from master branch builds successfully by their method. i.e make build and make install method. But I am unable to patch the latest commit from master branch to the upstream release we have in rLXQTGLOBALKEYSPACKAGING

The commit I am trying to patch is like the last commit on master branch of upstream repo as seen here.

In T59#1521, @wxl wrote:

I didn't. I was asking if it did. Can you take the most recent upstream release (from GitHub) and patch it and build it?

your answer lies in the above comment.

What about applying the patch to the latest *release* on GitHub?

In T59#1777, @wxl wrote:

What about applying the patch to the latest *release* on GitHub?

Failed. See P25

So that tells me we need a new release, ideally. Alternately, we're going to need to get several patches in order to make this work.

So the patch needed a little hand nudging. Not much. Someone please test and double test the version of lxqt-globalkeys I have in this PPA.

In case it wasn't obvious, I believe I have a solution that will make the lxqt-globalkeys patches work. If people could use the above PPA to test (see here for a testcase), that would be great. This is very important because if we don't have some sort of solution here, we won't be able to include our own Lubuntu-specific changes to the lxqt-globalkeys config, which means we won't really be able to do anything with the shortcuts. Raman's put a lot of hard work here that I would not like to see go to waste, nor would I like to make some rash decisions before release to deal with the fact that the Super key conflicts. So please go test!!!

The issue is not fully solved even after using files from D34. Will have to dig up more.
Everyone who tests this, Provide detailed observations here. I will be also doing the same.

Anyone who tests this, should see that the shortcuts mentioned in P38 should be working.

The bug reported by @hmollercl is this.

Created a bug with the problmes I have seen https://bugs.launchpad.net/ubuntu/+source/lubuntu-default-settings/+bug/1841331
I think is a problems of which starts/end to load first after the XDG change in lxqt-globalkeys.

New 19.10 install (2019-08-26 daily), on dell [optiplex] 780 (c2q-q9400, 8gb, amd/ati cedar radeon hd 5000/6000/7350/8350)
(I have apt-get installed clementine so I could have music play in background) & changed monitor-settings (swapped left-right & my-right display is portrait-left)

Y Ctrl+Alt+del taskmgr
N Ctrl+Alt+B Web Browser
(firefox was already loaded to read this, didn't notice any changes on hitting this, if qterminal was active window or firefox was active, nor firefox was closed for test - it wouldn't re-open)
Y Ctrl+Alt+L Lock Screen
Y Ctrl+Alt+T Terminal

N Meta+1/2/3 Task no. # from the task bar
N Meta+Fx Switch to desktop no x
N Meta+D Show hide Desktop
Y Meta+E File manager
N? Meta+R show/hide runner (sorry don't know what this should do; but I didn't detect anything change, nor what i expected from http://manpages.ubuntu.com/manpages/disco/man1/lxqt-runner.1.html)
Y Print screengrab

Y Ctrl+Shift+F6 decrease brightness
Y Ctrl+shift+F7 increase brightness

N Just pressing super key show/hide application menu
Sorry I use old model-M keyboards so aren't used to terminology; i took meta==super; the 2019 dell keyboard I used also has Fn key & some special functions in blue; i ignored this key. I also tried an older hp keyboard with same results (without fn key, ctrl super alt)

HOLD ON - RE-EXAMINING - just found another key on keyboard !!!
On right side I have SPACE ALT SUPER ?? CTRL
Is the ?? key meta?? It's on hp & dell keyboards, looks like it acts like a right-click??

@guiverc yup meta = super.
And you have to tally with P38. Man page is not updated yet. Even tho, your results are same to mine.
Also, does pressing super/meta open applications menu ?

It doesn't view very well now, but my 'reply' was based on P38 with a Y/N placed before each. Yep=worked, Nah=no.

Sorry for being less than clear. I replied "N" for the "Just pressing super key show/hide application menu"

The man page was just from my looking up runner as it's not something I've ever used before; and I didn't get the result I expected after reading that man page. The N? instead of N because I felt my N was questionable (ie. as I didn't know what to expect, the *nothing happened* result I took as a NO could have been expected/valid). Sorry for being unclear.

After every reboot/boot, I have another entry for some shortcuts in ~/.config/lxqt/globalkeyshortcuts.conf, e.g. Print.

I wrote a little script to count the shortcuts and print the duplicates:

#!/usr/bin/perl

use strict;
use warnings;

die "Don't run this script as user root!\n" unless $>;

open my $config_fh, '<', "$ENV{HOME}/.config/lxqt/globalkeyshortcuts.conf"
    or die "Cannot find shortcuts config file: $!";

my %shortcuts;

while (<$config_fh>) {
    chomp;
    if (/\[(.+)\.\d+\]/) {
        $shortcuts{$1}++;
    }
}

close $config_fh;

foreach (keys %shortcuts) {
    if ((my $amnt = $shortcuts{$_}) > 1) {
        printf "%02d:\t%s\n", $amnt, $_;
    }
}

As I wrongly wrote on D43, booted 19.10 daily (2019-09-13) on

  • sony vaio ultrabook (i5-9400u, 4gb, intel haswell-ULT)
  • hp 8200 elite sff (i5-2400, 8gb, nvidia quadro 600)

super/meta + R does nothing. (hp has two meta keys, tried both)
no search key on this crapbook
ctrl + alt + B does nothing
no home page key

Using sony crapbook the 19.10 [daily live] was rebooted
I replaced /etc/xdg/xdg-Lubuntu/lxqt/globalkeyshortcuts.conf with the contents found from D43, compare diff with original & results to get expected/colored diffs shown in D43. I also created /etc/xdg/xdg-Lubuntu/lxqt/lxqt-runner.conf using contents found in D43 (owned by root with permissions 'rw-r--r--/644' which matched another conf file in directory).
A new user 'blah' was created, I logged out..

On login of 'blah - CTRL+ALT+B opened firefox perfectly.
I didn't get a response for META+R, however on opening 'Session Settings' and Stop/Start of 'runner' LXQt module, META+R opened opened runner as hoped for.

My duplicates:

05:     XF86MonBrightnessUp
02:     Control%2BAlt%2BB
05:     XF86Calculator
05:     XF86Mail
04:     Shift%2BControl%2BF6
05:     Shift%2BControl%2BF7
05:     Control%2BAlt%2BL
05:     XF86HomePage
03:     Print
05:     XF86MonBrightnessDown

I have still duplicates on a new installed system from the latest eoan iso:

03:     Print
03:     XF86HomePage
03:     XF86MonBrightnessDown
02:     Control%2BAlt%2BB
03:     XF86Mail
03:     Control%2BAlt%2BL
03:     XF86MonBrightnessUp
03:     Meta%2BE
03:     Shift%2BControl%2BF6
03:     Shift%2BControl%2BF7
04:     Control%2BAlt%2BDelete
03:     Control%2BAlt%2BT
03:     XF86MyComputer
03:     XF86Calculator

Super_L is not working

Latest on this:
After last patch, things works well initially but after 1 and 2 boots runner stop working and then panel (tested only in VM). Stopping and restarting still solve the issue.
Disable autostart for them (panel and runner) and starting it manually does not solve it, still stop and start is needed.
If one deletes ~./config/lxqt/globalkeys.conf and reboot, things work again but further reboot make them fail again.

Instead of reboot, restart session also does the trick.

We should test if this patch solve the issue https://github.com/lxqt/lxqt-globalkeys/commit/b924f8cd41474d2fe4d8e0a6f52a131bd6f50f79 but there are a lot of patches before that and is recommended to apply all of them, not only this one https://github.com/lxqt/lxqt-globalkeys/issues/142

Bump, how was this going? Do we have everything set for release?

We need to pull latest git from lxqt-globalkeys, I've been testing ci/unstable from 3oct build it and works ok.

Looks like it's done. Yay!