6

I would like to create a keyboard shortcut to toggle the auto-hide option for the unit launcher. Based on the answer on How to programmatically change the launcher's hide behaviour I tried to make a python script to do the job. Then I should just figure out how to run that with a keyboard shortcut.

My script looks like this:

#!/bin/python
AUTOHIDE=$(dconf read /org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode)
if (AUTOHIDE==1):
   dconf write /org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode 0
else:
    dconf write /org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode 1

But running the script from a terminal (doing 'python scriptname.py' ) doesn't work. I get a "invalid syntax" error at $ sign.

You have to know that I have almost no knowledge of python (or writing scripts in general). (I've just spent a few hours searching the web for help and examples).

So the actual questions:

  • What did I do wrong?
  • Did I chose a way to complicated approach for this and how can I do it more easily in that case?

3 Answers3

10

If you want to do it Pythonic way.

#!/bin/python
import subprocess
AUTOHIDE = subprocess.check_output (["/usr/bin/dconf", "read", "/org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode"])
if (AUTOHIDE==1):
   subprocess.call (["/usr/bin/dconf", "write", "/org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode", "0"])
else:
   subprocess.call (["/usr/bin/dconf", "write", "/org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode", "1"])

you have to execute the programs by creating a subprocess.

And this is the bash script version

#!/bin/bash
AUTOHIDE=$(dconf read /org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode)
if [[ $AUTOHIDE -eq 1 ]]
then
   dconf write /org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode 0
else
   dconf write /org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode 1
fi

The shortcut can be assigned like this.

thefourtheye
  • 4,924
  • For Ubuntu 16.04, I had to change the Python code to if (int(AUTOHIDE)==1):, since AUTOHIDE was a string (either '1\n' or '0\n'). – ATOMP Jul 02 '18 at 14:02
3

One way to do it simply is to create a custom shortcut.

Access System Settings > Keyboard > Shortcuts > Custom shortcuts Then click '+' to add a new shortcut, and in the command box paste:

dconf write /org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode 0

This will create a shortcut for showing the launcher. Now to hide the launcher, you should create another shortcut adding the command:

dconf write /org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode 1

Of course, now you'll have one command for each function, but I put them side by side and find it very intuitive.

  • I've found this answer incredibly useful. I like being able to 'Hide' and 'Unhide' the launcher quickly without going to Settings->Appearance->Behaviour and then toggling the AutoHide ON/OFF button. I like to set up Shift + Ctrl + P to 'Put it away' and then Shift + Ctrl + L to show the Launcher and keep it there for the time being. – pHeLiOn May 30 '16 at 19:14
1

For Unity 2D the dconf lines should be

/com/canonical/unity-2d/launcher/hide-mode

There is also a third mode “Intellihide” whose value is 2.