Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ICESH(1)			 User Commands			      ICESH(1)

NAME
	icesh -	control	window properties and the IceWM	window manager

SYNOPSIS
       icesh OPTIONS|ACTIONS+

DESCRIPTION
       icesh provides commands to directly interact with the icewm(1) window
       manager.	 There are 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 about seven "SELECT OPTIONS" 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.

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

       -r, -root, +r, +root
	   Is equivalent to -window root 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.

       -f, -focus, +f, +focus
	   Is equivalent to -window focus 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.

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

       -s, -shown
	   Selects all clients 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.

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

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

   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.

       -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 only one workspace.

       urgent
	   Set the urgent flag.

       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%" 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, "sizeto 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	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.

       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.

       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.

   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.

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

       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.5.0			  2021-06-26			      ICESH(1)

NAME | SYNOPSIS | DESCRIPTION | OPTIONS | ACTIONS | EXAMPLES | ENVIRONMENT | EXIT STATUS | COMPLIANCE | SEE ALSO | BUGS | AUTHOR | LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=icesh&sektion=1&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help