ICESH(1)
π icesh(1) β your bestieβs guide to window-property witchcraft π
πΈ NAME πΈ
icesh β control window properties and the IceWM window manager. Iconic behavior, no cap.
β¨ SYNOPSIS β¨
icesh OPTIONS|ACTIONS+
π¦ DESCRIPTION π¦
Okay so icesh gives you two types of commands, and theyβre both kind of main-character energy:
- Commands that directly interact with
icewm: These live in the MANAGER ACTIONS section below. Theyβre easy to use because you donβt have to select one or more windows first. For example,icesh restartwill restarticewm, andicesh clientslists the applications that are managed byicewm. - Commands that operate on a selection of windows: See the WINDOW ACTIONS section below. For example,
icesh closeis a request to close a window β but which window? Nowiceshwill 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 that 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 that 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, bestie:
π― 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 that 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 that 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 that are on the current workspace.-t,-topβ Selects all toplevel windows from the display unconditionally. This includes windows that have never been mapped and windows with the override redirect bit set to evade management.-w,-window,+w,+windowWINDOW_ID β Specifies the identifier of the window, WINDOW_ID, for which the action applies. Special identifiers arerootfor the root window andfocusfor 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 that are embedded using the XEMBED protocol.+c,+classCLASS β Extend the current selection with client windows that have aWM_CLASSproperty equal to CLASS. This is the resource instance and class name. If CLASS contains a period, only windows with exactly the sameWM_CLASSproperty 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 aWM_CLASSproperty similar to the already selected set of windows.-D,-Dockappsβ Selects all Dockapp applications that are managed byicewm.+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.-A,-Awaitβ Wait for one or more new client windows to appear and make that the new selection.
π§ 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,-classCLASS β Filters the set of windows on theirWM_CLASSproperty. This is the resource instance and class name. If CLASS contains a period, only windows with exactly the sameWM_CLASSproperty 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,-machineHOST β Filters clients by host name. Clients with aWM_CLIENT_MACHINEproperty equal to HOST are selected.-n,-nameNAME β Filters clients by_NET_WM_NAMEorWM_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,-pidPID β Filters clients by process ID. Clients are selected that have a process ID of PID, whenlibXResis at version 1.2, or that have a_NET_WM_PIDproperty equal to PID.-u,-unmappedβ Filter clients and keep those that are currently not viewable. These are hidden, minimized, rolled-up, or on another workspace.-v,-viewableβ Filter clients and keep only those that are currently viewable. These clients are mapped on the current workspace.-k,-koveredβ Filter clients and keep only those that are currently viewable and that are at least partially covered by another viewable window.-G,-GravityGRAVITY β Filters clients by the window gravity field of theWM_NORMAL_HINTSproperty. Clients with a gravity equal to GRAVITY are selected. If GRAVITY starts with an exclamation mark then the filtering is inverted.-L,-LayerLAYER β 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,-NetstateSTATE β Filters clients by EWMH window state. Clients that have at least an EWMH window state of STATE are selected. This state refers to details likeMINIZEDorMAXIMIZED. 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,-PropertyPROP[=value] β Filters clients by property. Clients that 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,-RoleROLE β Filters clients byWM_WINDOW_ROLE. Clients that have aWM_WINDOW_ROLEproperty value equal to ROLE are selected. The filtering is inverted if ROLE starts with an exclamation mark.-W,-WorkspaceWORKSPACE β Filter clients by workspace. Workspace WORKSPACE is either a workspace name, or a workspace number counting from zero, or the wordthisfor the current workspace, or the wordAllfor all workspaces. If WORKSPACE starts with an exclamation mark then the filtering is inverted.-X,-XineramaMONITOR β Limit clients by RandR/Xinerama monitor. Only operate on clients that are displayed on MONITOR, where MONITOR can beAllfor all monitors,thisfor the monitor where the active window is displayed, or a monitor number starting from zero. See the output ofrandrorxineramabelow.-Z,-Zerminalβ Keep only terminals: clients that have forked a shell.
π GENERAL OPTIONS π
The following options are identical for every IceWM command.
-d,-displayDISPLAY β 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 and clear urgency.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 urgency flag to flash the task button.
β¨ resize WIDTH HEIGHT
Resize the window to WIDTH by HEIGHT window units. And bestie, for text-based apps like terminals a "window unit" is literally just one character cell β no cap, that's the whole unit. π
β¨ sizeto WIDTH HEIGHT
Resize the window to WIDTH by HEIGHT pixels. But here's the β¨ twist β¨: if WIDTH or HEIGHT ends with a percent sign %, then it means a percentage of the desktop work area. So sizeto 50% 100% gives you half the desktop width and whatever height is left over above or below the taskbar. Queen behavior honestly. π
β¨ sizeby WIDTH HEIGHT
Resize the window by WIDTH by HEIGHT pixels β note the by, this one is a nudge not a set. If WIDTH or HEIGHT ends with %, it's a percentage of the current window size. So sizeby 50% 200 bumps the width up by 50% and grows the height by 200 pixels. π¦
β¨ move X Y
Move the selected window (or windows β plural slay) to screen position X Y. Want X or Y measured from the right or bottom edge instead? Just slap an extra minus sign in front, like move -+10 --20. And when X or Y end with %, they refer to a percentage of the desktop work area. π
β¨ moveby X Y
Displace the window by X Y pixels. Little shift, tiny scoot. πΈ
β¨ mousemove
Start a mouse-controlled movement of the window. You grab it, you drag it, it's yours. π«Ά
β¨ center
Position the window in the center of the desktop work area. Main character energy, dead center. β
β¨ 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. Get you a title. π
β¨ setWindowTitle TITLE
Set the window title to TITLE.
β¨ getWindowTitle
Print the window title.
β¨ setGeometry GEOMETRY
Set the window geometry to GEOMETRY. Quick heads up: this geometry has to be in a format that XParseGeometry(3) can parse β that's the vibe check it needs to pass. Negative offsets are measured from the bottom or right side of the screen, and if you want a truly negative position you write "+-". π yes really.
β¨ getGeometry
Print the window geometry.
β¨ setClass CLASS
Set the resource name and class to CLASS, which should be a resource name and a resource class joined by a dot. Want to keep either the existing name or the existing class all cozy where it is? Use a percentage sign for that part. π
β¨ getClass
Print the resource name and class.
β¨ netState [STATE]
The EWMH window state icon, honestly. Here's the breakdown:
- Leave STATE out entirely and it just shows the EWMH window state.
- STATE starts with
+β the flags in STATE are appended to the existing EWMH window state. - STATE starts with
-β the flags in STATE get removed from the existing EWMH window state. - STATE starts with
^β the flags in STATE are toggled against the existing EWMH window state. - STATE starts with
=β the EWMH window state is set to STATE.
Peep EXPRESSIONS below for the deets, and you can find a full list of EWMH flags in the output of icesh symbols. π₯
β¨ setLayer LAYER
Move the specified window to another window layer. EXPRESSIONS below has the full 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 (she's everywhere π). And you've got shortcuts:
"this"β the current workspace"next"β the subsequent workspace"prev"β the preceding workspace
β¨ getWorkspace
Print the workspace for the specified window.
β¨ opacity [OPACITY]
Print the window opacity if OPACITY isn't given, otherwise set the window opacity to OPACITY. Translucent era. π
β¨ setTrayOption TRAYOPTION
Set the IceWM tray option for the specified window to TRAYOPTION. The TRAYOPTION symbols live in "IceWM tray options", below. π
β¨ 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. GRAVITY symbols are listed below. πΈ
β¨ 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 the 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 the 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. Let's break it down:
- With no arguments at all,
motifshows you the current value β but only if the window actually has such a property. No property, no show. π - The property can be removed or reset with the
removeargument. - With
funcsanddecoryou can enable or disable individual fields of this property. - If FUNCTIONS or DECORATIONS starts with a minus or plus sign, the existing value gets modified; otherwise it's set to the new value.
Ngl this part trips everyone up: note that if "All" is set, other set fields are disabled and cleared fields are enabled. Yes, it's giving chaos. π
β¨ borderless
Hide the frame borders and title. Clean girl aesthetic. β¨
β¨ bordered
Show the frame borders and title. She's back. π
β¨ denormal
Remove the WM_NORMAL_HINTS property, if it exists. This lifts font-size restrictions on resizing, especially for terminals β so your terminal can finally breathe. π
β¨ prop PROPERTY
Print the value of property PROPERTY, if it is present.
β¨ properties
Print all properties and their values. The full lore dump. π
β¨ frame
Print the identifier of the window frame.
β¨ extents
Print the window identifier and the frame border sizes: left, right, top and bottom. All four, no skipping. π«Ά
β¨ focusmodel
Print the ICCCM focus model as advertised by the client window. This is either Locally, Passive, Globally or NoInput β those four, periodt. β
β¨ override [0|1]
Print the override redirect status for the window, or if either 0 or 1 is given, then disable or enable the override redirect status. π
β¨ tabto label
Move the windows as tabs to a frame that has "frame" label label. Such a frame is created if needed β she'll build it for you. π¦
β¨ untab
Move each window to its own frame, if it is currently tabbed. Everyone gets their own room now. πΈ
β¨ loadicon image.pam
Load an icon from file, which must be in the PAM image format, with dimensions at most 256, a depth of 4, and type RGB_ALPHA. Strict requirements bestie, she does not negotiate. π₯
β¨ saveicon file000.pam
Save an icon to a new file in the PAM image format. Digits are increased to generate a unique new filename for each window. The window must have a _NET_WM_ICON property, no property no save. πΎβ¨
β¨ usertime
Show the time of last user interaction in milliseconds.
β¨ 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 β yes, it actually moves there first. 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 β she's watching, in the least creepy way possible. π Also, to monitor all of the protocol request messages that client applications may send to icewm, spy on the root window too.
β¨ stacking
Sort the list of windows from topmost to bottom-most. β¬οΈ
β¨ reverse
Reverse the order of the list of windows. Flip it. π
β¨ switchmenu
Output the list as a menu for icewm's QuickSwitch. This action is to be used in a switchkey directive in the "keys" file.
β¨ print format
For each window in the selection, print a line according to format. Here common backslash-escapes are recognized, as well as the following percent formatting options:
%β A literal percent sign.hβ The window height.wβ The window width.xβ The window x-position.yβ The window y-position.gβ The window geometry.iβ The window identifying handle.oβ An icon name.pβ The process-ID of the window application.cβ TheWM_CLASSproperty of the window.mβ TheWM_CLIENT_MACHINEproperty of the window.tβ The window title.Wβ The current workspace of the window.
And a cute little detail: each percent format option may start with a minus sign for left-alignment and can have a numeric field width. Formatting icon behavior. π
π MANAGER ACTIONS π
Okay so these next ones control the IceWM window manager itself β which means they do not require a window select or filter option. No window? No problem. π
β¨ 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.
β¨ getWorkspaceName INDEX
Print the name of workspace INDEX, where INDEX is a workspace number starting from zero. Zero-indexed, like a real one. π
β¨ getWorkspaceNames
Print the name of all workspaces, one per line of output.
β¨ 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 *NAME*s. As many as you want, she's flexible. π¦
β¨ addWorkspace NAME
Create a new workspace with name NAME. New workspace just dropped. π
β¨ 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.
β¨ workarea
Print the dimensions of the work area for the current workspace. This is the desktop, but minus space occupied by dock and panel windows. Maths. β¨
β¨ 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. Full ID check. πͺͺ
β¨ 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β shows you every app the IceWM system tray is looking after β¨xembedβ lists windows embedded via the XEMBED protocol, which is just another lil way to snoop out your system tray apps πlogoutβ tells icewm to run the"LogoutCommand"rebootβ tells icewm to run the"RebootCommand"shutdownβ tells icewm to run the"ShutdownCommand"cancelβ nope-ing out of a logout/reboot/shutdown π«Άaboutβ pops open the about window, cute lil credits momentwindowlistβ makes icewm show the window list windowrestartβ icewm restarts itself, main character refresh energy πsuspendβ tells icewm to run the"SuspendCommand"hibernateβ tells icewm to run the"HibernateCommand"winoptionsβ reloads the"winoptions"file. Heads up bestie: this only affects new windows, existing ones are not getting the memokeysβ reloads the"keys"filetoolbarβ reloads the"toolbar"filerefreshβ refreshes the desktop background, very satisfying ngl πΈguieventsβ watches theICEWM_GUI_EVENTproperty and reports every single change. Hit Ctrl+C to abort this and move on to the next commanddelay [time]β stops execution for time, or0.1seconds if you don't sayrunonce program [arguments...]β this one is meant to be used together with the-classoption. Only if no window is matched byWM_CLASSdoes it runprogram [arguments...]π¦loop [count]β jumps back to the beginning of the command and repeats. The optional count caps how many times it goes aroundpickβ choose a window by clicking it with a mouse button π±οΈx11timeβ prints the current X11 server time, in millisecondssyncβ syncs up with the IceWM window manager, i.e. it waits for icewm to process all the previous actions before moving onsymbolsβ lists every named symbol
π CONDITIONALS π
Icesh supports "if-then-else" expressions, and the full syntax is literally this:
if selection
then
actions
elif selection
then
actions
else
actions
end
Where "selection" is a sequence of selection and filtering options, and it evaluates to true when it's non-empty β meaning one or more windows actually fulfilled the condition π If it's empty, then its "actions" clause gets ignored and the next "elif" or "else" clause is tried or taken instead. Every single clause is optional, no pressure.
Whenever a selection condition evaluates to false, the window selection that existed before the "if" clause is immediately restored. Same thing happens after an "end" clause. Snapshot restored, no crumbs left behind β¨
π« EXPRESSIONS π«
Some of the window actions need one or two EXPRESSION arguments.
EXPRESSION ::= SYMBOL | EXPRESSION { "+" | "|" | "-" } SYMBOL
Translation bestie: an expression is either a SYMBOL, or an expression combined with an operator into a SYMBOL. So like, an expression is a sequence of symbols stitched together with operators, and an operator can be a plus, a vertical bar, or a minus.
Each SYMBOL is either a number or a named symbol from one of the following applicable domains, depending on the context where it's used π
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)
Fullscreen (14)
AboveAll (15)
These ones 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 get 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 π
Okay this is the fun part, let's go πββοΈ
List all workspace names:
icesh listWorkspaces
Example output, so you know what to expect:
workspace #0: `main'
workspace #1: `web'
workspace #2: `doc'
workspace #3: `dev'
Close terminal work and activate terminal fun. Goodbye productivity:
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. Three-for-one combo π₯:
icesh -N HIDDEN restore -a -W "this" minimize -a -c Firefox activate
Resize the focused window so it occupies the right half of the desktop area:
icesh -f sizeto 49% 100% top right raise
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's a different solution using conditionals:
icesh -f if -P _NET_FRAME_EXTENTS=0 then bordered else borderless
Here's a conditional that either toggles the visibility of a roxterm with a WM_WINDOW_ROLE value of "special", or starts it with runonce:
icesh if -c roxterm.Roxterm -R special then \
if -v then hide \
elif -u then setWorkspace this activate end \
else runonce roxterm --role=special
Collect all urxvt terminals from the fourth workspace into a single frame on the current workspace:
icesh -W 3 -c urxvt tabto myfunnyname
Use the loop construct conditionally to wait for a certain window to show up π°οΈ:
icesh -t if -n Tooltip then list else delay 0.05 loop end
πΈ 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 syntax3β the display could not be opened4β 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 β so those are house rules, iykyk.
π¦ SEE ALSO π¦
icewm(1), wmctrl(1), xdotool(1), xprop(1), xwininfo(1), XParseGeometry(3).
π BUGS π
Please report bugs at <https://github.com/ice-wm/icewm/issues>. Do it, they wanna know π«Ά
π AUTHOR π
Brian Bidulock <mailto:bidulock@openss7.org>.
See --copying for the 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.
okay that's the whole page bestie, you're officially an icesh girlie now π β¨
Sign-off time cuties: this was icewm version 4.1.0, dated 2026-08-06, page ICESH(1). Screenshot it, frame it, slay π
π¦ where this page comes from
- arch rolling: icewm 4.1.0-1 Β· LGPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms