Get rid of parts of UI when focusing on content.
A browser extension that provides keyboard shortcuts to toggle focus mode on YouTube, Twitter/X, and Excalidraw for a more immersive experience.
π Privacy First: Zero data collection. Everything runs locally on your device.
-
YouTube Focus Mode (Ctrl+Shift+Y / Cmd+Shift+Y on Mac, or ` backtick on the page)
- Automatically enables theater mode
- Hides distracting sidebars and recommendations
- Full-width video player
- Scrollable page to access comments
-
Twitter/X Focus Mode (Ctrl+Shift+X / Cmd+Shift+X on Mac, or Ctrl/Cmd+B on the page)
- Hides sidebars and trending topics
- Centers and widens the main timeline
- Removes header distractions
-
Excalidraw Focus Mode (Ctrl/Cmd+B on the page)
- Hides the UI wrapper (
.layer-ui__wrapper) for a cleaner canvas
- Hides the UI wrapper (
- Per-Tab Mode (Default): Each tab has its own state. Focus mode resets when you navigate away or close the tab. Perfect for fine-grained control.
- Global Mode: Settings persist across all tabs and sessions. Once enabled, the state is shared across all tabs.
- Twitter/X Width Control: Adjust the timeline width (50-100%) in the options page to find your perfect viewing experience.
Configure your preferences in the extension options page.
- Chrome Web Store: Coming Soon
- Firefox Add-ons: Coming Soon
- Safari Extensions: Coming Soon
- Build the extension:
bun run build:chrome - Open
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked"
- Select the
dist/folder
- Build the extension:
bun run build:firefox - Open
about:debugging#/runtime/this-firefox - Click "Load Temporary Add-on"
- Select any file in the
dist-firefox/folder
- Build the extension:
bun run build:safari - The
dist-safari/folder contains the web extension - For Safari, you'll need to create an Xcode project wrapper:
- Open Xcode
- Create a new Safari Extension project
- Replace the extension folder with
dist-safari/contents - Build and run from Xcode
- Bun installed
# Install dependencies
bun install
# Development mode (Chrome only, with hot reload)
bun run dev
# Build for specific browser
bun run build:chrome # Build for Chrome (output: dist/)
bun run build:firefox # Build for Firefox (output: dist-firefox/)
bun run build:safari # Build for Safari (output: dist-safari/)
# Build for all browsers
bun run build:all.
βββ public/
β βββ manifest.json # Chrome manifest (MV3)
β βββ manifest.firefox.json # Firefox manifest (MV3)
β βββ manifest.safari.json # Safari manifest (MV2)
β βββ icon*.png # Extension icons
βββ src/
β βββ background.ts # Chrome/Firefox background script
β βββ background.safari.ts # Safari background script (MV2)
β βββ styles/
β β βββ youtube.css # YouTube styling
β β βββ twitter.css # Twitter/X styling
β β βββ excalidraw.css # Excalidraw styling
β βββ ui/
β βββ global.css # Global UI styles
β βββ options/
β βββ index.html # Options page
β βββ options.css # Options page styles
βββ dist/ # Chrome build output
βββ dist-firefox/ # Firefox build output
βββ dist-safari/ # Safari build output
βββ build.ts # Build script
| Browser | Manifest Version | Status |
|---|---|---|
| Chrome | V3 | β Supported |
| Firefox | V3 | β Supported |
| Safari | V2 | β Supported |
| Edge | V3 | β (Use Chrome build) |
| Opera | V3 | β (Use Chrome build) |
Access the options page to:
- Choose between Per-Tab and Global persistence modes
- View keyboard shortcuts
- Access your browser's shortcut editor
Open the options page by clicking the extension icon or right-clicking it and selecting "Options".
You can toggle focus mode from the page: press ` (backtick) on YouTube, Ctrl/Cmd+B or Option+Shift+X on Twitter/X, and Ctrl/Cmd+B on Excalidraw. You can also use the extension shortcuts below (e.g. Ctrl+Shift+Y / Ctrl+Shift+X).
Chrome/Edge/Opera
- Go to
chrome://extensions/shortcuts - Find "Dissatisfied"
- Click the pencil icon to customize
Firefox
- Go to
about:addons - Click the gear icon β "Manage Extension Shortcuts"
- Find "Dissatisfied" and customize
Safari
- Open Safari β Settings β Extensions
- Select "Dissatisfied"
- Configure shortcuts in the extension settings
Dissatisfied collects ZERO data. No analytics, no tracking, no telemetry.
storage: Save your preference settings locally on your deviceactiveTab: Access the current tab to inject focus mode stylesscripting: Inject CSS and toggle YouTube's theater modehost_permissions: Only YouTube, Twitter/X, and Excalidraw domains
All data stays on your device. No external requests are made.
π Read our full Privacy Policy for detailed information.
See CONTRIBUTING.md for details on how to contribute.
See LICENSE for license information.
- User Guide - Comprehensive guide to using the extension
- Privacy Policy - Detailed privacy and permissions information
- Changelog - Version history and updates
- Contributing - How to contribute to the project
- Additional site support (Reddit, Medium, etc.)
- Customizable styling options
- Export/import settings
- More granular UI controls
- Per-site configuration options
For issues, feature requests, or questions:
- Create an issue on GitHub
- Visit the extension's homepage
Q: How does Global Mode work?
A: Global Mode saves your preference across all tabs and sessions. When you toggle focus mode on/off, that state is remembered and applies to all tabs. You still use the keybind on each tab, but the state is shared globally.
Q: Can I adjust the Twitter timeline width?
A: Yes! Go to the options page and use the slider to adjust the width from 50% to 100%. Your preference is saved automatically.
Q: Does this work on mobile?
A: Currently desktop only. Mobile browser extension support is limited.
Q: Is my data safe?
A: We don't collect any data. Everything runs locally on your device. See our Privacy Policy.
Made with π for distraction-free browsing
Note: This is open-source software. You can review the entire codebase to verify our privacy claims.