In 12.04 (Unity), I would like to assign a shortcut to the "always on top option" for a window. Probably something like Ctrl+Shift+Home to turn on and Ctrl+Shift+End to turn off, or whatever. Is there an option to do this somewhere in the Compiz Settings Manager?
This (old) post claimed that
For compiz, Enable Extra WM Actions. Check the properties, and insert ALT+A to Key field for Toggle Always-On-Top action.
But I couldn't find that.
It should work on every Ubuntu OS since version 9.04 without installing anything, modifying of creating any shortcuts.
Try Alt + Space, T
Alt + Space as the first shortcut brings up the right-click mouse menu
T selects the "Always On Top" function.
Since no one has mentioned this yet, I'll just leave a solution that worked for me on Ubuntu 12.04.
You could setup a regular keyboard shortcut and use wmctrl to toggle the "Always on Top" option.
Go to System Settings > Keyboard > Shortcuts > Custom Shortcuts. Hit the + and give your shortcut a name. Then enter the following command.
If you don't have it already, you can install wmctrl from the repos using
You should have something that looks similar to this.
Hit apply and you should be good to go!
This solution came from a discussion on Ubuntu forums.
Unity instead of GNOME (Ubuntu before 17.04)
If not install CCSM and extra compiz plugins via:
Be aware please. CCSM can kill Unity3D on some systems.
If you have not had compiz-plugins-extra already installed, you need to restart Compiz to load them (even though they display in CCSM just fine before the restart) with Alt+F2 and
You can see Extra WM Actions under Windows Management section on CCSM as explained in the post you found. You can set the desired action there easily.
I tried to use the
wmctrl
command toggle, but it didn't work on my Ubuntu set up. The toggle would toggle on, but not toggle off. (I think it might be because I'm using the gnome desktop environment, on whichwmctrl
is slightly broken AFAIK).Anyway, after a lot of research and working out how to write proper code in bash, I created a single command that uses the
wmctrl
commands within a layer of logic to toggle the 'always on top' state effectively on the current GNOME desktop. I posted this answer on Ask Unix/Linux, but thought I'd post it here too in case anyone had the same issue.Here is the command:
It checks the active window state property "_NET_WM_STATE" using
xprops
, and if it contains the text "ABOVE" that means the 'always on top' option is active. Then it just runs thewmctrl
command with the parameteradd
orremove
as appropriate.Command breakdown (each command is inserted into the next, replacing the
■
placeholder):Get active window id:
Get the window state from
xprop
using the id:Check if the state contains "ABOVE", indicating that the window is set to "always on top":
Return "remove" if true, otherwise return "add":
run
wmctrl
command using the returned value as a parameter:Send the whole thing to
bash
so that you can use command substitution${ ... }
, bash boolean evaluation[[ ... ]]
and the regex match operator=~
:This last step in particular took me a very long time to figure out. Until I realised that the keyboard shortcuts weren't running in bash by default, I had no idea why the commands were working in the console as I was testing them but silently failing when run directly as a keyboard shortcut. It drove me up the wall for ages!
Note: because you need quotes around the command you're sending to bash, I had to be careful when writing the command that I never went more than one more level deep (using double quotes). Any further nesting of strings in quotes would have required lots of confusing backslashes to escape the quotes.
Further detailed notes: how to create the keyboard shortcut (thanks @rajesh_chaurasiya)
Install wmctrl using
sudo apt-get install wmctrl
if you haven't alreadyGo to system settings > keyboard shortcuts. Click the
+
button to add a custom shortcut.Choose a name such as 'Toggle always on top' ( it can be anything you like ).
In the command field add the full command from the top of this answer.
Record a keybinding to complete the shortcut.
Another, better I think, solution is to add
Alt
+A
as a shortcut to toggle the "Always on Top" property of a window. This can be done via gconf-editor. Just follow the simple instructions given in this video.EDIT : Copied from the video
if you are using 12.04 && 12.10 you have to install gconf-editor
sudo apt-get install gconf-editor
Type
gconf-editor
in terminal.Click on apps
Go to metacity
window_keybindings
right click inside the right box and click on
new key
Choose
string
from the dropdown list.Add the word
toggle_above
Write any command you want. i.e : A and press OK
Done :-)
It may be too late but if anyone search for it again and come here, there is, as for me, a more simple solution:
On Ubuntu and on many other distributions using GTK (they mostly share the setting panel), you can go to Setting -> keyboard > shortcut. In the "list" of shortcut, you will find the entry unassigned to keep a windows on top. Not sure of the name in English but in French it's "Activer/Désactiver la mise au premier plan de la fenêtre".
In English, it is "Rise window above other windows".
Set it and that's it :)