rufwoof wrote:Colonel Panic wrote:Another vote for twm.
I've installed twm in SUSE now and it's working well.
For me under OpenBSD if I set a maximise/restore windows title button to run f.fullzoom then it maximises with a single click, but requires two clicks to restore back down again (first click the mouse cursor changes to a mouse).
A workaround that works for me was to define a function
Function "fullscreen" { f.fullzoom f.winrefresh }
and use that instead, such as
LeftTitleButton "maximize.xbm" = f.function "fullscreen"
I've also switched over to using tab like windows titles instead of full window width titles i.e. have SqueezeTitle defined in .twmrc. What's really nice with that is even when a window is maximised there's some desktop space showing to the right of the window title tab that can be left mouse pressed in order to (obviously) present the normal menu that is shown when the desktop is left mouse pressed, when otherwise no desktop space would have been showing.
I also have it configured such that right mouse click on the desktop or a window tab/title raises the icon manager (like a tasklist) and my mouse scrollwheel volume control (that by default I have dropped in the bottom left corner, but that can be alt-mouseclickdragged around if desired), so you can switch between maximised windows or adjust the volume quickly/easily.
I agree, SqueezeTitle's good. I've got IconManager on my middle button although on mine it brings up a menu for it rather than the icon manager directly (I also have options to sort and hide it, as well as left and right).
Here's the configuration file. The basic file here was copied from someone else's a while back although I've made a few changes (I like dmenu, for example, so there's a menu entry for that).
The whole look is a bit 1990s though, especially compared to yours (you've got brighter colours than I have). I was mainly concerned with having something that works, with a good range of functions. I might change the look if I get time.
#
# Default twm configuration file; needs to be kept small to conserve string
# space in systems whose compilers don't handle medium-sized strings.
#
# Sites should tailor this file, providing any extra title buttons, menus, etc.
# that may be appropriate for their environment. For example, if most of the
# users were accustomed to uwm, the defaults could be set up not to decorate
# any windows and to use meta-keys.
#
NoGrabServer
RestartPreviousState
DecorateTransients
TitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
ResizeFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
MenuFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
IconFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*"
IconManagerFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
#ClientBorderWidth
# Add buttons to a window's titlebars
#
# First, remove the defaults from the window titlebars.
# And get rid of the annoying titlebar hightlighting effect.
#
NoDefaults
NoTitleHighlight
TitleButtonBorderWidth 2
#
# I like SqueezeTitle. The titlebar only occupies as much space as needed.
# Reminds me of BeOS.
# If you want to have standard titlebars, remove or comment out this line.
#
SqueezeTitle
#
#IconifyByUnmapping iconises windows to the icon manager without drawing
#their icons on the desktop, which makes for a tidier if more spartan interface.
#
IconifyByUnmapping
#
# Now add our buttons.
#
LeftTitleButton "/etc/X11/twm/icons/resize1.xbm" = f.resize
#
# Note that declarations are from left to right in the order they'll
# be displayed on the right upper corner.
#
RightTitleButton "/usr/share/X11//twm/icons/minimize.xbm" = f.iconify
RightTitleButton "/usr/share/X11//twm/icons/maximize.xbm" = f.fullzoom
RightTitleButton "/usr/share/X11/twm/icons/close.xbm" = f.delete
Color
{
BorderColor "slategrey"
DefaultBackground "midnight blue"
DefaultForeground "antique white"
TitleBackground "midnight blue"
TitleForeground "antique white"
MenuBackground "midnight blue"
MenuForeground "antique white"
MenuBorderColor "slategrey"
MenuTitleBackground "lime green"
MenuTitleForeground "midnight blue"
IconBackground "midnight blue"
IconForeground "antique white"
IconBorderColor "antique white"
IconManagerBackground "midnight blue"
IconManagerForeground "antique white"
}
#
# Define some useful functions for motion-based actions.
#
MoveDelta 3
Function "move-or-lower" { f.move f.deltastop f.lower }
Function "move-or-raise" { f.move f.deltastop f.raise }
Function "move-or-iconify" { f.move f.deltastop f.iconify }
#
# Set some useful bindings. Sort of uwm-ish, sort of simple-button-ish
#
Button1 = : root : f.menu "defops1"
Button2 = : root : f.menu "defops2"
Button3 = : root : f.menu "defops3"
Button1 = m : window|icon : f.function "move-or-lower"
Button2 = m : window|icon : f.iconify
Button3 = m : window|icon : f.function "move-or-raise"
Button1 = : title : f.function "move-or-raise"
Button2 = : title : f.raiselower
Button1 = : icon : f.function "move-or-iconify"
Button2 = : icon : f.iconify
Button1 = : iconmgr : f.iconify
Button2 = : iconmgr : f.iconify
IconDirectory "/etc/X11/twm/icons"
#
# And a menus with the usual things
#
menu "defops1"
{
"Twm" f.title
"Xterm" f.exec "exec xterm &"
"Dmenu" f.exec "exec dmenu_run &"
"Gkrellm" f.exec "exec gkrellm &"
"" f.nop
"Kill" f.destroy
"Delete" f.delete
"Restart" f.restart
"Switch" f.startwm "blackbox"
"Exit" f.quit
"" f.nop
}
menu "defops2"
{
"Twm" f.title
"Show Icon Manager" f.showiconmgr
"Sort Icon Manager" f.sorticonmgr
"Hide Icon Manager" f.hideiconmgr
"Back Icon Manager" f.backiconmgr
"Forward Icon Manager" f.forwiconmgr
"" f.nop
}
menu "defops3"
{
"Twm" f.title
"Iconify" f.iconify
"Deiconify" f.deiconify
"Resize" f.resize
"" f.nop
"Zoom horizontally" f.horizoom
"Zoom vertically" f.zoom
"Zoom top half" f.topzoom
"Zoom bottom half" f.bottomzoom
"Zoom left half" f.leftzoom
"Zoom right half" f.rightzoom
"Zoom in both directions" f.fullzoom
"" f.nop
"Move" f.move
"Force Move" f.forcemove
"Raise" f.raise
"Lower" f.lower
"Circle Up" f.circleup
"Circle Down" f.circledown
"" f.nop
"Focus" f.focus
"Unfocus" f.unfocus
"" f.nop
"Refresh all" f.refresh
"Refresh window"f.winrefresh"
"" f.nop
}