Repository files navigation

Tab Lock – Focus Mode

A Chrome extension that keeps you on your focus tab. Two modes: instant tab lock and a Pomodoro-style focus timer with escalating breaks.

Version: 1.1.1 (see manifest.json)

Features

Tab Lock (toggle)

  • Click the extension icon and choose Lock Tab to lock yourself to the current tab.
  • Optionally enter a task before locking. It appears as a draggable reminder on every tab in your allowed set (drag to reposition, double-click to reset to top center).
  • If you switch to another tab, Tab Lock blocks that tab. In the popup, under Blocked tab, choose Breathing ritual (10s) for a guided inhale/exhale animation before the locked screen, or Tab lock only to show the locked screen immediately.
  • Opening a new tab while locked does not add it to the allowed set. It stays blocked until you explicitly add it from Manage tabs in the popup.
  • While locked, Leave-site warning: on allowed tabs, clicking a link that would take you to a different hostname shows a confirm dialog so you do not drift off-site by accident (same-site and subdomain navigation is not interrupted).
  • Click Unlock Tab to disable the lock.
  • The toolbar icon switches between locked and unlocked artwork; the badge shows ON when a focus lock is active.

Pomodoro focus

  • Start Pomodoro begins a focus cycle (the optional task reminder works here too):
    • 60 min focus → 5 min break → 60 min focus → 10 min break → 60 min focus → 20 min break → (repeats)
  • During focus phases, tab lock behaves like Lock Tab.
  • During breaks you can browse freely.
  • Lifeline: hold for 5 seconds to cancel the Pomodoro session and unlock.

Installation

  1. Clone or download this repository.
  2. Open Chrome and go to chrome://extensions/.
  3. Turn on Developer mode (toggle in the top-right).
  4. Click Load unpacked.
  5. Select the unswitch project folder (or your local clone path).

Usage

  1. Go to the tab you want to focus in (document, IDE, study page, and so on).
  2. Click the Tab Lock icon in the Chrome toolbar.
  3. Choose Lock Tab for an immediate lock, or Start Pomodoro for structured focus and break periods.

Requirements

  • Chrome 88 or later (Manifest V3)
  • Permissions:tabs, activeTab, scripting, alarms, storage
  • Host permissions:<all_urls> (needed to inject the blocker, overlay, and reminder on ordinary web pages)

Project structure

unswitch/
manifest.json # Extension manifest (Manifest V3)
background.js # Service worker: lock state, Pomodoro alarms, tab/window handlers
popup/
popup.html # Toolbar popup UI
popup.css
popup.js
content/
blocker.js # Full-screen blocker on tabs outside the allowed set (content script)
blocker.css
overlay.js # 10-second breathing ritual shown before the locked screen
overlay.css
leave-domain.js # Confirm before leaving the current site from an allowed tab while locked
reminder.js # Draggable task banner on allowed tabs
reminder.css
blocked/
blocked.html # Fallback blocked page
blocked.css
icons/ # Locked / unlocked toolbar icons (16, 32, 48, 128 px)
store-assets/ # Icons and screenshots for store listing (optional)

Manual testing checklist

  • Tab lock toggle: Lock → switch to another tab → see 10-second breathing ritual → see locked screen.
  • Unlock: Unlock from popup → switch tabs freely.
  • Icon / badge: Icon reflects lock state; badge shows ON when locked.
  • Locked tab closed: Closing the primary locked tab disables the lock.
  • Leave-site warning: On an allowed tab while locked, click an external link → confirm dialog; cancel stays on page.
  • Pomodoro start: Start Pomodoro → tab locks, countdown visible in popup as expected.
  • Pomodoro focus → break: After focus duration → break phase, free browsing.
  • Pomodoro break → focus: After break → focus phase, lock active again.
  • Pomodoro cycle: Break lengths follow 5 → 10 → 20 minutes across cycles.
  • Lifeline: Hold Lifeline 5 s → session ends, tabs unlock.
  • Cross-window: Lock in window A → focus window B with a non-allowed tab → forced back to locked tab.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Tab Lock – Focus Mode

A Chrome extension that keeps you on your focus tab. Two modes: instant tab lock and a Pomodoro-style focus timer with escalating breaks.

Version: 1.1.1 (see manifest.json)

Features

Tab Lock (toggle)

  • Click the extension icon and choose Lock Tab to lock yourself to the current tab.
  • Optionally enter a task before locking. It appears as a draggable reminder on every tab in your allowed set (drag to reposition, double-click to reset to top center).
  • If you switch to another tab, Tab Lock blocks that tab. In the popup, under Blocked tab, choose Breathing ritual (10s) for a guided inhale/exhale animation before the locked screen, or Tab lock only to show the locked screen immediately.
  • Opening a new tab while locked does not add it to the allowed set. It stays blocked until you explicitly add it from Manage tabs in the popup.
  • While locked, Leave-site warning: on allowed tabs, clicking a link that would take you to a different hostname shows a confirm dialog so you do not drift off-site by accident (same-site and subdomain navigation is not interrupted).
  • Click Unlock Tab to disable the lock.
  • The toolbar icon switches between locked and unlocked artwork; the badge shows ON when a focus lock is active.

Pomodoro focus

  • Start Pomodoro begins a focus cycle (the optional task reminder works here too):
    • 60 min focus → 5 min break → 60 min focus → 10 min break → 60 min focus → 20 min break → (repeats)
  • During focus phases, tab lock behaves like Lock Tab.
  • During breaks you can browse freely.
  • Lifeline: hold for 5 seconds to cancel the Pomodoro session and unlock.

Installation

  1. Clone or download this repository.
  2. Open Chrome and go to chrome://extensions/.
  3. Turn on Developer mode (toggle in the top-right).
  4. Click Load unpacked.
  5. Select the unswitch project folder (or your local clone path).

Usage

  1. Go to the tab you want to focus in (document, IDE, study page, and so on).
  2. Click the Tab Lock icon in the Chrome toolbar.
  3. Choose Lock Tab for an immediate lock, or Start Pomodoro for structured focus and break periods.

Requirements

  • Chrome 88 or later (Manifest V3)
  • Permissions:tabs, activeTab, scripting, alarms, storage
  • Host permissions:<all_urls> (needed to inject the blocker, overlay, and reminder on ordinary web pages)

Project structure

unswitch/
manifest.json # Extension manifest (Manifest V3)
background.js # Service worker: lock state, Pomodoro alarms, tab/window handlers
popup/
popup.html # Toolbar popup UI
popup.css
popup.js
content/
blocker.js # Full-screen blocker on tabs outside the allowed set (content script)
blocker.css
overlay.js # 10-second breathing ritual shown before the locked screen
overlay.css
leave-domain.js # Confirm before leaving the current site from an allowed tab while locked
reminder.js # Draggable task banner on allowed tabs
reminder.css
blocked/
blocked.html # Fallback blocked page
blocked.css
icons/ # Locked / unlocked toolbar icons (16, 32, 48, 128 px)
store-assets/ # Icons and screenshots for store listing (optional)

Manual testing checklist

  • Tab lock toggle: Lock → switch to another tab → see 10-second breathing ritual → see locked screen.
  • Unlock: Unlock from popup → switch tabs freely.
  • Icon / badge: Icon reflects lock state; badge shows ON when locked.
  • Locked tab closed: Closing the primary locked tab disables the lock.
  • Leave-site warning: On an allowed tab while locked, click an external link → confirm dialog; cancel stays on page.
  • Pomodoro start: Start Pomodoro → tab locks, countdown visible in popup as expected.
  • Pomodoro focus → break: After focus duration → break phase, free browsing.
  • Pomodoro break → focus: After break → focus phase, lock active again.
  • Pomodoro cycle: Break lengths follow 5 → 10 → 20 minutes across cycles.
  • Lifeline: Hold Lifeline 5 s → session ends, tabs unlock.
  • Cross-window: Lock in window A → focus window B with a non-allowed tab → forced back to locked tab.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Tab Lock – Focus Mode

A Chrome extension that keeps you on your focus tab. Two modes: instant tab lock and a Pomodoro-style focus timer with escalating breaks.

Version: 1.1.1 (see manifest.json)

Features

Tab Lock (toggle)

  • Click the extension icon and choose Lock Tab to lock yourself to the current tab.
  • Optionally enter a task before locking. It appears as a draggable reminder on every tab in your allowed set (drag to reposition, double-click to reset to top center).
  • If you switch to another tab, Tab Lock blocks that tab. In the popup, under Blocked tab, choose Breathing ritual (10s) for a guided inhale/exhale animation before the locked screen, or Tab lock only to show the locked screen immediately.
  • Opening a new tab while locked does not add it to the allowed set. It stays blocked until you explicitly add it from Manage tabs in the popup.
  • While locked, Leave-site warning: on allowed tabs, clicking a link that would take you to a different hostname shows a confirm dialog so you do not drift off-site by accident (same-site and subdomain navigation is not interrupted).
  • Click Unlock Tab to disable the lock.
  • The toolbar icon switches between locked and unlocked artwork; the badge shows ON when a focus lock is active.

Pomodoro focus

  • Start Pomodoro begins a focus cycle (the optional task reminder works here too):
    • 60 min focus → 5 min break → 60 min focus → 10 min break → 60 min focus → 20 min break → (repeats)
  • During focus phases, tab lock behaves like Lock Tab.
  • During breaks you can browse freely.
  • Lifeline: hold for 5 seconds to cancel the Pomodoro session and unlock.

Installation

  1. Clone or download this repository.
  2. Open Chrome and go to chrome://extensions/.
  3. Turn on Developer mode (toggle in the top-right).
  4. Click Load unpacked.
  5. Select the unswitch project folder (or your local clone path).

Usage

  1. Go to the tab you want to focus in (document, IDE, study page, and so on).
  2. Click the Tab Lock icon in the Chrome toolbar.
  3. Choose Lock Tab for an immediate lock, or Start Pomodoro for structured focus and break periods.

Requirements

  • Chrome 88 or later (Manifest V3)
  • Permissions:tabs, activeTab, scripting, alarms, storage
  • Host permissions:<all_urls> (needed to inject the blocker, overlay, and reminder on ordinary web pages)

Project structure

unswitch/
manifest.json # Extension manifest (Manifest V3)
background.js # Service worker: lock state, Pomodoro alarms, tab/window handlers
popup/
popup.html # Toolbar popup UI
popup.css
popup.js
content/
blocker.js # Full-screen blocker on tabs outside the allowed set (content script)
blocker.css
overlay.js # 10-second breathing ritual shown before the locked screen
overlay.css
leave-domain.js # Confirm before leaving the current site from an allowed tab while locked
reminder.js # Draggable task banner on allowed tabs
reminder.css
blocked/
blocked.html # Fallback blocked page
blocked.css
icons/ # Locked / unlocked toolbar icons (16, 32, 48, 128 px)
store-assets/ # Icons and screenshots for store listing (optional)

Manual testing checklist

  • Tab lock toggle: Lock → switch to another tab → see 10-second breathing ritual → see locked screen.
  • Unlock: Unlock from popup → switch tabs freely.
  • Icon / badge: Icon reflects lock state; badge shows ON when locked.
  • Locked tab closed: Closing the primary locked tab disables the lock.
  • Leave-site warning: On an allowed tab while locked, click an external link → confirm dialog; cancel stays on page.
  • Pomodoro start: Start Pomodoro → tab locks, countdown visible in popup as expected.
  • Pomodoro focus → break: After focus duration → break phase, free browsing.
  • Pomodoro break → focus: After break → focus phase, lock active again.
  • Pomodoro cycle: Break lengths follow 5 → 10 → 20 minutes across cycles.
  • Lifeline: Hold Lifeline 5 s → session ends, tabs unlock.
  • Cross-window: Lock in window A → focus window B with a non-allowed tab → forced back to locked tab.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Tab Lock – Focus Mode

A Chrome extension that keeps you on your focus tab. Two modes: instant tab lock and a Pomodoro-style focus timer with escalating breaks.

Version: 1.1.1 (see manifest.json)

Features

Tab Lock (toggle)

  • Click the extension icon and choose Lock Tab to lock yourself to the current tab.
  • Optionally enter a task before locking. It appears as a draggable reminder on every tab in your allowed set (drag to reposition, double-click to reset to top center).
  • If you switch to another tab, Tab Lock blocks that tab. In the popup, under Blocked tab, choose Breathing ritual (10s) for a guided inhale/exhale animation before the locked screen, or Tab lock only to show the locked screen immediately.
  • Opening a new tab while locked does not add it to the allowed set. It stays blocked until you explicitly add it from Manage tabs in the popup.
  • While locked, Leave-site warning: on allowed tabs, clicking a link that would take you to a different hostname shows a confirm dialog so you do not drift off-site by accident (same-site and subdomain navigation is not interrupted).
  • Click Unlock Tab to disable the lock.
  • The toolbar icon switches between locked and unlocked artwork; the badge shows ON when a focus lock is active.

Pomodoro focus

  • Start Pomodoro begins a focus cycle (the optional task reminder works here too):
    • 60 min focus → 5 min break → 60 min focus → 10 min break → 60 min focus → 20 min break → (repeats)
  • During focus phases, tab lock behaves like Lock Tab.
  • During breaks you can browse freely.
  • Lifeline: hold for 5 seconds to cancel the Pomodoro session and unlock.

Installation

  1. Clone or download this repository.
  2. Open Chrome and go to chrome://extensions/.
  3. Turn on Developer mode (toggle in the top-right).
  4. Click Load unpacked.
  5. Select the unswitch project folder (or your local clone path).

Usage

  1. Go to the tab you want to focus in (document, IDE, study page, and so on).
  2. Click the Tab Lock icon in the Chrome toolbar.
  3. Choose Lock Tab for an immediate lock, or Start Pomodoro for structured focus and break periods.

Requirements

  • Chrome 88 or later (Manifest V3)
  • Permissions:tabs, activeTab, scripting, alarms, storage
  • Host permissions:<all_urls> (needed to inject the blocker, overlay, and reminder on ordinary web pages)

Project structure

unswitch/
manifest.json # Extension manifest (Manifest V3)
background.js # Service worker: lock state, Pomodoro alarms, tab/window handlers
popup/
popup.html # Toolbar popup UI
popup.css
popup.js
content/
blocker.js # Full-screen blocker on tabs outside the allowed set (content script)
blocker.css
overlay.js # 10-second breathing ritual shown before the locked screen
overlay.css
leave-domain.js # Confirm before leaving the current site from an allowed tab while locked
reminder.js # Draggable task banner on allowed tabs
reminder.css
blocked/
blocked.html # Fallback blocked page
blocked.css
icons/ # Locked / unlocked toolbar icons (16, 32, 48, 128 px)
store-assets/ # Icons and screenshots for store listing (optional)

Manual testing checklist

  • Tab lock toggle: Lock → switch to another tab → see 10-second breathing ritual → see locked screen.
  • Unlock: Unlock from popup → switch tabs freely.
  • Icon / badge: Icon reflects lock state; badge shows ON when locked.
  • Locked tab closed: Closing the primary locked tab disables the lock.
  • Leave-site warning: On an allowed tab while locked, click an external link → confirm dialog; cancel stays on page.
  • Pomodoro start: Start Pomodoro → tab locks, countdown visible in popup as expected.
  • Pomodoro focus → break: After focus duration → break phase, free browsing.
  • Pomodoro break → focus: After break → focus phase, lock active again.
  • Pomodoro cycle: Break lengths follow 5 → 10 → 20 minutes across cycles.
  • Lifeline: Hold Lifeline 5 s → session ends, tabs unlock.
  • Cross-window: Lock in window A → focus window B with a non-allowed tab → forced back to locked tab.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Tab Lock – Focus Mode

A Chrome extension that keeps you on your focus tab. Two modes: instant tab lock and a Pomodoro-style focus timer with escalating breaks.

Version: 1.1.1 (see manifest.json)

Features

Tab Lock (toggle)

  • Click the extension icon and choose Lock Tab to lock yourself to the current tab.
  • Optionally enter a task before locking. It appears as a draggable reminder on every tab in your allowed set (drag to reposition, double-click to reset to top center).
  • If you switch to another tab, Tab Lock blocks that tab. In the popup, under Blocked tab, choose Breathing ritual (10s) for a guided inhale/exhale animation before the locked screen, or Tab lock only to show the locked screen immediately.
  • Opening a new tab while locked does not add it to the allowed set. It stays blocked until you explicitly add it from Manage tabs in the popup.
  • While locked, Leave-site warning: on allowed tabs, clicking a link that would take you to a different hostname shows a confirm dialog so you do not drift off-site by accident (same-site and subdomain navigation is not interrupted).
  • Click Unlock Tab to disable the lock.
  • The toolbar icon switches between locked and unlocked artwork; the badge shows ON when a focus lock is active.

Pomodoro focus

  • Start Pomodoro begins a focus cycle (the optional task reminder works here too):
    • 60 min focus → 5 min break → 60 min focus → 10 min break → 60 min focus → 20 min break → (repeats)
  • During focus phases, tab lock behaves like Lock Tab.
  • During breaks you can browse freely.
  • Lifeline: hold for 5 seconds to cancel the Pomodoro session and unlock.

Installation

  1. Clone or download this repository.
  2. Open Chrome and go to chrome://extensions/.
  3. Turn on Developer mode (toggle in the top-right).
  4. Click Load unpacked.
  5. Select the unswitch project folder (or your local clone path).

Usage

  1. Go to the tab you want to focus in (document, IDE, study page, and so on).
  2. Click the Tab Lock icon in the Chrome toolbar.
  3. Choose Lock Tab for an immediate lock, or Start Pomodoro for structured focus and break periods.

Requirements

  • Chrome 88 or later (Manifest V3)
  • Permissions:tabs, activeTab, scripting, alarms, storage
  • Host permissions:<all_urls> (needed to inject the blocker, overlay, and reminder on ordinary web pages)

Project structure

unswitch/
manifest.json # Extension manifest (Manifest V3)
background.js # Service worker: lock state, Pomodoro alarms, tab/window handlers
popup/
popup.html # Toolbar popup UI
popup.css
popup.js
content/
blocker.js # Full-screen blocker on tabs outside the allowed set (content script)
blocker.css
overlay.js # 10-second breathing ritual shown before the locked screen
overlay.css
leave-domain.js # Confirm before leaving the current site from an allowed tab while locked
reminder.js # Draggable task banner on allowed tabs
reminder.css
blocked/
blocked.html # Fallback blocked page
blocked.css
icons/ # Locked / unlocked toolbar icons (16, 32, 48, 128 px)
store-assets/ # Icons and screenshots for store listing (optional)

Manual testing checklist

  • Tab lock toggle: Lock → switch to another tab → see 10-second breathing ritual → see locked screen.
  • Unlock: Unlock from popup → switch tabs freely.
  • Icon / badge: Icon reflects lock state; badge shows ON when locked.
  • Locked tab closed: Closing the primary locked tab disables the lock.
  • Leave-site warning: On an allowed tab while locked, click an external link → confirm dialog; cancel stays on page.
  • Pomodoro start: Start Pomodoro → tab locks, countdown visible in popup as expected.
  • Pomodoro focus → break: After focus duration → break phase, free browsing.
  • Pomodoro break → focus: After break → focus phase, lock active again.
  • Pomodoro cycle: Break lengths follow 5 → 10 → 20 minutes across cycles.
  • Lifeline: Hold Lifeline 5 s → session ends, tabs unlock.
  • Cross-window: Lock in window A → focus window B with a non-allowed tab → forced back to locked tab.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Tab Lock – Focus Mode

A Chrome extension that keeps you on your focus tab. Two modes: instant tab lock and a Pomodoro-style focus timer with escalating breaks.

Version: 1.1.1 (see manifest.json)

Features

Tab Lock (toggle)

  • Click the extension icon and choose Lock Tab to lock yourself to the current tab.
  • Optionally enter a task before locking. It appears as a draggable reminder on every tab in your allowed set (drag to reposition, double-click to reset to top center).
  • If you switch to another tab, Tab Lock blocks that tab. In the popup, under Blocked tab, choose Breathing ritual (10s) for a guided inhale/exhale animation before the locked screen, or Tab lock only to show the locked screen immediately.
  • Opening a new tab while locked does not add it to the allowed set. It stays blocked until you explicitly add it from Manage tabs in the popup.
  • While locked, Leave-site warning: on allowed tabs, clicking a link that would take you to a different hostname shows a confirm dialog so you do not drift off-site by accident (same-site and subdomain navigation is not interrupted).
  • Click Unlock Tab to disable the lock.
  • The toolbar icon switches between locked and unlocked artwork; the badge shows ON when a focus lock is active.

Pomodoro focus

  • Start Pomodoro begins a focus cycle (the optional task reminder works here too):
    • 60 min focus → 5 min break → 60 min focus → 10 min break → 60 min focus → 20 min break → (repeats)
  • During focus phases, tab lock behaves like Lock Tab.
  • During breaks you can browse freely.
  • Lifeline: hold for 5 seconds to cancel the Pomodoro session and unlock.

Installation

  1. Clone or download this repository.
  2. Open Chrome and go to chrome://extensions/.
  3. Turn on Developer mode (toggle in the top-right).
  4. Click Load unpacked.
  5. Select the unswitch project folder (or your local clone path).

Usage

  1. Go to the tab you want to focus in (document, IDE, study page, and so on).
  2. Click the Tab Lock icon in the Chrome toolbar.
  3. Choose Lock Tab for an immediate lock, or Start Pomodoro for structured focus and break periods.

Requirements

  • Chrome 88 or later (Manifest V3)
  • Permissions:tabs, activeTab, scripting, alarms, storage
  • Host permissions:<all_urls> (needed to inject the blocker, overlay, and reminder on ordinary web pages)

Project structure

unswitch/
manifest.json # Extension manifest (Manifest V3)
background.js # Service worker: lock state, Pomodoro alarms, tab/window handlers
popup/
popup.html # Toolbar popup UI
popup.css
popup.js
content/
blocker.js # Full-screen blocker on tabs outside the allowed set (content script)
blocker.css
overlay.js # 10-second breathing ritual shown before the locked screen
overlay.css
leave-domain.js # Confirm before leaving the current site from an allowed tab while locked
reminder.js # Draggable task banner on allowed tabs
reminder.css
blocked/
blocked.html # Fallback blocked page
blocked.css
icons/ # Locked / unlocked toolbar icons (16, 32, 48, 128 px)
store-assets/ # Icons and screenshots for store listing (optional)

Manual testing checklist

  • Tab lock toggle: Lock → switch to another tab → see 10-second breathing ritual → see locked screen.
  • Unlock: Unlock from popup → switch tabs freely.
  • Icon / badge: Icon reflects lock state; badge shows ON when locked.
  • Locked tab closed: Closing the primary locked tab disables the lock.
  • Leave-site warning: On an allowed tab while locked, click an external link → confirm dialog; cancel stays on page.
  • Pomodoro start: Start Pomodoro → tab locks, countdown visible in popup as expected.
  • Pomodoro focus → break: After focus duration → break phase, free browsing.
  • Pomodoro break → focus: After break → focus phase, lock active again.
  • Pomodoro cycle: Break lengths follow 5 → 10 → 20 minutes across cycles.
  • Lifeline: Hold Lifeline 5 s → session ends, tabs unlock.
  • Cross-window: Lock in window A → focus window B with a non-allowed tab → forced back to locked tab.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Tab Lock – Focus Mode

A Chrome extension that keeps you on your focus tab. Two modes: instant tab lock and a Pomodoro-style focus timer with escalating breaks.

Version: 1.1.1 (see manifest.json)

Features

Tab Lock (toggle)

  • Click the extension icon and choose Lock Tab to lock yourself to the current tab.
  • Optionally enter a task before locking. It appears as a draggable reminder on every tab in your allowed set (drag to reposition, double-click to reset to top center).
  • If you switch to another tab, Tab Lock blocks that tab. In the popup, under Blocked tab, choose Breathing ritual (10s) for a guided inhale/exhale animation before the locked screen, or Tab lock only to show the locked screen immediately.
  • Opening a new tab while locked does not add it to the allowed set. It stays blocked until you explicitly add it from Manage tabs in the popup.
  • While locked, Leave-site warning: on allowed tabs, clicking a link that would take you to a different hostname shows a confirm dialog so you do not drift off-site by accident (same-site and subdomain navigation is not interrupted).
  • Click Unlock Tab to disable the lock.
  • The toolbar icon switches between locked and unlocked artwork; the badge shows ON when a focus lock is active.

Pomodoro focus

  • Start Pomodoro begins a focus cycle (the optional task reminder works here too):
    • 60 min focus → 5 min break → 60 min focus → 10 min break → 60 min focus → 20 min break → (repeats)
  • During focus phases, tab lock behaves like Lock Tab.
  • During breaks you can browse freely.
  • Lifeline: hold for 5 seconds to cancel the Pomodoro session and unlock.

Installation

  1. Clone or download this repository.
  2. Open Chrome and go to chrome://extensions/.
  3. Turn on Developer mode (toggle in the top-right).
  4. Click Load unpacked.
  5. Select the unswitch project folder (or your local clone path).

Usage

  1. Go to the tab you want to focus in (document, IDE, study page, and so on).
  2. Click the Tab Lock icon in the Chrome toolbar.
  3. Choose Lock Tab for an immediate lock, or Start Pomodoro for structured focus and break periods.

Requirements

  • Chrome 88 or later (Manifest V3)
  • Permissions:tabs, activeTab, scripting, alarms, storage
  • Host permissions:<all_urls> (needed to inject the blocker, overlay, and reminder on ordinary web pages)

Project structure

unswitch/
manifest.json # Extension manifest (Manifest V3)
background.js # Service worker: lock state, Pomodoro alarms, tab/window handlers
popup/
popup.html # Toolbar popup UI
popup.css
popup.js
content/
blocker.js # Full-screen blocker on tabs outside the allowed set (content script)
blocker.css
overlay.js # 10-second breathing ritual shown before the locked screen
overlay.css
leave-domain.js # Confirm before leaving the current site from an allowed tab while locked
reminder.js # Draggable task banner on allowed tabs
reminder.css
blocked/
blocked.html # Fallback blocked page
blocked.css
icons/ # Locked / unlocked toolbar icons (16, 32, 48, 128 px)
store-assets/ # Icons and screenshots for store listing (optional)

Manual testing checklist

  • Tab lock toggle: Lock → switch to another tab → see 10-second breathing ritual → see locked screen.
  • Unlock: Unlock from popup → switch tabs freely.
  • Icon / badge: Icon reflects lock state; badge shows ON when locked.
  • Locked tab closed: Closing the primary locked tab disables the lock.
  • Leave-site warning: On an allowed tab while locked, click an external link → confirm dialog; cancel stays on page.
  • Pomodoro start: Start Pomodoro → tab locks, countdown visible in popup as expected.
  • Pomodoro focus → break: After focus duration → break phase, free browsing.
  • Pomodoro break → focus: After break → focus phase, lock active again.
  • Pomodoro cycle: Break lengths follow 5 → 10 → 20 minutes across cycles.
  • Lifeline: Hold Lifeline 5 s → session ends, tabs unlock.
  • Cross-window: Lock in window A → focus window B with a non-allowed tab → forced back to locked tab.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Tab Lock – Focus Mode

A Chrome extension that keeps you on your focus tab. Two modes: instant tab lock and a Pomodoro-style focus timer with escalating breaks.

Version: 1.1.1 (see manifest.json)

Features

Tab Lock (toggle)

  • Click the extension icon and choose Lock Tab to lock yourself to the current tab.
  • Optionally enter a task before locking. It appears as a draggable reminder on every tab in your allowed set (drag to reposition, double-click to reset to top center).
  • If you switch to another tab, Tab Lock blocks that tab. In the popup, under Blocked tab, choose Breathing ritual (10s) for a guided inhale/exhale animation before the locked screen, or Tab lock only to show the locked screen immediately.
  • Opening a new tab while locked does not add it to the allowed set. It stays blocked until you explicitly add it from Manage tabs in the popup.
  • While locked, Leave-site warning: on allowed tabs, clicking a link that would take you to a different hostname shows a confirm dialog so you do not drift off-site by accident (same-site and subdomain navigation is not interrupted).
  • Click Unlock Tab to disable the lock.
  • The toolbar icon switches between locked and unlocked artwork; the badge shows ON when a focus lock is active.

Pomodoro focus

  • Start Pomodoro begins a focus cycle (the optional task reminder works here too):
    • 60 min focus → 5 min break → 60 min focus → 10 min break → 60 min focus → 20 min break → (repeats)
  • During focus phases, tab lock behaves like Lock Tab.
  • During breaks you can browse freely.
  • Lifeline: hold for 5 seconds to cancel the Pomodoro session and unlock.

Installation

  1. Clone or download this repository.
  2. Open Chrome and go to chrome://extensions/.
  3. Turn on Developer mode (toggle in the top-right).
  4. Click Load unpacked.
  5. Select the unswitch project folder (or your local clone path).

Usage

  1. Go to the tab you want to focus in (document, IDE, study page, and so on).
  2. Click the Tab Lock icon in the Chrome toolbar.
  3. Choose Lock Tab for an immediate lock, or Start Pomodoro for structured focus and break periods.

Requirements

  • Chrome 88 or later (Manifest V3)
  • Permissions:tabs, activeTab, scripting, alarms, storage
  • Host permissions:<all_urls> (needed to inject the blocker, overlay, and reminder on ordinary web pages)

Project structure

unswitch/
manifest.json # Extension manifest (Manifest V3)
background.js # Service worker: lock state, Pomodoro alarms, tab/window handlers
popup/
popup.html # Toolbar popup UI
popup.css
popup.js
content/
blocker.js # Full-screen blocker on tabs outside the allowed set (content script)
blocker.css
overlay.js # 10-second breathing ritual shown before the locked screen
overlay.css
leave-domain.js # Confirm before leaving the current site from an allowed tab while locked
reminder.js # Draggable task banner on allowed tabs
reminder.css
blocked/
blocked.html # Fallback blocked page
blocked.css
icons/ # Locked / unlocked toolbar icons (16, 32, 48, 128 px)
store-assets/ # Icons and screenshots for store listing (optional)

Manual testing checklist

  • Tab lock toggle: Lock → switch to another tab → see 10-second breathing ritual → see locked screen.
  • Unlock: Unlock from popup → switch tabs freely.
  • Icon / badge: Icon reflects lock state; badge shows ON when locked.
  • Locked tab closed: Closing the primary locked tab disables the lock.
  • Leave-site warning: On an allowed tab while locked, click an external link → confirm dialog; cancel stays on page.
  • Pomodoro start: Start Pomodoro → tab locks, countdown visible in popup as expected.
  • Pomodoro focus → break: After focus duration → break phase, free browsing.
  • Pomodoro break → focus: After break → focus phase, lock active again.
  • Pomodoro cycle: Break lengths follow 5 → 10 → 20 minutes across cycles.
  • Lifeline: Hold Lifeline 5 s → session ends, tabs unlock.
  • Cross-window: Lock in window A → focus window B with a non-allowed tab → forced back to locked tab.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages