There is a Launcher icon for Expo Mode Super+S located in the Launcher. Is there a way to put a Launcher icon for Spread Mode Super+W in the Launcher?
7 Answers
Normally, you could do this with compiz's d-bus integration, but it appears to be broken in natty.
Instead, we can do this with xdotool.
Install xdotool:
sudo apt-get install xdotool
Create a script called ~/scripts/compiz-scale.sh to invoke scale:
#! /bin/sh
# Assumes compiz binding for Initiate Window Picker is Super-Tab
xdotool keydown Super && xdotool key Tab
xdotool keyup Super
(If you have a different binding, just replace Super with the meta key you use and Tab with the letter you use.)
Make the script executable:
chmod u+x ~/scripts/compiz-scale.sh
Create an app file called ~/scripts/compiz-scale.desktop to run your script:
#!/usr/bin/env xdg-open
# link me to /usr/share/applications/
[Desktop Entry]
Comment=Switch programs
Exec=/home/YOURUSERNAME/scripts/compiz-scale.sh
Icon=gnome-klotski
Name=Scale
Terminal=false
Type=Application
Version=1.0
Be sure to replace YOURUSERNAME with your user name.
In order to add to the launcher, the app file must be part of the system configuration. (If you just want it available as a search result, you can put it in ~/.local/share/applications .) We'll add a link to the file you created (so your setup is portable to new installs).
sudo ln -s ~/scripts/compiz-scale.desktop /usr/share/applications/compiz-scale.desktop
Now invoke the dash and search for "Scale". Your new app should show up. Click and drag it to the launcher. You should now be able to invoke scale from your launcher.
However, if you change your key binding it will break and you'll have to update your script. Also, it can't be invoked multiple times quickly. The launcher seems to have some double-click detection that prevents an app from being launched twice, so you have to wait before you can click again.
- 3,162
- First Install xdotool
from the software center - Create a file
~/.local/share/applications/spread.desktop - Open that file using gedit (or your preferred text editor)
Now paste the following into that file (and replace the icon path)
[Desktop Entry] Name=Spread Mode Exec=xdotool key --delay 10 super+w Icon=plugin-scale Terminal=false Type=Application StartupNotify=true1Now Browse to
~/.local/share/applications/- Find the
spread.desktopand make it executable (Here's how to do that) - Now Drag that file into the launcher and you are done.
To do this right click the desktop and create a launcher.
Give it a name such as "Spread Mode" and choose an appropriate icon
In the command field copy and paste the following
xte "keydown Super_L" "key w" "keyup
Super_L"
next, in a terminal:
sudo apt-get install xautomation
Drag and drop the new Spread Mode Launcher Icon into the Unity Launcher.
- 72,312
- 174,526
Create a launcher and exec this:
dbus-send --session --print-reply --dest=org.freedesktop.compiz /org/freedesktop/compiz/scale/allscreens/initiate_all_key org.freedesktop.compiz.activate string:"root" int32:`xwininfo -root | grep id: | awk '{ print $4 }'`
(copy and save this to the filename you used at the Exec line)
I did not create this but found it on this feature request. So kudos go to Daniel Fore
Originally this was not created for Unity but for 'elementary OS'. Should work though.
In addition to the button/launcher, note that you can also assign it to a 'hot spot' corner of the screen. (Similar to the way Gnome 3 does this; when you move the mouse to the very top-left, it will show all open windows in spread mode.)
To do this in Unity it's a bit harder than it should be, but still straightforward:
- install the Compiz Config Settings Manager
- install xdotool
- Open Compiz Config Settings Manager and go to Commands
- For Command0 (or any available one) enter
xdotool key Super+w - Click the Edge Bindings tab and press the button to assign a key for Command0 (will show None if none has been defined yet.
- Now set the area of the screen to assign the command to. Top Left works well, because for some reason this is completely un-used in Unity; normally you can't even click there to open the dash/lenses!