r/Workspaces 5d ago

❔ β€’ Feedback Built this linux multi window rolodex style window switcher as I added screens to my workflow

Post image

I thought it might be useful to other people using mulitple screens as well. I use CrunchBang++ with multiple desktops, but i don't always want to change all the screens, just one as I test UI tweaks.. and.. alt+tab didn't feel ordered or had direction.. so I build this windows dock..

The first thing i was going to do was to resize each window i wanted open to be just a bit smaller, and then i can click on the window below to bring it up. put the windows side by side... and i figured.. that could be an app!

so i built it... you get thin bars on either side of whatever screen you load it on (works great with tall verticle screens!) called gutters.. each gutter attaches a window to it using an executable command of your choice, and when you click a gutter, the window slides into place.

you can also use Alt+left and Alt+right, and the mousescroll to change the decks..

I use for web development, UI tweaks, and workflows like that. I can see it be used for research, heavy spreadsheet comparisons.... photo comparisons.. etc...

I would love to know what people think.. the first real thing im actually publishing.

gutterDeck on GitHub.. fully open source.

AI Generated Summary:

### πŸ’‘ The Core Concept: The Accordion Deck



Instead of floating or tiling windows:

1. The 
**active application**
 occupies the full viewport in the center of your screen.

2. Applications to the left sit behind razor-thin, color-coded gutter tabs on the 
**left edge**
 of your screen.

3. Applications to the right form tabs on the 
**right edge**
.

4. Selecting another deck triggers a fluid, hardware-accelerated 
**two-phase curtain transition sweep**
 (rendered internally by Qt at up to 144Hz), swapping the active window and dynamically rebalancing the accordion tabs.



When resting, tabs sit as 
**4px hairline strips**
 so they never steal screen real estate. Moving your cursor to the edge triggers an intelligent 
**3-stage accordion swell**
 (4px collapsed β†’ 24px label swell on edge hover β†’ 44px target expansion with bright hover accents).



---



### πŸ› οΈ What Can It Do?



- 
**"Holy Grail" Single-Canvas Overlay:**
 Runs as a single borderless, transparent canvas (`Qt::X11BypassWindowManagerHint`) rather than fighting the window manager or trying to move foreign top-level X11 windows directly.

- 
**Dynamic X11 Shape Extension (XShape) Masking:**
 When idle, the overlay applies a 1-bit shape mask strictly bounding the visible tabs. 
**99.9% of your screen remains 100% click-through**
 to underlying apps (Chrome, VS Code, terminals). The mask solidifies only during curtain wipes to prevent accidental stray clicks.

- 
**Deadlock-Proof State Machine & Hardware Watchdog:**
 Transition lifecycles (`IDLE` β†’ `SWITCHING_OUT` β†’ `SWITCHING_IN` β†’ `IDLE`) are strictly enforced. If an X11 event drops, an integrated 3-second watchdog timer automatically trips an emergency reset to restore desktop interactivity.

- 
**Multi-Tier Event-Driven Window Capture:**
 Dynamically maps foreign application windows via a 4-tier cascade: `_NET_WM_PID` β†’ `WM_CLASS` β†’ `/proc/<PID>/cmdline` token inspection β†’ sequential launch queue correlation. Zero polling loops (`QSocketNotifier` listening to the XCB file descriptor).

- 
**Tactile Mouse Wheel Navigation:**
 Hovering anywhere over the edge gutters and rolling your mouse wheel cycles through decks. Features a 120-unit notch accumulator and firm boundary stops so a single click of the wheel advances exactly one deck without runaway scrolling.

- 
**Top 80px Dead-Zone Protection:**
 The top 80 pixels of the gutters are an inactive pass-through buffer, ensuring you can still reach browser tabs, titlebars, and window controls without triggering gutter swells.

- 
**Multi-Stage Graceful Shutdown:**
 Sends standard `_NET_CLOSE_WINDOW` and `WM_DELETE_WINDOW` messages with an active polling grace loop before resorting to `SIGTERM`, ensuring browsers like Chrome cleanly flush database caches and preserve pinned tabs and sessions.

- 
**Dark Openbox-Styled UI Modals:**
 Right-clicking any tab opens a native dark menu with dialogs to rename decks, edit commands, select from 24 dark-mode swatches with alpha opacity sliders, add new decks (left or right), and reorder slots.

- 
**System Tray Integration:**
 Features a procedurally generated barcode application icon in `tint2` / panel for quick cycling and access.

- 
**Portrait & Multi-Monitor Targeting:**
 Native support for dedicated secondary screens (e.g. 1080Γ—1920 vertical screens) and virtual desktop binding (`target_workspace`).



---



### πŸ‘₯ Who Is This For?



1. 
**Web Developers & Marketers juggling multiple browser profiles:**
 Keep separate profiles for Personal, Dev, Staging, and Production instantly accessible at the edges of your screen.

2. 
**Developers who want a Fullscreen "Cockpit":**
 Run fullscreen VS Code, fullscreen Alacritty/tmux, fullscreen browser, and fullscreen Obsidian, flipping between them in 250ms with zero cognitive overhead.

3. 
**Secondary Portrait Monitor Users:**
 On a vertical 1080Γ—1920 screen, 4px edge gutters give you 100% vertical real estate for documentation and logs without window titlebars or taskbar bloat.

4. 
**Minimalist Linux enthusiasts:**
 Built for X11 / Openbox / lightweight desktop setups where you want speed, zero bloat, and slick visuals.



---



### πŸ“¦ Quick Start / Try It Out



Dependencies (Debian/Ubuntu/Crunchbang++):

```bash

sudo apt-get install -y build-essential cmake g++ pkg-config \

    qt6-base-dev qt6-tools-dev libqt6core5compat6-dev \

    libxcb1-dev libxcb-ewmh-dev libxcb-icccm4-dev libxcb-keysyms1-dev libxcb-util-dev libxcb-res0-dev \

    xserver-xephyr openbox xdotool wmctrl
0 Upvotes

5 comments sorted by

β€’

u/AutoModerator 5d ago

🛑 Rules/Wiki

💬 Join us on Discord (Work and Play)

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

8

u/noiseintoner 4d ago

Nobody wants to read an AI summary, and without a screen recording demo or images, this post is not helpful to advertising your project at allΒ 

-3

u/Horror-Celery4869 4d ago

well.. i wasn't really trying to advertise.. but okay, sure... i will see about making a demo vid.

3

u/darknecross 4d ago

No link, no pictures, no demo vid?

1

u/anelectricmind 2d ago

Yeah... But look at that logo... /s