Search notes:

Shell command: wmctrl

wmctrl is acommand to query an EWMH/NetWM compatible window manager for information or request it to perform a given action.

Actions

-m Show information about the window manager and about the environment.
-l List windows managed by the window manager, see columns for wmctrl -l
-d List desktops. The current desktop is marked with an asterisk.
-s <DESK> Switch to the specified desktop.
-a <WIN> Activate the window by switching to its desktop and raising it.
-c <WIN> Close the window gracefully.
-R <WIN> Move the window to the current desktop and activate it.
-r <WIN> -t <DESK> Move the window to the specified desktop.
-r <WIN> -e <MVARG> Resize and move the window around the desktop.
-r <WIN> -b <STARG> Change the state of the window. Using this option it's possible for example to make the window maximized, minimized or fullscreen. The format of the <STARG> argument and list of possible states is given below.
-r <WIN> -N <STR> Set the name (long title) of the window.
-r <WIN> -I <STR> Set the icon name (short title) of the window.
-r <WIN> -T <STR> Set both the name and the icon name of the window.
-k (on|off) Activate or deactivate window manager's "showing the desktop" mode. Many window managers do not implement this mode.
-o <X>,<Y> Change the viewport for the current desktop. The X and Y values are separated with a comma. They define the top left corner of the viewport. The window manager may ignore the request.
-n <NUM> Change number of desktops. The window manager may ignore the request.
-g <W>,<H> Change geometry (common size) of all desktops. The window manager may ignore the request.
-h Print help.

Arguments

<DESK> An integer, starting with 0, that identifies a desktop.
<MVARG> Five integers, separated by commas (g,x,y,w,h) which are used for the -r … -e … command. g stands for gravity (and 0 is the most common value for g). -1 can be used in the four remaining values to specify the «current» value.
<WIN> A string to identify a window. If -F is used, the string must match case sensitively and the entire title, otherwise, it's sufficient that the string matches a substring case insensitively. -F can be combined with -i to still force a case insenstive match. The special name :SELECT: let's the user select a window by clicking on it and :ACTIVE: refers to the currently active window.
<WORKAROUND>

Options

-i Interpret <WIN> as a numerical window ID.
-p Can be added to -l to include PIDs in the window list. Very few X applications support this feature.
-G Can be added to -l to include geometry in the window list.
-x Include WM_CLASS in the window list or interpret <WIN> as the WM_CLASS name.
-u Override auto-detection and force UTF-8 mode.
-F Modifies the behavior of the window title matching algorithm. It will match only the full window title instead of a substring, when this option is used. Furthermore it makes the matching case sensitive.
-v Be verbose. Useful for debugging.
-w <WA> Use a workaround. The option may appear multiple times. List of available workarounds is given below.

Columns for -l

The -l action prints the following columns:

Moving x-terminal around

gravity=0 # default

# start coordinates
x=20
y=600
width=600
height=200

for i in {1..100}; do

# Adjust coordinates:
  x=$((      $x      + 5 ))
  y=$((      $y      - 4 ))
  width=$((  $width  - 3 ))
  height=$(( $height + 3 ))

# resize and move current (that is: active) window:
  wmctrl -r :ACTIVE: -e "$gravity,$x,$y,$width,$height"

  clear
  echo x/y = $x/$y
  echo width/height = $width/$height

# Wait a bit
  sleep 0.1
done
Github repository shell-commands, path: /wmctrl/move-window.sh

See also

zenity
Shell commands
xdotools

Index