Skip to content

xarcdotdev/hyprorbit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

127 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Logo

hyprorbit v0.1.2

Lightweight workspace orchestration for Hyprland power users.

hyprorbit is a stateful daemon + client system for Hyprland workspace management, written in Go.


Donate Β· Report Bug Β· Request Feature

Contributors Go Stargazers Issues License

What is hyprorbit?

Switching projects in Hyprland can break your layout - windows scatter and workspace hotkeys change meaning. hyprorbit introduces orbits - mirrored workspace sets with identical keybindings. Switch between work, personal, or debug modes instantly while keeping muscle memory intact.

Core idea:

  • Each app β†’ fixed workspace
  • Each workspace β†’ consistent hotkey
  • Some apps are global, others need an instance per-context
hyprorbit module jump code   # jump to your code workspace  
hyprorbit module focus comm  # focus or launch your comm app  
hyprorbit orbit next         # switch orbit 

Key Features

  • Orbit contexts - separate sets of workspaces for different projects
  • Stable hotkeys - same workspace-keybindings across all orbits
  • Focus-or-launch - focus windows in current orbit instead of launching
  • Very low latency via persistent daemon

Quickstart

1. Prerequisites

2. Install

# Clone and build
git clone https://github.com/xarcdotdev/hyprorbit.git
cd hyprorbit
make

# Install to PATH (recommended)
sudo cp hyprorbit hyprorbitd /usr/local/bin/

3. Start Daemon

# Recommended: via Hyprland Config (order is important here)
exec-once = hyprorbitd # start daemon
exec-once = hyprorbit init --autostart # for workspace initialization

# Or manually for testing
./hyprorbitd

# Or with custom config
./hyprorbitd --config ~/.config/hyprorbit/config.yaml

4. Configure Hyprland Keybinds

Add to your ~/.config/hypr/hyprland.conf:

β†’ Example Hyprland Keybindings

# Quick workspace jumping (stable across orbits)
bind = SUPER, 1, exec, hyprorbit module jump code
bind = SUPER, 2, exec, hyprorbit module focus comm
bind = SUPER, 3, exec, hyprorbit module focus gfx

# Orbit switching
bind = SUPER, comma, exec, hyprorbit orbit prev
bind = SUPER, period, exec, hyprorbit orbit next
bind = SUPER ALT, 1, exec, hyprorbit orbit set alpha
bind = SUPER ALT, 2, exec, hyprorbit orbit set beta

# Focus Applications
bind = SUPER, C, exec, hyprorbit module focus coding
bind = SUPER, E, exec, hyprorbit module focus email

# Create temporary workspace inside of orbit & move focused window there
bind = SUPER, N, exec, hyprorbit window move current module:create

# Move all windows on current workspace to specific module in another orbit
bind = SUPER ALT, 1, exec hyporbit window move workspace orbit:alpha/module:code

# Move all windows (globally) to first module workspace of current orbit
bind = SUPER ALT CTRL, M, exec hyprorbit window move all module:index:1

See hyprorbit --help for full options.

(back to top)

Usage

Core Concepts

Orbits: Independent workspace contexts (e.g., alpha, beta, gamma)

  • Separate environments for different projects/contexts
  • Default labels: Ξ±, Ξ², Ξ³
  • Each orbit maintains its own window instances

Modules: Workspace categories bound to consistent hotkeys (e.g., code, comm, gfx)

  • SUPER+1 β†’ "code" module in whichever orbit you're in
  • Generate orbit-specific workspaces: code-alpha, comm-beta, etc.
  • Windows bind to modules via pattern matching

Commands

β†’ Full Command Reference

Command Description
hyprorbit orbit get Show current active orbit
hyprorbit orbit set <name> Switch to specific orbit
hyprorbit orbit next/prev Cycle through configured orbits
hyprorbit module focus <name> Smart focus-or-launch for module
hyprorbit module jump <name> Simple workspace switching
hyprorbit window move <window> <target> Move/focus windows across modules and orbits

Configuration

File Location

  • Default: ~/.config/hyprorbit/config.yaml
  • Override: --config <path> flag
  • Environment: HYPR_ORBITS_SOCKET for custom socket path

Configuration Schema

β†’ Config Schema

Waybar

β†’ Waybar Setup

Waybar example:

~/.config/waybar/config.jsonc

"custom/hyprorbit#orbit": {
  "format": "{text}-{alt}",
  "return-type": "json",
  "exec": "hyprorbit module watch --waybar --waybar-config ~/.config/hyprorbit/waybar.yaml",
  "restart-interval": 0,
  "escape": true,
  "max-length": 20,
  "on-click": "hyprorbit orbit next",
  "on-click-right": "hyprorbit orbit prev",
  "tooltip": true
}

~/.config/hyprorbit/waybar.yaml

module_watch:
  text: ["module", "workspace"]
  tooltip: ["orbit_label", "workspace"]
  alt: ["workspace"]
  class:
    sources: ["module", "orbit"]

(back to top)

Roadmap

Current Status

  • βœ… Initial Configuration system
  • βœ… Orbit management
  • βœ… Module focus/jump commands
  • βœ… Window matching system
  • βœ… Shell Completion Script
  • βœ… Waybar/status support
  • βœ… Multi Monitor Support
  • βœ… Client-server architecture (IPC)
  • βœ… Module seeding (populate workspace with multiple apps)
  • βœ… Support for Hyprland tag for adressing windows
  • βœ… Global window targeting with --global flag for cross-orbit window operations

Planned Features

  • Add sane defaults for generated config (multiple browsers, email clients IDEs etc.)
  • Add config parameter for assigning workspaces/modules to monitors
  • Make Orbit-Alignment across monitors optional (Have independent orbits on each monitor)
  • Add window destroy command for orbit/workspace based cleanup
  • Configurable notifications

Contributing

Issues and PRs welcome!

Development

# Clone repository
git clone https://github.com/xarcdotdev/hyprorbit.git
cd hyprorbit

# Build both binaries
make

# Run tests
make test

License

This project is licensed under the MIT License. See LICENSE for details.

(back to top)

About

πŸͺ A fast, lightweight, hyprland workspace manager based on contexts for hyprland power users

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors