Scheme Constraints Window Manager

By Greg J. Badros, Maciej Stachowiak, and many others

Scwm SourceForge Project Page     Introduction     Features     Screen Shots     Configuration/Preferences     Downloads     Complementary Software    
Documentation     Mailing Lists     Archive     AutoFAQ     Other Resources    
CVS Access     ChangeLog & News files     Developer Notes     Browse the Source     Authors    
Bug Tracker     Slides from Scwm Talk     Site Credits     Site ChangeLog


Sunday, 12-March-2000: Scwm- is released!

Saturday, 29-Jan-2000: Scwm- is released!

Wednesday, 12-Jan-2000: Scwm-0.99.6 is released!

Saturday, 18-Dec-1999: Short (2 page) paper about Scwm submitted to CHI-2000 Conference on Human Factors in Computing Systems conference is available!

Wednesday, 1-Dec-1999: Paper about Scwm submitted to Usenix 2000 Technical conference is available!

Monday, 22-Nov-1999: AAAI paper on Scwm was accepted!

Tuesday, 26-Oct-1999: Scwm- is released!

Sunday, 24-Oct-1999: Scwm-0.99.5 is released!

Thursday, 7-Oct-1999: Paper about Scwm submitted to AAAI Spring Symposium on Smart Graphics is available!

Wednesday, 6-Oct-1999: Scwm-0.99.4 is released!

Saturday, 25-Sep-1999: Scwm-0.99.3 is released!

Monday, 20-Sep-1999: We are now listed at the front of the X11 window managers page. Please vote for Scwm!

Tuesday, 14-Sep-1999: Scwm-0.99.2 is released!


Scwm is the Scheme Constraints/Configurable Window Manager. It is a window manager with a powerful dynamic configuration language based on Guile Scheme. Scwm has many, many advanced features, often implemented in the configuration language itself. Scwm is now being maintained by Scott Lenser with help from Greg Badros and Jason Lowdermilk. It is in active development currently, and continues to improve.

Scwm was originally based on fvwm2 code. Though the internals are almost completely rewritten, we have strived to maintain compatibility on various levels. For example, even fvwm2 modules may be executed through an adapter written in Scwm scheme code.

[index]     [top]


Scwm has plenty of useful features, some of which are rarely seen in a window manager. Here are some highlights:

The code is fairly portable. It is known to work at least on GNU/Linux (x86/Alpha/PowerPC), FreeBSD, NetBSD, Solaris, Irix, and HP/UX.

Scwm comes with a number of example scwmrc files in the sample.scwmrc directory which demonstrate many of the useful features. Using the scwmexec protocol makes it easy to experiment with these files and programming Scwm. You can send expressions to the window manager with `scwmexec' and see the results, or even have an interactive session using `scwmrepl'. If you're and Emacs fan, there's a scwm-mode that lets you evaluate Scwm expressions from right inside a buffer. (For you Scheme/LISP weenies out there, scwmrepl is also a fast and convenient way to launch a session with a Scheme interpreter - it just happens to also have window management support.)

[index]     [top]

Screen Shots

A screenshot showing multiple decors, gui configuration, the constraint toolbar and investigator, the root menu, and more.

Here's a screenshot generated using the decor.scwmrc configuration file: scwm-screenshot.gif. It's not a composite image - you really can get all those different decorations on the screen at once.

The Constraint solver

Actually, that screenshot is kind of old, here are some newer ones demonstrating some menuing features in the current development sources, and various other decoration styles:

Again, these are not composites. The menu code improvements (and the screenshots) are by Todd Larason. See Don Hopkins' pie menu page for more information on pie menus.

[index]     [top]


Our preferences support is finally taking shape. Here's an old shot of what '(scwm-options-dialog)' brings up. This is fully functioning (modulo bugs that I'm sure others will experience due to different configurations). The real kicker is that this is generated by uses of the define-scwm-option macro throughout the code (primitive options are defined in primopts.scm). For example:

(define-scwm-option *edge-scroll-delay* (edge-scroll-delay)
  "The edge scroll delay in milliseconds.
See `set-edge-scroll-delay!'. "
  #:type 'integer
  #:range '(0 . 5000)
  #:group 'virtual
  #:favorites '(0 250 500 1000)
  #:setter set-edge-scroll-delay!
  #:getter edge-scroll-delay

(define-scwm-option *edge-move-threshold* (edge-move-threshold)
  "The edge move threshold in pixels.
See `set-edge-move-threshold!'. "
  #:type 'integer
  #:range '(0 . 200)
  #:group 'virtual
  #:favorites '(0 2 5 10 25)
  #:setter set-edge-move-threshold!
  #:getter edge-move-threshold

Here's an old second screen shot. More work on this is needed -- the interface is now much improved, and a better screenshot is forthcoming.

[index]     [top]


Source Distributions

Version is released, 12-March-2000!

README. NEWS. ChangeLog. src/ChangeLog.

You should get all of the below files for a complete full-featured build of Scwm!



GTL site (last tested with v. 0.3.1)

cassowary-0.60.tar.gz (Cassowary site)


Redhat Packages (RPMs)

Source, i386 binary, and Alpha binary RPMs of the latest release are available. Please let us know if you can contribute binary RPMs for other architectures, or packages for other operating systems.

See RH6-notes for information about installing these RPMs. Also see README-Gnome for information about using Scwm with the Gnome desktop environment.

Source RPMs

Architecture Independent RPMs

x86 Binary RPMs for Redhat 6

Debian Packages (DEBs)

Official Stable Debian Scwm 0.99.6-1.deb [for x86]

To get Scwm running on a Debian system, run "apt-get install scwm" as root. You may need to update your package list by running "apt-get update" as root first. If the package can not be found, you may need to edit your /etc/apt/sources.list file and then repeat the above two steps.

Also see the Scwm bug tracker and Debian Scwm bug list.

[index]     [top]

Complementary software

To make it easy to build a full-featured Scwm, here are links to all the rest of the distributions you will want.

[index]     [top]


A preliminary version of the Scwm reference manual is available (scwm-reference-html.tar.gz). The documentation is still rough, but it does contain all of the Scwm primitives and many Scheme procedures as well. We hope to improve the formatting and organization soon, as well as completing documentation for the parts of the configuration language implemented in Scheme.

[index]     [top]

Mailing Lists

The Scwm announcement and discussion mailing lists are archived.

Please report bugs!

See the discussion forums on sourceforge for scwm

[index]     [top]

Other Resources

Scwm is related to a couple of other projects.

If you are new to Scheme, you might want to look at:

If you are a fvwm2 users, try converting your .fvwm2rc with our brand-new fvwm2rc-to-scwmrc converter.

[index]     [top]

Developer Notes

CVS Access

Scwm CVS page

Browse the Source

ViewCVS interface

[index]     [top]

ChangeLog & NEWS files

If you're wondering whether it's worth grabbing the latest version of Scwm, here are the NEWS and the ChangeLog files to help you decide:

[index]     [top]

About the Authors

Scwm is written by Greg J. Badros <> and Maciej Stachowiak<>.

Sam Steingold <>, Todd Larason, and Robert Bihlmeyer have also made extensive contributions, and many people have fixed bugs or made other contributions (see the THANKS file in the distribution).

[index]     [top]

Site Credits

Web site designed by Greg J. Badros and Maciej Stachowiak.

Scwm logo graphic by Stephanie Miller

[index]     [top]