See http://ubuntuforums.org/showthread.php?t=813387&page=6 #57 for dbus-send commands that accomplish most of what I wanted.

Restart:
dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart

Shutdown:
dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

Suspend:
dbus-send --print-reply --system --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend

Hibernate does not work, but it turns out that it does not work in the Lubuntu logout menu either. See bug https://bugs.launchpad.net/ubuntu/+source/lxsession/+bug/1300798. But if "sudo pm-hibernate" works, then you can also make Hibernate work from the logout menu in accord with the given workaround: Create the file /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla

    The file must have the following content:

    [Re-enable hibernate by default]
    Identity=unix-user:*
    Action=org.freedesktop.login1.hibernate
    ResultActive=yes

There is also a dbus-send command which would be nice for a keyboard shortcut, but even after creating the above file it yields a "not authorized" error for reasons I don't understand. The dbus-send command: dbus-send --print-reply --system --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Hibernate

On 4/30/2014 4:11 PM, John Hupp wrote:
One problem solved: If I use "nmcli nm wifi on" and "nmcli nm wifi off" instead of the rfkill commands, this toggles the wifi radio without root permissions.

Now if I could find some suspend/standby and hibernate commands that don't require root permission, this job would be done!

On 4/30/2014 3:30 PM, John Hupp wrote:
I spoke too soon. All the programs (rfkill, pm-suspend, pm-hibernate) must run as root, and nothing I have tried so far has allowed these keys to work as I intend.

I created /home/<user>/.config/openbox/toggle-wifi.sh with this content:

#!/bin/bash

if [ $(rfkill list wifi | grep "Soft blocked: yes" | wc -l) -eq 1 ] ; then
    rfkill unblock wifi
    zenity --info --text "Enabled wireless"
else
    rfkill block wifi
    zenity --info --text "Disabled wireless"
fi

On 4/30/2014 1:09 PM, John Hupp wrote:
After thinking about it, I used an Upstart job to do what the MultiMediaKeys article instructed to be done with bootmisc.sh or rc.local.

Though I'm no better than an Upstart hacker, especially with regard to choice of a 'start on' event, I created /etc/init/kb-keys-customize.conf with this content:

# kb-keys-customize
# Map key codes to the scan codes emitted by Fn-F4, Fn-F5, Fn-F12

description "Map Fn-F4, Fn-F5 and Fn-F12 kernel scancodes to kernel keycodes"
author "John Hupp"

start on local-filesystems

script
    setkeycodes e017 128 e016 129 e018 130
end script

After rebooting, I found that 'xev -event keyboard' now reports that Fn-F4, Fn-F5 and Fn-F12 are mapped to X keysyms Cancel, Redo and SunProps, so I expect that I should be able to bind those keys in lubuntu-rc.xml to Andre's suggested commands.

On 4/29/2014 6:08 PM, John Hupp wrote:
The next problem is that Fn-F4 and Fn-F5 don't generate any keysyms, so they can't be bound to the commands suggested by Andre.

To deal with that, I've been following the In-Depth Instructions in https://help.ubuntu.com/community/MultimediaKeys, and I have identified the scancodes and picked a couple unassigned kernel keycodes, but that article is old, and writing setkeycodes commands into /etc/init.d/bootmisc.sh or /etc/rc.local seems deprecated (those files don't exist).

On 4/29/2014 3:54 PM, John Hupp wrote:
I've been looking at the Exec lines in several versions of ~/.config/autostart/LXRandR-autostart.desktop (created when one clicks Save in LXRandR) and thinking about how I could create something that would cause Fn-F7 to toggle through the LVDS, VGA and S-Video outputs, but your approach -- simply binding to LXRandR -- is a MUCH better idea!

And if I wanted to add the ability to extend the desktop instead of mirroring it, I could install arandr and just bind to that instead.

On 4/29/2014 3:18 PM, Andre Rodovalho wrote:

2014-04-29 16:13 GMT-03:00 Andre Rodovalho <[email protected] <mailto:[email protected]>>:

    On lubuntu-rc.xml I do:

    <keybind key="XF86Display">
          <action name="Execute">
    <command>lxrandr</command>
          </action>
        </keybind>

    *lxrandr* deals with additional monitors, you just enable
    them an apply.

    Hope that helps! To test the shortcuts without restarting all
    the system you can restart only openbox: *openbox --restart*


    2014-04-28 22:03 GMT-03:00 Israel <[email protected]
    <mailto:[email protected]>>:

        On 04/28/2014 07:48 PM, John Hupp wrote:
        > I was trying to watch Netflix on a laptop (with
        Lubuntu) connected to
        > a TV by S-Video connection.  I found out that Fn-F7 was
        not working to
        > select the external VGA or S-Video displays.
        >
        > Subsequently I found that Fn-F4 does not put the laptop
        to sleep, and
        > Fn-F5 does not toggle the WiFi radio on/off.  (The
        other common
        > special keys work OK.)
        >
        > So I'm trying to get those keys working that way via
        entries in
        > lubuntu-rc.xml.
        >
        > With 'xev -event keyboard' I found out that Fn-F7
        produces the keysym
        > 'XF86Display' but I still need to know what command to
        bind that to.
        > So that's my first question.
        >
        > Fn-F4 and Fn-F5 does not produce any keysym's, so I'm
        currently at a
        > loss for how to proceed next with those.
        >
        >
        Hi,

        you can use arandr to make a shell script to switch the
        display to a
        certain mode.  Plug in the monitor and use arandr to make
        a setup you
        want, and save that.  Then open your config file for
        openbox and set
        the keyboard shortcut for your display key (i.e. XF86Display)
        to execute the
        <command>
        /bin/bash /path/to/scriptname.sh
        </command>
        while scriptname.sh is whatever you saved the setup as
        with the correct
        path.

        arandr is a front-end for xrandr.  So the script is
        actually using
        xrandr to modify your display settings.

        I hope this helps.


-- 
Lubuntu-users mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/lubuntu-users

Reply via email to