Here are my screenshots of 2013.

Early in the year I got Varuna, a Thinkpad X60. Shortly after that I let go of Loka, the old desktop computer I had been using for years, and hooked up Varuna to the 23″ screen I used with Loka. I now only work with Varuna and Savitar, my beloved Thinkpad X41 (they sure don’t make them like this anymore!).

Savitar still runs (an outdated) Debian Testing (Wheezy), as did Loka. Varuna runs Mint Debian Edition, primarily so I could have an easy way to run MATE. As the screenshots below illustrate, I’ve used Openbox exclusively this year, often as the window manager of MATE or Xfce (on Varuna) or Gnome 2.30 (on Savitar).

Savitar is my main work computer, and has changed little in aesthetics since 2012. The dark hues of the Erthe themes has worked so well that I have no desire to change anything other than the wallpaper. On Varuna, the computer I (mainly) use at home for everything else, things change more rapidly (though not nearly as often as 5 years ago).

Loka

lazaa01

Mate 1.4.2, with Openbox 3.5, with a modified Laza Gtk and Openbox theme, and the Gnome-noble icons.

wall01

Mate 1.4.2, with Openbox 3.5, with a modified A New Hope Gtk theme, and the ubo icons.

Varuna

jerome01

jerome02

Xfce 4.8 with Openbox 3.5, using a modified Laza Gtk and Openbox theme, and the Gnome-noble icons. The wallpaper is Caravaggio’s Saint Jerome.

banksy01

Xfce 4.8 with Openbox 3.5, using the Salvage Gtk and Openbox theme, and the AnyColorYouLike icons.

Et in Arcadia ego

Openbox 3.5, with the Rivas themes.

groove01c

Xfce 4.8 with Openbox 3.5, using the Groove themes.

Miroir

Openbox 3.5, using the Miroir themes.

miroir2

miroir_upload

Openbox 3.5, using the Miroir themes.

Savitar

Gnome 2.30, with Openbox, using the Erthe themes, and the AnyColorYouLike icons.

jm01

jm02

Gnome 2.30 and Openbox 3.5, using the Erthe themes.

This is my fifth annual screenshot review, recording my changing aesthetics and moods. Early in the year, I moved back to Gnome (with Openbox, of course) on my laptop (Savitar, a Thinkpad X41), and in November began using MATE on my desktop (Loka). Early in the year, for a few months I also returned to Pekwm, a wonderful little window manager I hadn’t used much in the previous year. I also played with Awesome for a short while, but that window manager, however much I like it, remains more of a distracting novelty for me than an productive work environment.

As you can see below, I’ve mainly used dark themes this year (and particularly the Erthe themes), and have changed my setup a lot less often than I did when I started posting these annual overviews.

Both Savitar and Loka still run Debian Testing (Wheezy), though Savitar’s is far from up to date (as should be obvious from the Gnome 2 screenshots below).

All my Openbox and Gtk themes (including those that I merely modified) can now be found on github.

Savitar

Gnome 2, with Openbox, using the Erthe themes, and the AnyColorYouLike icons.

Openbox 3.5, with the Dandelion Openbox and Gtk theme, and the nuoveXT-1.7 icons. The desktop background is a painting of the Six Gosvamis of Vrindavan.

Gnome 2, with Openbox, using the Erthe themes, and the AnyColorYouLike icons. The desktop background I found here.

Loka

Pekwm, with the Infinity Pekwm and Gtk theme, and the moblin icons.

Pekwm with the Royalty themes, and the AnyColorYouLike icons.

Openbox 3.5, with modified royalty themes and Somatic icons. The dock holds bbdock, bbpager, lal, and docker.

Openbox 3.5 and XFCE 4.8, with the Erthe themes, and AnyColorYouLike icons.

Awesome 3.4.13, with the Eidolon themes.

MATE 1.4.2 with Openbox 3.5, using modified Laza themes and the Gnome-Noble icons.

For a very long time I’ve used a script that either raises a running application or, if the application has not been launched yet, launches a new instance of the application. I use that script for some of my most used applications–like Thunar–and it has helped me enormously to keep my desktop tidy.

Tonight I decided it would be great to be able to do that with any application. Wouldn’t it be nifty if I could use this script in combination with dmenu?

It would indeed. Here is the result:

#!/bin/sh

CMD=$(dmenu_path | dmenu -b -fn '-*-nu-*-*-*-*-*-*-*-*-*-*-*-*' -nb '#545043' -nf '#D2C7A7' -sb '#D2C7A7' -sf '#545043')

# if no instance of the app has been started, launch one now
if [ -z "`wmctrl -lx | grep -i $CMD`" ]; then
$CMD &
else
# search for existing app on any desktop and move it to the current desktop
app_on_any_desk=`wmctrl -lx | grep -i $CMD | cut -d ' ' -f 1`
wmctrl -i -R $app_on_any_desk
fi;

If no instance of the application you launched with dmenu is found this script will launch a new one. If there is an instance running, it will move it to the current desktop and focus it. If you prefer to move to the desktop where the application is currently running instead, change the last wmctrl command to wmctrl -i -a $app_on_any_desk.

You’ll need to make the script executable (chmod +x path_to_script) and you’ll need both wmctrl and dmenu installed. Dmenu is part of the suckless-tools package on Debian Testing and recent Ubuntu versions.

The colours dmenu uses in this script are the Erthe colours. Change them to your liking if you don’t like brown.

You can find this script (and a few others) also on my new github repository.

bbdock on Debian Wheezy

July 21, 2012

If you’ve tried to compile the source code for bbdock, that nifty little blackbox dock, on Debian Wheezy (and presumably other recent distros) without much success, try Markus Fisch’s bbdock code on github. If you have the proper dependencies installed (libx11-dev and libpng-dev on Debian) it should compile with the usual ./configure, make, and make install.

The way openbox-session autostarts applications changed in Openbox 3.5, the latest release. Openbox-session is the session manager for Openbox, which is launched when you run Openbox as a stand-alone window manager, not as the window manager within a desktop environment like Xfce or KDE that has their own session manager. In earlier versions, openbox-session would look for the autostart.sh (now also renamed to just autostart) file in ~/.config/openbox, or, if that file did not exist, the system wide autostart file located in /etc/xdg/openbox. That autostart file contains a list of applications or commands that are launched whenever Openbox through openbow-session.

When I upgraded to Openbox 3.5 I noticed that whenever I launched openbox-session, a few applications I use in Gnome, but never in Openbox, would be launched at login, and some applications that I have listed in my autostart file would be launched twice.

After a little digging–the documentation on the Openbox website has not been updated yet–I figured out what was happening. Openbox-session now also launches /usr/lib/openbox/openbox-autostart, which in its turn runs /usr/lib/openbox/openbox-xdg-autostart.

Now, what does /usr/lib/openbox/openbox-xdg-autostart do? This is an Openbox implementation of the Freedesktop standards when it comes to autostarting applications. Similar to what Gnome and Xfce do, it looks in /etc/xdg/autostart and ~/.config/autostart for .desktop files of applications and launches those. These .desktop files are simple text files that tell the session manager what to launch at login. If besides pure Openbox, you also use desktop environments, you’ll have some .desktop files in there. Some applications (like wicd or gnome-do) also automatically copy a .desktop file into this directory when you install them.

This new behaviour is a little confusing, as openbox-session also still launches Openbox’ own autostart file, which means that some applications, such as wicd, will launch twice if you still have them in your autostart file. How do we fix that? You could just comment out the final line of /usr/lib/openbox/openbox-autostart (the line that says /usr/lib/openbox/openbox-xdg-autostart “$@”), but that may seem to some too crude a fix. That file will also be overwritten when you upgrade Openbox, so you’ll have to re-edit this file when you reinstall Openbox.

A more elegant, but more cumbersome, solution is to work with these new standards, and edit the .desktop files. As you might have noticed, not all of the applications that have .desktop files in these directories will be launched when you run openbox-session, because you can specify that you want these applications only launched or autostarted in specific desktop environments. To find out which applications will launch automatically by this openbox-xdg-autostart script, you can run the following command:

/usr/lib/openbox/openbox-xdg-autostart –list | less

If an application is marked to be launched at login, you can easily disable that by editing the application’s .desktop file, and adding a line telling it to only launch this application in certain desktop environments. Here is an example, using wicd’s .desktop file in /etc/xdg/autostart. This is the wicd-tray.desktop file:

[Desktop Entry]
Categories=Application;Network;
Exec=wicd-gtk –tray
GenericName=Network Manager
Icon=wicd-gtk
Name=Wicd Network Manager Tray
Comment=Display network connection status in the system tray
Terminal=false
Type=Application
Version=1.0
X-GNOME-Autostart-enabled=true
X-KDE-autostart-after=panel

If we want this file to be only used in Xfce or Gnome, and not in Openbox (because we already have the application listed in our autostart file, for example, or just because you don’t want to use this in Openbox), you can add the following line at the bottom of that file:

OnlyShowIn=’ENVIRONMENT’

Replace ENVIRONMENT here by your preferred desktop environment. The options are GNOME, KDE, ROX, XFCE, and one called “Old” which is supposed to be for “Legacy systems”, whatever that means. I believe LXDE also works. (Run /usr/lib/openbox/openbox-xdg-autostart –help for more information). If you want it to be launched in more than one DE, you have to separate the environment names with a semicolon, as follows:

OnlyShowIn=’GNOME;KDE’

Add this line to the .desktop files you don’t want launched in Openbox, and all should be normal again.

I have never used Windows Vista or Windows 7, but from what I’ve learned from others it seems to have one really neat feature: Aero snap. If you drag a window to a screen edge that window will fill half of the available screen space. Tiling two windows is extremely easy with this. You can comfortably view two documents at the same time without losing much screen estate.

Now that I am using Pekwm again, I tried to replicate this behaviour with this window manager. One of Pekwm’s neatest features is its use of screen edges: you can assign mouse actions to the edges of the screen.

Could we use those screen edges to get a window to take up half of the screen space? One of the mouse actions you can use with the screen edges is “EnterMoving”, a mouse event that is only used for the screen edges. As the documentation states, this action “defines how to act when a dragged window enters a ScreenEdge”. The default action assigned to this action is “WarpToWorkspace”; if you drag a window to the left screen edge, the window will be moved to the workspace on the left.

I rarely use this feature, so I lose little by assigning a different action to this mouse binding. I initially tried to use Pekwm’s own window management actions to resize a window that I dragged to a screen edge, but that did not seem to work. But luckily there is wmctrl, a little tool that can manipulate windows managed by standard compliant window managers (like pekwm), from the command line.

Wmctrl is in the repositories of most distributions. If you use Debian or Ubuntu (or one of its derivatives), you can install it with the following command:

sudo aptitude install wmctrl

Once you have wmctrl installed, you have to reconfigure Pekwm’s mouse behaviour, by editing the ~/.pekwm/mouse file which governs all mouse actions. In the ScreenEdge section you’ll find the settings for each of the four screen edges. Look for the line that begins EnterMoving = “Any Any” in each of those section. This is what we will modify (or create if it doesn’t have that behaviour mapped yet for a screen edge).

The wmctrl commands we will use are specific to a particular screen size. The settings I give below are for my desktop screen, which has a 2048×1152 resolution, and for my laptop screen, which has a 1028×768 resolution. If you have a screen of a different size, you’ll have to modify this (I’ll explain how later).

For a 2048×1152 resolution

In the Down section, I have the following:

EnterMoving = "Any Any" { Actions = "Exec wmctrl -r :ACTIVE: -e 0,0,627,2048,550 &" }

In the Up section, I have the following:

EnterMoving = "Any Any" { Actions = "Exec wmctrl -r :ACTIVE: -e 0,0,0,2048,542 &" }

In the Left section:

EnterMoving = "Any Any" { Actions = "Exec wmctrl -r :ACTIVE: -e 0,0,0,1024,1152 &" }

And in the Right section, I have the following:

EnterMoving = "Any Any" { Actions = "Exec wmctrl -r :ACTIVE: -e 0,1025,0,1024,1152 &" }

For a 1028×768 resolution

In the Down section, I have the following:

EnterMoving = "Any Any" { Actions = "Exec wmctrl -r :ACTIVE: -e 0,0,412,1028,324 &" }

In the Up section, I have the following:

EnterMoving = "Any Any" { Actions = "Exec wmctrl -r :ACTIVE: -e 0,0,0,1028,384 &" }

In the Left section:

EnterMoving = "Any Any" { Actions = "Exec wmctrl -r :ACTIVE: -e 0,0,0,513,768 &" }

And in the Right section, I have the following:

EnterMoving = "Any Any" { Actions = "Exec wmctrl -r :ACTIVE: -e 0,513,0,513,768 &" }

These settings work as follows: If I drag a window to the right or left screen edge, it takes up the right or left half of the screen. If I drag it to the top or bottom edge, the window will tile vertically and take up the top or bottom half of the screen. These last settings are a little more troublesome, as you need to take the window decorations into consideration. The above settings are based on the Infinity Pekwm theme. If I were to use a different theme, that has smaller or bigger window decorations, I’ll have to adjust these settings by a few pixels so that the windows will not overlap. Since I very rarely use the vertical tiling (where the biggest changes would have to be made to account for the theme’s window decorations), I am not really bothered by this.

If you have to adjust these settings for your own screen size, it probably helps to know the syntax of the wmctrl command I use above. Let’s use the command for the Left screen edge as an example:

wmctrl -r :ACTIVE: -e 0,0,0,1024,1152

-r :ACTIVE: tells wmctrl to do something with the active window, which would be the window you are dragging into the screen edge. -e, then, tells wmctrl that you want to move and resize the window, according to the values given in the rest of the command, using the following syntax as explained in wmctrl man’s page: g,x,y,w,h.

  • g stands for the gravity. I’m not entirely sure what this does (you can read up on it on the EWMH standards documentation, if you like), but if you use the value 0 for this, it works.
  • x and y determine where the window will be positioned. For the left screen edge this is 0,0, as we want the window in the top left corner. For the right screen edge, this should be 0,half-of-your-horizontal-resolution as you want the window to be positioned at the top of the screen (the 0 value for x), but only beginning from a pixel after the middle of the screen (if you would start from the middle of the screen, it would overlap by a pixel the left window). In my case this is 1025 (half of 2048 + 1). For a 1024×768 screen resolution, this would be 513 (half of 1024 + 1). For the top and bottom edges you would set 0,0 for your top edge (as you want the window to placed in the top right corner), and 0,half-of-your-vertical-resolution for the bottom edge, as you want it to be placed in the middle of your screen.
  • The final two values (w and h) tell wmctrl how to resize the window: how wide and high it should be. For the left and right screen edges, you would want it to fill half of the screen horizontally, and to fill the entire screen vertically, so you would set the first value to half of your screen size (in my case 1024), and the second value to the size of your screen width (in my case 1152). For the top and bottom screen edges, you would reverse these values: the first would be the entire width of your screen (in my case 2048) and half of your vertical screen size, minus the size of your window decorations, as I mentioned before. You could, of course, also adjust the positioning of these windows, by adjusting the previous values.

Make sure that you did not delete the & sign at the end of the action in your configuration file. Once you have configured this for your screen, save your ~/.pekwm/mouse and reconfigure Pekwm. If you drag a window to one of the screen edges now, it should “snap” as it would in Aero (or, since I’ve never used Aero, as I think it would snap in Aero).

The standard Openbox does not make use of the screen edges, so you can’t accomplish this with Openbox, but you could assign these commands to keybindings and do so manually. But in Openbox, you would probably want to use Openbox’ own actions, instead of wmctrl. Have a look at this post for ideas on how to set this up.

A Pekwm Guide

May 10, 2012

What follows is not a new guide. I wrote this a long time ago, for the Ubuntu forums, but was recently informed that the “Howto” section of the Ubuntu forums is being deprecated, in favour of the Ubuntu Wiki. I decided to save it here, for easier reference. I’ve updated the guide to make it relevant for Debian as well as the current Pekwm version.

Contents

  1. Introduction
  2. Installing Pekwm
  3. Creating a Session entry for Pekwm
  4. Pekwm basics
  5. Configuring Pekwm
  6. Pekwm themes
  7. Conclusion

1. Introduction

Pekwm is a fast, functional, and flexible window manager, originally based on aewm++. It supports tabbed windows (like Fluxbox), key chains, pixmap themes, xinerama support and much more. If you like Fluxbox or Openbox chances are you’ll like Pekwm too, as it resembles both in looks and functionality. Pekwm is still actively developped.

Here is what Pekwm can look like:


(The first screenshot uses the Groove Pekwm and Gtk theme; the second uses the Fearless Pekwm theme and a modified Royalty gtk theme; the third uses the Elegance Pekwm theme.)

Pekwm has excellent documentation, which you can find here. Everything you need to know to use Pekwm can be found there, and though it can be daunting at times I strongly recommend reading it. This guide is not meant to repeat or replace the official documentation, but rather to help users new to Pekwm getting started.

2. Installing Pekwm

The latest version of Pewkm (0.1.14) is both in the repositories of Debian Wheezy and Sid, as well as those of Ubuntu Quantal. Installing Pekwm 0.1.14 on Debian Wheezy and Sid, or Ubuntu Quantal (or distributions based on these) is, in other words, very easy. Just install the package through Synaptic, or through a terminal (sudo aptitude install pekwm).

2.2 Building Pekwm from source

Older versions of Debian or Ubuntu have older versions of Pekwm in their repositories. If you use one of those, or if you prefer to build from source, you can get Pekwm installed in just a few steps. Here is how to do it.

  • Preparation
    Since you will have to build from source, you will need the basic building tools installed. If you have never build a package from source before, you’ll have to install build-essential. I also recommend installing checkinstall, as it makes it much easier to remove the package you’ve installed later on. Checkinstall will first create a .deb package and install that. This means that it will show up in Synaptic and can be removed with Apt or Aptitude.

    You can install these two packages with the following command:

    sudo aptitude install build-essential checkinstall

    Next install the needed dependencies for Pekwm:

    sudo apt-get build-dep pekwm

  • Download the source code from the Pekwm site.
    Use your favourite web browser to surf to the Pekwm site and click on the download link for Pekwm 0.1.14 to download the latest stable version, or download it with the following command:

    wget https://www.pekwm.org/projects/pekwm/files/pekwm-0.1.14.tar.bz2

  • Unpack the archive
    Once the source code archive has been downloaded, it is time to unpack it. Use a file browser to navigate to the directory where you saved the file and unpack the archive to the directory of your choice. Alternatively, you can use the command line as follows:

    cd /path/to/the/directory/where/the/archive/is/saved
    tar xjvf pekwm-0.1.14.tar.bz2

  • Configure the package to make it ready to compile
    Now you have to compile the package. Open a terminal and navigate with the cd (‘change directory’) command to the directory where the unpacked archive is:

    cd pekwm-0.1.14

    Then run the configure script to prepare the source for installation with the following command:

    ./configure

    You can add several options to this. Using this command, the package will be installed in /usr/local/. If you’d like the package to be installed in another directory, for example /usr/, use the following command:

    ./configure --prefix='/usr'

    There are more options (see here), but unless you really know what you are doing, you need not be concerned with them.

    The configure script will look for dependencies and basic system settings. Just let it all run. You don’t need to worry about what it tells you, unless you encounter an error and the process is aborted: only the first error message is then of importance as it will help you figure out what went wrong. If all goes well, you should see something like this:

    * pekwm version 0.1.14 configured successfully.
    *
    * PREFIX: /usr/local
    * FEATURES:  XShape Xrandr Xft image-xpm image-png menus harbour
    * CXXFLAGS: -g -O2  -I/usr/include -I/usr/include/freetype2
    * LIBS:   -L/usr/X11R6/lib -lX11 -lXext -lXrandr -lXft -lX11 -lfreetype -lz -lfontconfig -lXrender -lX11 -lXpm -lpng

    If you changed the destination directory, as explained above, the ‘PREFIX’ line will give the directory you specified. You can ignore the rest.

  • Build the package
    Once all this is done, you have to build the package. At the command prompt type the following command:

    make

    A lot of information will appear. If no errors show up, none of it is really important and can safely be ignored. Note that this may take a while.

  • Install Pekwm
    If all this went smoothly and no errors were encountered, you can finally install the package with the following command:

    sudo checkinstall

    (If you prefer not to use checkinstall, type ‘sudo make install’ instead.)

    Checkinstall will then build a .deb package and install that. If you’d rather build the .deb now, but install the package later using that deb, enter the following command instead to install:

    sudo checkinstall -D

    Checkinstall will ask for confirmations three times in the beginning of the process, so keep an eye on it. The defaults are fine, so you can just press enter when it asks for something.

    If all goes well, Pekwm is now installed. If you encounter any error messages in this process, post them in here, and perhaps someone can help.

3. Creating a Session entry for Pekwm

If you have installed the Pekwm package from the repositories, you can skip this step.

If you compiled Pekwm from source and if you use a display and session manager, such as GDM, KDM or Slim, you will not have an entry for Pekwm in the Sessions menu of your login screen. But don’t worry, this is easily created. Open a terminal and enter the following command (you can replace nano by any other text editor, such as mousepad, leafpad, vim or gedit):

sudo nano /usr/share/xsessions/Pekwm.desktop

An empty file will open. Add the following to this:

[Desktop Entry] 
Encoding=UTF-8 
Name=PekWM
Comment=Start PekWM
Exec=/usr/local/bin/pekwm
Icon= 
Type=Application

(If you have installed Pekwm to /usr/ (as mentioned above), change the Exec line to ‘Exec=/usr/bin/pekwm’)

Save and close the file and make the file executable with the following command:

sudo chmod +x /usr/share/xsessions/Pekwm.desktop

When you restart your computer, you will be able to choose Pekwm in the sessions menu (which is accessed with F10 > Sessions if you use GDM or KDM, or whatever other display manager your distro uses).

If you don’t use a session manager, edit your ~/.xinitrc file (create one if you don’t have one already), so that it looks something like this:

#!/bin/sh
xsetroot -solid black &

exec /usr/local/bin/pekwm

If you have installed Pekwm to /usr/ (as mentioned above), change the exec line to ‘exec /usr/bin/pekwm’. When you start X with the command startx you will start a new Pekwm session.

4. Pekwm basics

When you first log into Pekwm, you won’t see much apart from a blank screen. This is normal. Pekwm doesn’t come with a panel, or a desktop manager. Pekwm is fairly straightforward. It is a window manager, and does not do much more than managing windows. Here are a few basics of Pekwm:

Windows

  • Pekwm supports tabbed windows. You can group windows together by middle-clicking the titlebar of one window and dragging it to another window title. To group the next launched window with the current one, press the windows key + T to tag the current window. Until untagged with the same command, all new windows will be opened as tabs within that window.

  • Apart from maximizing, windows can also ‘fill’ in Pekwm: they will grow (either vertically, horizontally or both) until they reach another window border or an edge of the screen.

  • Every window can be stripped of their titlebar or their borders or both.

Menus

  • Pekwm comes with several menus. You have the root menu, which is editable and generally contains entries to launch your applications. There is a active window menu (the GoTo menu), which contains a list of all active windows on all workspaces. The GoToClient menu list all active windows with their tabs. The Icon menu lists the iconified windows.

  • Right click on the desktop, and you’ll have your root menu. Middle click and you have the active window menu. You can also click on the screen edges to call up these menus, which means you don’t have to iconify all windows to use the menu.

  • To see the Icon menu, press Windows key+Shift+I, to use the GoToClient menu, press Windows key+C

Other

  • Pekwm does not come with any panels, pagers, system trays. It does have a ‘harbour’, where you can load dockapps, and which is similar to (though less developed than) the slit of Fluxbox or the dock of Openbox. The order in which the dockapps are loaded can be specified in the autoproperties file (see below).

  • Pekwm has a command dialog, which can be launched by pressing the Windows key + D. It can be used to execute commands to launch applications, but also to performs Pekwm actions. For a list of actions, see here.

5. Configuring Pekwm

All of Pekwm’s configuration happens in the ~/.pekwm directory. In there you will find 7 files: config, menu, keys, mouse, autoproperties, start, and vars.

There are no graphical tools to change the settings in these files (apart from a text editor ;-)). Any changes you make to these files will not be applied until you reconfigure (in the root menu) or restart Pekwm.

In case you accidentally delete these files, the defaults can be found at /usr/local/etc/pekwm

Config
This is the general configuration file. Here you can control the basic behaviour of Pekwm. It controls the workspace settings, the menu and harbour behaviour, window edge resistance, and more. The settings are very well explained in the official Pekwm documentation.

Menu
As you could have guessed, this is the file that controls your menu. You can edit this file to add, edit or remove entries or submenus to your root menu and (towards the end of the file) your window menu (the menu that pops up when you right click a window header). Any custom menu you’d like to setup will have to be added to this file.

When you first run Pekwm you will already have a rather full default menu, with possibly plenty of applications you don’t have installed. It might be a useful basis to create your own menu. You could also run Menumaker to set up menus of all your installed applications. Run it with the following command:

mmaker --no-desktop pekwm

(Note that this will not overwrite your existing menu file. If you want it to overwrite, add the -f flag to the above command.

The syntax for the menu file is fairly straightforward. A simple entry has the following structure:

Entry = "NAME" { Actions = "Exec COMMAND &" }

A submenu has the following syntax:

Submenu = "NAME" {
		Entry = "NAME" { Actions = "Exec COMMAND &" }
		Entry = "NAME" { Actions = "Exec COMMAND &" }
}

(Make sure these brackets are always closed, or you will have errors and your menu will not display)

To add a separator line to the menu, use the following:

Separator {}

Pekwm also supports dynamic menus. These are basically menu entries or submenus that display the output of a script that is run every time the entry or submenu is accessed.

You can find some dynamic menus online. Check the exact syntax the menu requires, as they can vary. There are not that many dynamic menu scripts around, unfortunately. You can find and example of a dynamic menu, used to display the time and date, here.

Keys
This file controls all the keyboard bindings and keychains used in Pekwm. You can add keyboard bindings to launch programs or to perform actions in Pekwm, such as show a menu, move a window, switch desktops, etc. For a full list of Pekwm’s actions, see the documentation.

The syntax structure of this file resembles that of the menu file and should be fairly self-evident. Mod1 is the Alt key, Mod4 the Windows key.

You can have more than one action assigned to one key combination. To do so, just separate the actions by a semicolon. Here is an example:

KeyPress = "Ctrl Mod1 R" { Actions = "Exec osdctl -s 'Reconfiguring'; Reload" }

When you press Ctrl+Alt+R Pekwm will display on the screen the text ‘Reconfiguring’ (osdctl -s ‘Reconfiguring’) and reconfigure (Reload). (Note that this requires osdsh to be installed)

Mouse
This file controls all the mouse actions used in Pekwm. For a full list of Pekwm’s actions, see the documentation.

Pekwm is set up by default to focus windows when the mouse moves over them (as opposed to the ‘click to focus’ style). If you’d like to change this, look for the following lines in the file and do what they say (there are quite a few of the first, but only one occurrence of the second):

# Remove the following line if you want to use click to focus.
# Uncomment the following line if windows should raise when clicked.

For some ideas of what you can do with the Mouse and Keys file, have a look here.

Autoproperties
If you’d like certain applications to open on certain workspaces, have a certain title, skip the (window) menus, or be automatically tabbed together, you can specify all that here. The syntax is a little confusing at first, but it is well documented in the documentation and the default autoproperties file contains plenty of examples.

For example, to have Opera start maximized and without titlebar, you would use the following setting:

Property = "^opera,^Opera" {
 	ApplyOn = "Start New"
 	Border = "True"; Titlebar = "False"
	MaximizedHorizontal = "True"; MaximizedVertical = "True"
}

Start
This file is used to start applications when Pekwm is started. If you’d like to display a wallpaper or launch a panel whenever Pekwm is started, you can add entries for these things here. Note, though, that these applications are run every time Pekwm is started — including when you run ‘Restart’ in the root menu. The commands are executed only after Pekwm is started.

To add an application, use the following structure:

nameofapplication &

The & at the end is crucial, or anything after it won’t be run. To give you an idea of what this file could look like, here is an example:

# Auto-mounting drives 
gnome-volume-manager & 
# To set the background image
hsetroot -tile "/home/urukrama/Images/Desktops/Abandoned.jpg" &
fbpanel &
conky &
# To have visual feedback when changing the volume
osdsh & 
(sleep 1 && osdctl -m 1) &

Before you can use this file, you will have to make it executable with the following command:

chmod +x ~/.pekwm/start

Vars
Finally, the vars file contains variables that are applied throughout Pekwm. The default entry should be clear enough:

$TERM="xterm -fn fixed +sb -bg white -fg black"

Whenever the variable $TERM is used in any of Pekwm’s configuration files, the command xterm -fn fixed +sb -bg white -fg black will be run.

6. Themes

Unlike some other window managers, Pekwm themes govern all visual aspects: window headers and borders, menus, the harbour, fonts, as well as the position and functions of window buttons (like close, iconify, etc.).

Themes are installed in ~/.pekwm/themes or /usr/local/share/pewkm/themes (/usr/share/pekwm/themes if you have changed the default installation directory). To install a theme, unpack the theme archive, and copy the folder that contains the ‘theme’ file and possibly image files to the above mentioned folders. The name of the theme folder is the name that will appear in the menu. You can change the theme also manually by editing the Pekwm config file (in the first section ‘Files’).

You can download pekwm themes from Box-look. The theme settings have changed in more recent versions of Pekwm, so themes written for older versions are most likely unusable. You’ll be able to tell straight away whether a theme is broken or not. :-)

7. Conclusion

Since Pekwm is just a window manager, it doesn’t control the desktop, provide ways of changing Gtk settings such as themes, icons or fonts, manage the (un)mounting of devices, etc. Solutions to these are the same in Pekwm as in Fluxbox, Openbox or Icewm. If you need help with these, have a look at my Openbox guide, which discusses these at length.

Like Fluxbox and Openbox, Pekwm is small and light, but highly configurable. Explore its many potentials and find a setup that works for you.

For additional support of Pekwm read the documentation, join the mailing list, or enter #pekwm at irc.freenode.net.

About a year ago I retired most of my computers, and am now left with only two: Loka, my old desktop (now with a new 23″ screen), and Savitar, a Thinkpad X41 I bought about 18 months ago.

Both computers run Debian Testing. My main desktop environments and window managers on Loka have been Xfce with Openbox and WindowMaker, which I rediscovered this year. On Savitar, I used only Openbox and Awesome.

Loka

Xfce 4.6 with Openbox, using the Alghattas Openbox and Gtk theme, and the Elementary icons. I don’t remember where I found the wallpaper.

Xfce 4.6 with Openbox, using the Alghattas Openbox and Gtk theme, the Elementary icons, and this wallpaper.

Xfce 4.8 with Openbox, using the Erthe Openbox and Gtk theme, the AnyColorYouLike icons, and part of this image as wallpaper.

Xfce 4.8 with Openbox, using the Erthe Openbox and Gtk theme, and the AnyColorYouLike icons.

WindowMaker, with the ShikiBlack WindowMaker theme, the Shiki-JetBlack Gtk theme, and the Moblin icons. I don’t remember where I found the wallpaper.

Savitar

Awesome, with the Children of the Earth Awesome theme, Gtk theme, and icons, and Caspar David Friedrich’s Monk am See.

Openbox with the Children of the Earth Openbox theme.

I had written this a year ago, but somehow forgot to post it. But here are my screenshots from two years ago.

As I’ve been doing for a few years now, I am posting screenshots of my desktops of the past year, to amuse you (nearly everyone likes to look at screenshots), to document my changing aesthetics, and to capture my mood of the year as reflected in these images.

Below are the screenshots of the computers I’ve used in the past year. Aryaman is a Thinkpad 240 I bought on ebay for ¬£10. I used it particularly when travelling, or when working in a library. I no longer use Mitra (my 11 year old Dell Inspiron 2500) and Yantra (my 10 year old Compaq Presario), but recently gave them away to others who found some good use for them. Loka is my old desktop.

Aryaman


Musca 0.9.24

Loka

Openbox 3.4.10 in Xfce 4.6, with the Fearless Openbox theme, the Umbra Gtk theme, and the Iris icon theme.

Pekwm 0.1.11, with the Elegance Pekwm and Gtk theme, and the Iris icon theme.

Pekwm 0.1.12, with an updated Groove Pekwm and Gtk theme, and the nuoveXT-1.7 icon theme.

Pekwm 0.1.12, with the Groove Pekwm and Gtk theme. The icons are from the Any Colour You Like icon theme.

Pekwm 0.1.12, with the Groove Pekwm and Gtk theme. The wallpaper is home made.

Openbox 3.4.10, with the Brume Openbox and Gtk theme.

Since version 4.6, Xfce uses a settings editor, similar to Gnome’s gconf. You can edit the settings in xfconf from the command-line with its command-line utility xfconf-query. This is handy if you want to control certain aspects of Xfce through Openbox’ keybindings. On Loka, my desktop computer, I use Openbox as the window manager in Xfce, and use the xfce4-panel, which is set to be always visible. Occasionally, however, I want to hide the panel, and thanks to xfconf-query I can do that with a simple keybinding.

Here is what I use in the keyboard section of my rc.xml:

<keybind key="W-o">
<!--Autohide xfce4-panel-->
      <keybind key="h">
        <action name="Execute">
          <execute>xfconf-query -c xfce4-panel -p /panels/panel-0/autohide -s true</execute>
        </action>
      </keybind>
      <keybind key="S-h">
        <action name="Execute">
          <execute>xfconf-query -c xfce4-panel -p /panels/panel-0/autohide -s false</execute>
        </action>
      </keybind>
   </keybind>

This makes the Win+o+h keychain (auto)hide the xfce4-panel and Win+o+Shift+h make the panel visible again. (In my configuration, W-o starts the keychain for all Openbox and DE related keybindings)

Note that if you run more than one xfce4-panel, this keybinding will only hide the first panel (panel-0). If you want to hide a different panel, change /panels/panel-0/ to the appropriate value (/panel/panel-1/ for example). You can find out the panel number in the “Panel preferences” dialog (where “Panel 1″ will be named “panel-0″ in xfconf, “Panel 2″ will be “panel-1″, and so on), or you can check it in xfce4-settings-editor.

Follow

Get every new post delivered to your Inbox.

Join 80 other followers