WindowMakerThemes

The WindowMaker window manager has a theme mechanism which controls your background images, titlebar images, etc. This is controlled with the setstyle program.

I wrote the following script to invoke setstyle and give it a random theme:

#!/usr/bin/tcl
# A script to randomly select a new windowmaker theme.

# Phil Hollenback
# philiph_at_pobox.com
# 4/29/03

set Background [ lindex $argv 0 ]
set ScriptName [ file tail $argv0 ]

set dir "~/GNUstep/Library/WindowMaker/Themes"
set styleprog /usr/X11R6/bin/setstyle
set SleepTime 3600
set themelist [ readdir $dir ]


proc PrintUsage {} {
    global ScriptName SleepTime
    puts "Usage: $ScriptName \[-b\]"
    puts "optional b switch causes program to stay running and wake up every $SleepTime"
    puts "seconds to change the background."
}

if { $argc > 1 } {
    PrintUsage
    exit 1
}

# Pick a random theme from the list.
random seed
set picknum [ random [ llength $themelist ] ]
set theme [ lindex $themelist $picknum ]

#echo "theme is $theme"

if [ file exists "$dir/$theme" ] {
    set result [system $styleprog $dir/"$theme"]
    if [ expr $result != 0 ] {
      puts stderr "$styleprog failed!"
      puts stderr "Theme was $dir/$theme"
      exit 1
    }
    if { [ string compare $Background "-b" ] != 0 } {
        # quit unless user specified "-b" persistent switch.
        exit 0
    }
} else {
    echo "Can't find theme $dir/$theme! Where did it go?"
    exit 1
}

# Sleep for a while, then respawn to change the background again.
sleep $SleepTime
execl $argv0 "-b"

To use this script, start it in your .xsession or .startxrc with the -b switch. It will then change the theme every 30 minutes. If you call it without the -b switch, it changes the theme immediately and exits.

--phil 3/7/02



Our Founder
ToolboxClick to hide/show