Skip to content

bdcdo/open-turkey

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Open Turkey

A command-line productivity blocker for Linux, backed by a systemd service.

Open Turkey is an open-source, Linux-native alternative to Cold Turkey: it blocks distracting websites and applications and keeps them blocked, even against your own attempts to undo it on impulse. Where Cold Turkey is paid and centered on Windows/macOS, Open Turkey is free, built in Go, and designed around the way Linux actually enforces policy.

It organizes blocking into blocks — named groups of:

  • Sites (domains, e.g. youtube.com)
  • Apps (process names, e.g. discord, telegram-desktop)

When you activate a block, a daemon continuously ensures the blocking layers stay applied.

How it works — 4 enforcement layers

Open Turkey doesn't rely on a single, easily-bypassed mechanism. Each active block is enforced on four independent layers, and a systemd daemon re-applies them every 5 seconds if anything is tampered with:

  1. /etc/hosts — resolves blocked domains to 0.0.0.0 (affects every program, not just browsers).
  2. Firewall (iptables) — blocks network connections to the blocked sites.
  3. Browser enterprise policies — managed URLBlocklist/WebsiteFilter policies for Firefox, Chromium, Google Chrome and Brave. The user cannot disable these from inside the browser, not even in private/incognito mode.
  4. Process kill — terminates blocked apps that are running (SIGKILL).

Because the hosts and firewall layers act below the browser, blocking works even for browsers installed via Snap or Flatpak (where the system-wide browser policy file may not be read).

Installation

Prerequisites:

  • Linux with systemd
  • iptables available
  • Go (to build), at /usr/local/go/bin or otherwise on your PATH

Recommended:

sudo ./install.sh

This:

  • compiles the binary (CGO_ENABLED=0, pure-Go SQLite via modernc.org/sqlite)
  • installs open-turkey (a wrapper) and open-turkey-bin (the real binary) into /usr/local/bin
  • adds a rule in /etc/sudoers.d/open-turkey so it runs without a password prompt
  • installs and starts the systemd service open-turkey.service
  • creates the database at /var/lib/open-turkey/open-turkey.db

The installed program is independent of the source directory — once installed, you can remove the project folder and it keeps working.

Concepts

  • Block: a set of sites/apps you want to block together.
  • Active: a block that is currently in effect (the system is enforcing it).
  • Lock (--lock): when enabled, prevents deactivation via stop. The only way to deactivate a locked block is unlock, which requires completing a typing challenge — deliberate friction to outlast an impulse.

Commands

1) Create and configure a block

open-turkey block create social-media
open-turkey block add-site social-media instagram.com x.com facebook.com
open-turkey block add-app  social-media discord telegram

Show details:

open-turkey block info social-media

List all blocks:

open-turkey block list

2) Activate / deactivate

Activate:

open-turkey start social-media

Activate with a lock:

open-turkey start social-media --lock

Show status:

open-turkey status

Deactivate (only if not locked):

open-turkey stop social-media

Unlock a locked block (this also deactivates it):

open-turkey unlock social-media

3) Editing a block's lists

Remove a domain from a block:

open-turkey block remove-site social-media instagram.com

Notes:

  • If the block is active, Open Turkey re-applies the layers so the change takes effect immediately.
  • If the block is active and locked, you cannot edit its sites/apps. Run open-turkey unlock <block> first (which deactivates it), make your changes, then activate again.

Remove an app (process) from a block:

open-turkey block remove-app social-media discord

Remove an entire block (must be inactive):

open-turkey block remove social-media

Service (daemon) and logs

The daemon is managed by systemd:

systemctl status open-turkey
systemctl restart open-turkey
journalctl -u open-turkey -f

Uninstall

sudo make uninstall

License

MIT — see LICENSE.

About

Open-source, Linux-native website & app blocker (Cold Turkey alternative). CLI + systemd, 4 enforcement layers.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors