Skip to content

starbaser/shine

Repository files navigation

shine ⬘

Discord

Join the Discord for questions, sharing setups, and contributing to development.

shine orchestrates kitty panels as Wayland layer shell surfaces, leaning on kitty's client connection to the wayland compositor to offer a configuration based workflow for reproducible and sharable desktop shells. Each kitten panel is driven by a dedicated PTY managed by the integrated multiplexer prismctl, which also serves as the control plane for the terminal applications—called prisms—running within. shine is built around the Charm ecosystem (Bubble Tea, Lip Gloss, Bubbles), but prismctl itself is process-agnostic: anything that speaks PTY works. The prism just defines what to run and where to put it; the process inside can be Go, Rust, Python, or a shell script.

Usage (WIP)

shine start    # Start the service
shine status   # Check status
shine stop     # Stop

Panels are configured in ~/.config/shine/shine.toml:

[prisms.clock]
path = "shine-clock"
origin = "top-right"
width = "200px" # todo: percentage units, other units?
height = "60px"
enabled = true

Overview

                      ┌─────────────────┐
                      │      shine      │ <- $ shine start/stop/status
                      └────────┬────────┘
                              ↓│↑ JSON-RPC 2.0 ⇆
┌──────────────────────────────┴──────────────────────┐
│  shined                                             │
│  ├─ Loads ~/.config/shine/shine.toml                │
│  │  └─ Discovers prism.toml defs in prisms/         │
│  ├─ Manages prism lifecycle                         │
│  └─ Launches prisms via Kitty remote control API    │
└──────────────────────┬──────────────────────────────┘
    unix:@shine.sock ⇆ │ ⇆ unix:@mykitty
                       │ kitten @ launch --type=os-panel prismctl {instance}
              ┌────────┴────────┐
              │      kitty      │ <- wl_surface
              └────────┬────────┘
                      ↓│↑ stdio
              ┌────────┴────────┐
 /dev/ptmx -> │      pty_M      │
              └────────┬────────┘
                      ↓│↑
              ┌────────┴────────┐     ┌──────────────┐
/dev/pts/n -> │      pty_S      ├─────┤   prismctl   │ <- prism-{instance}.sock
              └─────────────────┘     └─┬────┬─────┬─┘
                                 ┌──────┘    │     └─────┐
                            ┌────┴─────┐┌────┴─────┐┌────┴─────┐
                            │   PTY1   ││   PTY2   ││  *PTY3   │ <- (* = foreground)
                            └────┬─────┘└────┬─────┘└────┬─────┘
                            ┌────┴─────┐┌────┴─────┐┌────┴─────┐
                            │  clock   ││  wabar   ││   app3   │ <- prisms/bin/
                            └──────────┘└──────────┘└──────────┘

About

TUI Quickshell (WIP)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages