• Stars
    star
    188
  • Rank 201,593 (Top 5 %)
  • Language
    JavaScript
  • License
    GNU General Publi...
  • Created over 4 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Simple and sane tiling window manager for Gnome Shell

Tidal Window Manager

Simple and sane window tiling window manager plugin for gnome shell, with gaps!

Features

Tidal is intended to be somewhat light on features and only handle the automatic placement of windows within the desktop. You may move windows to other desktops or monitors using the mouse (drag and drop) or gnome's built in hotkeys.

Currently only "spiral" tiling is supported, but i3/sway and binary splitting are options in development.

Spiral

Spiral Example

Installing

Clone this repo:

git clone --depth=1 \
    https://github.com/rustysec/tidalwm \
    ~/.local/share/gnome-shell/extensions/[email protected]

Logout from current session and login again to start a new session.

Activate with:

gnome-shell-extension-prefs

Some notes about compatibility:

  • gnome-terminal doesn't behave well, try using alternatives like kitty, alacritty, or termite
  • By default TidalWM is configured to use a number of shortcuts that conflict with Gnome defaults, these should be changed or disabled:
    • Super+L - Default for "lock the screen"
    • Super+H - Default for "hide current window"
    • Super+Left - Default for "view split on left"
    • Super+Right - Default for "view split on right"
    • Super+Up - Default for "maximize window"
    • Super+Down - Default for "un-maximize window"

Current Features

  • Automatic spiral tiling
  • Adjustable gaps
  • Smart gaps
  • Inactive window opacity settings
  • Active window border option
  • Customizable tiling exemption lists
  • Customizable hotkeys for floating and rotating order
  • Customizable initial split direction (horizontal vs vertical)
  • Increase/decrease split values via hotkeys
  • Direct window navigation (left, right, above, below) with hotkeys
  • Dynamic workspaces are now supported!

Configuration

TidalWM is not as fully featured as something like i3, sway, or bspwm, but there are some quality of life settings to make it more pleasant to use.

Gaps

Setting Description
Window Gaps The space between windows and the edge of the screen (pixels)
Smart Gaps Only apply gaps when more than one window is on the monitor

Windows

Setting Description
Inactive Window Opacity Sets opacity of any non-focused window, percentage 0-100
Highlight Active Window Draw a colored border around the focused window
Active Border Top Draw the border along the top of the window
Active Border Right Draw the border along the right side of the window
Active Border Bottom Draw the border along the bottom of the window
Active Border Left Draw the border along the left of the window
Border Width Width of the border to draw around window
Border Color Can be any valid CSS color, ex: #00ff00, rgba(100, 100, 100, 0.5)
Always Float List of wm classes to exempt from tiling, ex: gnome-calculator,gnome-tweaks

Tiling

Setting Description
Spiral Use spiral tiling
Binary Use binary tiling (not implemented)
i3/sway Use i3/sway tiling (not implemented)
Initial Split Direction Which way to perform the first split

Hotkeys

Setting Description
Float Window Floats the focused window, ex: <Ctrl><Alt>f
Rotate Windows Automatically rotate windows through the tiling order, ex: <Ctrl><Alt>r
Increase Horizontal Split Increase the width of the current window, ex: <Shift><Super>Right
Decrease Horizontal Split Decrease the width of the current window, ex: <Shift><Super>Left
Increase Vertical Split Increase the height of the current window, ex: <Shift><Super>Up
Decrease Vertical Split Decrease the height of the current window, ex: <Shift><Super><Alt>Down
Select Window To Above Focuses the window directly above the current, ex: <Super>k,<Super>Up
Select Window To Below Focuses the window directly below the current, ex: <Super>j,<Super>Down
Select Window To Left Focuses the window directly to the left of the current window, ex: <Super>h,<Super>Left
Select Window To Right Focuses the window directly to the right of the current, ex: <Super>l,<Super>Right

FAQ

Why is this a thing?

This question can probably be broken down into two subquestions:

Why not just use a tiling wm?

Well, I do. I love sway. I've used it as my daily driver for a couple of years and it's great. I'm 100% on board with wayland and use a mix of HiDPI and FHD monitors for my setup and Xorg just doesn't work well for me. However, there's some software (i'm looking at you zoom) that doesn't work (well) on wayland outside of gnome. Switching back and forth between two environments is a pain, so this became a fun little side project to solve my needs.

Why not use Pop-Shell/PaperWM/Gnomesome/Tiling-Gnome/Gtile/etc?

In short: I have used those, and I just wanted something slightly different. All of these projects are great and have pretty active developers and user bases. But they either lack features (like gaps or auto tiling) that I want, or they add too much to the gnome workflow that I don't need or care for.

What Tidal is not

Tidal is not a wholesale abandonment of the gnome ethos. The only behavior this extension overrides is the window placement. All workspace functionality is still the same.

This began strictly as a productivity hack for myself. I don't play games, and primarily live in the terminal and a browser. It is possible that Tidal is currently not very compatible with other work flows, so be cautioned! Open an issue and I'll try to resolve it if you find some rough edges.

How Tidal is tested

A lot of other gnome extensions tested have worked great in single monitor situations but fallen over pretty hard when using multi-monitor configurations. Tidal is tested using a FHD laptop panel along with external FHD and 4k monitors.

Where did this awesome name come from?

Honestly, I'm just terrible at naming things and for some reason this felt like a good fit.