A window manager written in Nim
NOTE: Nimdow is in Beta but is very usable. Please report any bugs you may find.
I am using this project to learn Nim, x11, and to replace my build of dwm (written in C).
Discord community: https://discord.gg/vPCumzeqqa
See the progress of development in the local Kanban Board
nim
(version 1.2.0 or higher) and nimble
installed. My preferred method is to use choosenim
to install these.nimble install
from the package directory to install dependenciesnimble release
from the package directory to create a release build (The built binary will be in ./bin/nimdow
)config.default.toml
) to ${XDG_CONFIG_HOME}/nimdow/config.toml
, OR to ${HOME}/.config/nimdow/config.toml
.If you are on an Arch Linux based system, use nimdow-bin
in the AUR to install a pre-built binary.
Default config is stored at /usr/share/nimdow/config.default.toml
If you are on Nixos, you can set services.xserver.windowManager.nimdow.enable=true;
to install and
enable nimdow in your login manager. (in nixos-unstable
or in stable from 2023-05 release).
Nimdow searches for a config file in 3 locations in this order:
${XDG_CONFIG_HOME}/nimdow/config.toml
${HOME}/.config/nimdow/config.toml
/usr/share/nimdow/config.default.toml
If no config file is found, Nimdow will not launch.
See the wiki for information about the specifics of the config file.
nimdow --config ./some-config.toml
nimdow -v
or nimdow --version
Nimdow controls can be executed via the cli client.
See the wiki page for a list of commands, or read the man page.
The status bar displays:
See the wiki page about statuses.
In short, there's a bug in the xft library most distros use.
This fork of xft has a fix for emojis and other font issues.
If using an Arch Linux based distro, there is libxft-bgra-git in the AUR.
There are multiple fixes, per the arch wiki.
Fix #1:
For jre7-openjdk or jre8-openjdk, append the line export _JAVA_AWT_WM_NONREPARENTING=1
in /etc/profile.d/jre.sh
.
Then, source the file /etc/profile.d/jre.sh
or log out and log back in.
Fix #2:
For last version of JDK append line export AWT_TOOLKIT=MToolkit
in ~/.xinitrc
before exec nimdow
.
Fix #3:
Try to use wmname with line wmname compiz
in your ~/.xinitrc
.
Fix #4:
For Oracle's JRE/JDK, use SetWMName.
However,
its effect may be canceled when also using XMonad.Hooks.EwmhDesktops.
In this case,
appending >> setWMName "LG3D"
to the LogHook may help.
The standard Java GUI toolkit has a hard-coded list of "non-reparenting" window managers. Nimdow is not (yet) included in this list.
See the 1.0 release project board
$XDG_CONFIG_HOME/nimdow/config.toml
Xephyr -ac -screen 1920x1080 -br -reset -terminate 2> /dev/null :1 &
DISPLAY=:1 ./nimdow