503 lines
13 KiB
Plaintext
503 lines
13 KiB
Plaintext
#
|
|
# $NetBSD: system.ctwmrc,v 1.19 2022/05/27 17:04:16 nia Exp $
|
|
#
|
|
# ctwmrc by nia
|
|
#
|
|
# An attempt to strike a usability balance that makes keys and buttons
|
|
# do the thing users of various operating systems expect them to do.
|
|
#
|
|
# Most things should be possible to accomplish with only the keyboard.
|
|
#
|
|
# Also, mostly inoffensive colours (avoiding potentially inaccessible
|
|
# combinations like red-green).
|
|
#
|
|
|
|
# don't use the default buttons or key bindings, we define our own
|
|
NoDefaults
|
|
|
|
DontShowWelcomeWindow
|
|
|
|
ShowWorkSpaceManager
|
|
ShowIconManager
|
|
|
|
# 3D icon managers do not seemingly honor IconManagerHighlight,
|
|
# which makes them slightly less useful
|
|
#UseThreeDIconManagers
|
|
#UseThreeDWMap
|
|
UseThreeDBorders
|
|
#UseThreeDMenus
|
|
UseThreeDTitles
|
|
|
|
esyscmd(`printf "define(fontsize, %d)\n" "$(/usr/X11R7/libexec/ctwm_font_size)"')
|
|
|
|
ifelse(fontsize, `64', `
|
|
TitleFont "-*-spleen-*-*-*-*-64-*-*-*-*-*-*-*"
|
|
MenuFont "-*-spleen-*-*-*-*-64-*-*-*-*-*-*-*"
|
|
IconManagerFont "-*-spleen-*-*-*-*-64-*-*-*-*-*-*-*"
|
|
IconFont "-*-spleen-*-*-*-*-64-*-*-*-*-*-*-*"
|
|
ResizeFont "-*-spleen-*-*-*-*-64-*-*-*-*-*-*-*"
|
|
WorkSpaceFont "-*-spleen-*-*-*-*-32-*-*-*-*-*-*-*"
|
|
WorkSpaceManagerGeometry "240x960-4-4" 1
|
|
IconManagerGeometry "800x-1-1+0" 1
|
|
ThreeDBorderWidth 12
|
|
BorderWidth 12
|
|
define(setsizes, `yes')
|
|
')
|
|
|
|
ifelse(fontsize, `32', `
|
|
TitleFont "-*-spleen-*-*-*-*-32-*-*-*-*-*-*-*"
|
|
MenuFont "-*-spleen-*-*-*-*-32-*-*-*-*-*-*-*"
|
|
IconManagerFont "-*-spleen-*-*-*-*-32-*-*-*-*-*-*-*"
|
|
IconFont "-*-spleen-*-*-*-*-32-*-*-*-*-*-*-*"
|
|
ResizeFont "-*-spleen-*-*-*-*-32-*-*-*-*-*-*-*"
|
|
WorkSpaceFont "-*-spleen-*-*-*-*-24-*-*-*-*-*-*-*"
|
|
WorkSpaceManagerGeometry "120x480-4-4" 1
|
|
IconManagerGeometry "400x-1-1+0" 1
|
|
ThreeDBorderWidth 6
|
|
BorderWidth 6
|
|
define(setsizes, `yes')
|
|
')
|
|
|
|
ifelse(fontsize, `24', `
|
|
TitleFont "-*-spleen-*-*-*-*-24-*-*-*-*-*-*-*"
|
|
MenuFont "-*-spleen-*-*-*-*-24-*-*-*-*-*-*-*"
|
|
IconManagerFont "-*-spleen-*-*-*-*-24-*-*-*-*-*-*-*"
|
|
IconFont "-*-spleen-*-*-*-*-24-*-*-*-*-*-*-*"
|
|
ResizeFont "-*-spleen-*-*-*-*-24-*-*-*-*-*-*-*"
|
|
WorkSpaceFont "-*-spleen-*-*-*-*-16-*-*-*-*-*-*-*"
|
|
WorkSpaceManagerGeometry "90x360-4-4" 1
|
|
IconManagerGeometry "300x-1-1+0" 1
|
|
ThreeDBorderWidth 4
|
|
BorderWidth 4
|
|
define(setsizes, `yes')
|
|
')
|
|
|
|
ifelse(fontsize, `12', `
|
|
TitleFont "-*-spleen-*-*-*-*-12-*-*-*-*-*-*-*"
|
|
MenuFont "-*-spleen-*-*-*-*-12-*-*-*-*-*-*-*"
|
|
IconManagerFont "-*-spleen-*-*-*-*-12-*-*-*-*-*-*-*"
|
|
IconFont "-*-spleen-*-*-*-*-12-*-*-*-*-*-*-*"
|
|
ResizeFont "-*-spleen-*-*-*-*-12-*-*-*-*-*-*-*"
|
|
WorkSpaceFont "-*-spleen-*-*-*-*-8-*-*-*-*-*-*-*"
|
|
WorkSpaceManagerGeometry "45x180-4-4" 1
|
|
IconManagerGeometry "150x-1-1+0" 1
|
|
ThreeDBorderWidth 1
|
|
BorderWidth 1
|
|
define(setsizes, `yes')
|
|
')
|
|
|
|
# Fallback in case a valid font size was not returned.
|
|
# "Default case" is 16px.
|
|
|
|
ifdef(`setsizes', `', `
|
|
TitleFont "-*-spleen-*-*-*-*-16-*-*-*-*-*-*-*"
|
|
MenuFont "-*-spleen-*-*-*-*-16-*-*-*-*-*-*-*"
|
|
IconManagerFont "-*-spleen-*-*-*-*-16-*-*-*-*-*-*-*"
|
|
IconFont "-*-spleen-*-*-*-*-16-*-*-*-*-*-*-*"
|
|
ResizeFont "-*-spleen-*-*-*-*-16-*-*-*-*-*-*-*"
|
|
WorkSpaceFont "-*-spleen-*-*-*-*-12-*-*-*-*-*-*-*"
|
|
WorkSpaceManagerGeometry "60x240-4-4" 1
|
|
IconManagerGeometry "200x-1-1+0" 1
|
|
ThreeDBorderWidth 3
|
|
BorderWidth 3
|
|
')
|
|
|
|
RestartPreviousState
|
|
|
|
DecorateTransients
|
|
|
|
# allow the user to have their root window recolored as they choose
|
|
DontPaintRootWindow
|
|
|
|
# hide window contents while altering windows for performance
|
|
NoOpaqueMove
|
|
NoOpaqueResize
|
|
|
|
AutoOccupy
|
|
AutoRelativeResize
|
|
|
|
CenterFeedbackWindow
|
|
|
|
NoGrabServer
|
|
|
|
RaiseOnClick
|
|
|
|
DontMoveOff
|
|
MoveOffResistance 150
|
|
|
|
ConstrainedMoveTime 0
|
|
|
|
IgnoreLockModifier
|
|
|
|
# Not actually that random.
|
|
# Means that windows do not have to be placed by hand with a mouse,
|
|
# which helps if you are using a keyboard only.
|
|
RandomPlacement "on"
|
|
|
|
MoveDelta 3
|
|
ClearShadowContrast 40
|
|
DarkShadowContrast 60
|
|
MovePackResistance 100
|
|
|
|
RaiseWhenAutoUnSqueeze
|
|
ShortAllWindowsMenus
|
|
|
|
#BeNiceToColorMap
|
|
|
|
NoStackMode
|
|
|
|
StayUpMenus
|
|
WarpToDefaultMenuEntry
|
|
MenuShadowDepth 1
|
|
|
|
# warp through all windows in the current workspace
|
|
WindowRing
|
|
WarpRingOnScreen
|
|
|
|
NoTitleHighlight
|
|
|
|
TitleButtonShadowDepth 1
|
|
TitleShadowDepth 1
|
|
TitleButtonBorderWidth 0
|
|
TitlePadding 0
|
|
TitleJustification "left"
|
|
ButtonIndent 0
|
|
FramePadding 0
|
|
|
|
LeftTitleButton ":xpm:dot" = f.menu "titleops"
|
|
RightTitleButton ":xpm:resize" = f.resize
|
|
RightTitleButton ":xpm:cross" = f.delete
|
|
|
|
BorderShadowDepth 2
|
|
BorderResizeCursors
|
|
|
|
MaxIconTitleWidth 120
|
|
NoIconManagerFocus
|
|
IconManagerShadowDepth 1
|
|
IconifyByUnmapping
|
|
|
|
ReallyMoveInWorkspaceManager
|
|
MapWindowCurrentWorkSpace { "black" "firebrick" }
|
|
DontToggleWorkSpaceManagerState
|
|
DontWarpCursorInWMap
|
|
NoShowOccupyAll
|
|
ReverseCurrentWorkspace
|
|
StartInMapState
|
|
WMgrHorizButtonIndent 0
|
|
WMgrVertButtonIndent 0
|
|
|
|
WorkSpaces
|
|
{
|
|
"1" { "lavender" "black" "darkslateblue" "white" }
|
|
"2" { "lavender" "black" "darkslateblue" "white" }
|
|
"3" { "lavender" "black" "darkslateblue" "white" }
|
|
"4" { "lavender" "black" "darkslateblue" "white" }
|
|
"5" { "lavender" "black" "darkslateblue" "white" }
|
|
}
|
|
|
|
Cursors
|
|
{
|
|
Frame "left_ptr"
|
|
Title "left_ptr"
|
|
Icon "left_ptr"
|
|
IconMgr "left_ptr"
|
|
Move "fleur"
|
|
Resize "fleur"
|
|
Menu "left_ptr"
|
|
Button "hand2"
|
|
Wait "watch"
|
|
Select "dot"
|
|
Destroy "pirate"
|
|
}
|
|
|
|
Color
|
|
{
|
|
BorderColor "firebrick"
|
|
|
|
BorderTileBackground "steelblue"
|
|
BorderTileForeground "steelblue"
|
|
|
|
DefaultBackground "grey70"
|
|
DefaultForeground "black"
|
|
|
|
TitleBackground "lavender"
|
|
TitleForeground "black"
|
|
|
|
MenuBackground "lavender"
|
|
MenuForeground "black"
|
|
MenuTitleBackground "darkorange2"
|
|
MenuTitleForeground "black"
|
|
MenuShadowColor "gray15"
|
|
|
|
IconBackground "black"
|
|
IconForeground "white"
|
|
IconBorderColor "gray45"
|
|
|
|
IconManagerBackground "lavender"
|
|
IconManagerForeground "black"
|
|
IconManagerHighlight "firebrick"
|
|
|
|
MapWindowBackground "lavender"
|
|
MapWindowForeground "black"
|
|
}
|
|
|
|
Monochrome
|
|
{
|
|
BorderColor "black"
|
|
|
|
BorderTileForeground "black"
|
|
BorderTileBackground "white"
|
|
|
|
TitleForeground "black"
|
|
TitleBackground "white"
|
|
|
|
MenuForeground "black"
|
|
MenuBackground "white"
|
|
MenuTitleForeground "black"
|
|
MenuTitleBackground "white"
|
|
|
|
MapWindowForeground "white"
|
|
MapWindowBackground "white"
|
|
}
|
|
|
|
syscmd(/usr/X11R7/libexec/ctwm_app_menu)
|
|
|
|
menu "appmenu"
|
|
{
|
|
"pkgsrc Applications" f.title
|
|
" Accessories" f.menu "Accessories"
|
|
" Games" f.menu "Games"
|
|
" Graphics" f.menu "Graphics"
|
|
" Internet" f.menu "Internet"
|
|
" Multimedia" f.menu "Multimedia"
|
|
" Office" f.menu "Office"
|
|
" Programming" f.menu "Programming"
|
|
" System" f.menu "System"
|
|
" Misc" f.menu "Misc"
|
|
}
|
|
|
|
menu "deskutils"
|
|
{
|
|
"Desktop utilities" f.title
|
|
" Calculator" !"xcalc &"
|
|
" Text editor" !"xedit &"
|
|
"" f.separator
|
|
" XEyes" !"xeyes &"
|
|
" OpenGL Gears" !"glxgears &"
|
|
" Spinning cube" !"ico -sleep 0.016 -obj cube -colors darkorange &"
|
|
"" f.separator
|
|
" Compositor (shadows)" !"pkill xcompmgr; xcompmgr -c &"
|
|
" Compositor (simple)" !"pkill xcompmgr; xcompmgr -n &"
|
|
"" f.separator
|
|
" Magnify" !"xmag -source 100x100 &"
|
|
" Kill window" !"xkill &"
|
|
}
|
|
|
|
menu "termutils"
|
|
{
|
|
"Terminal utilities" f.title
|
|
"" f.separator
|
|
" VIsual Editor" !"xterm -class UXTerm -e vi &"
|
|
" Tetris" !"xterm -class UXTerm -e tetris &"
|
|
"" f.separator
|
|
" Audio mixer" !"xterm -class UXTerm -e aiomixer &"
|
|
"" f.separator
|
|
" Top processes" !"xterm -class UXTerm -e top &"
|
|
" I/O stats" !"xterm -class UXTerm -e 'sysstat iostat' &"
|
|
" Network stats" !"xterm -class UXTerm -e 'sysstat ifstat' &"
|
|
" Disk usage" !"xterm -class UXTerm -e 'sysstat df' &"
|
|
}
|
|
|
|
menu "NetBSD"
|
|
{
|
|
"NetBSD" f.title
|
|
"" f.separator
|
|
" Terminal" !"uxterm &"
|
|
"" f.separator
|
|
" Applications" f.menu "appmenu"
|
|
" Desktop utilities" f.menu "deskutils"
|
|
" Terminal utilities" f.menu "termutils"
|
|
"" f.separator
|
|
" Restart CTWM" f.twmrc
|
|
" Quit" f.quit
|
|
}
|
|
|
|
menu "titleops"
|
|
{
|
|
"Window" f.title
|
|
"" f.separator
|
|
" Iconify" f.iconify
|
|
" Resize" f.resize
|
|
" Move" f.move
|
|
"" f.separator
|
|
" Occupy ..." f.occupy
|
|
" Occupy All" f.occupyall
|
|
"" f.separator
|
|
" Raise" f.raise
|
|
" Lower" f.lower
|
|
"" f.separator
|
|
" Zoom" f.fullzoom
|
|
" Zoom-V" f.zoom
|
|
" Zoom-H" f.horizoom
|
|
"" f.separator
|
|
" Kill" f.destroy
|
|
" Close" f.delete
|
|
}
|
|
|
|
IconManagerDontShow
|
|
{
|
|
}
|
|
|
|
OccupyAll
|
|
{
|
|
"XClock"
|
|
"xsm"
|
|
"xconsole"
|
|
"XVidCap"
|
|
}
|
|
|
|
AlwaysOnTop
|
|
{
|
|
"XEyes"
|
|
"XVidCap"
|
|
}
|
|
|
|
NoTitle
|
|
{
|
|
"TWM Icon Manager"
|
|
"WorkSpaceManager"
|
|
"XClock"
|
|
}
|
|
|
|
WindowRingExclude
|
|
{
|
|
"TWM Icon Manager"
|
|
"WorkSpaceManager"
|
|
"XClock"
|
|
"xsm"
|
|
"xconsole"
|
|
}
|
|
|
|
StartIconified
|
|
{
|
|
}
|
|
|
|
NoBorder
|
|
{
|
|
}
|
|
|
|
Function "raise-move" { f.raise f.deltastop f.forcemove }
|
|
Function "raise-and-resize" { f.raise f.deltastop f.resize }
|
|
|
|
# These are basically essential for basic functionality.
|
|
|
|
Button1 = : title : f.function "raise-move"
|
|
Button2 = : title : f.function "raise-and-resize"
|
|
Button3 = : title | frame : f.menu "titleops"
|
|
|
|
Button1 = : frame : f.function "raise-and-resize"
|
|
|
|
Button1 = : icon | iconmgr : f.iconify
|
|
Button2 = : icon : f.move
|
|
Button3 = : icon | iconmgr : f.raiselower
|
|
|
|
Button1 = : root : f.menu "NetBSD"
|
|
Button2 = : root : f.menu "TwmAllWindows"
|
|
Button3 = : root : f.menu "NetBSD"
|
|
|
|
#
|
|
# Mod1 is the "Alt/Meta" key.
|
|
# Mod4 is the "OS" key.
|
|
#
|
|
|
|
Button1 = mod1 : window : f.forcemove
|
|
Button1 = mod4 : window : f.forcemove
|
|
Button3 = mod1 : window : f.resize
|
|
Button3 = mod4 : window : f.resize
|
|
|
|
"Up" = mod4 : all : f.upworkspace
|
|
"Down" = mod4 : all : f.downworkspace
|
|
"Left" = mod4 : all : f.prevworkspace
|
|
"Right" = mod4 : all : f.nextworkspace
|
|
|
|
"Up" = mod1 | control : all : f.upworkspace
|
|
"Down" = mod1 | control : all : f.downworkspace
|
|
"Left" = mod1 | control : all : f.prevworkspace
|
|
"Right" = mod1 | control : all : f.nextworkspace
|
|
|
|
"1" = mod1 | control : all : f.gotoworkspace "1"
|
|
"2" = mod1 | control : all : f.gotoworkspace "2"
|
|
"3" = mod1 | control : all : f.gotoworkspace "3"
|
|
"4" = mod1 | control : all : f.gotoworkspace "4"
|
|
"5" = mod1 | control : all : f.gotoworkspace "5"
|
|
"6" = mod1 | control : all : f.gotoworkspace "6"
|
|
"7" = mod1 | control : all : f.gotoworkspace "7"
|
|
"8" = mod1 | control : all : f.gotoworkspace "8"
|
|
"9" = mod1 | control : all : f.gotoworkspace "9"
|
|
|
|
"1" = mod4 : all : f.gotoworkspace "1"
|
|
"2" = mod4 : all : f.gotoworkspace "2"
|
|
"3" = mod4 : all : f.gotoworkspace "3"
|
|
"4" = mod4 : all : f.gotoworkspace "4"
|
|
"5" = mod4 : all : f.gotoworkspace "5"
|
|
"6" = mod4 : all : f.gotoworkspace "6"
|
|
"7" = mod4 : all : f.gotoworkspace "7"
|
|
"8" = mod4 : all : f.gotoworkspace "8"
|
|
"9" = mod4 : all : f.gotoworkspace "9"
|
|
|
|
"XF86AudioRaiseVolume" = : all : !"mixerctl -w outputs.master+=5"
|
|
"XF86AudioLowerVolume" = : all : !"mixerctl -w outputs.master-=5"
|
|
#"XF86AudioMute" = : all : !"mixerctl -w outputs.master=0"
|
|
|
|
#
|
|
# "Windows" style keyboard shortcuts
|
|
#
|
|
|
|
"Tab" = mod1 : all : f.warpring "next"
|
|
"Tab" = mod1 | s : all : f.warpring "prev"
|
|
"Tab" = mod4 : all : f.warpring "next"
|
|
"Tab" = mod4 | s : all : f.warpring "prev"
|
|
"space" = mod1 : window : f.menu "titleops"
|
|
"F4" = mod1 : window : f.delete
|
|
|
|
#
|
|
# "Mac" style keyboard shortcuts
|
|
#
|
|
|
|
"w" = mod4 : window : f.delete
|
|
"m" = mod4 : window : f.iconify
|
|
|
|
#
|
|
# "evilwm" style keyboard shortcuts
|
|
#
|
|
|
|
# it is useful to be able to spawn a terminal without clicking.
|
|
"Return" = mod1 | c : all : !"uxterm &"
|
|
"Return" = mod4 | s : all : !"uxterm &"
|
|
|
|
"slash" = mod1 | c : all : f.menu "TwmAllWindows"
|
|
"slash" = mod4 : all : f.menu "TwmAllWindows"
|
|
"p" = mod1 | c : all : f.menu "NetBSD"
|
|
"p" = mod4 : all : f.menu "NetBSD"
|
|
|
|
# vi-style directions
|
|
"j" = mod1 | control : window : f.jumpdown "10"
|
|
"k" = mod1 | control : window : f.jumpup "10"
|
|
"h" = mod1 | control : window : f.jumpleft "10"
|
|
"l" = mod1 | control : window : f.jumpright "10"
|
|
|
|
"j" = mod4 : window : f.jumpdown "10"
|
|
"k" = mod4 : window : f.jumpup "10"
|
|
"h" = mod4 : window : f.jumpleft "10"
|
|
"l" = mod4 : window : f.jumpright "10"
|
|
|
|
"j" = mod4 | s : window : f.changesize "bottom +10"
|
|
"k" = mod4 | s : window : f.changesize "bottom -10"
|
|
"h" = mod4 | s : window : f.changesize "right -10"
|
|
"l" = mod4 | s : window : f.changesize "right +10"
|
|
|
|
"j" = mod1 | c | s : window : f.changesize "bottom +10"
|
|
"k" = mod1 | c | s : window : f.changesize "bottom -10"
|
|
"h" = mod1 | c | s : window : f.changesize "right -10"
|
|
"l" = mod1 | c | s : window : f.changesize "right +10"
|