6

I want to set a keyboard shortcut to close the current window in Ubuntu 16.04. I am aware that alt+f4 already does this and that I can redefine this shortcut if I want to, but what I really want is to add an additional shortcut to perform the same function.

The reason being; I have a keyboard without designated function keys (a 60%). Instead the function keys are activated via a keyboard shortcut that toggles the row of number keys between number and function keys (for example 4 to f4 and vice versa).

I am deep in the habit of quickly closing windows using alt+f4 and want it to work regardless of whether I am in function key or number key mode, but can't seem to find what I should enter in the command field when setting a new keyboard shortcut.

I have found a good workaround to my particular problem and posted it in the answers below. Still open to more elegant solutions.

Edit: To clarify, the machine is running X11.

4

wmctrl -c <win>

   wmctrl - interact with a EWMH/NetWM compatible X Window Manager.

   -c <WIN>
          Close the window <WIN> gracefully.

(from man wmctrl. But note: I use XFCE so haven't tested this on Unity as found in default Ubuntu 16.04, and I wouldn't expect it to work if using Wayland on 17.10 upwards)

  • I am using X11, and having installed wmctrl, and applied your suggestion, it does work sort of. But The command does more than close the active window. Entering wmctrl -c WIN in terminal does close the current window, but it also seems to perform some kind of refresh of X11: the screen blinks and all open windows are moved to workspace 1. Is there something I am doing wrong here? Or is there another way to specify the exact functionality of alt+f4? – FinleyGibson Feb 11 at 13:03
  • the <win> should be replaced by the window you want to close. I've only used it in shell scripts, and have known what workspaces (i usually use it to effect workspaces more than windows) I want to add/delete/switch-to. It takes some play to get to understand it, and I'd have your shortcut run a shell.script that closed the window (not sure how you'd work out current window, it's a case I never considered in using wmctrl as its not how I use it as the windows I've closed are ones I've opened with my scripts) – guiverc Feb 11 at 13:07
  • For example, I have a folder with photos open (in thunar as I'm using XFCE currently), and select one to view so open it. It opens in gpicview (my preferred viewer for that type of file). To close the window I can ctrl+alt+T to open a terminal and enter the command wmctrl -c P1000403.JPG (the P1000403.JPG being the name of the picture I was viewing in this example). On pressing enter the gpicview window containing my photo closes. <win> was replaced by the 'title' of my 'window' in this example. The '<>' characters were copied from the man page representing values you change. – guiverc Feb 11 at 13:27
  • I see what you are saying. In order to implement what I want in this way, I would then need a means of getting the name of the currently active window. But I can't seem to find a way. – FinleyGibson Feb 11 at 13:39
  • It's after midnight my local time, what you've got is the best I can provide from my tired-brain given I want to go to bed (and don't want to find my scripts to look for clues). the moment I've found the photo I want, it's being posted & I'm off to bed – guiverc Feb 11 at 13:47
2

Had you try to use CTRL+Q

I was use to press these keys to close windows, never added a keyboard shortcut, seems to be the default at least in the distros I used(always debian based)

but I see the point of your question

  • Nice Idea, but ctrl +Q does nothing for me. – FinleyGibson Feb 11 at 13:21
2

the other work around i found along with @FinleyGibson answer is

open dconf-editor (if dconf-editor is not installed, install with below command
sudo apt install dconf-editor)

search key word "close"

enter image description here

then edit the custom value to ['<Alt>F4', '<Alt>4']

enter image description here

  • That looks like a good workaround. Not going accept it as the answer since there could still be a way to get the original command, but it does look like a tidy solution and I will use it in the future. – FinleyGibson Feb 12 at 16:23
1

I found a good solution to my problem, though it does not exactly answer the question I originally asked, I'm posting it here as a workaround for anyone that encounters a similar issue.

The solution I found was to use xdotool to execute the alt+f4 shortcut as a command, and to set this as the command for alt+4. To do this first isntall xdotool if you don't have it already:

sudo apt-get install xdotool

Then go to keyboard shortcuts in the settings menu, and add a custom shortcut. In the command field enter:

xdotool key Alt+F4

And set the shortcut to Alt+4.

This works well, but I'm leaving the question as is, in case someone has a more elegant solution, using the exact command called by the close window shortcut by default.

  • 1
    Did you try xkill ? I'd say it is more advanced for me and kills just about anything :D you can launch it either from terminal or creating a shortcut. – JoKeR Feb 12 at 13:30
  • 2
    I did look into that. The problem with xkill is that it kills the whole process tree. So if you have 2 terminal windows open, both will be closed. This is not the functionality of alt+F4 and is not quite what I was looking for. – FinleyGibson Feb 12 at 16:20
  • xdotool is a good solution for this issue. If you ever need to do something a bit more involved, take a look at AutoKey. It allows you to setup hotkeys and trigger phrases which can do anything from a simple text insertion to running an arbitrarily complex Python script which can use the keyboard and mouse for you to perform multiple actions. – Joe Feb 14 at 18:34

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.