Skip to content
/ DoteWM Public

A framework for writing window managers in familiar HTML, JS, and CSS.

License

Notifications You must be signed in to change notification settings

FoxMoss/DoteWM

Repository files navigation

A framework for writing window managers in familiar HTML, JS, and CSS.

A project.

Demos

Windows 98 styled, written in dreamland

github.com/FoxMoss/dote-dreamland-win95-example

This is the one I actually developed on and will have the least amount of bugs. dreamland.js is a great framework, if you're new take a look at the docs.

Windows XP styled, written in React

github.com/FoxMoss/dote-react-xp-example

A port of the Win 98 one to React and XP.css, a bit more rough.

DVD Logo Window Manager, written in vanilla js

github.com/FoxMoss/dote-vanilla-dvd-example

The most rough of the bunch, completely unusable. Many hours will be wasted waiting for your terminal to hit the corner.

Install

On Arch

We are on the AUR under dote-wm. So install with your favorite AUR helper.

yay -S dote-wm

On Debian

Check releases! I'll try to provide up to date .deb files.

On Other Distros

You'll have to build from source, it wont take too long.

The dependencies on arch are as follows and will need to be renamed to the ecosystem of your choice.

gcc-libs
libx11
libxext
libxcomposite
libxfixes
libxi
mesa
glew
nanomsg
protobuf
abseil-cpp
gtk3
nspr
nss
alsa-lib
nlohmann-json
cmake
git

Compile commands are standard CMake affair:

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j3

Usage

Any files placed inside ~/.config/dote/ will be served with index.html being loaded first. Hot reloading is best effort, sometimes a change will need a full restart.

Testing

I would recommend developing in Xephyr as changes can occasionally crash your window manager.

Xephyr :1 -resizeable -no-host-grab

# in another terminal
DISPLAY=:1 dotewm

Daily Driving

Set your ~/.xinitrc to the following:

exec dotewm

Or consult your login manager on usage.

Using CEF arguments

CEF (Chromium Embedded Framework) is used to render the HTML/CSS/JS. CEF can take in command line arguments to control certain behaviors. Due to the way Dote launches CEF, these arguments cannot be specified directly on the command line when launching Dote. Instead, you can set these arguments in the "CEF_ARGS" environment variable before starting Dote. For example, to enable remote debugging on port 9222, you would do the following in your terminal:

export CEF_ARGS="--remote-debugging-port=9222"
dotewm

Once enabled to remotely debug you can access chrome://inspect.

About

A framework for writing window managers in familiar HTML, JS, and CSS.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •