
A dynamic window manager for X11 written with Node.js - g4k
http://mixu.net/nwm/
======
sciurus
For some reason (Bad marketing? Bad documentation?) this fact doesn't get much
attention, but Gnome's desktop environment is written in JavaScript and styled
with CSS.

[https://wiki.gnome.org/Projects/GnomeShell/Development](https://wiki.gnome.org/Projects/GnomeShell/Development)

~~~
parent5446
Probably because it's only partially written in JavaScript and CSS. The link
you posted is for GNOME Shell, which is primarily the menu bar and user
interface components, which arguably make sense being written in CSS.

The actual window manager (which is what is implemented in this project) is
separate. It's called Mutter and is written in C, like many other window
managers.

~~~
mikekchar
I would _love_ to use Mutter for writing a window manager. The compositing
features it exposes is fantastic. My main problem is how many hooks (claws) it
has in GNOME. I haven't looked at it for a long time, but does anyone know how
realistic it would be to try to fork Mutter to work without GNOME (and all the
associated systemd, etc stuff)?

~~~
sciurus
I think the Linux Mint developers forked Mutter and used it as the base for
Cinnamon.

~~~
mikekchar
Unfortunately, they simply forked GNOME. It still uses forks for gnome-
settings-daemon, gnome-menus, etc, etc, etc. If I'm really serious about it, I
should probably just look at the code in mutter and reimplement it without
gnome.

------
iatanasov
Interesting . But for me so far nothing gets even close to the beauty and
symplicity of dwm ([http://dwm.suckless.org](http://dwm.suckless.org) )

~~~
minitech
I switched to xmonad ([http://xmonad.org/](http://xmonad.org/)), since you can
change the layout per workspace and it doesn't include a bar. (Sure, you can
turn it off in dwm, but where's the minimalism in that?)

~~~
pvdebbe
And Xmonad is the only one that gets workspaces right in a multidisplay
environment.

~~~
BuildTheRobots
Not used Xmonad, but I've been saying for years Enlightenment (e17 and up) is
the only window manager that lets use multiple virtual desktops (workspaces?)
and physical monitors in a sane way; namely I can swap workspaces on one
monitor without it effecting the other.

Gnome, KDE, LXDE, Mate, Cinnamon (and windows 10) all seem to assume that I'd
only every be doing the same thing on both monitors which just seems
inherently wrong.

~~~
pvdebbe
There are three philosophies to deal with multiple workspaces and multiple
monitors:

* one pool of WSs for all monitors (gnome,mate,win10)

* one _shared_ pool of WSs for each monitor (xmonad)

* one pool of WSs for each monitor (awesome,dwm,e17)

So what xmonad has is one set of workspaces and each monitor can pick one from
the shared pool! It's so great to have a WS dedicated for WWW on a side
monitor and when something important comes up, I can bring that WS to the main
monitor. Not easily done with the last idea.

~~~
BuildTheRobots
Oh, very clever; I didn't realise there were 3 distinct behaviours. Options
two and three seem to make sense; I find it hard to believe anyone actually
wants type 1. I'll definitely have to have a play with xmonad now :)

------
IsmaOlvey
The "Why?" section seems to answer the question "What?".

Would have expected either "Why you should use this", or "Why I/we wrote
this".

------
stonogo
There sure is a shitload of C in this node.js program.

------
microcolonel
Keep in mind that this is pretty old, and no longer compiles against recent
Node.

~~~
gkya
Last commit 11 months ago. Node is certainly a moving target. Running in fact.

------
dmos62
cwm[1] is by far the cleanest wm I've used. It reeducated me on what a wm
should be. Focus by hover, no bars of any kind, move and resize with shortcuts
instead of searching for the clickable area, extremely lightweight, good
straightforward configuration (opposite of openbox).

[1]
[https://www.google.com/search?q=cwm+window+manager](https://www.google.com/search?q=cwm+window+manager)

------
ctoshok
for me "Javascript" \+ "Window manager" will always mean pyro
([http://web.archive.org/web/20100626182331/http://pyrodesktop...](http://web.archive.org/web/20100626182331/http://pyrodesktop.org/Main_Page)).
so much wasted potential there :(

------
zyxley
So how long until somebody makes a kernel in Node?

~~~
kartD
The day 60GB of RAM is the norm. Just wait till embedded development shifts to
node.

~~~
tracker1
For the "bigger" embedded platforms (rpi and similar), node is pretty
serviceable... There have been other efforts to get JS based engines working
well too. It depends on how you define embedded.

~~~
kartD
I was a little angry with my browser so that was meant to be an insult.

JS (not node) is usable for embedded coding. An example would be
[http://www.espruino.com/](http://www.espruino.com/). Newer boards that come
on Kickstarter typically support JS since it's a great intro language for
coding especially for kids.

~~~
tracker1
It's funny, but I like JS a lot, still think that Python is probably a better
learning language... there's enough sharp edges in JS, that I don't think it's
great for starting with, other than it's accessible, and combined with a
browser, close to instant gratification.

~~~
endgame
Teaching JS to kids? Let's hook Dijkstra up to a dynamo, he'll be spinning in
his grave fast enough!

~~~
kartD
I think it's great in the sense that you can easily make apps, games etc.
which is good for getting kids interested quickly. Once their hooked, we can
push them to some of the "better" languages.

------
shawnz
OT, but does anyone have any suggestions as to a tiling window manager which
can effectively use the mouse?

~~~
swah
Windows 10 is pretty good IMO.

~~~
shawnz
That's what I'm using now, but the limitation of 4 grid cells is somewhat
inconvenient. Ideally I would like something just a bit more powerful.

