X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=scrotwm.1;h=21bc043ee18468ca81c2fa21285c72886761d003;hb=34e5a4f61d11e1b15127bce2ba82df0871997968;hp=964032254b7ea7e1c24671f7152575688ffdc562;hpb=2a8d7bafe32519fac1ca81604a625199f21b3ad4;p=spectrwm.git diff --git a/scrotwm.1 b/scrotwm.1 index 9640322..21bc043 100644 --- a/scrotwm.1 +++ b/scrotwm.1 @@ -1,5 +1,3 @@ -.\" $scrotwm$ -.\" .\" Copyright (c) 2009 Marco Peereboom .\" Copyright (c) 2009 Darrin Chandler .\" @@ -15,7 +13,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate$ +.Dd $Mdocdate: February 8 2012 $ .Dt SCROTWM 1 .Os .Sh NAME @@ -77,66 +75,136 @@ For example: Enabling or disabling an option is done by using 1 or 0 respectively. .Pp The file supports the following keywords: -.Pp -.Bl -tag -width "title_class_enabledXXX" -offset indent -compact -.It Cm autorun +.Bl -tag -width 2m +.It Ic autorun Launch an application in a specified workspace at start-of-day. -Defined in the format ws[]:application, e.g. ws[2]:xterm launches and -xterm in workspace 2 -.It Cm color_focus -Border color of the currently focussed window. -.It Cm color_unfocus -Border color of unfocussed windows. -.It Cm bar_enabled -Enable or disable status bar. -.It Cm bar_border Ns Bq Ar x +Defined in the format ws[]:application, e.g. ws[2]:xterm launches an +xterm in workspace 2. +.It Ic bar_action +External script that populates additional information in the status bar, +such as battery life. +.It Ic bar_at_bottom +Place the statusbar at the bottom of each region instead of the top. +.It Ic bar_border Ns Bq Ar x Color of the status bar border in screen -.It Cm bar_border_width -Set status bar border thickness in pixels. -Disable border by setting to 0 .Ar x . -.It Cm bar_color Ns Bq Ar x +.It Ic bar_border_width +Set status bar border thickness in pixels. +Disable border by setting to 0. +.It Ic bar_color Ns Bq Ar x Color of the status bar window in screen .Ar x . -.It Cm bar_font_color Ns Bq Ar x +.It Ic bar_delay +Update frequency, in seconds, of external script that populates the status bar. +.It Ic bar_enabled +Enable or disable status bar. +.It Ic bar_font +Status bar font. +.It Ic bar_font_color Ns Bq Ar x Color of the font in status bar in screen .Ar x . -.It Cm bar_font -Status bar font. -.It Cm bar_action -External script that populates additional information in the status bar, -such as battery life. -.It Cm bar_delay -Update frequency, in seconds, of external script that populates the status bar. -.It Cm bar_at_bottom -Place the statusbar at the bottom of each region instead of the top. -.It Cm stack_enabled -Enable or disable displaying the current stacking algorithm in the status bar. -.It Cm clock_enabled +.It Ic bar_justify +Justify the status bar text. Possible values are +.Pa left , +.Pa center , +and +.Pa right . +.It Ic bind Ns Bq Ar x +Bind key combo to action +.Ar x . +See the +.Sx BINDINGS +section below. +.It Ic border_width +Set window border thickness in pixels. +Disable all borders by setting to 0. +.It Ic clock_enabled Enable or disable displaying the clock in the status bar. Disable by setting to 0 -so a custom clock could be used in the bar_action script. -.It Cm dialog_ratio +so a custom clock could be used in the +.Pa bar_action +script. +.It Ic color_focus +Border color of the currently focussed window. +.It Ic color_unfocus +Border color of unfocussed windows. +.It Ic dialog_ratio Some applications have dialogue windows that are too small to be useful. This ratio is the screen size to what they will be resized. For example, 0.6 is 60% of the physical screen size. -.It Cm layout -select layout to use at start-of-day. -Defined in the format ws[]:, e.g. ws[2]:horizontal sets worskspace -2 to the horizontal stack mode. -This setting is not retained at restart. -Possible values are +.It Ic disable_border +Remove border when bar is disabled and there is only one window on the screen. +.It Ic focus_mode +Using a value of +.Pa follow_cursor +will make the window manager focus the window +under the mouse when switching workspaces and creating windows. +.It Ic keyboard_mapping +Clear all key bindings and load new key bindings from the specified file. +This allows you to load pre-defined key bindings for your keyboard layout. +See the +.Sx KEYBOARD MAPPING FILES +section below for a list of keyboard mapping files that have been provided +for several keyboard layouts. +.It Ic layout +Select layout to use at start-of-day. +Defined in the format +ws[idx]:master_grow:master_add:stack_inc:layout:always_raise:stack_mode, e.g. +ws[2]:-4:0:1:0:horizontal sets worskspace 2 to the horizontal stack mode and +shrinks the master area by 4 ticks and adds one window to the stack, while +maintaining default floating window behavior. +Possible stack_mode values are .Pa vertical , .Pa horizontal and .Pa fullscreen . -.It Cm region +.Pp +See +.Pa master_grow , +.Pa master_shrink , +.Pa master_add , +.Pa master_del , +.Pa stack_inc , +.Pa stack_dec , +and +.Pa always_raise +for more information. +Note that the stacking options are complicated and have side-effects. +One should familiarize oneself with these commands before experimenting with the +.Pa layout +option. +.Pp +This setting is not retained at restart. +.It Ic modkey +Change mod key. +Mod1 is generally the ALT key and Mod4 is the windows key on a PC. +.It Ic program Ns Bq Ar p +Define new action to spawn a program +.Ar p . +See the +.Sx PROGRAMS +section below. +.It Ic quirk Ns Bq Ar c:n +Add "quirk" for windows with class +.Ar c +and name +.Ar n . +See the +.Sx QUIRKS +section below. +.It Ic region Allocates a custom region, removing any autodetected regions which occupy the same space on the screen. Defined in the format screen[]:WIDTHxHEIGHT+X+Y, e.g.\& screen[1]:800x1200+0+0. -.It Cm term_width -Set a preferred minimum width for the terminal +.Pp +To make a screen span multiple monitors, create a region big enough to cover +them all, e.g. screen[1]:2048x768+0+0 makes the screen span two monitors with +1024x768 resolution sitting one next to the other. +.It Ic stack_enabled +Enable or disable displaying the current stacking algorithm in the status bar. +.It Ic term_width +Set a preferred minimum width for the terminal. If this value is greater than 0, .Nm will attempt to adjust the font sizes in the terminal to keep the terminal @@ -152,46 +220,27 @@ Users may need to set program[term] (see the section) to use an alternate copy of the .Xr xterm 1 binary without the setgid bit set. -.It Cm title_class_enabled +.It Ic title_class_enabled Enable or disable displaying the window class in the status bar. -Enable by setting to 1 -.It Cm title_name_enabled +Enable by setting to 1. +.It Ic title_name_enabled Enable or disable displaying the window title in the status bar. -Enable by setting to 1 -.It Cm window_name_enabled +Enable by setting to 1. +.It Ic urgent_enabled +Enable or disable the urgency hint. +Note that many terminal emulators require this to be enabled for it to +propagate. +In xterm, for example, one needs to add the following line +.Pa xterm.urgentOnBell: true +to +.Pa .Xdefaults . +.It Ic verbose_layout +Enable or disable displaying the current master and stack values in the status +bar. +Enable by setting to 1. +.It Ic window_name_enabled Enable or disable displaying the window name in the status bar. -Enable by setting to 1 -.It Cm modkey -Change mod key. -Mod1 is generally the ALT key and Mod4 is the windows key on a PC. -.It Cm focus_mode -Using a value of follow_cursor will make the window manager focus the window -under the mouse when switching workspaces and creating windows. -.It Cm disable_border -Remove border when bar is disabled and there is only one window on the screen. -.It Cm border_width -Set window border thickness in pixels. -Disable all borders by setting to 0 -.It Cm program Ns Bq Ar p -Define new action to spawn a program -.Ar p . -See the -.Sx PROGRAMS -section below. -.It Cm bind Ns Bq Ar x -Bind key combo to action -.Ar x . -See the -.Sx BINDINGS -section below. -.It Cm quirk Ns Bq Ar c:n -Add "quirk" for windows with class -.Ar c -and name -.Ar n . -See the -.Sx QUIRKS -section below. +Enable by setting to 1. .El .Pp Colors need to be specified per the @@ -205,10 +254,11 @@ To list the available fonts in your system see or .Xr xlsfonts 1 manpages. -The +The .Xr xfontsel 1 application can help you to show the X Logical Font Description ("XLFD") used -as setting in the keyword bar_font. +as setting in the keyword +.Pa bar_font . .Sh PROGRAMS .Nm allows you to define custom actions to launch programs of your choice and then @@ -266,15 +316,14 @@ fields and will be substituted for values at the time the program is spawned: Example: .Bd -literal -offset indent program[ff] = /usr/local/bin/firefox http://scrotwm.org/ -bind[ff] = Mod+f # Now Mod+F launched firefox +bind[ff] = Mod+Shift+b # Now Mod+Shift+B launches firefox .Ed .Pp To undo the previous: .Bd -literal -offset indent -bind[] = Mod+f +bind[] = Mod+Shift+b program[ff] = .Ed -.Pp .Sh BINDINGS .Nm provides many functions (or actions) accessed via key or mouse bindings. @@ -303,11 +352,12 @@ menu quit .It Cm M-q restart -.Nm .It Cm M- Ns Aq Cm Space cycle_layout +.It Cm M-S- Ns Aq Cm \e +flip_layout .It Cm M-S- Ns Aq Cm Space -reset_layout +stack_reset .It Cm M-h master_shrink .It Cm M-l @@ -319,7 +369,7 @@ master_del .It Cm M-S-, stack_inc .It Cm M-S-. -stack_del +stack_dec .It Cm M- Ns Aq Cm Return swap_main .It Xo @@ -345,13 +395,17 @@ wind_del .It Cm M-S-x wind_kill .It Cm M- Ns Aq Ar n -.Ns ws_ Ns Ar n +.Pf ws_ Ar n .It Cm M-S- Ns Aq Ar n -.Ns mvws_ Ns Ar n +.Pf mvws_ Ar n .It Cm M- Ns Aq Cm Right ws_next .It Cm M- Ns Aq Cm Left ws_prev +.It Cm M- Ns Aq Cm Up +ws_next_all +.It Cm M- Ns Aq Cm Down +ws_prev_all .It Cm M-a ws_prior .It Cm M-S- Ns Aq Cm Right @@ -374,111 +428,169 @@ initscr iconify .It Cm M-S-w uniconify +.It Cm M-S-r +always_raise +.It Cm M-v +button2 +.It Cm M-- +width_shrink +.It Cm M-= +width_grow +.It Cm M-S-- +height_shrink +.It Cm M-S-= +height_grow +.It Cm M-[ +move_left +.It Cm M-] +move_right +.It Cm M-S-[ +move_up +.It Cm M-S-] +move_down +.It Cm M-S-/ +name_workspace +.It Cm M-/ +search_workspace +.It Cm M-f +search_win .El .Pp The action names and descriptions are listed below: .Pp -.Bl -tag -width "M-j, M-XXX" -offset indent -compact +.Bl -tag -width "M-j, M-XXXX" -offset indent -compact .It Cm term Spawn a new terminal (see .Sx PROGRAMS -above) +above). .It Cm menu Menu (see .Sx PROGRAMS -above) +above). .It Cm quit Quit -.Nm +.Nm . .It Cm restart Restart -.Nm +.Nm . .It Cm cycle_layout -Cycle layout -.It Cm reset_layout -Reset layout +Cycle layout. +.It Cm flip_layout +Swap the master and stacking areas. +.It Cm stack_reset +Reset layout. .It Cm master_shrink -Shrink master area +Shrink master area. .It Cm master_grow -Grow master area +Grow master area. .It Cm master_add -Add windows to master area +Add windows to master area. .It Cm master_del -Remove windows from master area +Remove windows from master area. .It Cm stack_inc -Add columns/rows to stacking area -.It Cm stack_del -Remove columns/rows from stacking area +Add columns/rows to stacking area. +.It Cm stack_dec +Remove columns/rows from stacking area. .It Cm swap_main -Move current window to master area +Move current window to master area. .It Cm focus_next -Focus next window in workspace +Focus next window in workspace. .It Cm focus_prev -Focus previous window in workspace +Focus previous window in workspace. .It Cm focus_main -Focus on main window in workspace +Focus on main window in workspace. .It Cm swap_next -Swap with next window in workspace +Swap with next window in workspace. .It Cm swap_prev -Swap with previous window in workspace +Swap with previous window in workspace. .It Cm bar_toggle -Toggle status bar in all workspaces +Toggle status bar in all workspaces. .It Cm wind_del -Delete current window in workspace +Delete current window in workspace. .It Cm wind_kill -Destroy current window in workspace +Destroy current window in workspace. .It Cm ws_ Ns Ar n Switch to workspace .Ar n , where .Ar n -is 1 through 10 +is 1 through 10. .It Cm mvws_ Ns Ar n Move current window to workspace .Ar n , where .Ar n -is 1 through 10 +is 1 through 10. .It Cm ws_next -Switch to next workspace with a window in it +Switch to next workspace with a window in it. .It Cm ws_prev -Switch to previous workspace with a window in it +Switch to previous workspace with a window in it. +.It Cm ws_next_all +Switch to next workspace. +.It Cm ws_prev_all +Switch to previous workspace. .It Cm ws_prior -Switch to last visited workspace +Switch to last visited workspace. .It Cm screen_next -Move pointer to next region +Move pointer to next region. .It Cm screen_prev -Move pointer to previous region +Move pointer to previous region. .It Cm screenshot_all Take screenshot of entire screen (if enabled) (see .Sx PROGRAMS -above) +above). .It Cm screenshot_wind Take screenshot of selected window (if enabled) (see .Sx PROGRAMS -above) +above). .It Cm version -Toggle version in status bar +Toggle version in status bar. .It Cm float_toggle -Toggle focused window between tiled and floating +Toggle focused window between tiled and floating. .It Cm lock Lock screen (see .Sx PROGRAMS -above) +above). .It Cm initscr Reinitialize physical screens (see .Sx PROGRAMS -above) +above). .It Cm iconify Minimize (unmap) currently focused window. .It Cm uniconify Maximize (map) window returned by dmenu selection. +.It Cm always_raise +When set tiled windows are allowed to obscure floating windows. +.It Cm button2 +Fake a middle mouse button click (mouse button 2). +.It Cm width_shrink +Shrink the width of a floating window. +.It Cm width_grow +Grow the width of a floating window. +.It Cm height_shrink +Shrink the height of a floating window. +.It Cm height_grow +Grow the height of a floating window. +.It Cm move_left +Move a floating window a step to the left. +.It Cm move_right +Move a floating window a step to the right. +.It Cm move_up +Move a floating window a step upwards. +.It Cm move_down +Move a floating window a step downwards. +.It Cm name_workspace +Name the current workspace. +.It Cm search_workspace +Search for a workspace. +.It Cm search_win +Search the windows in the current workspace. .El .Pp Custom bindings in the configuration file are specified as follows: @@ -497,7 +609,33 @@ bind[reset] = Mod4+q # bind Windows-key + q to reset bind[] = Mod1+q # unbind Alt + q .Ed .Pp +To use the currently defined +.Ic modkey , +specify MOD as the modifier key. +.Pp Multiple key combinations may be bound to the same action. +.Sh KEYBOARD MAPPING FILES +Keyboard mapping files for several keyboard layouts are listed +below. +These files can be used with the +.Pa keyboard_mapping +setting to load pre-defined key bindings for the specified +keyboard layout. +.Pp +.Bl -tag -width "scrotwm_XX.confXXX" -offset indent -compact +.It Cm scrotwm_cz.conf +Czech Republic keyboard layout +.It Cm scrotwm_es.conf +Spanish keyboard layout +.It Cm scrotwm_fr.conf +French keyboard layout +.It Cm scrotwm_fr_ch.conf +Swiss French keyboard layout +.It Cm scrotwm_se.conf +Swedish keyboard layout +.It Cm scrotwm_us.conf +United States keyboard layout +.El .Sh QUIRKS .Nm provides "quirks" which handle windows that must be treated specially @@ -574,7 +712,9 @@ You can obtain .Aq class and .Aq name -by running xprop(1) and then clicking on the desired window. +by running +.Xr xprop 1 +and then clicking on the desired window. In the following example the main window of Firefox was clicked: .Bd -literal -offset indent $ xprop | grep WM_CLASS @@ -586,10 +726,106 @@ In the example above the quirk entry would be: .Bd -literal -offset indent quirk[Firefox:Navigator] = FLOAT .Ed +.Pp +.Nm +also automatically assigns quirks to windows based on the value +of the window's _NET_WM_WINDOW_TYPE property as follows: +.Pp +.Bl -tag -width "_NET_WM_WINDOW_TYPE_TOOLBARXXX" -offset indent -compact +.It _NET_WM_WINDOW_TYPE_DOCK +FLOAT + ANYWHERE +.It _NET_WM_WINDOW_TYPE_TOOLBAR +FLOAT + ANYWHERE +.It _NET_WM_WINDOW_TYPE_UTILITY +FLOAT + ANYWHERE +.It _NET_WM_WINDOW_TYPE_SPLASH +FLOAT +.It _NET_WM_WINDOW_TYPE_DIALOG +FLOAT +.El +.Pp +In all other cases, no automatic quirks are assigned to the window. +Quirks specified in the configuration file override the automatic quirks. +.Sh EWMH +.Nm +partially implements the Extended Window Manager Hints (EWMH) specification. +This enables controlling windows as well as +.Nm +itself from external scripts and programs. +This is achieved by +.Nm +responding to certain ClientMessage events. +From the terminal these events +can be conveniently sent using tools such as +.Xr wmctrl 1 +and +.Xr xdotool 1 . +For the +actual format of these ClientMessage events, see the EWMH specification. +.Pp +The id of the currently focused window is stored in the _NET_ACTIVE_WINDOW +property of the root window. +This can be used for example to retrieve the +title of the currently active window with +.Xr xprop 1 +and +.Xr grep 1 : +.Bd -literal -offset indent +$ WINDOWID=`xprop \-root _NET_ACTIVE_WINDOW | grep \-o "0x.*"` +$ xprop \-id $WINDOWID WM_NAME | grep \-o "\\".*\\"" +.Ed +.Pp +A window can be focused by sending a _NET_ACTIVE_WINDOW client message +to the root window. +For example, using +.Xr wmctrl 1 +to send the message +(assuming 0x4a0000b is the id of the window to be focused): +.Bd -literal -offset indent +$ wmctrl \-i \-a 0x4a0000b +.Ed +.Pp +Windows can be closed by sending a _NET_CLOSE_WINDOW client message +to the root window. +For example, using +.Xr wmctrl 1 +to send the message +(assuming 0x4a0000b is the id of the window to be closed): +.Bd -literal -offset indent +$ wmctrl \-i \-c 0x4a0000b +.Ed +.Pp +Windows can be floated and un-floated by adding or removing the +_NET_WM_STATE_ABOVE atom from the _NET_WM_STATE property of the window. +This can be achieved by sending a _NET_WM_STATE client message to the +root window. +For example, the following toggles the floating state of +a window using +.Xr wmctrl 1 +to send the message (assuming 0x4a0000b is the id of the window floated +or un-floated): +.Bd -literal -offset indent +$ wmctrl \-i \-r 0x4a0000b \-b toggle,_NET_WM_STATE_ABOVE +.Ed +.Pp +Floating windows can also be resized and moved by sending a +_NET_MOVERESIZE_WINDOW client message to the root window. +For example, +using +.Xr wmctrl 1 +to send the message (assuming 0x4a0000b is the id of +the window to be resize/moved): +.Bd -literal -offset indent +$ wmctrl \-i \-r 0x4a0000b \-e 0,100,50,640,480 +.Ed +.Pp +This moves the window to (100,50) and resizes it to 640x480. +.Pp +Any _NET_MOVERESIZE_WINDOW events received for stacked windows are ignored. .Sh SIGNALS Sending .Nm -a HUP signal will retstart it. +a HUP signal will restart it. .Sh FILES .Bl -tag -width "/etc/scrotwm.confXXX" -compact .It Pa ~/.scrotwm.conf @@ -604,14 +840,15 @@ global settings. was inspired by xmonad & dwm. .Sh AUTHORS .An -nosplit -.Pp .Nm -was written by -.An Marco Peereboom Aq marco@peereboom.us , -.An Ryan Thomas McBride Aq mcbride@countersiege.com -and -.An Darrin Chandler Aq dwchandler@stilyagin.com . -.Sh BUGS -Currently the menu, invoked with -.Cm M-p , -depends on dmenu. +was written by: +.Pp +.Bl -tag -width "Ryan Thomas McBride Aq mcbride@countersiege.com " -offset indent -compact +.It Cm Marco Peereboom Aq marco@peereboom.us +.It Cm Ryan Thomas McBride Aq mcbride@countersiege.com +.It Cm Darrin Chandler Aq dwchandler@stilyagin.com +.It Cm Pierre-Yves Ritschard Aq pyr@spootnik.org +.It Cm Tuukka Kataja Aq stuge@xor.fi +.It Cm Jason L. Wright Aq jason@thought.net +.It Cm Reginald Kennedy Aq rk@rejii.com +.El