Skip to content

A window manager written in Nim (In Development)

License

Notifications You must be signed in to change notification settings

0xACE/nimdow

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nimdow

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).

Screenshots

Installation

Building from source

  1. Ensure you have nim and nimble installed. My preferred method is to use choosenim to install these.
  2. Clone this repo
  3. Execute nimble release from the package directory to create a release build (The built binary will be in ./bin/nimdow)
  4. Copy the default config (config.default.toml) to ${XDG_CONFIG_HOME}/nimdow/config.toml, OR to ${HOME}/.config/nimdow/config.toml. Nimdow will NOT run if you skip this step.

AUR

If you are on an Arch Linux based system, use nimdow-bin in the AUR to install a pre-built binary.

Command line arguments

Currently the only argument that may be provided is a config file path. This was added for testing purposes.

E.g. $ nimdow ./some-config.toml

If no argument is provided, we use the config file mentioned in the Building from source section.

Status Bar

The status bar displays:

  • The available tags on the top left
  • The focused window's title in the center
  • The status (set by the user) on the right

Setting the status

The status is the text read from the root window's name property, which can be set with xsetroot -name "My status". This is the exact same way dwm manages its status. I recommend reading their page about setting statuses.

Roadmap

Version 0.5

  • Multiple tags (single tag viewed at one time)
  • Fullscreen windows
  • Multihead support
  • User configuration file loaded from $XDG_CONFIG_HOME (or $HOME/.config)
  • Status bar integration
  • Floating window support
    • Move windows with super + left click
    • Resize windows with super + right click drag
  • Layouts:
    • Master/stack
  • Keybindings:
    • Close window
    • Toggle fullscreen
    • Navigate windows
    • Navigate tags
    • Move windows in stack
    • Move windows between tags

Version 1.0

  • TBA (partial list, still in discussion)
  • Layouts
    • Monocle
  • Keybindings:
    • Move window between monitors
    • Add/remove window per tag
    • View multiple tags
    • Assign single window to multiple tags
    • Swap tags between monitors
    • Reload Nimdow (to apply configuration changes)
    • Switch layout to master/stack
    • Switch layout to monocle

Testing locally (for development)

  1. Create a copy or symlink of the config file in $XDG_CONFIG_HOME/nimdow/config.toml
  2. Start up Xephyr: Xephyr -ac -screen 1920x1080 -br -reset -terminate 2> /dev/null :1 &
  3. Execute nimdow on the new display: DISPLAY=:1 ./nimdow

About

A window manager written in Nim (In Development)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Nim 99.5%
  • Shell 0.5%