четверг, 10 июля 2008 г.

Недокументированные возможности IceWM

Если вы используете IceWM уже довольно давно, то наверняка не раз замечали, что в документации перечислены не все опции, с помощью которых его можно настроить. Я с этим сталкивался не раз, но до недавнего времени мне хватало всех тех опций, которые были мне известны.

Когда же я захотел, чтобы при запуске определенное приложение разворачивалось на весь экран (Fullscreen), то обнаружил, что в документации к ~/.icewm/winoptions нет опции, позволяющей сделать это.

Не поверив, что разработчики не реализовали подобную возможность, я полез в интернет. Не найдя в интернете решения моей проблемы, я решил посмотреть исходники IceWM. Как я и предполагал, разработчики реализовали нужную мне опцию ~/.icewm/winoptions, но не отразили это в документации. Там же я нашел еще несколько опций, о которых в ней не упоминалось. Так как имена опций и их описание находились в коде недалеко друг от друга, то, составив несколько action'ов в Vim'е, я получил из исходных текстов список с парами "имя опции - описание", которым и решил с вами поделиться - вдруг кто-нибудь найдет в нем опцию, которой ему очень не хватало. Описание в коде присутствовало не для всех опций, поэтому и в моем списке они не все документированы, но по их именам в большинстве случаев совсем не сложно догадаться, что они означают.


Файл ~/.icewm/preferences:

Булевы опции:

ClickToFocus - Focus windows by clicking.
FocusOnAppRaise - Focus windows when application requests to raise.
RequestFocusOnAppRaise - Request focus (flashing in taskbar) when application requests raise.
RaiseOnFocus - Raise windows when focused.
FocusOnClickClient - Focus window when client area clicked.
RaiseOnClickClient - Raise window when client area clicked.
RaiseOnClickTitleBar - Raise window when title bar is clicked.
RaiseOnClickButton - Raise window when frame button is clicked.
RaiseOnClickFrame - Raise window when frame border is clicked.
LowerOnClickWhenRaised - Lower the active window when clicked again.
PassFirstClickToClient - Pass focusing click on client area to client.
FocusChangesWorkspace - Change to the workspace of newly focused windows.
FocusOnMap - Focus normal window when initially mapped.
FocusOnMapTransient - Focus dialog window when initially mapped.
FocusOnMapTransientActive - Focus dialog window when initially mapped only if parent frame focused.
MapInactiveOnTop - Put new windows on top even if not focusing them.
PointerColormap - Colormap focus follows pointer.
DontRotateMenuPointer - Don't rotate the cursor for popup menus.
LimitSize - Limit size of windows to screen.
LimitPosition - Limit position of windows to screen.
LimitByDockLayer - Let the Dock layer limit the workspace (incompatible with GNOME Panel).
ConsiderHBorder - Consider border frames when maximizing horizontally.
ConsiderVBorder - Consider border frames when maximizing vertically.
CenterMaximizedWindows - Center maximized windows which can't fit the screen (like terminals).
SizeMaximized - Maximized windows can be resized.
ShowMoveSizeStatus - Show position status window during move/resize.
ShowWorkspaceStatus - Show name of current workspace while switching.
MinimizeToDesktop - Display mini-icons on desktop for minimized windows.
MiniIconsPlaceHorizontal - Place the mini-icons horizontal instead of vertical.
MiniIconsRightToLeft - Place new mini-icons from right to left.
MiniIconsBottomToTop - Place new mini-icons from bottom to top.
StrongPointerFocus - Always maintain focus under mouse window (makes some keyboard support non-functional or unreliable).
OpaqueMove - Opaque window move.
OpaqueResize - Opaque window resize.
ManualPlacement - Windows initially placed manually by user.
SmartPlacement - Smart window placement (minimal overlap).
CenterTransientsOnOwner - Center dialogs on owner window.
MenuMouseTracking - Menus track mouse even with no mouse buttons held.
AutoRaise - Auto raise windows after delay.
DelayPointerFocus - Delay pointer focusing when mouse moves.
Win95Keys - Support win95 keyboard keys (Penguin/Meta/Win_L,R shows menu).
ModSuperIsCtrlAlt - Treat Super/Win modifier as Ctrl+Alt.
UseMouseWheel - Support mouse wheel.
ShowPopupsAbovePointer - Show popup menus above mouse pointer.
ReplayMenuCancelClick - Send the clicks outside menus to target window.
QuickSwitch - Alt+Tab window switching.
QuickSwitchToMinimized - Alt+Tab to minimized windows.
QuickSwitchToHidden - Alt+Tab to hidden windows.
QuickSwitchToAllWorkspaces - Alt+Tab to windows on other workspaces.
QuickSwitchGroupWorkspaces - Alt+Tab: group windows on current workspace.
QuickSwitchAllIcons - Show all reachable icons when quick switching.
QuickSwitchTextFirst - Show the window title above (all reachable) icons.
QuickSwitchSmallWindow - Attempt to create a small QuickSwitch window (1/3 instead of 3/5 of screen width).
QuickSwitchMaxWidth - Go trough all window titles and choose width of the longest one.
QuickSwitchVertical - Place the icons and titles vertical instead of horizontal.
QuickSwitchHugeIcon - Show the huge (48x48) of the window icon for the active window.
QuickSwitchFillSelection - Fill the rectangle highlighting the current icon.
GrabRootWindow - Manage root window (EXPERIMENTAL - normally enabled!).
SnapMove - Snap to nearest screen edge/window when moving windows.
EdgeSwitch - Workspace switches by moving mouse to left/right screen edge.
HorizontalEdgeSwitch - Workspace switches by moving mouse to left/right screen edge.
VerticalEdgeSwitch - Workspace switches by moving mouse to top/bottom screen edge.
ContinuousEdgeSwitch - Workspace switches continuously when moving mouse to screen edge.
AutoReloadMenus - Reload menu files automatically.
ShowTaskBar - Show task bar.
TaskBarAtTop - Task bar at top of the screen.
TaskBarKeepBelow - Keep the task bar below regular windows.
TaskBarAutoHide - Auto hide task bar after delay.
TaskBarShowClock - Show clock on task bar.
TaskBarShowAPMStatus - Show APM/ACPI/Battery/Power status monitor on task bar.
TaskBarShowAPMTime - Show APM status on task bar in time-format.
TaskBarShowMailboxStatus - Show mailbox status on task bar.
TaskBarMailboxStatusBeepOnNewMail - Beep when new mail arrives.
TaskBarMailboxStatusCountMessages - Count messages in mailbox.
TaskBarShowWorkspaces - Show workspace switching buttons on task bar.
TaskBarShowWindows - Show windows on the taskbar.
TaskBarShowShowDesktopButton - Show 'show desktop' button on taskbar.
ShowEllipsis - Show Ellipsis in taskbar items.
TaskBarShowTray - Show windows in the tray.
TrayShowAllWindows - Show windows from all workspaces on tray.
TaskBarShowTransientWindows - Show transient (dialogs, ...) windows on task bar.
TaskBarShowAllWindows - Show windows from all workspaces on task bar.
TaskBarShowWindowIcons - Show icons of windows on the task bar.
TaskBarShowStartMenu - Show 'Start' menu on task bar.
TaskBarShowWindowListMenu - Show 'window list' menu on task bar.
TaskBarShowCPUStatus - Show CPU status on task bar (Linux & Solaris).
TaskBarShowNetStatus - Show network status on task bar (Linux only).
TaskBarShowCollapseButton - Show a button to collapse the taskbar.
TaskBarDoubleHeight - Use double-height task bar.
TaskBarWorkspacesLeft - Place workspace pager on left, not right.
TaskBarLaunchOnSingleClick - Execute taskbar applet commands (like MailCommand, ClockCommand, ...) on single click.
ClientWindowMouseActions - Allow mouse actions on client windows (buggy with some programs).
ShowProgramsMenu - Show programs submenu.
ShowSettingsMenu - Show settings submenu.
ShowFocusModeMenu - Show focus mode submenu.
ShowThemesMenu - Show themes submenu.
ShowLogoutMenu - Show logout submenu.
ShowHelp - Show the help menu item.
ShowLogoutSubMenu - Show logout submenu.
ShowAbout - Show the about menu item.
ShowRun - Show the run menu item.
ShowWindowList - Show the window menu item.
AllowFullscreen - Allow to switch a window to fullscreen.
DisableImlibCaches - Disable Imlib's image/pixmap caches.
EnableAddressBar - Enable address bar functionality in taskbar.
ShowAddressBar - Show address bar in task bar.
MultiByte - Overrides automatic multiple byte detection.
ConfirmLogout - Confirm logout.
ShapesProtectClientWindow - Don't cut client windows by shapes set trough frame corner pixmap.
DoubleBuffer - Use double buffering when redrawing the display.


Числовые опции (в скобках указан диапазон значений):

ClickMotionDistance (0, 32) - Pointer motion distance before click gets interpreted as drag.
ClickMotionDelay (0, 2000) - Delay before click gets interpreted as drag.
MultiClickTime (0, 5000) - Multiple click time.
MenuActivateDelay (0, 5000) - Delay before activating menu items.
SubmenuMenuActivateDelay (0, 5000) - Delay before activating menu submenus.
MenuMaximalWidth (0, 16384) - Maximal width of popup menus, 2/3 of the screen's width if set to zero.
ToolTipDelay (0, 5000) - Delay before tooltip window is displayed.
ToolTipTime (0, 60000) - Time before tooltip window is hidden (0 means never.
AutoHideDelay (0, 5000) - Delay before task bar is hidden.
AutoShowDelay (0, 5000) - Delay before task bar is shown.
AutoRaiseDelay (0, 5000) - Delay before windows are auto raised.
EdgeResistance (0, 10000) - Resistance in pixels when trying to move windows off the screen (10000 = infinite).
PointerFocusDelay (0, 1000) - Delay for pointer focus switching.
SnapDistance (0, 64) - Distance in pixels before windows snap together.
EdgeSwitchDelay (0, 5000) - Screen edge workspace switching delay.
ScrollBarStartDelay (0, 5000) - Inital scroll bar autoscroll delay.
ScrollBarDelay (0, 5000) - Scroll bar autoscroll delay.
AutoScrollStartDelay (0, 5000) - Auto scroll start delay.
AutoScrollDelay (0, 5000) - Auto scroll delay.
WorkspaceStatusTime (0, 2500) - Time before workspace status window is hidden.
UseRootButtons (0, 255) - Bitmask of root window button click to use in window manager.
ButtonRaiseMask (0, 255) - Bitmask of buttons that raise the window when pressed.
DesktopWinMenuButton (0, 20) - Desktop mouse-button click to show the window list menu.
DesktopWinListButton (0, 20) - Desktop mouse-button click to show the window list.
DesktopMenuButton (0, 20) - Desktop mouse-button click to show the root menu.
TitleBarMaximizeButton (0, 5) - TitleBar mouse-button double click to maximize the window.
TitleBarRollupButton (0, 5) - TitleBar mouse-button double click to rollup the window.
MsgBoxDefaultAction (0, 1) - Preselect to Cancel (0) or the OK (1) button in message boxes.
MailCheckDelay (0, 3600*24) - Delay between new-mail checks. (seconds).
TaskBarCPUSamples (2, 1000) - Width of CPU Monitor.
TaskBarCPUDelay (10, 60*60*1000) - Delay between CPU Monitor samples in ms.
TaskBarNetSamples (2, 1000) - Width of Net Monitor.
TaskBarNetDelay (10, 60*60*1000) - Delay between Net Monitor samples in ms.
TaskbarButtonWidthDivisor (1, 25) - default number of tasks in taskbar.
XineramaPrimaryScreen (0, 63) - Primary screen for xinerama (taskbar, ...).
FocusRequestFlashTime (0, 3600*24) - Number of seconds the taskbar app will blink when requesting focus.
NestedThemeMenuMinNumber (0, 1234) - Minimal number of themes after which the Themes menu becomes nested (0=disabled).
BatteryPollingPeriod (2, 3600) - Delay between power status updates (seconds).


Строковые опции:

IconPath - Icon search path (colon separated).
MailBoxPath - Mailbox path (use $MAIL instead).
MailCommand - Command to run on mailbox.
MailClassHint - WM_CLASS to allow runonce for MailCommand.
NewMailCommand - Command to run when new mail arrives.
LockCommand - Command to lock display/screensaver.
ClockCommand - Command to run on clock.
ClockClassHint - WM_CLASS to allow runonce for ClockCommand.
RunCommand - Command to select and run a program.
TerminalCommand - Terminal emulator must accept -e option..
LogoutCommand - Command to start logout.
LogoutCancelCommand - Command to cancel logout.
ShutdownCommand - Command to shutdown the system.
RebootCommand - Command to reboot the system.
CPUStatusCommand - Command to run on CPU status.
CPUStatusClassHint - WM_CLASS to allow runonce for CPUStatusCommand.
NetStatusCommand - Command to run on Net status.
NetStatusClassHint - WM_CLASS to allow runonce for NetStatusCommand.
AddressBarCommand - Command to run for address bar entries.
NetworkStatusDevice - Network device to show status for.
TimeFormat - Clock Time format (strftime format string).
TimeFormatAlt - Alternate Clock Time format (e.g. for blinking effects).
DateFormat - Clock Date format for tooltip (strftime format string).
AcpiIgnoreBatteries - List of battery names (directories) in /proc/acpi/battery to ignore. Useful when more slots are built-in, but only one battery is used.
WinMenuItems - Items supported in menu window (rmsnxfhualytickw).
WorkspaceNames - List of workspace names, for example WorkspaceNames="1","2","3","4".
OpenCommand


Привязки клавиш:

MouseWinMove - Mouse binding for window move.
MouseWinSize - Mouse binding for window resize.
MouseWinRaise - Mouse binding to raise window.
KeyWinRaise
KeyWinOccupyAll
KeyWinLower
KeyWinClose
KeyWinRestore
KeyWinPrev
KeyWinNext
KeyWinMove
KeyWinSize
KeyWinMinimize
KeyWinMaximize
KeyWinMaximizeVert
KeyWinMaximizeHoriz
KeyWinFullscreen
KeyWinHide
KeyWinRollup
KeyWinMenu
KeyWinArrangeN
KeyWinArrangeNE
KeyWinArrangeE
KeyWinArrangeSE
KeyWinArrangeS
KeyWinArrangeSW
KeyWinArrangeW
KeyWinArrangeNW
KeyWinArrangeC
KeySysSwitchNext
KeySysSwitchLast
KeySysWinNext
KeySysWinPrev
KeySysWinMenu
KeySysDialog
KeySysMenu
KeySysWindowList
KeySysWinListMenu
KeySysAddressBar
KeySysWorkspacePrev
KeySysWorkspaceNext
KeySysWorkspaceLast
KeySysWorkspacePrevTakeWin
KeySysWorkspaceNextTakeWin
KeySysWorkspaceLastTakeWin
KeySysWorkspace1
KeySysWorkspace2
KeySysWorkspace3
KeySysWorkspace4
KeySysWorkspace5
KeySysWorkspace6
KeySysWorkspace7
KeySysWorkspace8
KeySysWorkspace9
KeySysWorkspace10
KeySysWorkspace11
KeySysWorkspace12
KeySysWorkspace1TakeWin
KeySysWorkspace2TakeWin
KeySysWorkspace3TakeWin
KeySysWorkspace4TakeWin
KeySysWorkspace5TakeWin
KeySysWorkspace6TakeWin
KeySysWorkspace7TakeWin
KeySysWorkspace8TakeWin
KeySysWorkspace9TakeWin
KeySysWorkspace10TakeWin
KeySysWorkspace11TakeWin
KeySysWorkspace12TakeWin
KeySysTileVertical
KeySysTileHorizontal
KeySysCascade
KeySysArrange
KeySysArrangeIcons
KeySysMinimizeAll
KeySysHideAll
KeySysUndoArrange
KeySysShowDesktop
KeySysCollapseTaskBar



Файл ~/.icewm/winoptions:

Строковые опции:

icon - The name of the icon.
geometry - Default geometry for window. This geometry should be specified in the X11-syntax, formal notation: [=][{xX}][{+-}{+-}].


Числовые опции:

workspace - Default workspace for window (number, counting from 0).


Опции, имеющие фиксированный набор значений:

layer:
Desktop - Desktop window. There should be only one window in this layer.
Below - Below default layer.
Normal - Default layer for the windows.
OnTop - Above the default.
Dock - Layer for windows docked to the edge of the screen.
AboveDock - Layer for the windows above the dock.
Menu - Layer for the windows above the dock.

tray:
Ignore - Don't add an icon to the tray pane.
Minimized - Add an icon the the tray. Remove the task pane button when minimized.
Exclusive - Add an icon the the tray. Never create a task pane button.


Булевы опции:

allWorkspaces - If set to 1, window will be visible on all workspaces.
ignoreWinList - If set to 1, window will not appear in the window list.
ignoreTaskBar - If set to 1, window will not appear on the task bar.
ignoreQuickSwitch - If set to 1, window will not be accessible using QuickSwitch feature (Alt+Tab).
fullKeys - If set to 1, the window manager leave more keys (Alt+F?) to the application.
fMove - If set to 0, window will not be movable.
fResize - If set to 0, window will not be resizable.
fClose - If set to 0, window will not be closable.
fMinimize - If set to 0, window will not be minimizable.
fMaximize - If set to 0, window will not be maximizable.
fHide - If set to 0, window will not be hidable.
fRollup - If set to 0, window will not be shadable.
dTitleBar - If set to 0, window will not have a title bar.
dSysMenu - If set to 0, window will not have a system menu.
dBorder - If set to 0, window will not have a border.
dResize - If set to 0, window will not have a resize border.
dClose - If set to 0, window will not have a close button.
dMinimize - If set to 0, window will not have a minimize button.
dMaximize - If set to 0, window will not have a maximize button.
noFocusOnAppRaise - if set to 1, window will not automatically get focus as application raises it.
ignoreNoFocusHint - if set to 1, icewm will focus even if the window does not handle input.
doNotCover - if set to 1, this window will limit the workspace available for regular applications. window has to be sticky at the moment to make it work
forcedClose - if set to 1 and the application had not registered WM_DELETE_WINDOW, a close confirmation dialog won't be offered upon closing the window.
dDepth
ignorePositionHint
doNotFocus
startFullscreen
startMinimized
startMaximized
startMaximizedVert
startMaximizedHorz
nonICCCMconfigureRequest
noFocusOnMap

8 комментариев:

zbarassky комментирует...

Круто. Детектив, ага. :)

virens комментирует...

Вот это класс!

А я-то думаю, откуда в графических конфигураторах IceWM столько разных неизвестных мне опций? :-) Вон оно как!

Если можно, вставьте ссылки в пост, откуда такая информация.

Конищев Дмитрий комментирует...

virens, извините, не понял, ссылки на что? Я же написал, что все эти опции получил из исходных текстов. Или вы имеете в виду имена файлов из исходных текстов, в которых я все это нашел?

Pashugan комментирует...

Спасибо, как раз только разбираюсь с IceWM, очень пригодилось.

Интересно, а разделение панелей в IceWM в принципе не предусмотрено? Довольно удобно и привычно было бы иметь taskbar внизу, а рабочие столы, часы, трей и прочее вверху. TaskBarAtTop переносит всё вместе.

Конищев Дмитрий комментирует...

Pashugan, судя по всему, не предусмотрено.

arikaikai комментирует...

Пользуюсь IceWM уже два-три месяца, но на эту страничку наткнулся впервые. Огромное спасибо, наконец-то донастрою поведение окон!

Анонимный комментирует...

Спасибо, полезная инфа!

Вячеслав Троцак комментирует...

Молодец Диман!
Пытливый ум уважаю.