14

I have a certain work environment with dozens of open Windows. How can I bring to the front a window with a known name/title programatically or using the command line?

12

I used to use wmctrl -a <name>, which works fine, but recently switched to xdotool, e.g.:

xdotool search --name <name-or-regex-for-name> windowraise

It has many other features too.

To install:

sudo apt-get install xdotool

| improve this answer | |
  • 5
    xdotool windowraise brings the window to the front but does not give focus to the window or switch to the desktop with the window. instead, windowactivate will do all three. – jozxyqk May 29 '15 at 9:18
6

Well, after sudo apt-get install wmctrl-ing, you can play with this bash script:

#! /bin/bash

WINTITLE="Mail/News" # Main Thunderbird window has this in titlebar
PROGNAME="mozilla-thunderbird" # This is the name of the binary for t-bird

# Use wmctrl to list all windows, count how many contain WINTITLE,
# and test if that count is non-zero:

if [ `wmctrl -l | grep -c "$WINTITLE"` != 0 ]
then
wmctrl -a "$WINTITLE" # If it exists, bring t-bird window to front
else
$PROGNAME & # Otherwise, just launch t-bird
fi
exit 0

Which I found here

| improve this answer | |
  • 4
    No need for the brackets and backticks: if ! wmctrl -l | grep -q "$WINTITLE" – Paused until further notice. Sep 2 '10 at 2:09
  • wmctrl has a -i option, which supports working with the window with its hex identifier. And so you can do this wmctrl -lp|grep 'whatever incomplete name'|cut -d' ' -f1|xargs wmctrl -ai - which would do something similar – vlad-ardelean Oct 11 '14 at 16:36
0

When using xdotool, it seems difficult to bring to front all windows for a given application or class using only one command. I end up having better results by wrapping it in a for loop at the shell level. Using Bash:

for WINDOW in $(xdotool search --desktop 0 Firefox); do
   xdotool windowactivate ${WINDOW}
done

Few remarks:

  • By default, xdotool search will search the pattern (here Firefox) in window name, class, and classname. If you want to restrict your search space, use the relevant --class, --name or --classname options.
  • The --desktop 0 option limits the search to the first desktop. This seems to be a workaround to avoid the XGetWindowProperty[_NET_WM_DESKTOP] failed (code=1) mentioned in some comments.
  • At the time of this writing, the xdotool project is stalled since 2015. It still remains my tool of choice. For personal reasons, Jordan Sissel (the original author) is not as active as he was in the past, so don't hesitate to contribute to the project.


This is a copy of an answer I've posted on AskUbuntu, but I think it is Linux-flavor independent, so it may be useful here too.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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