Whim basic information edit
A few features:- reliable (new tests are added when bugs occur)
- authors eat their own dogfood
- multiple desktops
- transient support
- MWM hint support
- some _NET_WM support
- UTF-8 title property support
- scripting console
- BSD license
- focus follows mouse or click to focus behavior
- desktop applets that run as separate processes and communicate via vcall/pipes
- move window to another desktop via a titlebar menu
- take screenshot command in titlebar menus
- various introspection commands in the GUI
- interaction behavior configurable via the desktop menu
- per desktop background images (PNG or JPEG currently)
- whimcompmgr - a compositing manager (for desktop effects with alpha transparency)
- Whimterm (a multiple tab xterm)
- responsiveness and speed (especially in the >= 2193 release)
- A Sheet applet for taking notes that automatically has its state saved on exit/restart of Whim
- multiple layout policies via the Layout Engine menu (Place and Grid), with support for more
- configurable per-desktop active/inactive window colors (configurable via an easy to use Desktop Settings Wizard)
- desktop state is persistent (as much as possible) with regard to running applets
HOME edit
http://whim.linuxsys.net.. this domain appears to have dropped off the internet, but an archive Whim-2399 is available in the Half Bakery: http://wiki.tcl.tk/_repo/Whim-2399.tar.bz2SCREENSHOTS edit
http://whim.linuxsys.net/site/23NEWS edit
April 19, 2009Whim-2399 was released. See the home page. It has an important bug fix.April 14, 2009 "More than a Whim" [1] is a light introduction to Whim and related matters.Dec 16, 2008George Peter Staplin - Whim-2261 has been released.Changes include:- New Frame Color setting for the Desktop Settings Wizard
- New Active Frame Color setting for the Desktop Settings Wizard
- Per desktop frame color settings
- Bug fixes for restart placement
- misc. minor changes and bug fixes
- configure.tcl improvements for Debian
- Some behavior menu items are now only enabled if the Place layout engine is used
- New WhimWindowFrame abstraction
- A new grid layout engine that is selectable at runtime via the desktop menu
- Persistent applet state that is saved between sessions
- A desktop applet for taking notes
- whimcompmgr is a new compositing manager that uses the X.org extensions, such as Composite, Render, and XFixes in order to provide alpha transparency.
- various applets have been improved or extended.
- Several new applets were added.
- Per-desktop state is now saved, including desktop background images, and colors.
- There is more of a Whim API, based on objstructure.
- The default distribution is minimal, and doesn't include all of megapkg.
- A new Whimterm provides an xterm-like widget within a ttk::notebook.
- UTF-8 title properties now take precedence - no more gross looking Skype titles.
$ cat /crypt/gps/.whim_config set.config root_width 1280 set.config root_height 990 on startup { start.applet "digital clock" $::current_desktop }It's hoped that eventually we will go back to using automatically determined root sizes.
George Peter Staplin Mon Mar 17, 2008 : We have new builds of Whim and Whim2 on http://whim.linuxsys.netAs usual if you want the latest and greatest sources checkout megapkg. There may soon be a small Whim package with sources, and everything needed for a minimal WM, without the need to checkout megapkg. There is also talk of creating several tight variations of Whim that are designed for different types of interactions, for instance in point of sale systems, and general desktop usage.Whim2 is a new experimental project. It provides a compositing window manager without using some of the newer X extensions to do so. It uses NexTk and megaimage for the display objects. In the future it may use OpenGL, though it's uncertain. Right now it works with an adequate framerate for most applications with software rendering, even with a large 1280x1024 desktop.escargo - The Whim set site says, "A tarball of binaries built in Ubuntu 7.0.4 (compatible with libc-2.5.so) is available...." Is that supposed to be Ubuntu 7.4? (And it's almost time for 8.4.)George Peter Staplin - Nope, it's 7.0.4 (old with some patches) :-) I ran into some problems with upgrades, because of my old nvidia cards. So everytime I upgrade the kernel or X.org I have to recompile the nvidia kernel module, because Ubuntu's restricted-driver-manager uses the wrong driver. I don't even use the GNOME stuff, and right now it would be a hassle to upgrade everything. GNU/Linux is generally backwards compatible, but not always forward compatible with C programs, so I'm content using an older glibc/libc.
George Peter Staplin Mon Sep 17, 2007 Whim is actively developed again by myself and Steve. SRIV has sent me some patches and they have been merged into the core of Whim in megapkg. The sources for megapkg are here: http://code.google.com/p/megapkg/escargo - I now have a Ubuntu box that I use to run Linux, instead of primarily using Cygwin. Will the packaging for Whim make it easy to drop in to existing Linux installations to replace the default window manager? Going to the Google Code repository I see that it's packaged for Ubuntu 7.10. That looks promising.George Peter Staplin Hi escargo. I'm using Ubuntu these days. I added a newer build that I'm using today. It has better Java Swing hacks: http://code.google.com/p/megapkg/downloads/list Unfortunately Java Awt/Swing apps have problems in general with non-standard WM, so if it doesn't behave correctly it's not Whim's fault. That said I use Java apps and they all work correctly now. See this message for more information about the kind of bugs Java Swing apps have, and what to look for: http://lists.freedesktop.org/archives/xorg/2005-October/010527.html
SRIV Nov 7, 2005 New Whim website located at http://whim.linuxsys.net
This page will get rearranged to maintain user comments and suggestions
Introduction edit
Whim is a window manager written in Tcl that utilizes Tk, and optionally Tile.The core logic is written in Tcl. A small C extension (pwm.so) provides necessary Xlib and Tk C function access.Whim supports multiple desktops. Each desktop is a canvas, so you can draw many different types of things, easily! You can extend your interface as you like! It's possible to create widgets that are integrated into your desktop, for macros, or common tasks.Whim comes with the ability to configure its behavior on the fly without editing configuration files. There is a Behavior desktop menu, and an interactive console.Download Information edit
A starkit based on Whim 308-beta-4 for Linux that is known to work with tclkit 8.5 is available here: http://server.linuxsys.net/files/Whim308.4.kitA multi-platform Tile Starkit that works with Whim is available here: http://prdownloads.sourceforge.net/tktable/tile07.kit?downloadTo use the Tile Starkit you need to put the tile.kit/tile07.kit into a directory in your $PATH. Whim should find it, and use it.For an ~/.xinitrc you can use:tclkit8.5 /path/to/Whim308.4.kitThat should work with startx. It's also possible to start Whim from an xterm as long as an existing WM is not running.Bugs have been fixed since the last available Starkit, and many new features have been added.Note: you will probably experience segfaults if you try to run the Starkit with an 8.4 Tclkit, because of the stub incompatibilities.
LES on 2009-Jul-12: All the information available regarding Whim is terribly outdated. The entry/download page offers bz2 packages for download only. Then the documentation says one should run Whim like this: tclkit8.5 Whim433.kit. But where is that .kit file? Nowhere to be seen. I use Tcl myself, and I can't remember anymore how to build a Starkit. So I'll have to research that. How many visitors will be willing to deal with that additional step? How many visitors will even guess that Starkits are relatively easy to build? How many will just give up?Since I am familiar with Tcl, I know some info can be found here. This wiki page (not the official site) mentions Whim308.4.kit and it is indeed still available, but it dates back to May 18, 2006. More than 3 years! This page still mentions also the sriv.net site, which isn't available anymore. I could find the current location of Steve's stash, but there are only old files there. Even the Whim433.kit file mentioned in the documentation isn't there, the newest is Whim400-3.kit. The Whim file directory [2] has newer files, but no current Starkit. The Known Issues page is also three-years old. Many parts of the site is so outdated no one would be blamed for assuming the site is abandoned.My suggestion:
- A link to Whim-current that always points to the latest Starkit and a link to Whim-current-src that points to the latest bz2 package.
- Immediate updating those links with every release.
- Separate directories and Web site sections, clearly indicated on the site, for additional files like pictures, screenshots, menus, add-ons and text files/docs.
- Is there any documentation for the internals of Whim and how to modify it? I see a lot of similarity between Whim and FVWM2: both are very light, powerful and customizable, but how many people in the world can actually understand and customize them? 7? 8? Maybe 20? The Developer Documentation page has a little bit of information, but it's pretty scant and old.
Feel free to join in the fun, by sending patches or new design ideas."All new features must be approved by the Whim Steering Committee" ;)
Questions edit
Bryan Oakley 3 May 2005 - any chance for a MacOSX port? SRIV 3 May 2005 - it should be possible, as long as you only run X apps.escargo 11 Apr 2005 - I have fond memories of using TkDesk, which provided application launchers and icon bars. I know I've seen independent app launchers out there, but I don't have any bookmarks on this machine for them. Do you know what format your going to be storing your configuration info in? It's worth thinking about now.George Peter Staplin: At the moment the configuration is stored in several scripts that are evaluated and stored in ::env(HOME). ~/.whim_behavior has the automatically generated set.config commands based on (most) of the Behavior menu. ~/.whim_config is now used for user overrides. ~/.whim_menus contains the menu commands.escargo 9 Apr 2005 - Here are a few questions.
- What platforms does it run on? (I'd be interested in Cygwin/X.)
- Are there global variables that can be traced or virtual events that can be listened for?
- Are the bindings easy to add things to?
- Are there snap-to grids for window placement?
SRIV 9 Apr 2005 - Answers:
- It's been tested on NetBSD, Linux-x86 and Linux-Armv5. Cygwin should be possible. Will try.
- It was designed specifically with global arrays to track state for simplicity instead of OO. Most of the events are X related, others are stock Tk. We've discussed Virtual events for new things like hiding tool/task bars.
- It's designed to be easy to tweak and extend. (Heck, I can do it.)
- Snap to grids sound like a reasonable option that could be added to the future config applet.
Here is a screenshot of Steve's slightly modified version (he also uses Whim on a 3 monitor display now): May 3, 2005 SRIV Whim Mini How-ToDownload Whim.kit [3] and tile05.kit [4] . These are for Linux-x86.Create a ~/.xinitrc file to launch Whim such as mine:
# start of .xinitrc X -dpi 100 & LD_ASSUME_KERNEL=2.4.30 Whim.kit mozilla srfiles.kit xterm # The first arg to whim.kit is the name of the app # that gets launched when double-clicking on the desktop. # The 2nd & 3rd args are for button-2 and button-3 # app launching.place Whim.kit and tile07.kit in your path, chmod +x on eachrun startx
D. McC: Nov 7 2005 - This method didn't work on my Mandriva Linux 2006 system; see below for what did work.George Peter Staplin: IMO the X -dpi 100 stuff that Steve used was never needed, and could be causing problems, and the LD_ASSUME_KERNEL is no longer needed from what I've heard in Linux. I updated the ~/.xinitrc example towards the top of this page.
JMN 2005-09-12 This is a really nice piece of work -thanks for sharing!. I'm running it on FreeBSD and it's both fun & educational to be able to hack at your desktop-behaviour using Tcl :)I'm wondering though how I would go about making a window switch to another desktop? I've put in a little popup context menu on the titlebar of windows.. but It seems to me that the path of a window is tied to the desktop it was originally created in.. so it needs to be 'reparented' somehow. Any tips?George Peter Staplin: 2005-09-21 I implemented this. Now you can right-click on a titlebar and move a window to another desktop.Sometime soon I'd like to make a more prominent announcement for Whim. It's working so well now that I feel better about announcing it to more places.The desktop applets in recent releases have been a lot of fun. Steve wrote 2 interesting applets that I want to merge. He has one that displays the RSS feed from the Tcler's Wiki on a desktop, and another that is a weathermap that is dynamically updated by downloading the latest map from a government weather site.I've been working on an IPC method using shared memory and semaphores to possibly improve the speed of applet IPC. However this might be too much of a micro-optimization with little benefit. The choice of using a pipe, shared memory, or sockets and shared arrays goes round a lot. At the moment I like the idea of shared arrays over sockets for extending Whim, because it would mean it's easier to add new applets. Starting applets from a friend's server on my desktop over the network seems like it would be cool too.In the future we would also like a Whim configuration tool. I want this to run as a separate process, and communicate with send or sockets.[ANON] 2005-09-12 I just gave it a try as a tickled VNC-Desktop and I must say: "Nice Work!". Then I patched the [thelp.kit] to use tile and to be used as the main browser on Whim's <Double-1> (instead of mozilla). All works fine, except theme changes are not recognized. Sorry, but is there a global event to be handled by my patched [thelp.kit]?George Peter Staplin: Well ANON, the problem is that Tile themes are not globally changed yet. SRIV has a project called Stargus that he's told me will do this. I'm not sure what its status is. Perhaps he will speak up :)escargo 12 Sep 2005 - I think it would be interesting to add Tequila for your arrays; that would give the possibility of remote control over the desktop. You could even build in desktop sharing if you made some of the right arrays as shared. You would even get persistence in a Metakit backing store if you wanted. SRIV I've done it, but tequila didn't meet my needs. It's geared toward typical client/server configurations, but I'm more interested in a peer-to-peer type of config, so that the host system doesn't have to explicitly start a server. Also, tequila had poor response to network disconnects. After much hacking, I failed to shoehorn tequila into a successful IPC scheme. Using a modified version of Zarutian's shared-array code, I've got a fast, autonegotiating, simulated, peer-to-peer, shared-array system that so far has been very robust. It's still a work in progress.escargo 13 Sep 2005 - You should share your shared-array code. I would be interested in hearing how your code differs from Tequila.
AM (13 september 2005) Just a thought:Last week in my newspaper, there was an article about elderly people willing and desiring to work with computers and cellular phones. But as these devices are gaining more and more functions, they soon get lost. They "cry" for a simple machine with just a few functions, clearly accessible. Wouldn't a window manager like Whim be a very suitable platform to achieve that simplicity?Functions that seem important:
- sending e-mail
- writing a letter
- manipulating photographs
- probably one or two others
D. McC: Nov 7 2005 - Since I got Whim to work today on my Mandriva Linux 2006 system, I'm taking the liberty of deleting some previously posted material about how I couldn't get it to work. Right now I'm using "startx" rather than the graphical login, so I need a ~/.xinitrc file, of which the contents are:
# Here is my IceWM script that works: # wishcom -geometry +0+0 & # exec /usr/X11R6/bin/starticewm # # And here is my Whim script that also works: # Load WISH Command Center to launch apps: wishcom & # Now run Whim: exec /usr/local/bin/tclkit8.5 /usr/local/bin/Whim308.4.kitIceWM sets my standard for a fast window manager, and my impression is that Whim runs at least as fast as IceWM. I like it! I think I'll use it most of the time instead of IceWM (with the KDE desktop running a distant third). A few other impressions:
- It was a bit tricky to figure out how to resize the windows (there are only two resizing handles, one at each bottom corner of a window).
- The lack of "minimize" and "maximize/restore" buttons on the title bars is pretty unusual. I note that you can maximize a window by right-clicking the titlebar and selecting "Maximize" from a pop-up menu, but it would be nice to have the buttons. SRIV Noted and look for future options to enable those features.
- I don't see a configuration option for getting the taskbar to appear by default.
after 1000 [list start.applet taskbar .desktop0]
- When the taskbar does appear, it should stay on top. SRIV Noted and will be addressed.
- A minor point: I would like to see an option to have the controls (Exit, Restart, etc.) at the bottom left, as such things usually are, rather than the top left. (DKF: Bah, you're just over-used to the Win95 way of arranging things. :-) I think the definitive system for doing system menubar/dock type things has yet to be invented.) (D. McC: No, if application menus and titlebar buttons were on the bottom of windows, then I'd want the controls at the top, so they'd be out of the way. :o) Plus, I like having a taskbar that fills the entire bottom of the screen with app names, which Whim has but Windows doesn't--and I really like the "Autoshade Controls" feature, which Whim also has and Windows doesn't either. As for the definitive system, I'm not holding my breath.)
Felipe Voloch It is mentioned somewhere on the top of the page that Whim has been tested with linux ARM. I can only find Tclkit version 8.4 for ARM and Whim requires 8.5. Any suggestions? By the way, will the same Whim kit work for ARM? Thanks.SRIV Firstly, there is an 8.5 tclkit on the tclkit download page, and I have compiled Whim for ARM on my Zaurus and it worked perfect. I've never had a call for it yet though.Felipe Voloch Thanks, I found the 8.5 tclkit. So I have to compile Whim? I am also using a Zaurus, so if you could just make your version available, it will be appreciated.SRIV Done! Grab the Whim308.5-arm.kit from http://whim.linuxsys.net/site/21 . I didnt do much testing or configuring, but it does load up fine.
escargo 10 Nov 2005 - I'd still like to try this on Cygwin; would that be coming anytime soon? SRIV Actually, I just loaded Cygwin on XP the other day. If I can get tcl/tk compiled in it, then Im guessing Whim should work fine. I may try later. Update: I give up, I have no idea yet how to even get tcl & tk to compile in Cygwin, even with my paths set to MinGW binaries. Anyone have any Cygwin notes? escargo - I was afraid it wasn't going be that easy....VK 28-mar-2006 I just tried building on cygwin and only small quirk was required, see patch at [7]. However I didn't tried with mingw, I tried GCC that comes with cygwin. I beleive mingw should be only "minimal for windows" and will not support X11... Of course I'll provide /opt binaries, if needed...
rdt 2005.11.20: On Nov 7 2005 D. McC showed how he got Whim to work on his Mandriva 2006 system. His xinitrc ends with
exec /usr/local/bin/tclkit8.5 /usr/local/bin/Whim308.4.kitwouldn't it be nice if there was a "single" kit that contained the complete tcl/tk & whim package setup?SRIV Nov 22, 2005 Its pretty trivial to convert a .kit into a standalone binary. Theres now one posted on the Whim site here [8] , enjoy.SEH 20060108 -- On the Whim home site there's a screenshot showing a file manager called petcler. Where can one find this program and is it Tcl-based?SRIV Jan 8 2006 Petcler is pure tcl/tk. I haven't finished polishing a set of default filetype configs for linux/windows which must be done. There's an ipc mechanism that it uses for copy/paste between instances thats currently undergoing change, once that is tested then I plan on releasing it. It's the only filemanager I use now, so I've got most of the bugs/quirks worked out. Interestingly, I plan on shoe-horning in a mod of your sshvfs so I can manage files on my Linux servers with a cross platform tool.SEH 20060526 -- Did you ever get around to finishing up Petcler?
RJ Jan 31 - Steve - have a look at Puppy Linux (http://www.puppylinux.org), a minimal Linux distro with a Tcl bent. They spend a lot of time discussing which WM to distribute with the base distro, and I wonder if Whim might be the Tcl/Tk-based answer they are looking for.escargo - Where precisely are they having this discussion?RJ In various wiki pages (link of the main page) and John Murga's forum pages it comes up a lot. But Barry Kauler points it out in his FAQ: http://www.puppylinux.com/faq.htm about half way down "why not 'xyz' WM?" I am going to give Whim a try in my puppy and if successful will make it available as a dotpup package. Never tried either though, so wish me luck.SRIV May 19, 2006 I uploaded a new Whim starkit to the website [9]. It has 2 new features: It will start X if you run it from a console. So now you can try Whim without messing up your existing window manager configuration. Also, it will copy out default config files into your home directory if they dont exist so you have something to start with.Also, If you run Whim from inside X WITH another window manager running, it will re-launch itself inside Xnest automatically, so you can try it from inside your existing X setup.
ZB - although didn't try Whim yet - currently I'm using IceWM - I would to ask you about a thing important for users of a desktops of "virtual size" - I mean: does Whim report as "screen size" the entire desktop size (wrong) - or the size of the visible part of the screen (as it should be)? Perhaps I should explain the whole thing:All of the users of "virtual size" desktops (screen of much larger resolution than graphic adaptor is set to - so only part of such virtual desktop is currently visible on monitor's screen) surely know, how annoying could be the fact, that all(?) procedures used for actual screen size detection are reporting the "virtual resolution" - instead of the real one, I mean: instead of resolution of the graphic adaptor's screen - that visible part - which is just a part of the virtual screen.As a typical consequence there are f.e. steady problems with java-driven webpages, which are resizing the www-browser's window to whole virtual resolution - and each time it must be "manually" resized to fit the visible part of the desktop, because it covers all of the desktop's contents. Another problem is, that "maximize" buttons are useless, because clicking it makes the same: an application window covers entire virtual screen, not just visible "window". But the main point in using virtual screens is to have all the needed things available - not one on top of another.It was my "feature request" for Xorg to add a special option to xorg.conf, which can modify the X-server's response (for example: ReportVirtualResolution false - X-server answer gives real resolution, true - virtual res. like it's today) to the functions like getScreenSize() - but the guys from xorg-list told me, that it's wm depending(?). So, I'm asking here, can Whim do this?George Peter Staplin 2007.09.20 : Hi ZB. I added 2 configuration knobs yesterday -- root_width and root_height. If you add to your ~/.whim_config the following it should work: set.config root_width 1024; set.config root_height 768 (assuming that's the size of your screen). The taskbar applet changes some boundaries, but other than that, the rest works now. So that will limit the maximize. I'm not sure if that will limit Firefox though, when it's not in a maximized state. I'll be happy to fix things for you, or apply patches you think help. The core logic of Whim is written in Tcl.