/rowm

Primary LanguageGoMIT LicenseMIT

rowm

rowm is a hybrid tiling/floating window manager, aiming to replicate the ergonamics of terminator terminal emulator, but applied to all windows.

A short video of what it looks like here.

Installation

While I use rowm in my day to day, there is no guarantee of stability so use at your own risk!

To install, you have two options:

  • If you have docker installed, you can run sudo ./docker-install.sh.
  • If you have go and go get installed, you can run sudo ./go-install.sh.

After installing, restart your computer (logging out may not be enough), and the option to use rowm as your window manager should show up as a setting in your login screen.

It's generally not wise to run random shell scripts with sudo but these should be pretty easy to inspect.

Default Configuration

All key combinations described here are easily editable in config.go. Mod4 is used a lot, which is commonly assigned to the Windows key.

Logging out

Press Mod4-Backspace

Builtin Commands

Some commands have builtin keyboard shortcuts, namely:

Mod4-t: x-terminal-emulator

Mod4-w: google-chrome

Mod4-p: XDG_CURRENT_DESKTOP=GNOME gnome-control-center

Mod4-o: xdg-open .

More commands can be added to the builtin commands in config.go.

Mod4-f brings up a dialog to run an arbitrary command.

Window controls

Mod4-up/left/right/down will move the window to anchor points around the screen, as well as keep moving them across other screens if they are available.

Mod4-d will close a frame.

Mod4-x will toogle a frame as expanded, making it the same size as its container.

Mod4-h will hide the container decorations.

Mod4-q will pop out a frame into its own container.

Alt-Tab/Alt-Shift-Tab works like you'd expect.

Mod-Shift-[0-9] assigns a goto hotkey to the selected frame, so that when you press the equivalent Mod4-[0-9] it will minimize/unminimize that window.

Mod4-Tab and Mod4-asciitilde will cycle the focus in the frames inside of a window.

If an internal video is being fullscreened, sometimes you may need to resize or move the window a little to have the internal video fill the screen.

Taskbar

The taskbar can be toggled with Mod4-s. Mod4-Shift-down will minimize the focused container to the taskbar. Mod4-Shift-left/right will scroll the taskbar if lots of windows are open.

The display time format can be changed in config.go, but things may be a bit funky if the time format does not have constant size.

Background image

Any photo named $USER/.config/rowm/bg.png will be used as a background image. You can change the path in config.go.

Splitting

To subdivide a window, press Mod4-e for a horizontal split or Mod4-r for a vertical split. A command window will pop up to take in a command to launch, but you can use the keyboard shortcuts to launch a builtin command, bypassing the command prompt.

To split for existing frames or containers:

Mod4-c selects a frame for yanking.

Mod4-Shift-c selects a container for yanking.

Mod4-v on a different frame will add the selection as a horizontal child. Mod4-b on a different frame will add the selection as a vertical child.

Volume

Can be controlled with mute button to mute, and volume up/down to raise/lower volume. If you do not have these buttons you can change the mapping in config.go

Brightness

If brightness controls are not working, check what folder exists in /sys/class/backlight/ and change the Backlight value in config.go to match.

Switching the scroll direction

Edit the following file /usr/share/X11/xorg.conf.d/40-libinput.conf. Find the section with the touchpad identifier and add the following line.

Section "InputClass"
        Identifier "libinput touchpad catchall"
        ...
        Option "NaturalScrolling" "True"
EndSection

You can also switch it for mice by changing the pointer catchall.

Monitor hotplugging

If you are planning on hotplugging monitors, it is recommended you install arandr and autorandr.

arandr is a graphical utility to help you configure your screens. Once you have them configured how you like, use autorandr --save <profile> to save the configuration and autorandr --default <profile> to make it default. Once this is done the monitor setup should stay sticky through disconnects and reconnects.

Logging

To tail the logs run journalctl -f /usr/lib/gdm3/gdm-x-session.