Provided by: icewm-common_2.9.6-1_amd64 bug

NAME

        icesh - control window properties and the IceWM window manager

SYNOPSIS

       icesh OPTIONS|ACTIONS+

DESCRIPTION

       icesh provides two types of commands:

       1. Commands to directly interact with icewm:
           These  are  listed  in the section "MANAGER ACTIONS" below.  They are easy to use, because they don't
           require to select one or more windows. For example, "icesh restart" will  restart  icewm  and  "icesh
           clients" lists the applications which are managed by icewm.

       2. Commands which operate on a selection of windows:
           See  the  section  "WINDOW ACTIONS" below. For example, "icesh close" 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.

           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  icewm-keys(5)  to  define  your  own  window
           management hotkeys.  For example, to immediately close all xterm windows do "icesh -c xterm close".

           There  are  a  dozen  "SELECT  OPTIONS"  to select windows.  They start with a '-' or a '+'.  The '-'
           starts a new selection, while the '+' adds more windows to an existing selection.

           This selection of windows can be reduced by "FILTER OPTIONS".  These remove unwanted windows from the
           current selection.  Multiple filter options can be given. For example, "icesh -c xterm -W this close"
           will close only those xterms which are shown on the current workspace. The xterms on other workspaces
           are filtered out by the "-W this" filter option.

       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.

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  crosshair  is  shown  to select the desired window
       interactively. The manager actions do not require window options.

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

       -a, -all
           Selects all client windows of the window manager.

       -f, -focus, +f, +focus
           Selects  the  application window which is currently focused.  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.

       +g, +group
           Extend the current selection with client windows which belong to the same application window group.

       -r, -root, +r, +root
           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.

       -s, -shown
           Selects all client windows which are on the current workspace.

       -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.

       -w, -window, +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.  The option with minus sign
           replaces the existing selection.  With a plus sign the window is added to an existing selection.

       -x, -xembed
           Selects all windows which are embedded using the XEMBED protocol.

       +c, +class CLASS
           Extend the current selection with client windows that have a WM_CLASS property equal to  CLASS.  This
           is  the  resource instance and class name.  If 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 are selected.

       +C, +Class
           Extend the current selection with client windows that have a WM_CLASS property similar to the already
           selected set of windows.

       -D, -Dockapps
           Selects all Dockapp applications which are managed by icewm.

       +P, +Pid
           Extend  the current selection with client windows that have the same process identifier as one of the
           selected windows.

       -T  Selects the IceWM taskbar.

   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 CLASS
           Filters the set of windows on their WM_CLASS property.  This is the resource instance and class name.
           If  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.

       -u, -unmapped
           Filter clients and keep those which are currently not viewable.  These are hidden, minimized, rolled-
           up, or on another workspace.

       -v, -viewable
           Filter clients and keep only those which are currently viewable.  These clients  are  mapped  on  the
           current workspace.

       -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 or a layer number. See
           EXPRESSIONS below. If LAYER starts with an exclamation mark then the filtering is inverted.

       -N, -Netstate STATE
           Filters clients by EWMH window state. Clients which have at least an EWMH window state of  STATE  are
           selected.   This  state  refers to details like MINIZED or MAXIMIZED. See EXPRESSIONS below. If STATE
           starts with an exclamation mark then the filtering is inverted.  A question mark "?" filters  clients
           with any bit set in STATE.

       -P, -Property PROP[=value]
           Filters  clients  by property. Clients which have a property PROP are selected. If the optional value
           is given, the match succeeds only if PROP is a string, window, cardinal, or atom, with a value  equal
           to value.  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.

       -W, -Workspace WORKSPACE
           Filter clients by workspace. Workspace WORKSPACE is either a workspace name, or  a  workspace  number
           counting  from  zero,  or  the  word  "this"  for  the  current  workspace, or the word "All" for all
           workspaces.  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.

       -q, --quiet
           Don't complain if no matching windows could be found.

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
           Send a close request to the client that created the window.

       kill
           Force an immediate close down of the client that created 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
           Hide the window.

       unhide
           Reveal the window.

       skip
           Don't show the window on the taskbar.

       unskip
           Do show the window on the taskbar.

       sticky
           Show the window on all workspaces.

       unsticky
           Show the window on just one workspace.

       urgent
           Set the urgent flag to flash the task button.

       resize WIDTH HEIGHT
           Resize window to WIDTH by HEIGHT window units.  For text based applications like terminals, a  window
           unit is the size of a single character cell.

       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%" resizes to  half  the
           desktop width and whatever height is available above or below the taskbar.

       sizeby WIDTH HEIGHT
           Resize  window  by WIDTH by HEIGHT pixels. If WIDTH or HEIGHT ends with a percent sign "%", then they
           refer to a percentage of the current window size. For instance, "sizeby 50% 200" increases the  width
           by 50% and increases the height by 200 pixels.

       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 the window in the center of the desktop work area.

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

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

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

       bottom
           Position the 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.   This geometry should be specified in a format that can be
           parsed by XParseGeometry(3).  Negative offsets are with respect to the bottom or right  side  of  the
           screen.  Use "+-" for a truly negative position.

       getGeometry
           Print the window geometry.

       netState [STATE]
           If  STATE  is  omitted then it shows the EWMH window state.  If STATE starts with a "+" then flags in
           STATE are appended to the existing EWMH window state.  If STATE starts with a "-" then flags in STATE
           are removed from the existing EWMH window state.  If STATE starts with a "^" then flags in STATE  are
           toggled  with  respect  to  the existing EWMH window state.  If STATE starts with a "=" then the EWMH
           window state is set to STATE. See EXPRESSIONS below. A list of EWMH flags can be found in the  output
           of "icesh symbols".

       setLayer LAYER
           Move  the  specified  window  to  another  window  layer.   See EXPRESSIONS below for a list of LAYER
           symbols.

       getLayer
           Print the 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, "next" for the  subsequent  workspace  or  "prev"  for  the
           preceding 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,  other
           set fields are disabled and cleared fields are enabled.

       borderless
           Hide the frame borders and title.

       bordered
           Show the frame borders and title.

       denormal
           Remove  the  WM_NORMAL_HINTS  property, if it exists.  This lifts font-size restrictions on resizing,
           especially for terminals.

       prop PROPERTY
           Print the value of property PROPERTY, if it is present.

       properties
           Print all properties and their values.

       frame
           Print the identifier of the window frame.

       click window-x window-y button
           Send a button press and release event at  position  (window-x,  window-y).  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.

       monitors top bottom left right
           This sets the monitors to use for fullscreen.  Top, bottom, left, and right are indices of the  icesh
           xinerama command.

       spy Observe  the selected windows and report any changes. This includes focus, visibility, position, size
           and all window properties.  To monitor all of the protocol request messages that client  applications
           may send to icewm, also spy on the root window.

   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.

       current
           Show the number and name of the current workspace.

       goto WORKSPACE
           Change the current workspace to WORKSPACE. Specify "next" for the subsequent workspace or "prev"  for
           the preceding 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".

       keys
           Let icewm reload the "keys" file.

       guievents
           Monitor the ICEWM_GUI_EVENT property and report all changes.

       delay [time]
           Stop execution for time or 0.1 seconds.

       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.

   CONDITIONALS
       Icesh supports "if-then-else" expressions. The full syntax is:

           if selection
           then
               actions
           elif selection
           then
               actions
           else
               actions
           end

       Where "selection" 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 "actions"
       clause is ignored and the subsequent "elif" or "else" clause is tried or taken. Each clause is optional.

       Whenever a selection condition evaluates to false, the window selection  that  existed  before  the  "if"
       clause is immediately restored.  This also happens after an "end" clause.

   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:

       Window layer
           Named symbols of the domain 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)

       EWMH window state symbols
           Named symbols of the domain EWMH state (numeric range: 0-8191):

               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)

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 -N 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

       Toggle the frame border of the focused window.

           if icesh -f motif | grep -q 'decor:$'; then \
               icesh -f motif decor All; else icesh -f motif decor ""; fi

       Here is a different solution using conditionals.

           icesh -f if -P _NET_FRAME_EXTENTS=0 then bordered else borderless

       Here  is  a  conditional  to  either  toggle  the  visibility  of a roxterm, which has a WM_ROLE value of
       "special", or start it with runonce.

           icesh sync if -c roxterm.Roxterm -R special then \
               if -v then hide \
               elif -u then setWorkspace this sync activate end \
               else runonce roxterm --role=special

ENVIRONMENT

       DISPLAY
           The default display.

EXIT STATUS

       0   The last action completed successfully.

       1   The last action completed unsuccessfully, or no window met the condition.

       2   A conditional has invalid syntax.

       3   The display could not be opened.

       4   The X server reports an error while processing a request.

COMPLIANCE

       icesh is largely compliant with the EWMH and ICCCM specifications.  Some commands, like manager  actions,
       are specific to IceWM.

SEE ALSO

       icewm(1), wmctrl(1), xdotool(1), xprop(1), xwininfo(1), XParseGeometry(3).

BUGS

       Please report bugs 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.

icewm 2.9.6                                        2022-02-23                                           ICESH(1)