ICESH(1)

NAME
 icesh - control window properties and the IceWM window manager

SYNOPSIS

icesh OPTIONS|ACTIONS+

DESCRIPTION
icesh provides 85 commands to change or query a window's state, and to interact with the icewm(1) window manager. Command arguments are called actions. Window actions operate on a selection of windows. icesh has several options to select and filter windows. Options and actions can be interspersed. They are processed and evaluated one after another from left to right. Therefore, an option can only affect a subsequent action, but not a previous one. Because of this, an action can operate on a different selection of windows than a previous action, if it is preceded by a new select option. In combination with filter options, this gives icesh its expressive power. Use it in icewm-keys(5) to define your own window management hotkeys.

OPTIONS
icesh recognizes the following options:

  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.

The following five options select one or more client windows. If needed, they can be repeated for successive actions.

-w, -window WINDOW_ID
    Specifies the identifier of the window, WINDOW_ID, for which the action applies. Special identifiers are root for the root window and focus for the currently focused window.

-r, -root
    Is equivalent to -window root and selects the root window.

-f, -focus
    Is equivalent to -window focus and selects the focused window.

-a, -all
    Selects all clients of the window manager.

-s, -shown
    Selects all currently visible clients of the window manager.

-t, -top
    Selects all toplevel windows from the display unconditionally.

  FILTER OPTIONS
The following options filter the currently selected set of windows. If no previous select option was given then a -all option is implicitly assumed to filter all client windows.

-c, -class WM_CLASS
    Filters the set of windows on window manager class, WM_CLASS. If WM_CLASS contains a period, only windows with exactly the same WM_CLASS property are matched. If there is no period, windows of the same class and windows of the same instance (aka. -name) are selected.

-l, -last
    Filter clients and keep only the most recent client.

-m, -machine HOST
    Filters clients by host name. Clients with a WM_CLIENT_MACHINE property equal to HOST are selected.

-n, -name NAME
    Filters clients by _NET_WM_NAME or WM_NAME. NAME matches any part of the property value. To match at the beginning use a "^" prefix. To match at the end use a "$" suffix.

-p, -pid PID
    Filters clients by process ID. Clients with a _NET_WM_PID property equal to PID are selected.

-G, -Gravity GRAVITY
    Filters clients by the window gravity field of the WM_NORMAL_HINTS property. Clients with a gravity equal to GRAVITY are selected. If GRAVITY starts with an exclamation mark then the filtering is inverted.

-L, -Layer LAYER
    Filters clients by GNOME window layer, which can either be a layer name (see below) or a layer number. If LAYER starts with an exclamation mark then the filtering is inverted.

-P, -Property PROP
    Filters clients by property. Clients which have a property PROP are selected. The filtering is inverted if PROP starts with an exclamation mark.

-R, -Role ROLE
    Filters clients by WM_WINDOW_ROLE. Clients which have a WM_WINDOW_ROLE property value equal to ROLE are selected. The filtering is inverted if ROLE starts with an exclamation mark.

-S, -State STATE
    Filters clients by GNOME window state. Clients which have at least a state of STATE are selected. The window state refers to details like minized or maximized and is explained below. If STATE starts with an exclamation mark then the filtering is inverted. A question mark "?" filters clients with any bit set in STATE.

-W, -Workspace WORKSPACE
    Filter clients by workspace. Workspace WORKSPACE is either a workspace name or a workspace number counting from zero. If WORKSPACE starts with an exclamation mark then the filtering is inverted.

-X, -Xinerama MONITOR
    Limit clients by RandR/Xinerama monitor. Only operate on clients which are displayed on MONITOR, where MONITOR can be "All" for all monitors, "this" for the monitor where the active window is displayed, or a monitor number starting from zero. See the output of "randr" or "xinerama" below.

  GENERAL OPTIONS
The following options are identical for every IceWM command.

-d, -display DISPLAY
    Specifies the X11 DISPLAY. If unspecified, defaults to $DISPLAY.

-h, --help
    Print a brief usage statement to stdout and exit.

-V, --version
    Print the program version to stdout and exit.

-C, --copying
    Print copying permissions to stdout for the program and exit.

ACTIONS
icesh expects one or more action arguments. There are two kinds of actions: window actions and manager actions. The first operates on the selected windows. The second directly interacts with the icewm window manager.

  WINDOW ACTIONS
The following actions affect the selected window or windows.

activate
    Activate the window, aka. to focus.

close
    Close the window.

kill
    Terminate the window.

id  Print window identifiers for the selected windows.

pid Print process identifiers for the selected windows.

list
    Show window details, like geometry and names.

lower
    Lower the window.

raise
    Raise the window.

above
    Stack the window above others.

below
    Stack the window below others.

rollup
    Rollup the specified window.

fullscreen
    Set the window to fullscreen.

maximize
    Maximize the window.

horizontal
    Maximize the window only horizontally.

vertical
    Maximize the window only vertically.

minimize
    Minimize the window.

restore
    Restore the window to normal.

hide
    Make window hidden.

unhide
    Undo window hidden.

skip
    Don't show window on taskbar.

unskip
    Do show window on taskbar.

resize WIDTH HEIGHT
    Resize window to WIDTH by HEIGHT window units.

sizeto WIDTH HEIGHT
    Resize window to WIDTH by HEIGHT pixels. If WIDTH or HEIGHT ends with a percent sign "%", then they refer to a percentage of the desktop work area. For instance, "sizeto 50% 100%"a resizes to half the desktop width and whatever height is available above or below the taskbar.

move X Y
    Move the selected window or windows to the screen position X Y. To specify X or Y values relative to the right side or bottom side precede the value with an extra minus sign, like in "move -+10 --20".

moveby X Y
    Displace window by X Y pixels.

center
    Position window in the center of the desktop work area.

left
    Position window against the left side of the desktop work area.

right
    Position window against the right side of the desktop work area.

top Position window against the top side of the desktop work area.

bottom
    Position window against the bottom side of the desktop work area.

setIconTitle TITLE
    Set the icon title to TITLE.

getIconTitle
    Print the icon title.

setWindowTitle TITLE
    Set the window title to TITLE.

getWindowTitle
    Print the window title.

setGeometry GEOMETRY
    Set the window geometry to GEOMETRY.

getGeometry
    Print the window geometry.

setState MASK STATE
    Set the GNOME window state to STATE. Only bits selected by MASK are affected. See below for STATE and MASK symbols.

toggleState STATE
    Toggle the GNOME window state bits specified by the STATE expression. See below for STATE symbols.

getState
    Print the GNOME window state for the specified window.

setHints HINTS
    Set the GNOME window hints to HINTS. See below for symbols.

getHints
    Print the GNOME window hints for the specified window.

setLayer LAYER
    Move the specified window to another GNOME window layer. See below for LAYER symbols.

getLayer
    Print the GNOME window layer for the specified window.

setWorkspace WORKSPACE
    Move the specified window to another workspace. Select the root window to change the current workspace. If WORKSPACE is "All" then the specified window becomes visible on all workspaces. Specify "this" for the current workspace.

getWorkspace
    Print the workspace for the specified window.

opacity [OPACITY]
    Print the window opacity if OPACITY is not given, otherwise set the window opacity to OPACITY.

setTrayOption TRAYOPTION
    Set the IceWM tray option for the specified window to TRAYOPTION. See IceWM tray options, below, for TRAYOPTION symbols.

getTrayOption
    Print the IceWM tray option for the specified window.

setNormalGravity GRAVITY
    Set the window gravity field in the WM_NORMAL_HINTS property for the specified window to GRAVITY. See below for GRAVITY symbols.

getNormalGravity
    Print the window gravity from the WM_NORMAL_HINTS property for the specified window.

setWindowGravity GRAVITY
    Set the window gravity for the specified window to GRAVITY. See below for GRAVITY symbols.

getWindowGravity
    Print the window gravity for the specified window.

setBitGravity GRAVITY
    Set the bit gravity> for the specified window to GRAVITY. See below for GRAVITY symbols.

getBitGravity
    Print the bit gravity for the specified window.

motif [funcs FUNCTIONS | decor DECORATIONS | remove]
    Query, set or modify the "_MOTIF_WM_HINTS" property for the specified window. Without arguments motif will show the current value, but only if the window has such a property. The property can be removed or reset with the remove argument. With funcs and decor individual fields of this property can be enabled or disabled. If FUNCTIONS or DECORATIONS starts with a minus or plus sign then the existing value is modified, otherwise it is set to the new value. Note that if "All" is set, then other set fields will be disabled and cleared fields will be enabled.

prop PROPERTY
    Print the value of property PROPERTY if it is present. PROPERTY can be a string, a window, or a list of one or more atoms or cardinals.

  MANAGER ACTIONS
The following actions control the IceWM window manager and therefore do not require a window select or filter option:

listWorkspaces
    List the names of all workspaces.

goto WORKSPACE
    Change the current workspace to WORKSPACE.

workspaces [COUNT]
    Print the number of workspaces if COUNT is not given, otherwise set the number of workspaces to COUNT.

setWorkspaceName INDEX NAME
    Change the name of the workspace INDEX to NAME, where INDEX is a workspace number starting from zero.

setWorkspaceNames NAME [NAME]*
    Change the workspace names to the list of NAMEs.

addWorkspace NAME
    Create a new workspace with name NAME.

desktop [SHOWING]
    If SHOWING is 1 then set "showing the desktop" mode. If SHOWING is 0 then turn off "showing the desktop". Print the current mode if SHOWING is not given.

randr
    Summarize the RandR configuration.

xinerama
    Summarize the Xinerama configuration.

check
    Print information about the current window manager, like name, version, class, locale, command, host name and pid.

clients
    List all managed client windows, their titles and geometries.

shown
    List all mapped client windows for the current desktop, their titles and geometries.

windows
    List all toplevel windows, their titles and geometries.

systray
    List applications which are managed by the IceWM system tray.

xembed
    List application windows which are embedded using the XEMBED protocol. This is another way to discover system tray applications.

logout
    Let icewm execute the "LogoutCommand".

reboot
    Let icewm execute the "RebootCommand".

shutdown
    Let icewm execute the "ShutdownCommand".

cancel
    Let icewm cancel the logout/reboot/shutdown.

about
    Let icewm show the about window.

windowlist
    Let icewm show the window list window.

restart
    Let icewm restart itself.

suspend
    Let icewm execute the "SuspendCommand".

winoptions
    Let icewm reload the "winoptions".

guievents
    Monitor the ICEWM_GUI_EVENT property and report all changes.

colormaps
    Monitor which colormap is installed.

runonce program [arguments...]
    This action is meant to be used together with the -class option. Only if no window is matched by WM_CLASS then program [arguments...] is executed.

sync
    Synchronize with the IceWM window manager. That is, wait for icewm to process all previous actions.

symbols
    List all named symbols.

  EXPRESSIONS
Some of the window actions require one or two EXPRESSION arguments.

EXPRESSION ::= SYMBOL | EXPRESSION { "+" | "|" } SYMBOL

Each SYMBOL may be from one of the following applicable domains:

GNOME window state
    Named symbols of the domain GNOME window state (numeric range: 0-1023):

        AllWorkspaces          (1)
        Sticky                 (1)
        Minimized              (2)
        Maximized             (12)
        MaximizedVert          (4)
        MaximizedVertical      (4)
        MaximizedHoriz         (8)
        MaximizedHorizontal    (8)
        Hidden                (16)
        Rollup                (32)
        All                 (1023)

    These symbols are used with the MASK and STATE arguments to the "setState" and "toggleState" actions. Some additional states include: Above, Below, Urgent and Fullscreen.

GNOME window hint
    Named symbols of the domain GNOME window hint (numeric range: 0-63):

        SkipFocus              (1)
        SkipWindowMenu         (2)
        SkipTaskBar            (4)
        FocusOnClick          (16)
        DoNotCover            (32)
        All                   (63)

    These symbols are used with the HINTS argument to the "setHints" action.

GNOME window layer
    Named symbols of the domain GNOME window layer (numeric range: 0-15):

        Desktop                (0)
        Below                  (2)
        Normal                 (4)
        OnTop                  (6)
        Dock                   (8)
        AboveDock             (10)
        Menu                  (12)

    These symbols are used with the LAYER argument to the "setLayer" action.

IceWM tray option
    Named symbols of the domain IceWM tray option (numeric range: 0-2):

        Ignore                 (0)
        Minimized              (1)
        Exclusive              (2)

    These symbols are used with the TRAYOPTION argument to the "setTrayOption" action.

Gravity symbols
    Named symbols for window and bit gravity (numeric range: 0-10):

        ForgetGravity         (0)
        NorthWestGravity      (1)
        NorthGravity          (2)
        NorthEastGravity      (3)
        WestGravity           (4)
        CenterGravity         (5)
        EastGravity           (6)
        SouthWestGravity      (7)
        SouthGravity          (8)
        SouthEastGravity      (9)
        StaticGravity         (10)

Motif functions
        All                  (1)
        Resize               (2)
        Move                 (4)
        Minimize             (8)
        Maximize             (16)
        Close                (32)

Motif decorations
        All                  (1)
        Border               (2)
        Resize               (4)
        Title                (8)
        Menu                 (16)
        Minimize             (32)
        Maximize             (64)

EXAMPLES
List all workspace names:

    icesh listWorkspaces

Example output:

    workspace #0: `main'
    workspace #1: `web'
    workspace #2: `doc'
    workspace #3: `dev'

Close terminal work and activate terminal fun.

    icesh -c work.XTerm close -a -c fun.XTerm activate

Print opacity for all xterms.

    icesh -c XTerm opacity

Change opacity for all xterms.

    icesh -c XTerm opacity 84

Move all windows on workspace "Top" to the current workspace.

    icesh -W "Top" setWorkspace "this"

Restore all hidden clients, minimize all clients on the current workspace and activate Firefox.

    icesh -S hidden restore -a -W "this" minimize -a -c Firefox activate

Resize the focused window to occupy the right half of the desktop area.

    icesh -f sizeto 49% 100% sync top sync right sync raise activate

ENVIRONMENT
The following environment variables are examined by icesh:

DISPLAY
    The display to use if the -display option is unspecified.

COMPLIANCE
While icesh is largely compliant with the GNOME WinWM/WMH specification, it only minimally supports NetWM/EWMH. Some commands, like tray options and manager actions, are specific to IceWM.

SEE ALSO
icewm(1), wmctrl(1), xdotool(1), xprop(1), xwininfo(1).

BUGS
icesh had no known bugs at the time of release. Please report bugs for current versions to the source code repository at <https://github.com/bbidulock/icewm/issues>.

AUTHOR
Brian Bidulock <mailto:bidulock@openss7.org>.

See --copying for full copyright notice and copying permissions.

LICENSE
IceWM is licensed under the GNU Library General Public License. See the COPYING file in the distribution or use the --copying flag to display copying permissions.