jwm window manager

PackRat

Revisited jwm window manager the past few days. Wanted something with a bit more Windows-like user interface to set up my kids user account; and since there always seems to be an interest in wm's that are light on resources, I decided to post the results.

Version 2.1 is in the Sid repos; or you can get Version 2.2.2 from git - http://www.joewing.net/index.shtml

Besides being light on resources (up to 50% less than openbox on some systems, although I get nothing close to that), one thing I like about jwm is that it is self contained. Jwm has it's own panel (called the tray) that can contain a menu, pager, app launch buttons, taskbar, systemtray (called the dock <- poor choice of names there, imo), and the clock. The tray can be horizontal or vertical, and multiple trays can be configured by adding additional Tray entries to the $HOME/.jwmrc; or you can use jwm without a tray by completely removing the Tray section.

In addition to the systemtray, jwm also has the ability to swallow apps into the tray - the example in the Arch wiki is to swallow wicd-gtk --tray - but I haven't gotten it to work. Maybe because I pulled the current version from git.

The other nice thing about jwm is that it is still being developed by the original author, although there can be a lot of time between releases.

All configuration is done through the $HOME/.jwmrc file. This is file is in xml format like the openbox rc.xml file. In addition to the tray configuration, there are sections for autostarted apps, key bindings, and styles - http://www.joewing.net/projects/jwm/config.shtml ; Very easy to navigate and get the wm up and running to suit your needs. However, there are no gui apps to configure the .jwmrc file.

Jwm plays well with conky, not so much with compositing (on my system anyway). For the screenshot, I added a second panel with just a clock:



So, if you're in the market for a wm that uses a bit less resources than *box, but still want that panel, systemtray, etc ... take a look at jwm.
I am tired of talk that comes to nothing.
-- Chief Joseph

...the sun, the darkness, the winds are all listening to what we have to say.
-- Geronimo

VastOne

Very nice analysis and information regarding jwm PackRat...

Seems like an over all winner of a wm, what distros use it? 

I will give it a run and see if I can get it to look like VSIDO

Thanks for this!
VSIDO      VSIDO Change Blog    

    I dev VSIDO

VastOne

#2
Interesting that the SID version 2.1 is over 3+ years old... That is one hell of a gap from then to the git version
VSIDO      VSIDO Change Blog    

    I dev VSIDO

PackRat

#3
The author just got back into developing it this last year. If you, or anyone else, wants to give it a spin without installing, Puppy linux uses it as the default - so get the latest Puppy and keep it around as a rescue disk.

I think it is an option on antix and maybe one of the bbq; but it's so light, get the latest tarball from the site and compile it. There is a good example jwmrc in the tarball. Won't clog up the system with a lot of dependencies - most - if not all - are probably installed by default.

And I read the comparison of resource usage wrong. In a head-to-head comparison of just the window managers, jwm was using 50% less memory than openbox on a 64-bit system.
I am tired of talk that comes to nothing.
-- Chief Joseph

...the sun, the darkness, the winds are all listening to what we have to say.
-- Geronimo

PackRat

#4
Took a look at IceWm too; but not too thrilled with it. The panel is too retro, needs to be a bit of a gimp master to make it look decent. IceWm with tint2 isn't too bad though. For some odd reason, it regards conky and tint2 as an open window and gives you warning to "save the data" in the conky and tint2 clients before closing.

Some shots -

     

couple additional shots - icewm and fluxbox on vsido: conky, urxvtc, htop, xfce4-screenshooter -

   

jwm is installed on my desktop running slackel so the memory usage in that screen with htop isn't fully comparable.
I am tired of talk that comes to nothing.
-- Chief Joseph

...the sun, the darkness, the winds are all listening to what we have to say.
-- Geronimo

jeffreyC

Quote from: PackRat on March 17, 2014, 07:40:54 PM
Took a look at IceWm  For some odd reason, it regards conky and tint2 as an open window and gives you warning to "save the data" in the conky and tint2 clients before closing.

Pretty much why I gave up on IceWm
Having to deal with that every time I shut down was a PITA.

PackRat

#6
I discovered that it is a bug/issue with Icewm's internal logout command. I made a key binding and menu entry for the VSIDO exit script and there are no issues. You can also edit the:

#  Command to start logout
# LogoutCommand=""

to

#  Command to start logout
LogoutCommand="vsido-exit"


To work around the issue. You still get a transient window asking if you want to logout; answering "Yes" will bring up the familiar vsido logout window.

If I have some time today, I will probably do a quick write up for IceWm - if only to close the loop.
I am tired of talk that comes to nothing.
-- Chief Joseph

...the sun, the darkness, the winds are all listening to what we have to say.
-- Geronimo

ozitraveller

I thought this might be useful to those who want to build from source. ;)

Quote
First you'll need to make sure you have gcc and the necessary development headers installed.  On Debian, I think the following packages are necessary:

gcc libxpm-dev libxft-dev libxinerama-dev libxmu-dev libx11-dev libjpeg8-dev libfreetype6-dev libfontconfig1-dev libcairo2-dev libpng12-dev libxext-dev libxrender-dev

You may not need all of those libraries if you don't want all of the JWM features built in (support for JPEG images, for example).  Of course, without installing a fresh install of Debian, it's hard for me to be sure that list is complete.

Extract the tarball: tar -xJf jwm-2.2.2.tar.xz
Next "cd jwm-2.2.2" and run "./configure".  This should report which JWM features will be built in.  If some are missing, you should be able to add them by installing additional development libraries and re-running "./configure".  If you don't want some of them, re-run "configure" with "--disable-feature" where "feature" is what you want disabled ("--disable-jpeg", for example).

By default, JWM will be installed in /usr/local/bin.  If you want to change that, you can run configure with "--prefix=/usr", for example, to install JWM in "/usr".  There are lots of options to configure, you can see them all by running "./configure --help".

Once JWM is configured how you want it, you can build JWM by running "make".  Finally, assuming all went well, you can install JWM by running "make install" as root.

Now you should have a working copy of JWM installed.  Getting it to run at startup is dependent on which login manager you use (if you use one at all).  With my setup, I usually have a file "~/.xsession" which is executable ("chmod +x ~/.xsession").  In that file, you can do "exec /usr/local/bin/jwm" (assuming JWM is in /usr/local/bin").  Of course, I don't know if that works for all login managers.

You will also want to modify the JWM configuration to your liking.  If you don't already have one, "cp /usr/local/etc/system.jwmrc ~/.jwmrc", and modify ~/.jwmrc to point to the programs you want, etc.  I recommend running "jwm -p" after modifying the configuration to see if there are any errors.

- Joe

blaze

Quote from: PackRat on March 16, 2014, 10:13:11 PM
I think it is an option on antix and maybe one of the bbq

Yes there are a quite recent release with Jwm over at the bbq, it is called "Chicken Wings", very light and very nice.
blazingaway

ozitraveller

Quote from: PackRat on March 16, 2014, 09:30:37 PM
Revisited jwm window manager the past few days. Wanted something with a bit more Windows-like user interface to set up my kids user account; and since there always seems to be an interest in wm's that are light on resources, I decided to post the results.

Version 2.1 is in the Sid repos; or you can get Version 2.2.2 from git - http://www.joewing.net/index.shtml

Besides being light on resources (up to 50% less than openbox on some systems, although I get nothing close to that), one thing I like about jwm is that it is self contained. Jwm has it's own panel (called the tray) that can contain a menu, pager, app launch buttons, taskbar, systemtray (called the dock <- poor choice of names there, imo), and the clock. The tray can be horizontal or vertical, and multiple trays can be configured by adding additional Tray entries to the $HOME/.jwmrc; or you can use jwm without a tray by completely removing the Tray section.

In addition to the systemtray, jwm also has the ability to swallow apps into the tray - the example in the Arch wiki is to swallow wicd-gtk --tray - but I haven't gotten it to work. Maybe because I pulled the current version from git.

The other nice thing about jwm is that it is still being developed by the original author, although there can be a lot of time between releases.

All configuration is done through the $HOME/.jwmrc file. This is file is in xml format like the openbox rc.xml file. In addition to the tray configuration, there are sections for autostarted apps, key bindings, and styles - http://www.joewing.net/projects/jwm/config.shtml ; Very easy to navigate and get the wm up and running to suit your needs. However, there are no gui apps to configure the .jwmrc file.

Jwm plays well with conky, not so much with compositing (on my system anyway). For the screenshot, I added a second panel with just a clock:



So, if you're in the market for a wm that uses a bit less resources that *box, but still want that panel, systemtray, etc ... take a look at jwm.

I'm now running jwm from debian stable and I haven't gotten wicd to work properly in the tray. Everytime I restart jwm I get another icon in the tray.

PackRat

How are you starting it - from a startup file like .xinitrc or from the .jwmrc file?

If it's in the .jwmrc there are some subtle differences between StartupCommand and RestartCommand.

I could never get the jwm system tray to swallow wicd.
I am tired of talk that comes to nothing.
-- Chief Joseph

...the sun, the darkness, the winds are all listening to what we have to say.
-- Geronimo

ozitraveller

I'm using .jwmrc. I'm using lightdm atm while I'm testing, normally I would use .xsession and exec jwm from there.

I've had a google around and there seem to be a lot of people having the same problem with wicd.

PackRat

Hopefully the problem solves itself when/if you use it from .xsession like you normally do so jwm isn't controlling the wicd startup.
I am tired of talk that comes to nothing.
-- Chief Joseph

...the sun, the darkness, the winds are all listening to what we have to say.
-- Geronimo

ozitraveller

Unfortunately no change, still now working.

PackRat

#14
Sort of brain storming here since I'm not using wicd (no wirelesss on the VSIDO desktop). I wonder if you can call wicd --gtk from a script that will:

1. kill all instances of wicd --gtk
2. [re]start wicd --gtk

just need to know what the actual name of the process is - should be able to see it in htop; similar to what a lot of us do with conky. Something like -

#!/bin/sh

# will need to know actual name of process
pgrep wicd --gtk &>/dev/null; [ $? = 0 ] && killall wicd --gtk

(sleep 2s && wicd --gtk) &


then use it as a StartupCommand and RestartCommand in your .jwmrc

<StartupCommand>/home/<user>/bin/wicdjwm.sh</StartupCommand>
<RestartCommand>/home/<user>/bin/wicdjwm.sh</RestartCommand>


I think the wicd --gtk applet in the system tray is only for managing your connection(s); the actual network connection is made at boot time. So, stopping and restarting the tray applet shouldn't interrupt your wireless connection.

I am tired of talk that comes to nothing.
-- Chief Joseph

...the sun, the darkness, the winds are all listening to what we have to say.
-- Geronimo