Retro dial-up style internet connection manager for macOS menu bar
Project description
📵 56k Screech
Retro dial-up internet manager for the macOS menu bar — because connecting to the internet should be a deliberate act, not an automatic reflex.
What it does
56k Screech lives in the menu bar and actually controls your Mac's Wi-Fi. When the internet isn't turned on via DialUp, it simply doesn't work. No silent syncs, no background notifications, no cloud quietly refreshing without your knowledge.
And of course — connecting is accompanied by an authentic dial-up sound ritual. 📟
56k Screech is menu-bar-only: it never shows a Dock icon or a Cmd+Tab entry.
Features
| 📡 | Real Wi-Fi on/off (networksetup), reconciled every second against the actual radio state (catches manual toggles from the system menu too) |
| 🔊 | Dial-up handshake sound — bundled recording, with a ~12s procedurally generated fallback if it (or afplay) is unavailable |
| ⏱ | Live connection timer |
| ⚡ | Real-time download / upload speed |
| 📦 | Data transferred in the current session |
| 💰 | Cost per session — currency and price/hour are live-editable in Settings |
| 📊 | Stats: today / 7 days / 30 days / all time, plus the last 5 sessions |
| 🔔 | Notification Center alert (with a chime) after you've been online past a configurable time limit — includes a one-tap "Disconnect" button |
| 😴 | Billing and the alert timer pause across system sleep — waking up doesn't inflate your session cost or fire an overdue alert the instant you're back |
| ⚙️ | In-menu Settings: currency, price/hour, modem sound on/off, alerts on/off + limit, Wi-Fi interface picker |
| 🚀 | LaunchAgent for automatic startup |
The menu bar icon itself reflects connection state: 📵 offline, 📡 connecting, 📶 connected (idle), 🌐 connected (actively transferring data).
Installation
pip
pip install 56k-screech
From source
git clone https://github.com/muzzug/screech.git
cd screech
pip install -e .
Running
screech
# or, without the installed entry point:
python -m screech.app
The 📵 icon appears in the menu bar. Click → "Connect to internet".
The modem sound plays in full before Wi-Fi actually turns on — that's the ritual, not a hang. Expect a several-second delay between clicking Connect and the radio (and the status row) actually going live.
Automatic startup (LaunchAgent)
screech install-launchagent
Uninstall:
screech uninstall-launchagent
Configuration
Most settings are edited live from the app itself — click the Settings section in the menu to expand it:
- Currency and Price/hour — used to compute the cost shown live and recorded per session
- Modem sound — turn the dial-up handshake on/off
- Alerts — toggle on/off, plus a Limit (min) for how often you get a Notification Center reminder while connected
- Wi-Fi Interface — pick the right Wi-Fi device from a submenu populated
from
networksetup -listallhardwareports, instead of editing code; this is the fix if 56k Screech "does nothing" (or reports it couldn't turn Wi-Fi on) when you click Connect
Alerts use macOS Notification Center, so the first time you connect you'll be asked to grant 56k Screech permission under System Settings → Notifications. Each alert plays the standard notification chime — if you'd rather it stayed silent, turn off the sound for 56k Screech there.
Settings are persisted to:
~/Library/Application Support/56k Screech/config.json
Session history (used for the Stats section) is stored in:
~/Library/Application Support/56k Screech/sessions.db
A Reset Stats… item at the bottom of the Stats section permanently erases all recorded session history.
License
MIT © Ondřej "Muzzug" Kadlec
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file 56k_screech-1.0.1.tar.gz.
File metadata
- Download URL: 56k_screech-1.0.1.tar.gz
- Upload date:
- Size: 2.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc5bfcc42eedaf44926c8a2246cd936f9cf5691ef8f0ea4101f71ac6c68f01a8
|
|
| MD5 |
e5bb0104778004ae20e6b7fed954e399
|
|
| BLAKE2b-256 |
3ebff6ddf7826c46f65d87c74d003af60efd3ab32567e68c05f988b78768fbcc
|
Provenance
The following attestation bundles were made for 56k_screech-1.0.1.tar.gz:
Publisher:
release.yml on muzzug/screech
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
56k_screech-1.0.1.tar.gz -
Subject digest:
dc5bfcc42eedaf44926c8a2246cd936f9cf5691ef8f0ea4101f71ac6c68f01a8 - Sigstore transparency entry: 1995057071
- Sigstore integration time:
-
Permalink:
muzzug/screech@7ccc84b308d38b0a0d71244cafc21f69b41d0989 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/muzzug
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7ccc84b308d38b0a0d71244cafc21f69b41d0989 -
Trigger Event:
push
-
Statement type:
File details
Details for the file 56k_screech-1.0.1-py3-none-any.whl.
File metadata
- Download URL: 56k_screech-1.0.1-py3-none-any.whl
- Upload date:
- Size: 2.6 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b49397c0f3ab42bfd80d59d4309366ca256292b9d3a5eaa00cde6e537710c78d
|
|
| MD5 |
ac59747e559dab04456b25efd04e1ee4
|
|
| BLAKE2b-256 |
8748bae754da6b13d36c70b3791dd18ce14c525c3d2f94b5cd3026370fff6d98
|
Provenance
The following attestation bundles were made for 56k_screech-1.0.1-py3-none-any.whl:
Publisher:
release.yml on muzzug/screech
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
56k_screech-1.0.1-py3-none-any.whl -
Subject digest:
b49397c0f3ab42bfd80d59d4309366ca256292b9d3a5eaa00cde6e537710c78d - Sigstore transparency entry: 1995057176
- Sigstore integration time:
-
Permalink:
muzzug/screech@7ccc84b308d38b0a0d71244cafc21f69b41d0989 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/muzzug
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7ccc84b308d38b0a0d71244cafc21f69b41d0989 -
Trigger Event:
push
-
Statement type: