Skip to content

SaintRyoh/rabbithole

Repository files navigation

** Regession Warning ** Apologies, code is not currently stable. More quality control will be soon introduced into master branch. if you happen to run the code, and it doesn't work, please try again in a few weeks. For more up to date development information please join the discord below.

Rabbithole - A Window Management Solution for Laptops with a Changing Number of Displays

Rabbithole is a window manager built on top of the robust Awesome WM (AWM) framework. It's primary purpose is keep your windows organized on your laptop whenever you connect or disconnect an external display. If you've ever disconnected a display from your laptop and had to reorganize your workspace again before resuming work, then this solution will be for you.

Diagram of where the window manager fits into the linux display stack

For more information about rabbithole please see the wiki.

Screenshots and Demonstrations

Video Demonstrations

Features

  • Dynamic Display Management: Disconnect and reconnect screens on-the-fly, without interrupting your flow. Switch workspaces from your multi-monitor setup to a single monitor setup seamlessly. Click the image link below to see a short YouTube demonstration.

  • Streamlined Navigation: Choose between fully keyboard-driven or mouse-driven navigation. Switching between applications, workspaces, and displays is a breeze with our intuitive controls.

  • Aesthetically Pleasing Experience: A polished experience that feels more like a Desktop Environment (DE) than a Window Manager (WM). We believe aesthetics matter, even outside full desktop environments.

  • Personalization: A neat and centralized settings file that controls everything from theme, to keybindings, to default programs.

  • Workspaces: Different workspaces or "Activities" for different projects. Think of this as a second dimension on top of "tags", or virtual desktops. Separate your workspaces, projects, and flows into different virtual spaces while maintaining global access to applications you need across all workspaces—Email, Discord, Signal, always accessible.

  • Quick Program Launch: Pre-configured rofi lets you launch programs or switch windows/workspaces at lightning speed with its fuzzy search algorithm.

Installation Options

  • LXQT based implementation (Recommended)
  • XFCE base implementation (Coming soon...)
  • Installation Script
  • Standalone AUR (advanced/experimental)

Usage

** Several keybindings start with Windows (mod4 key) **

i3 users will notice the keybindings are very familiar. Non-i3 users, the controls are as intuitive as possible. If you don't like the controls, let us know, and we can vote on better defaults. We are open to suggestions!

  • Win + h to see Rabbithole's help and keybindings page.
  • Win + d will open the program launcher.
  • Win + Tab will open your window/task switcher.
  • Win + f will fullscreen your workspace switcher.
  • Win + q will kill the focused app.

Mouse

  • Left click and hold on client icons in the tasklist to drag and drop clients from one tag to another
  • Right-click tasks to move them between local or global tags and workspaces.
  • Middle click tasks/clients to kill them
  • Ctrl + Left-click to view multiple tags (virtual desktops) on a single screen
  • Win + Right-click on tags to delete, renamme, or move to a different workspace

Configuring Rabbithole

Rabbithole's configuration file is located in ~/.config/awesome/settings.lua. When you want to change anything about Rabbithole, this is the place you go. (Tutorial for settings.lua coming soon, as well as a GUI for it.) We are developing a graphical settings manager for ease of use.

Community Support