Skip to content
danilrwxPublic

About

A whole desktop shell for Hyprland in one Rust binary: bar, panels, launcher, notifications, lock screen and your apps' colours

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

ostrov

The desktop Hyprland was missing. One install, and it is all there.

The bar, the control centre, the launcher, notifications, the lock screen, the clipboard, the wallpaper: ostrov is all of it in one Rust binary, made to look and feel like one thing. No dozen tools to glue together, no config to write before it works.

The bar and the control centre

The control centre and the calendar opening, a menu unfolding, the Appearance page

Why ostrov

  • It just works. Start it and the desktop is there: Wi-Fi, Bluetooth, sound, brightness, battery, notifications, a lock screen. A welcome sets the look in a minute. No file to edit.
  • Yours to arrange. The control centre and the calendar are grids of widgets you drag, resize and add from a gallery, like on a Mac. The bar too: drag its blocks where you want them.
  • Beautiful out of the box. Blur, smooth motion, five themes each after dark and by day, any accent colour, all set from its own Appearance page.
  • The whole desktop in its look. GTK apps and file managers, Chrome, your terminal, tmux, Neovim, k9s, Discord and more follow its theme and switch with it, dark or light; more from a catalogue, or your own in a few lines.
  • Light. Native GTK 4 and Rust, one process, no web views.
  • Grows with you. Widgets in a few lines of KDL, plugins in any language, installed by name from a catalogue: screen recording, the night light, CalDAV calendars, removable drives, system updates.
The calendar panel: the weather, the player, notifications, the month and what is coming up Editing the control centre: widgets with their handles, the gallery under them
The calendar, the weather, the player Arrange it your way
The control centre by day, GitHub's Light The Appearance page: themes, their dark and light sides, accents
By day Themes, dark or light, any accent

The launcher in the bar

One app instead of nine

What you would glue together ostrov
waybar the bar
rofi, wofi, fuzzel the launcher, with a calculator, emoji, files and web search
swaync, mako, swayosd notifications, Do Not Disturb, the volume and brightness OSD
nm-applet, blueman, pavucontrol the control centre: Wi-Fi, Bluetooth, sound per app
hyprlock, hypridle the lock screen and idle
cliphist the clipboard's history, pictures too
hyprpaper, swww the wallpaper
grim, slurp screenshots
hyprpolkitagent, ssh-askpass password questions in one dialog

One look, one config, one place to change it. And the apps you keep take that look too: ostrov apps connects alacritty, kitty, foot, ghostty, WezTerm, tmux, Neovim, Helix, btop, k9s, fzf, zathura, Discord, Telegram and Hyprland's borders, installs rofi and qutebrowser from its catalogue, and takes your own (docs/apps.md).

Install

1. Get it. A package from the latest release: .deb for Ubuntu 26.04+ and Debian sid, .rpm for Fedora 43+, .pkg.tar.zst for Arch, the official plugins in each:

sudo apt install ./ostrov_*.deb        # or: sudo dnf install ./ostrov-*.rpm, sudo pacman -U ./ostrov-*.pkg.tar.zst
mkdir -p ~/.local/state/ostrov && touch ~/.local/state/ostrov/hyprland.conf

Or build it (Rust 1.93+, GTK 4, gtk4-layer-shell 1.2+):

# Arch:   sudo pacman -S rust gtk4 gtk4-layer-shell pam pkgconf
# Fedora: sudo dnf install cargo gtk4-devel gtk4-layer-shell-devel pam-devel wayland-devel
# Debian/Ubuntu: sudo apt install cargo libgtk-4-dev libgtk4-layer-shell-dev libpam0g-dev libwayland-dev pkg-config
cargo install --locked --git https://github.com/danilrwx/ostrov ostrov
mkdir -p ~/.local/state/ostrov && touch ~/.local/state/ostrov/hyprland.conf

2. Start it from ~/.config/hypr/hyprland.conf (Hyprland 0.53+):

exec-once = ostrov
source = ~/.local/state/ostrov/hyprland.conf

3. Log in again. That's it: the welcome takes it from there, and ostrov doctor says if anything is missing.

Nix, building the packages yourself, and the details: docs/install.md.

Keys

Super+D the launcher: apps, calculator, emoji, files, web search
Super+X the control centre
Super+C the calendar
Super+Shift+V the clipboard's history
Print a screenshot
Super+Shift+X lock

Bound only where free, never over yours.

Make it yours

Everything is in the UI: Edit in the control centre, Settings behind its gear, Appearance behind its palette. The rest of the desktop follows its look: GTK apps and file managers, Telegram, Chrome, your terminal (themes). And when you want more:

A widget in a few lines. Drop a file in ~/.config/ostrov/widgets/, and it is in the gallery:

widget "vpn" name="VPN" icon="network-vpn-symbolic" {
    poll "st" every="5s" exec="myvpn status --json"
    toggle icon="network-vpn-symbolic" title="VPN" sub="{st.profile}" on="{st.on}" {
        click exec="myvpn toggle"
    }
}

Everything from the command line, for your scripts and binds, tab-completed in zsh, bash and fish:

ostrov wifi connect HomeNet
ostrov brightness 40
ostrov audio mic-mute
ostrov toast "Build finished" "all tests green"
ostrov plugin night toggle

Plugins in any language. A program speaking JSON lines; with the Python SDK a toggle is this much:

from ostrov_plugin import Plugin

class Coffee(Plugin):
    on = False

    def render(self, widget):
        return {"type": "toggle", "id": "t", "icon": "face-smile-symbolic", "title": "Coffee", "on": self.on}

    def on_event(self, widget, node, event, value):
        self.on = value == "true"
        self.kick()

Coffee().main()

With the SDK's file and a short manifest.toml beside it, ostrov plugin install ./coffee and it is in the gallery. The official ones install by name: ostrov plugin catalogue. More: widgets, plugins, themes, every command in docs/modules.md. Something off? docs/troubleshooting.md.

In English and Русский.

Contributing

CONTRIBUTING.md · architecture · specs · changelog · MIT licensed

About

A whole desktop shell for Hyprland in one Rust binary: bar, panels, launcher, notifications, lock screen and your apps' colours

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

Generated from danilrwx/repo-template