I build open-source tools for the Linux desktop, mostly around Wayland, Hyprland, and Omarchy. By day I'm a web developer working in .NET and JavaScript.
Most of my projects started as fixes for things that bugged me in my own workflow, so they tend to be local-first and keyboard-friendly. My main project atm is Wayscriber, a ZoomIt-style screen annotation tool for Linux and Wayland.
| ✍️ Wayscriber Real-time screen annotation for Linux and Wayland, inspired by ZoomIt. Draw over any app, zoom into details, keep persistent boards. Website & docs → | 🎥 Omarec Screen recording for Omarchy and Hyprland, built on GPU Screen Recorder. Adds session recovery, menus, and bar integration. |
| 🧭 Omarchy Nexus A keyboard-driven cockpit for Omarchy: media controls, system metrics, quick settings, clipboard history, and notes. | 🧹 dotnet-anti-slop Roslyn analyzers that catch real reliability and performance mistakes in C#, ASP.NET Core, and EF Core code. |
- 🖊️ Omascribe: a small C++23/Qt 6 overlay for drawing live annotations on the Omarchy and Hyprland desktop.
- 🖍️ SharpMarker: a .NET 11 and SkiaSharp screen annotation tool for Linux and Wayland, with drawing tools, boards, capture, zoom, and persistent sessions.
- ⌨️ Keyway: a small Rust/GTK4 keystroke visualizer for Wayland, handy for demos and screen recordings.
- 🗣️ SpeechToText: local push-to-talk transcription for Linux, with GPU acceleration and Wayland/X11 output.
- 🎬 Wayscriber Video Toolkit: the Wayland capture and FFmpeg pipeline I use to produce Wayscriber videos, posters, and contact sheets.
- 🔥 ff: fire-and-forget launchers that run commands as detached systemd jobs or in hidden Hyprland terminals.
- 🌳 Treeist: a Git worktree helper with a compact
wtCLI, interactive pickers, and cleanup workflows. - 🤖 Yummy: a Mattermost bridge for the
piandcodexcoding-agent CLIs, with resumable sessions and progress updates. - 🔐 QuickOTP: a cross-platform TOTP manager with a terminal UI, QR support, and 2FAS backup import/export. The popup is built for hotkey use: I summon it with Super+Shift+A, type a few letters, hit Enter, and the code is on my clipboard.
Plugins and add-ons I've built for the Omarchy bar and desktop.
At a glance
- ✍️ Wayscriber Deck: Wayscriber controls in the Omarchy bar, with live status, capture and presentation actions, plus quick access to boards and recent sessions.
- 📅 Calendar Agenda: upcoming-event countdowns and a two-week agenda from ICS or CalDAV export URLs.
- 📥 Dev Inbox: GitHub notifications, review requests, assigned issues, and failed CI in one bar badge.
- 🧼 Git Hygiene: a bar badge that finds dirty and unpushed repositories across your project roots.
- 🍅 Pomodoro: a restart-proof focus timer with work/break cycles and automatic Do Not Disturb.
- 🔴 Privacy Dots: dots in the bar that show which app is using your microphone or screen.
- ⏱️ Screen Time: local per-app focus tracking with a daily breakdown and a week-at-a-glance chart.
- 🩺 systemd Health: a quiet status chip that only appears when system or user units fail.
Windows & workspaces
- 🪟 Window Switcher: a keyboard-first Quickshell switcher with MRU ordering, search, and live window previews.
- 🔭 Window Overview: a Mission Control-style overview with live thumbnails and drag-to-move workspace organization.
- 📦 Minimizer Tray: shows how many windows you've stashed on the minimized workspace and brings them back.
- 🗂️ Scratchpad Deck: named drop-down scratchpads that spawn their app if it isn't running yet.
System control
- 💾 Drive Bay: mount, unmount, and check free space on removable drives through UDisks2.
- 🎮 Game Mode: a one-click bar toggle that strips compositor effects for gaming, then puts your exact Hyprland config back.
- 🖥️ Monitor Layout: drag-to-arrange displays with mode, scale, rotation, and VRR, remembered per monitor.
- 🛡️ Permission Center: a UI for Hyprland's permission rules that keeps them enforced across restarts.
- 🔒 VPN Manager: tunnel state, routing-leak visibility, and control of NetworkManager and systemd VPNs.
- 🖼️ Wallpaper Hub: a native wallpaper library with Wallhaven search, download, and Omarchy theme integration.
Automation & screencasting
- ⚡ Context Rules: automates your desktop based on live context like screen sharing, the focused app, time, and battery.
- ⌨️ Keycast: an on-screen keystroke HUD for screencasts, powered by Hyprland's event bus.
- Native where it matters. I reach for Rust, C++, QML, or .NET when a tool needs to feel fast and fit the platform.
- Local first. Private data and everyday workflows should stay on the machine whenever possible.
- Keyboard friendly. Fast paths for the things you do all day, without hiding how anything works.
- Built from real needs. Every tool here started as a fix for something that kept getting in my way.






