https://github.com/maz01001/chrome_detab
chrome extension to turn the current tab into a minimal pop-up window
https://github.com/maz01001/chrome_detab
chrome-extension popup-window
Last synced: about 1 month ago
JSON representation
chrome extension to turn the current tab into a minimal pop-up window
- Host: GitHub
- URL: https://github.com/maz01001/chrome_detab
- Owner: MAZ01001
- License: mit
- Created: 2025-07-14T07:55:22.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-08-13T22:21:47.000Z (about 2 months ago)
- Last Synced: 2025-08-14T00:09:04.881Z (about 2 months ago)
- Topics: chrome-extension, popup-window
- Language: JavaScript
- Homepage:
- Size: 10.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Chrome detab
Chrome extension to turn any tab into a minimal pop-up window (and vice versa)
> [!NOTE]
>
> Moves the tab itself so the page is not reloaded and stays the way it is,
> as oposed to something like `window.open(location.href,"detab","toolbar=0");`
>
> Thus, also doesn't need permissions to read URLS, inject scripts, etc## Install
1. Clone this repo or download the `7z` file from releases ()
2. Unpack `zip`/`7z` (_get 7-Zip from _)
3. Turn on dev-mode in (top right)
4. Click _Load unpacked extension_ (top left)
5. Locate unpacked folder
6. Click it and then hit _Select folder_
7. ...
8. Profit> [!IMPORTANT]
>
> This extension is (currently) NOT hosted in _Chrome Web Store_ and since loading extension from other sources does not work (since chrome M33 ~ 2014) for security reasons,
> the only way you could/should install this extension is by following the steps above## Controls
> [!NOTE]
>
> Change extension hotkeys on
>
> Select multiple tabs by clicking on them while holding ctrl and/or shift
>
> Move a tab inside a window with ctrl+shift+PgUp/ctrl+shift+PgDn ([Chrome keyboard shortcuts](https://support.google.com/chrome/answer/157179#zippy=%2Ctab-and-window-shortcuts:~:text=Move%20tabs%20right%20or%20left "Google Chrome Help: Chrome keyboard shortcuts"))
- Hotkeys
- alt+0
-
Toggle popup of last focused or selected tabs
- last focused tab gets moved to a popup window
- last focused popup gets moved to the last focused normal window (left of active tab in that window)
- all selected tabs are each moved to a popup window (in order) and the popup that was the active tab is focused
- alt+shift+0
-
Create new window with last focused or selected tabs
- last focused tab gets moved to a new window
- last focused popup gets moved to a new (non-popup) window
- all selected tabs are moved to a new window (same order) and are re-selected with the same active tab
- Clicking extension icon
-
Create popup of current and selected tabs (does nothing if somehow triggered from popup window)
- last focused tab gets moved to a popup window
- all selected tabs are each moved to a popup window (in order) and the popup that was the active tab is focused
- Context menu
-
Popup toggle current tab
(on page) -
- current tab gets moved to a popup window
- current popup gets moved to the last focused normal window (left of active tab in that window)
-
Move to new normal window
(on page) -
- current tab gets moved to a new window
- current popup gets moved to a new (non-popup) window
-
Popup link
/Popup incognito link
(on link elements) -
(does nothing if link URL is not available)
- create popup from link URL
- create inconito popup from link URL
-
Popup media (source URL)
/Popup incognito media (source URL)
(on image/video/audio elements) -
(does nothing if media source URL is not available)
- create popup from media source URL
- create inconito popup from media source URL
-
## Finding the last focused window
[`chrome.windows.getLastFocused()`](https://developer.chrome.com/docs/extensions/reference/api/windows#method-getLastFocused "Chrome API docs")
gets the last focused window, but [`chrome.windows.QueryOptions`](https://developer.chrome.com/docs/extensions/reference/api/windows#type-QueryOptions "Chrome API docs")
(parameter) can only distinguish between window types like `normal` and `popup`, and has no way of getting incognito/non-incognito windows separately
So, manual tracking of all focused windows is necessary
See `LastWindow` (static class) at the start of `background.js`