Can Unity display a Launcher icon for Spread Mode?

Solution 1:

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.

Solution 2:

  • First Install xdotool 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=true1
    
  • Now Browse to ~/.local/share/applications/

  • Find the spread.desktop and make it executable (Here's how to do that)
  • Now Drag that file into the launcher and you are done.

Solution 3:

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.

Solution 4:

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.