.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "ICESH 1" .TH ICESH 1 "2021-05-11" "icewm\ 2.3.4" "User\ Commands" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" .Vb 1 \& icesh \- control window properties and the IceWM window manager .Ve .SH "SYNOPSIS" .IX Header "SYNOPSIS" .IP "\fBicesh\fR \fIOPTIONS|ACTIONS\fR+" 4 .IX Item "icesh OPTIONS|ACTIONS+" .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBicesh\fR provides commands to directly interact with the \fBicewm\fR\|(1) window manager. There are two types of commands: .IP "1. Commands to directly interact with icewm:" 4 .IX Item "1. Commands to directly interact with icewm:" These are listed in the section \*(L"\s-1MANAGER ACTIONS\*(R"\s0 below. They are easy to use, because they don't require to select one or more windows. For example, \f(CW\*(C`icesh restart\*(C'\fR will restart icewm and \f(CW\*(C`icesh clients\*(C'\fR lists the applications which are managed by icewm. .IP "2. Commands which operate on a selection of windows:" 4 .IX Item "2. Commands which operate on a selection of windows:" See the section \f(CW\*(C`WINDOW ACTIONS\*(C'\fR below. For example, \f(CW\*(C`icesh close\*(C'\fR is a request to close a window, but which window? Now icesh will turn the mouse pointer into a crosshair. Click on a window and a close request will be sent to that application. .Sp The power of icesh lies in its ability to programmatically select one or more windows and operate on that selection. This can be used in scripts and in \fBicewm\-keys\fR\|(5) to define your own window management hotkeys. For example, to immediately close all xterm windows do \f(CW\*(C`icesh \-c xterm close\*(C'\fR. .Sp There are about seven \f(CW\*(C`SELECT OPTIONS\*(C'\fR to select windows. They start with a minus sign '\-' or with a plus sign '+'. The first starts a new selection. The second adds more windows to an existing selection. .Sp This selection of windows can be reduced by \f(CW\*(C`FILTER OPTIONS\*(C'\fR. These remove unwanted windows from the current selection. Multiple filter options can be given. For example, \&\f(CW\*(C`icesh \-c xterm \-W this close\*(C'\fR will close only those xterms which are shown on the current workspace. The xterms on other workspaces are filtered out by the \f(CW\*(C`\-W this\*(C'\fR filter option. .PP There is no limit to the number of commands, selections, filters and actions which you can give to a single icesh command. They are processed and evaluated one by one from left to right. This makes icesh a small declarative programming language. Have a look at some examples near the end of this document. .SH "OPTIONS" .IX Header "OPTIONS" \&\fBicesh\fR recognizes the following options: .SS "\s-1SELECT OPTIONS\s0" .IX Subsection "SELECT OPTIONS" Select options specify the window or windows to which subsequent actions apply. If none is given, but an action does require a window, then a selection crossbar is invoked to select the desired window interactively. The manager actions do not require window options. .PP The following five options \fIselect\fR one or more client windows. If needed, they can be repeated for successive actions. .IP "\fB\-w\fR, \fB\-window\fR, \fB+w\fR, \fB+window\fR \fI\s-1WINDOW_ID\s0\fR" 4 .IX Item "-w, -window, +w, +window WINDOW_ID" Specifies the identifier of the window, \fI\s-1WINDOW_ID\s0\fR, for which the action applies. Special identifiers are \fBroot\fR for the root window and \fBfocus\fR for the currently focused window. The option with minus sign replaces the existing selection. With a plus sign the window is added to an existing selection. .IP "\fB\-r\fR, \fB\-root\fR, \fB+r\fR, \fB+root\fR" 4 .IX Item "-r, -root, +r, +root" Is equivalent to \fB\-window\fR \fBroot\fR and selects the root window. The option with minus sign replaces the existing selection with the root window. With a plus sign the root window is added to an existing selection. .IP "\fB\-f\fR, \fB\-focus\fR, \fB+f\fR, \fB+focus\fR" 4 .IX Item "-f, -focus, +f, +focus" Is equivalent to \fB\-window\fR \fBfocus\fR and selects the focused window. The option with minus sign replaces the existing selection with the focused window. With a plus sign the focused window is added to an existing selection. .IP "\fB\-a\fR, \fB\-all\fR" 4 .IX Item "-a, -all" Selects all client windows of the window manager. .IP "\fB\-s\fR, \fB\-shown\fR" 4 .IX Item "-s, -shown" Selects all clients which are on the current workspace. .IP "\fB\-t\fR, \fB\-top\fR" 4 .IX Item "-t, -top" Selects all toplevel windows from the display unconditionally. This includes windows which have never been mapped and windows with the override redirect bit set to evade management. .IP "\fB\-x\fR, \fB\-xembed\fR" 4 .IX Item "-x, -xembed" Selects all windows which are embedded using the \fI\s-1XEMBED\s0\fR protocol. .SS "\s-1FILTER OPTIONS\s0" .IX Subsection "FILTER OPTIONS" The following options \fIfilter\fR the currently selected set of windows. If no previous \fIselect\fR option was given then a \fB\-all\fR option is implicitly assumed to filter all client windows. .IP "\fB\-c\fR, \fB\-class\fR \fI\s-1WM_CLASS\s0\fR" 4 .IX Item "-c, -class WM_CLASS" Filters the set of windows on window manager class, \fI\s-1WM_CLASS\s0\fR. If \&\fI\s-1WM_CLASS\s0\fR contains a period, only windows with exactly the same \&\fI\s-1WM_CLASS\s0\fR property are matched. If there is no period, windows of the same class and windows of the same instance (aka. \fI\-name\fR) are selected. .IP "\fB\-l\fR, \fB\-last\fR" 4 .IX Item "-l, -last" Filter clients and keep only the most recent client. .IP "\fB\-m\fR, \fB\-machine\fR \fI\s-1HOST\s0\fR" 4 .IX Item "-m, -machine HOST" Filters clients by host name. Clients with a \s-1WM_CLIENT_MACHINE\s0 property equal to \fI\s-1HOST\s0\fR are selected. .IP "\fB\-n\fR, \fB\-name\fR \fI\s-1NAME\s0\fR" 4 .IX Item "-n, -name NAME" Filters clients by _NET_WM_NAME or \s-1WM_NAME.\s0 \&\fI\s-1NAME\s0\fR matches any part of the property value. To match at the beginning use a \f(CW\*(C`^\*(C'\fR prefix. To match at the end use a \f(CW\*(C`$\*(C'\fR suffix. .IP "\fB\-p\fR, \fB\-pid\fR \fI\s-1PID\s0\fR" 4 .IX Item "-p, -pid PID" Filters clients by process \s-1ID.\s0 Clients with a _NET_WM_PID property equal to \fI\s-1PID\s0\fR are selected. .IP "\fB\-G\fR, \fB\-Gravity\fR \fI\s-1GRAVITY\s0\fR" 4 .IX Item "-G, -Gravity GRAVITY" Filters clients by the window gravity field of the \s-1WM_NORMAL_HINTS\s0 property. Clients with a gravity equal to \fI\s-1GRAVITY\s0\fR are selected. If \fI\s-1GRAVITY\s0\fR starts with an exclamation mark then the filtering is inverted. .IP "\fB\-L\fR, \fB\-Layer\fR \fI\s-1LAYER\s0\fR" 4 .IX Item "-L, -Layer LAYER" Filters clients by \fI\s-1GNOME\s0 window layer\fR, which can either be a layer name or a layer number. See \s-1EXPRESSIONS\s0 below. If \fI\s-1LAYER\s0\fR starts with an exclamation mark then the filtering is inverted. .IP "\fB\-N\fR, \fB\-Netstate\fR \fI\s-1STATE\s0\fR" 4 .IX Item "-N, -Netstate STATE" Filters clients by \fI\s-1EWMH\s0 window state\fR. Clients which have at least an \s-1EWMH\s0 window state of \fI\s-1STATE\s0\fR are selected. This state refers to details like \fBminized\fR or \fBmaximized\fR. See \s-1EXPRESSIONS\s0 below. If \fI\s-1STATE\s0\fR starts with an exclamation mark then the filtering is inverted. A question mark \f(CW\*(C`?\*(C'\fR filters clients with any bit set in \fI\s-1STATE\s0\fR. .IP "\fB\-P\fR, \fB\-Property\fR \fIPROP[=value]\fR" 4 .IX Item "-P, -Property PROP[=value]" Filters clients by property. Clients which have a property \fI\s-1PROP\s0\fR are selected. If the optional \fIvalue\fR is given, the match succeeds only if \fI\s-1PROP\s0\fR is a string, window, cardinal, or atom, with a value equal to \fIvalue\fR. The filtering is inverted if \fI\s-1PROP\s0\fR starts with an exclamation mark. .IP "\fB\-R\fR, \fB\-Role\fR \fI\s-1ROLE\s0\fR" 4 .IX Item "-R, -Role ROLE" Filters clients by \s-1WM_WINDOW_ROLE.\s0 Clients which have a \s-1WM_WINDOW_ROLE\s0 property value equal to \fI\s-1ROLE\s0\fR are selected. The filtering is inverted if \fI\s-1ROLE\s0\fR starts with an exclamation mark. .IP "\fB\-W\fR, \fB\-Workspace\fR \fI\s-1WORKSPACE\s0\fR" 4 .IX Item "-W, -Workspace WORKSPACE" Filter clients by workspace. Workspace \fI\s-1WORKSPACE\s0\fR is either a workspace name, or a workspace number counting from zero, or the word \&\f(CW\*(C`this\*(C'\fR for the current workspace, or the word \f(CW\*(C`All\*(C'\fR for all workspaces. If \fI\s-1WORKSPACE\s0\fR starts with an exclamation mark then the filtering is inverted. .IP "\fB\-X\fR, \fB\-Xinerama\fR \fI\s-1MONITOR\s0\fR" 4 .IX Item "-X, -Xinerama MONITOR" Limit clients by \fIRandR\fR/\fIXinerama\fR monitor. Only operate on clients which are displayed on \fI\s-1MONITOR\s0\fR, where \fI\s-1MONITOR\s0\fR can be \f(CW\*(C`All\*(C'\fR for all monitors, \f(CW\*(C`this\*(C'\fR for the monitor where the active window is displayed, or a monitor number starting from zero. See the output of \f(CW\*(C`randr\*(C'\fR or \f(CW\*(C`xinerama\*(C'\fR below. .SS "\s-1GENERAL OPTIONS\s0" .IX Subsection "GENERAL OPTIONS" The following options are identical for every IceWM command. .IP "\fB\-d\fR, \fB\-display\fR \fI\s-1DISPLAY\s0\fR" 4 .IX Item "-d, -display DISPLAY" Specifies the X11 \s-1DISPLAY.\s0 If unspecified, defaults to \fB\f(CB$DISPLAY\fB\fR. .IP "\fB\-h\fR, \fB\-\-help\fR" 4 .IX Item "-h, --help" Print a brief usage statement to \fIstdout\fR and exit. .IP "\fB\-V\fR, \fB\-\-version\fR" 4 .IX Item "-V, --version" Print the program version to \fIstdout\fR and exit. .IP "\fB\-C\fR, \fB\-\-copying\fR" 4 .IX Item "-C, --copying" Print copying permissions to \fIstdout\fR for the program and exit. .IP "\fB\-q\fR, \fB\-\-quiet\fR" 4 .IX Item "-q, --quiet" Don't complain if no matching windows could be found. .SH "ACTIONS" .IX Header "ACTIONS" \&\fBicesh\fR expects one or more action arguments. There are two kinds of actions: \fIwindow actions\fR and \fImanager actions\fR. The first operates on the selected windows. The second directly interacts with the \fBicewm\fR window manager. .SS "\s-1WINDOW ACTIONS\s0" .IX Subsection "WINDOW ACTIONS" The following actions affect the selected window or windows. .IP "\fBactivate\fR" 4 .IX Item "activate" Activate the window, aka. \fIto focus\fR. .IP "\fBclose\fR" 4 .IX Item "close" Send a close request to the client that created the window. .IP "\fBkill\fR" 4 .IX Item "kill" Force an immediate close down of the client that created the window. .IP "\fBid\fR" 4 .IX Item "id" Print window identifiers for the selected windows. .IP "\fBpid\fR" 4 .IX Item "pid" Print process identifiers for the selected windows. .IP "\fBlist\fR" 4 .IX Item "list" Show window details, like geometry and names. .IP "\fBlower\fR" 4 .IX Item "lower" Lower the window. .IP "\fBraise\fR" 4 .IX Item "raise" Raise the window. .IP "\fBabove\fR" 4 .IX Item "above" Stack the window above others. .IP "\fBbelow\fR" 4 .IX Item "below" Stack the window below others. .IP "\fBrollup\fR" 4 .IX Item "rollup" Rollup the specified window. .IP "\fBfullscreen\fR" 4 .IX Item "fullscreen" Set the window to fullscreen. .IP "\fBmaximize\fR" 4 .IX Item "maximize" Maximize the window. .IP "\fBhorizontal\fR" 4 .IX Item "horizontal" Maximize the window only horizontally. .IP "\fBvertical\fR" 4 .IX Item "vertical" Maximize the window only vertically. .IP "\fBminimize\fR" 4 .IX Item "minimize" Minimize the window. .IP "\fBrestore\fR" 4 .IX Item "restore" Restore the window to normal. .IP "\fBhide\fR" 4 .IX Item "hide" Hide the window. .IP "\fBunhide\fR" 4 .IX Item "unhide" Reveal the window. .IP "\fBskip\fR" 4 .IX Item "skip" Don't show the window on the taskbar. .IP "\fBunskip\fR" 4 .IX Item "unskip" Do show the window on the taskbar. .IP "\fBsticky\fR" 4 .IX Item "sticky" Show the window on all workspaces. .IP "\fBunsticky\fR" 4 .IX Item "unsticky" Show the window on only one workspace. .IP "\fBurgent\fR" 4 .IX Item "urgent" Set the urgent flag. .IP "\fBresize\fR \fI\s-1WIDTH\s0\fR \fI\s-1HEIGHT\s0\fR" 4 .IX Item "resize WIDTH HEIGHT" Resize window to \fI\s-1WIDTH\s0\fR by \fI\s-1HEIGHT\s0\fR window units. .IP "\fBsizeto\fR \fI\s-1WIDTH\s0\fR \fI\s-1HEIGHT\s0\fR" 4 .IX Item "sizeto WIDTH HEIGHT" Resize window to \fI\s-1WIDTH\s0\fR by \fI\s-1HEIGHT\s0\fR pixels. If \fI\s-1WIDTH\s0\fR or \fI\s-1HEIGHT\s0\fR ends with a percent sign \f(CW\*(C`%\*(C'\fR, then they refer to a percentage of the desktop work area. For instance, \f(CW\*(C`sizeto 50% 100%\*(C'\fR resizes to half the desktop width and whatever height is available above or below the taskbar. .IP "\fBsizeby\fR \fI\s-1WIDTH\s0\fR \fI\s-1HEIGHT\s0\fR" 4 .IX Item "sizeby WIDTH HEIGHT" Resize window by \fI\s-1WIDTH\s0\fR by \fI\s-1HEIGHT\s0\fR pixels. If \fI\s-1WIDTH\s0\fR or \fI\s-1HEIGHT\s0\fR ends with a percent sign \f(CW\*(C`%\*(C'\fR, then they refer to a percentage of the current window size. For instance, \f(CW\*(C`sizeto 50% 200\*(C'\fR increases the width by 50% and increases the height by 200 pixels. .IP "\fBmove\fR \fIX\fR \fIY\fR" 4 .IX Item "move X Y" Move the selected window or windows to the screen position \fIX\fR \fIY\fR. To specify \fIX\fR or \fIY\fR values relative to the right side or bottom side precede the value with an extra minus sign, like in \f(CW\*(C`move \-+10 \-\-20\*(C'\fR. .IP "\fBmoveby\fR \fIX\fR \fIY\fR" 4 .IX Item "moveby X Y" Displace window by \fIX\fR \fIY\fR pixels. .IP "\fBcenter\fR" 4 .IX Item "center" Position the window in the center of the desktop work area. .IP "\fBleft\fR" 4 .IX Item "left" Position the window against the left side of the desktop work area. .IP "\fBright\fR" 4 .IX Item "right" Position the window against the right side of the desktop work area. .IP "\fBtop\fR" 4 .IX Item "top" Position the window against the top side of the desktop work area. .IP "\fBbottom\fR" 4 .IX Item "bottom" Position the window against the bottom side of the desktop work area. .IP "\fBsetIconTitle\fR \fI\s-1TITLE\s0\fR" 4 .IX Item "setIconTitle TITLE" Set the icon title to \fI\s-1TITLE\s0\fR. .IP "\fBgetIconTitle\fR" 4 .IX Item "getIconTitle" Print the icon title. .IP "\fBsetWindowTitle\fR \fI\s-1TITLE\s0\fR" 4 .IX Item "setWindowTitle TITLE" Set the window title to \fI\s-1TITLE\s0\fR. .IP "\fBgetWindowTitle\fR" 4 .IX Item "getWindowTitle" Print the window title. .IP "\fBsetGeometry\fR \fI\s-1GEOMETRY\s0\fR" 4 .IX Item "setGeometry GEOMETRY" Set the window geometry to \fI\s-1GEOMETRY\s0\fR. .IP "\fBgetGeometry\fR" 4 .IX Item "getGeometry" Print the window geometry. .IP "\fBnetState\fR \fI[\s-1STATE\s0]\fR" 4 .IX Item "netState [STATE]" If \fI\s-1STATE\s0\fR is omitted then it shows the \fI\s-1EWMH\s0 window state\fR. If \fI\s-1STATE\s0\fR starts with a \f(CW\*(C`+\*(C'\fR then flags in \fI\s-1STATE\s0\fR are appended to the existing \fI\s-1EWMH\s0 window state\fR. If \fI\s-1STATE\s0\fR starts with a \f(CW\*(C`\-\*(C'\fR then flags in \fI\s-1STATE\s0\fR are removed from the existing \fI\s-1EWMH\s0 window state\fR. If \fI\s-1STATE\s0\fR starts with a \f(CW\*(C`^\*(C'\fR then flags in \fI\s-1STATE\s0\fR are toggled with respect to the existing \fI\s-1EWMH\s0 window state\fR. If \fI\s-1STATE\s0\fR starts with a \f(CW\*(C`=\*(C'\fR then the \fI\s-1EWMH\s0 window state\fR is set to \fI\s-1STATE\s0\fR. See \s-1EXPRESSIONS\s0 below. A list of \fI\s-1EWMH\s0 flags\fR can be found in the output of \f(CW\*(C`icesh symbols\*(C'\fR. .IP "\fBsetLayer\fR \fI\s-1LAYER\s0\fR" 4 .IX Item "setLayer LAYER" Move the specified window to another \fI\s-1GNOME\s0 window layer\fR. See below for \fI\s-1LAYER\s0\fR symbols. .IP "\fBgetLayer\fR" 4 .IX Item "getLayer" Print the \fI\s-1GNOME\s0 window layer\fR for the specified window. .IP "\fBsetWorkspace\fR \fI\s-1WORKSPACE\s0\fR" 4 .IX Item "setWorkspace WORKSPACE" Move the specified window to another workspace. Select the root window to change the current workspace. If \fI\s-1WORKSPACE\s0\fR is \f(CW\*(C`All\*(C'\fR then the specified window becomes visible on all workspaces. Specify \f(CW\*(C`this\*(C'\fR for the current workspace. .IP "\fBgetWorkspace\fR" 4 .IX Item "getWorkspace" Print the workspace for the specified window. .IP "\fBopacity\fR [\fI\s-1OPACITY\s0\fR]" 4 .IX Item "opacity [OPACITY]" Print the window opacity if \fI\s-1OPACITY\s0\fR is not given, otherwise set the window opacity to \fI\s-1OPACITY\s0\fR. .IP "\fBsetTrayOption\fR \fI\s-1TRAYOPTION\s0\fR" 4 .IX Item "setTrayOption TRAYOPTION" Set the \fIIceWM tray option\fR for the specified window to \fI\s-1TRAYOPTION\s0\fR. See \fIIceWM tray options\fR, below, for \fI\s-1TRAYOPTION\s0\fR symbols. .IP "\fBgetTrayOption\fR" 4 .IX Item "getTrayOption" Print the \fIIceWM tray option\fR for the specified window. .IP "\fBsetNormalGravity\fR \fI\s-1GRAVITY\s0\fR" 4 .IX Item "setNormalGravity GRAVITY" Set the window gravity field in the \s-1WM_NORMAL_HINTS\s0 property for the specified window to \fI\s-1GRAVITY\s0\fR. See below for \fI\s-1GRAVITY\s0\fR symbols. .IP "\fBgetNormalGravity\fR" 4 .IX Item "getNormalGravity" Print the window gravity from the \s-1WM_NORMAL_HINTS\s0 property for the specified window. .IP "\fBsetWindowGravity\fR \fI\s-1GRAVITY\s0\fR" 4 .IX Item "setWindowGravity GRAVITY" Set the window gravity for the specified window to \fI\s-1GRAVITY\s0\fR. See below for \fI\s-1GRAVITY\s0\fR symbols. .IP "\fBgetWindowGravity\fR" 4 .IX Item "getWindowGravity" Print the window gravity for the specified window. .IP "\fBsetBitGravity\fR \fI\s-1GRAVITY\s0\fR" 4 .IX Item "setBitGravity GRAVITY" Set the bit gravity> for the specified window to \fI\s-1GRAVITY\s0\fR. See below for \fI\s-1GRAVITY\s0\fR symbols. .IP "\fBgetBitGravity\fR" 4 .IX Item "getBitGravity" Print the bit gravity for the specified window. .IP "\fBmotif\fR [\fBfuncs\fR \fI\s-1FUNCTIONS\s0\fR | \fBdecor\fR \fI\s-1DECORATIONS\s0\fR | \fBremove\fR]" 4 .IX Item "motif [funcs FUNCTIONS | decor DECORATIONS | remove]" Query, set or modify the \f(CW\*(C`_MOTIF_WM_HINTS\*(C'\fR property for the specified window. Without arguments \fBmotif\fR will show the current value, but only if the window has such a property. The property can be removed or reset with the \fBremove\fR argument. With \fBfuncs\fR and \fBdecor\fR individual fields of this property can be enabled or disabled. If \fI\s-1FUNCTIONS\s0\fR or \&\fI\s-1DECORATIONS\s0\fR starts with a minus or plus sign then the existing value is modified, otherwise it is set to the new value. Note that if \f(CW\*(C`All\*(C'\fR is set, then other set fields will be disabled and cleared fields will be enabled. .IP "\fBborderless\fR" 4 .IX Item "borderless" Hide the frame borders and title. .IP "\fBbordered\fR" 4 .IX Item "bordered" Show the frame borders and title. .IP "\fBdenormal\fR" 4 .IX Item "denormal" Remove the \s-1WM_NORMAL_HINTS\s0 property, if it exists. This lifts font-size restrictions on resizing, especially for terminals. .IP "\fBprop\fR \fI\s-1PROPERTY\s0\fR" 4 .IX Item "prop PROPERTY" Print the value of property \fI\s-1PROPERTY\s0\fR if it is present. .IP "\fBproperties\fR" 4 .IX Item "properties" Print all properties. .IP "\fBframe\fR" 4 .IX Item "frame" Print the identifier of the window frame. .IP "\fBclick\fR \fIwindow-x\fR \fIwindow-y\fR \fIbutton\fR" 4 .IX Item "click window-x window-y button" Send a button press and release event at position (\fIwindow-x\fR, \&\fIwindow-y\fR). A negative position is relative to the bottom right corner. The mouse pointer is warped to the position before sending the events. The button number should be between 1 and 5 inclusive. .IP "\fBmonitors\fR \fItop\fR \fIbottom\fR \fIleft\fR \fIright\fR" 4 .IX Item "monitors top bottom left right" This sets the monitors to use for fullscreen. Top, bottom, left, and right are indices of the \fIicesh xinerama\fR command. .IP "\fBspy\fR" 4 .IX Item "spy" Observe the selected windows and report any changes. This includes focus, visibility, position, size and all window properties. .SS "\s-1MANAGER ACTIONS\s0" .IX Subsection "MANAGER ACTIONS" The following actions control the IceWM window manager and therefore do not require a window \fIselect\fR or \fIfilter\fR option: .IP "\fBlistWorkspaces\fR" 4 .IX Item "listWorkspaces" List the names of all workspaces. .IP "\fBcurrent\fR" 4 .IX Item "current" Show the number and name of the current workspace. .IP "\fBgoto\fR \fI\s-1WORKSPACE\s0\fR" 4 .IX Item "goto WORKSPACE" Change the current workspace to \fI\s-1WORKSPACE\s0\fR. .IP "\fBworkspaces\fR [\fI\s-1COUNT\s0\fR]" 4 .IX Item "workspaces [COUNT]" Print the number of workspaces if \fI\s-1COUNT\s0\fR is not given, otherwise set the number of workspaces to \fI\s-1COUNT\s0\fR. .IP "\fBsetWorkspaceName\fR \fI\s-1INDEX\s0\fR \fI\s-1NAME\s0\fR" 4 .IX Item "setWorkspaceName INDEX NAME" Change the name of the workspace \fI\s-1INDEX\s0\fR to \fI\s-1NAME\s0\fR, where \fI\s-1INDEX\s0\fR is a workspace number starting from zero. .IP "\fBsetWorkspaceNames\fR \fI\s-1NAME\s0\fR [\fI\s-1NAME\s0\fR]*" 4 .IX Item "setWorkspaceNames NAME [NAME]*" Change the workspace names to the list of \fI\s-1NAME\s0\fRs. .IP "\fBaddWorkspace\fR \fI\s-1NAME\s0\fR" 4 .IX Item "addWorkspace NAME" Create a new workspace with name \fI\s-1NAME\s0\fR. .IP "\fBdesktop\fR [\fI\s-1SHOWING\s0\fR]" 4 .IX Item "desktop [SHOWING]" If \fI\s-1SHOWING\s0\fR is \f(CW1\fR then set \f(CW\*(C`showing the desktop\*(C'\fR mode. If \fI\s-1SHOWING\s0\fR is \f(CW0\fR then turn off \f(CW\*(C`showing the desktop\*(C'\fR. Print the current mode if \fI\s-1SHOWING\s0\fR is not given. .IP "\fBrandr\fR" 4 .IX Item "randr" Summarize the \fIRandR\fR configuration. .IP "\fBxinerama\fR" 4 .IX Item "xinerama" Summarize the \fIXinerama\fR configuration. .IP "\fBcheck\fR" 4 .IX Item "check" Print information about the current window manager, like name, version, class, locale, command, host name and pid. .IP "\fBclients\fR" 4 .IX Item "clients" List all managed client windows, their titles and geometries. .IP "\fBshown\fR" 4 .IX Item "shown" List all mapped client windows for the current desktop, their titles and geometries. .IP "\fBwindows\fR" 4 .IX Item "windows" List all toplevel windows, their titles and geometries. .IP "\fBsystray\fR" 4 .IX Item "systray" List applications which are managed by the IceWM system tray. .IP "\fBxembed\fR" 4 .IX Item "xembed" List application windows which are embedded using the \fI\s-1XEMBED\s0\fR protocol. This is another way to discover system tray applications. .IP "\fBlogout\fR" 4 .IX Item "logout" Let icewm execute the \f(CW\*(C`LogoutCommand\*(C'\fR. .IP "\fBreboot\fR" 4 .IX Item "reboot" Let icewm execute the \f(CW\*(C`RebootCommand\*(C'\fR. .IP "\fBshutdown\fR" 4 .IX Item "shutdown" Let icewm execute the \f(CW\*(C`ShutdownCommand\*(C'\fR. .IP "\fBcancel\fR" 4 .IX Item "cancel" Let icewm cancel the logout/reboot/shutdown. .IP "\fBabout\fR" 4 .IX Item "about" Let icewm show the about window. .IP "\fBwindowlist\fR" 4 .IX Item "windowlist" Let icewm show the window list window. .IP "\fBrestart\fR" 4 .IX Item "restart" Let icewm restart itself. .IP "\fBsuspend\fR" 4 .IX Item "suspend" Let icewm execute the \f(CW\*(C`SuspendCommand\*(C'\fR. .IP "\fBwinoptions\fR" 4 .IX Item "winoptions" Let icewm reload the \f(CW\*(C`winoptions\*(C'\fR. .IP "\fBkeys\fR" 4 .IX Item "keys" Let icewm reload the \f(CW\*(C`keys\*(C'\fR file. .IP "\fBguievents\fR" 4 .IX Item "guievents" Monitor the \fB\s-1ICEWM_GUI_EVENT\s0\fR property and report all changes. .IP "\fBdelay\fR [\fItime\fR]" 4 .IX Item "delay [time]" Stop execution for \fItime\fR or 0.1 seconds. .IP "\fBrunonce\fR \fIprogram\fR [\fIarguments...\fR]" 4 .IX Item "runonce program [arguments...]" This action is meant to be used together with the \fB\-class\fR option. Only if no window is matched by \fI\s-1WM_CLASS\s0\fR then \&\fIprogram\fR [\fIarguments...\fR] is executed. .IP "\fBsync\fR" 4 .IX Item "sync" Synchronize with the IceWM window manager. That is, wait for icewm to process all previous actions. .IP "\fBsymbols\fR" 4 .IX Item "symbols" List all named symbols. .SS "\s-1CONDITIONALS\s0" .IX Subsection "CONDITIONALS" Icesh supports \f(CW\*(C`if\-then\-else\*(C'\fR expressions. The full syntax is: .PP .Vb 9 \& if selection \& then \& actions \& elif selection \& then \& actions \& else \& actions \& end .Ve .PP Where \f(CW\*(C`selection\*(C'\fR is a sequence of selection and filtering options, which evaluates to true when it is non-empty. That is, if one or more windows fulfilled the condition. If it is empty, then its \f(CW\*(C`actions\*(C'\fR clause is ignored and the subsequent \f(CW\*(C`elif\*(C'\fR or \f(CW\*(C`else\*(C'\fR clause is tried or taken. Each clause is optional. Even the \f(CW\*(C`then\*(C'\fR clause may be omitted. Whenever a selection condition evaluates to false, the window selection that existed before the \f(CW\*(C`if\*(C'\fR clause is immediately restored. Note that the use of conditionals is seldom needed. .SS "\s-1EXPRESSIONS\s0" .IX Subsection "EXPRESSIONS" Some of the window actions require one or two \fI\s-1EXPRESSION\s0\fR arguments. .ie n .IP "\fB\s-1EXPRESSION\s0\fR ::= \fI\s-1SYMBOL\s0\fR | \fI\s-1EXPRESSION\s0\fR { ""+"" | ""|"" } \fI\s-1SYMBOL\s0\fR" 4 .el .IP "\fB\s-1EXPRESSION\s0\fR ::= \fI\s-1SYMBOL\s0\fR | \fI\s-1EXPRESSION\s0\fR { \f(CW+\fR | \f(CW|\fR } \fI\s-1SYMBOL\s0\fR" 4 .IX Item "EXPRESSION ::= SYMBOL | EXPRESSION { + | | } SYMBOL" .PP Each \fI\s-1SYMBOL\s0\fR may be from one of the following applicable domains: .IP "\fIWindow layer\fR" 4 .IX Item "Window layer" Named symbols of the domain \fIWindow layer\fR (numeric range: 0\-15): .Sp .Vb 7 \& Desktop (0) \& Below (2) \& Normal (4) \& OnTop (6) \& Dock (8) \& AboveDock (10) \& Menu (12) .Ve .Sp These symbols are used with the \fI\s-1LAYER\s0\fR argument to the \f(CW\*(C`setLayer\*(C'\fR action. .IP "\fIIceWM tray option\fR" 4 .IX Item "IceWM tray option" Named symbols of the domain \fIIceWM tray option\fR (numeric range: 0\-2): .Sp .Vb 3 \& Ignore (0) \& Minimized (1) \& Exclusive (2) .Ve .Sp These symbols are used with the \fI\s-1TRAYOPTION\s0\fR argument to the \&\f(CW\*(C`setTrayOption\*(C'\fR action. .IP "\fIGravity symbols\fR" 4 .IX Item "Gravity symbols" Named symbols for window and bit gravity (numeric range: 0\-10): .Sp .Vb 11 \& ForgetGravity (0) \& NorthWestGravity (1) \& NorthGravity (2) \& NorthEastGravity (3) \& WestGravity (4) \& CenterGravity (5) \& EastGravity (6) \& SouthWestGravity (7) \& SouthGravity (8) \& SouthEastGravity (9) \& StaticGravity (10) .Ve .IP "\fIMotif functions\fR" 4 .IX Item "Motif functions" .Vb 6 \& All (1) \& Resize (2) \& Move (4) \& Minimize (8) \& Maximize (16) \& Close (32) .Ve .IP "\fIMotif decorations\fR" 4 .IX Item "Motif decorations" .Vb 7 \& All (1) \& Border (2) \& Resize (4) \& Title (8) \& Menu (16) \& Minimize (32) \& Maximize (64) .Ve .IP "\fI\s-1EWMH\s0 window state symbols\fR" 4 .IX Item "EWMH window state symbols" Named symbols of the domain \fI\s-1EWMH\s0 state\fR (numeric range: 0\-8191): .Sp .Vb 10 \& ABOVE (1) \& BELOW (2) \& DEMANDS_ATTENTION (4) \& FOCUSED (8) \& FULLSCREEN (16) \& HIDDEN (32) \& MAXIMIZED_HORZ (64) \& MAXIMIZED_VERT (128) \& MODAL (256) \& SHADED (512) \& SKIP_PAGER (1024) \& SKIP_TASKBAR (2048) \& STICKY (4096) .Ve .SH "EXAMPLES" .IX Header "EXAMPLES" List all workspace names: .PP .Vb 1 \& icesh listWorkspaces .Ve .PP Example output: .PP .Vb 4 \& workspace #0: \`main\*(Aq \& workspace #1: \`web\*(Aq \& workspace #2: \`doc\*(Aq \& workspace #3: \`dev\*(Aq .Ve .PP Close terminal work and activate terminal fun. .PP .Vb 1 \& icesh \-c work.XTerm close \-a \-c fun.XTerm activate .Ve .PP Print opacity for all xterms. .PP .Vb 1 \& icesh \-c XTerm opacity .Ve .PP Change opacity for all xterms. .PP .Vb 1 \& icesh \-c XTerm opacity 84 .Ve .PP Move all windows on workspace \*(L"Top\*(R" to the current workspace. .PP .Vb 1 \& icesh \-W "Top" setWorkspace "this" .Ve .PP Restore all hidden clients, minimize all clients on the current workspace and activate Firefox. .PP .Vb 1 \& icesh \-S hidden restore \-a \-W "this" minimize \-a \-c Firefox activate .Ve .PP Resize the focused window to occupy the right half of the desktop area. .PP .Vb 1 \& icesh \-f sizeto 49% 100% sync top sync right sync raise activate .Ve .PP Toggle the frame border of the focused window. .PP .Vb 2 \& if icesh \-f motif | grep \-q \*(Aqdecor:$\*(Aq; then \e \& icesh \-f motif decor All; else icesh \-f motif decor ""; fi .Ve .PP Here is a different solution using conditionals. .PP .Vb 1 \& icesh \-f if \-P _NET_FRAME_EXTENTS=0 then bordered else borderless .Ve .SH "ENVIRONMENT" .IX Header "ENVIRONMENT" .IP "\fB\s-1DISPLAY\s0\fR" 4 .IX Item "DISPLAY" The default display. .SH "EXIT STATUS" .IX Header "EXIT STATUS" .IP "\fB0\fR" 4 .IX Item "0" The last action completed successfully. .IP "\fB1\fR" 4 .IX Item "1" The last action completed unsuccessfully, or no window met the condition. .IP "\fB2\fR" 4 .IX Item "2" A conditional has invalid syntax. .IP "\fB3\fR" 4 .IX Item "3" The display could not be opened. .IP "\fB4\fR" 4 .IX Item "4" The X server reports an error while processing a request. .SH "COMPLIANCE" .IX Header "COMPLIANCE" \&\fBicesh\fR is largely compliant with the \s-1EWMH\s0 and \s-1ICCCM\s0 specifications. Some commands, like manager actions, are specific to IceWM. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBicewm\fR\|(1), \fBwmctrl\fR\|(1), \fBxdotool\fR\|(1), \fBxprop\fR\|(1), \fBxwininfo\fR\|(1). .SH "BUGS" .IX Header "BUGS" \&\fBicesh\fR had no known bugs at the time of release. Please report bugs for current versions to the source code repository at . .SH "AUTHOR" .IX Header "AUTHOR" Brian Bidulock . .PP See \fB\-\-copying\fR for full copyright notice and copying permissions. .SH "LICENSE" .IX Header "LICENSE" \&\fBIceWM\fR is licensed under the \s-1GNU\s0 Library General Public License. See the \fI\s-1COPYING\s0\fR file in the distribution or use the \fB\-\-copying\fR flag to display copying permissions.