OmaFocus
OmaFocus is a SelfControl-inspired Omarchy Quattro plugin: choose a duration, list distracting domains, and start a focus block from the right side of the Quickshell bar.
Once started, the root-owned omafocus.service keeps the block active until the recorded end time, including after an Omarchy-shell or system restart. It enables itself only for the active block and disables itself again when the timer expires. If you genuinely need an escape hatch, the active panel provides I know I’m weak, but stop, which immediately removes OmaFocus's rules and ends the timer.
Panel

Install from Omarchy Plugins
The marketplace installs the Quickshell code but deliberately does not run installers or privileged commands. Review the repository, then run the required local setup in a terminal:
omarchy plugin add https://github.com/jvanbaarsen/omafocus.git --enable
cd ~/.config/omarchy/plugins/jvb.omafocus
./install
./install installs the user command at ~/.local/bin/omafocus and asks for sudo only to install the root-owned systemd enforcement service. It does not download or execute third-party code.
Dependencies and permissions
- Omarchy Quattro / Quickshell
nftables,systemd,pkexec, andgetent(present on a standard Omarchy installation)sudoonly while installing or removing the root-owned helper
The panel starts and stops a block through pkexec. The privileged helper owns only /var/lib/omafocus, /run/omafocus, its omafocus.service, and its own inet omafocus nftables table. No focus block or firewall change occurs until you explicitly start or stop one.
Remove
Wait for any active focus block to end, then run:
cd ~/.config/omarchy/plugins/jvb.omafocus
./uninstall
omarchy plugin remove jvb.omafocus
The uninstaller refuses to run while a block is active. It removes the helper and service; omarchy plugin remove removes the plugin checkout.
On first opening the menu, OmaFocus creates an editable starter blocklist with Reddit, YouTube, X/Twitter, Instagram, TikTok, and Hacker News hostnames. It never overwrites an existing ~/.config/omafocus/blocklist.txt. Blocklists are limited to 256 hostnames and 16 KiB, so the panel and privileged helper always handle a bounded configuration.
How it blocks
The service resolves the configured domains to IPv4 addresses and applies an nftables output rule, refreshing the addresses every minute. It stores only the active timer and domains; it does not inspect or log web traffic.
This is deliberate friction, not a security boundary against the system owner. A VPN, encrypted DNS, direct IP address, or root access can evade a domain-level block. IPv6 is not included in this first release.
Security and privacy
OmaFocus is an unsandboxed community plugin. Read the source before installing it. It resolves the domains you choose and stores only the active timer plus blocklist in local OmaFocus state; it does not inspect, transmit, or log web traffic.
Development checks
bash -n install uninstall bin/omafocus bin/omafocus-root
qmllint BarWidget.qml FocusPanel.qml FocusService.qml
omarchy plugin validate .