GithubHelp home page GithubHelp logo

bill13579 / tabby Goto Github PK

View Code? Open in Web Editor NEW
257.0 6.0 23.0 141.22 MB

A web extension for managing great amounts of windows and tabs at ease.

License: Mozilla Public License 2.0

JavaScript 80.20% Rust 19.80%
tabby tab window management manager window-manager tab-management browser firefox

tabby's Introduction

What is it?

ci

Tabby is an open-source window & tab manager that can manage great amounts of windows and tabs at ease.

You can install the latest stable version of Tabby on it's Firefox Add-on page: https://addons.mozilla.org/addon/tabby-window-tab-manager/ Or, to install the newest development version, see the Building, Installing, and Editing section.

Contributing

If you like this project, please share it. Your support is always welcomed!

Tabby is an open-source project and is in active development, so feel free to submit any issues that you are experiencing and I will do my best to fix it. And if you can fix the issue altogether, feel free to submit a pull request!

Building, Installing, and Editing

Prerequisites

  • Git
  • Rustup (rustc >= 1.62.1)
  • wasm-pack >= 0.10.3
  • Node.js >= 16.15.0 LTS
  • Firefox >= 59 (recommended)
    or
    Chrome >= 49 (fully tested on Chrome 72)

IMPORTANT NOTE: If you encounter an issue compiling the "lindera-ipadic" dependency on the npm run build:firefox step, it is likely that you do not have enough memory or CPU. This is especially an issue on virtual machines, and is hard to detect since the error messages are incredibly vague.
On an Ubuntu VM, 4gb RAM + 2 cores has been proven to work.

Building Tabby

  1. Open a git enabled shell of your choice (e.g. Command Prompt, Git Bash)
  2. Get the source code
    git clone https://github.com/Bill13579/tabby.git
  3. Go into the Tabby directory
    cd tabby
  4. Install dependencies with npm
    npm install
  5. Build v2-compat
    npm run build:v2-compat -- firefox/firefox.dev/chrome/chrome.dev/webext/etc
  6. Build Tabby
    Firefox: npm run build:firefox
    Chrome: npm run build:chrome
    WebExtension: npm run build:webext

The dist folder, after the build, can then be packaged as a zip file and installed.

Installation

Firefox

This will install Tabby as a temporary add-on, so you will need to re-do this everytime you restart Firefox.

  1. Start Firefox
  2. Go to about:debugging
  3. Press on the Load Temporary Add-on... button
  4. Select the manifest.json file in the dist directory

Chrome

  1. Start Chrome
  2. Go to chrome://extensions
  3. Press on the Load unpacked button
  4. Select the dist directory

Editing & Testing

After you edit the code, you will need to build again.

Re-do Step 6 of Building Tabby and

  • on Firefox, press the Reload button in the Tabby section of the about:debugging page.
  • on Chrome, press the Chrome Reload Icon button in the Tabby section of the chrome://extensions page.

Note: Content Scripts will only be reloaded for each tab once that tab is refreshed.

File Structure

icons/ - Directory for storing Tabby icons
icons/tabby.svg - Tabby icon (Vector)
icons/tabby.png - Tabby icon (Raster)

release/ - Release zip files

screenshots/ - Screenshots
screenshots-archive/ - Old screenshots of old releases

dist/ - Distribution directory
src/ - Source code directory (for more info, go to the README.md file in that directory)

LICENSE - License file
README.md - README file

libs/ (Libraries Used)

Tabby uses the great lz-string library for compression!
Used min.js file: https://raw.githubusercontent.com/pieroxy/lz-string/1.4.4/libs/lz-string.min.js
Source: https://raw.githubusercontent.com/pieroxy/lz-string/1.4.4/libs/lz-string.js
Source tree: https://github.com/pieroxy/lz-string/tree/1.4.4

tabby's People

Contributors

anewuser avatar bill13579 avatar dependabot[bot] avatar gliptak avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

tabby's Issues

Add keyboard shortcuts to switch tabs and windows

Keyboard shortcuts are a great way to quickly switch tabs, so adding it will make Tabby better.

Features that can be added:

  • Keyboard shortcut to open last used tab
  • Keyboard shortcut to open last used window

[Feature Request] Full-screen Tabby view

I'd love to have the option of opening the Tabby view in a new window/tab of it's own or to have the option to change the pop-up size to the max-width and max-height of the current tab.

Smaller default scale

The default UI scale is very large, I think it should be made consistent with the overall browser style: i.e. if scale is set to "1", the font size should be the same as in Firefox tab bar.

This could be circumvented by just using a smaller scale setting (0.6 works best for me), but then the spacing gets weird:
image
As you can see, the text here is very uneven, the gap between l and i in light is almost non-existent but there's a giant gap between g and h.

I've noticed that sometimes this happens when zooming out on websites too, so I think just setting the font size to something smaller (instead of using browser scaling) would help.

Add support for advanced search/filters

Feature request

  • Possibly a toggle between advanced and basic searching mode
  • Filters:
    • Grouping and boolean operations.
    • re:<regex> regex support. For powerusers ⚡
    • site:<URL>' or 'url:<URL> Matches only tabs with matching URLs.
    • window:<Window name> OR window:#<Window number> Matches only tabs inside selected window.
    • session:<Session name> OR session:#<Session number> See #39
    • is:bookmark Matches only tabs that's bookmarked.
    • is:pin Matches only tabs that's pinned.
    • is:duplicate Matches only tabs with duplicate entries. Use this with other filters for finer results.
  • sort:<Sort type>:<Ascend or Descend> Where <Sort type> can be alphabetical, last visited, last opened, etc.

Suggestions

Love it.

It'd be great though if you could see all your #window lists in one view so I can sort and see the dups -> and kill them.

Previews are great but seems like the view could be reversed (list left->preview right) to accomdate more of tree view.

And then cpu &| network use, per view - a long term ask!

Anyhow, just trying to add some constructive feedback.

Many thanks
-Chris

Tabby overriding ALT commands in Firefox 75.0

This may be due to Mozilla doing something stupid in today's release of Firefox 75.0, but Tabby has started usurping the functions of my ALT key; specifically, when using it to enter 4-digit ALT+ codes to access extended ASCII characters.

With Tabby active, holding ALT and then hitting any key in the numpad causes Firefox to jump back to the previous tab, and continuing to type the 4-digit code does nothing.

This addon is fantastic, and I hope this can be addressed.

My Firefox troubleshooting information is in the file attached

Firefox Troubleshooting Info.txt

Provide introduction page

Feature request

On installation, display an introduction page. Even Github's wiki will do. I almost made an issue about keyboard shortcuts that were already solved 😀

Windows title changed

Firefox windows title changes doesn't remains when Windows 10 is rebooted .
It would be better that changes on Firefox windows titles were saved somewhere in order to keep them while rebooting the Operating System.

Thanks

More tab/window operations

Feature request

  • Duplicate tabs/windows. (the latter is probably overkill)
  • Reload/Unload tabs. (I've seen some people unload tabs on weak systems, some tab addons have this too)
  • Tabby's save feature. See #39 too.
  • Send tab to other devices. Mirrors Firefox's send to other devices feature.
  • Operations managing multiple selections:
    • Add/remove selection by shift+click and ctrl+click.
      • Possibly an edit mode where you can select using click or toggle selection using hold+drag.
    • Invert selection and Select all.
    • Filtered selection. See #40
  • Operations applicable to multiple selections:
    • Bookmark.
    • Close.
    • Duplicate.
    • Move/reorder.
    • Mute/unmute.
    • Pin.
    • Reload/unload.
    • Rename.
    • Send to other devices.
    • Tabby's save feature. See #39 too.
  • More tab/window operations???

Option to not close or warn before closing pinned tabs

As a temporary containers user, it is time consuming when a pinned tab with a logged-in site is accidentally closed, as it will require a new login cycle when the site is re-opened. It would be great to have an option to either not close pinned tabs (as firefox does on control-w) or warn before closing.

Behaviour: Accidentally closing pinned tab from tabby closes tab

  • Desired Option 1: When option is set to not close pinned tabs, pinned tabs cannot be accidentally closed.
  • Desired Option 2: When option is set to warn before closing pinned tabs, a confirmation prompt is shown before closing pinned tabs.

Unable to use "send tab to"

Watching the console when I try to use "send tab to", I see

t is undefined background.js:1
    onclick moz-extension://5a8db0c2-ce92-8546-a860-71a9e0355e2c/background/background.js:1
    dispatchEvent chrome://browser/content/child/ext-menus.js:46
    withHandlingUserInput resource://gre/modules/ExtensionCommon.jsm:120
    dispatchEvent chrome://browser/content/child/ext-menus.js:45
    dispatchEvent self-hosted:844
    apply self-hosted:1870
    applySafeWithoutClone resource://gre/modules/ExtensionCommon.jsm:614
    fire resource://gre/modules/ExtensionChild.jsm:905
    recvRunListener resource://gre/modules/ExtensionChild.jsm:909
    recvRunListener self-hosted:844
    _recv resource://gre/modules/ConduitsChild.jsm:78
    receiveMessage resource://gre/modules/ConduitsChild.jsm:169

Probably makes no difference, but I see this on Windows and MacOS, Firefox 79.0b9 and 78.0.2.

Improve keyboard shortcuts

Feature request

  • Modifiable keyboard shortcuts.
  • Add shortcuts to navigate between selecting tabs/windows when tabby's popup is opened.
  • Additionally make it so that the shortcuts support selecting multiple tabs/windows. See #34
    • Shortcut to add/remove selection
    • Shortcut to jump between windows.
    • Shortcut to jump between first+end tab on current window.
    • Shortcut to jump between current+last tab on current window.
    • Shortcut to invert selection and select all.
  • Add shortcuts for tab/window operations: See #34
    • Bookmark.
    • Close.
    • Duplicate.
    • Move/reorder.
    • Mute/unmute.
    • Pin.
    • Reload/unload.
    • Rename.
    • Send to other devices.
    • Tabby's save feature. See #39 too.
  • More shortcuts possibly???

MS Edge support for tab preview

Hi, Could you provide support for your extension with Microsft edge?
I installed the extension from the chrome store but the tab preview does not work. It only shows the url
Thanks

Blank tab list

No tab appears when I press the extension button so I cant do anything. Any idea why?

Add keyboard shortcuts to enable keyboard only navigation

If we have a shortcut to 

  • open the tabby window (with focus on filter)
  • open the tabby window (with focus on first tab)
  • select a tab with up and dow arrow
  • go to selected tab with "enter"
  • close selected tab with "delete"

We can have a keyboard only navigation !

Configure the path used by "save websites for later"

I have no idea where Tabby saves the list of windows/tabs. I'd like to be able to configure the location where this information is saved, so I can easily back it up. Saving it to a mapped drive, for example, would provide automatic back ups.

Meanwhile, could you tell me where Tabby saves this information?

Thank you.

Save-for-Later doesn't work for large sessions

Save-for-Later currently utilizes storage.sync, which is great for syncing but this also creates the problem of Save-for-Later not being able to save large sessions due to the storage cap.

Cross-window tab drag result in different tab ids

When tabs are dragged across windows, other functionalities become unusable because of wrong tab ids.

Steps to reproduce:

  1. Drag & Drop a tab to a different window
  2. Try to pin the dragged tab

Expected result:

Tab icon will change to pinned and go to the top.

Actual result:

Tab icon and position both not changed.

Add ability to rename a window

A lot of users have requested the ability to rename a window. I think this feature can help group tabs, so it will definitely be added in Tabby v1.2!

If you have any suggestions on how to implement this feature, please feel free to comment down below.

Popup visibile only one time out of two

Tabby v2.1 on Firefox 77.0.1 (64-bit) on macOS

After updating to v2.1 I'm having a strange issue: every time I click (or invoke with the shortcut) Tabby the popup is not visible, and I have to reopen it a second time. The third time is not visible again, the fourth it is, and so on.

The issue does not appear on newly created windows, but does not seems to be directly related to the number of open tabs.

Screen Recording 2020-06-29 at 18 11 39(1)

Let me know if I can help you debug it in any way.

Thanks and keep up the good work!

[Enhancement] hovering over an unloaded tab should have a placeholder preview

Currently, if I hover over a tab that's loaded, then an unloaded one, the preview of the loaded tab remains. Ideally it should just be blank or "no preview available" etc. For example I have unloaded tabs after a session restore.

Loaded tab (excel online):
image

Unloaded youtube tab - preview and link still shows the previous excel online one:
image

Add support for multiple saved sessions

Feature request

Users should be able to save multiple sessions and choose to restore any of them. This can be thought as an upgrade of current save feature.

Resize popup and Popup scale option isn't intuitive

problem

The difference before and after isn't obvious when changing the size of the popup. A live preview would be better. Ideally, users can enter "resize popup mode", then drag a corner or side of the popup to resize it.

Note that this problem applies to 'Popup scale' too.

Don't load site icon for incognito tabs

To prevent private window site icons from being stored in the regular cache, it would be preferable not to load them in the popup. You could use null or with a little more work, replace them with a mask icon (for example, https://design.firefox.com/icons/viewer/ under the "General" category).

There seem to be a couple places in popup.js where you retrieve favIconUrl. In one case, it's in the context of tab so you can easily determine whether it's incognito. I didn't try to track down the one in the message handler.

Ref. https://discourse.mozilla.org/t/context-of-inline-image-requests-in-extension-page-e-g-a-popup/27932

Request

I really like the direction your addon is going and was wondering if you could add the option to select multiple tabs using shift + click like in Windows or something similar to be able to do operations with many of them at a time and it would be great if yyou could implement like a right click context menu instead of the icons to give more power to the users to decide what to do with the tabs like to be able to re arrange the tabs, Reload them, mute/unmute, suspend/restore, send to a new window/existing window and copy the url of the tabs.

Also I think it would be nice if you could allow users to disable the page preview, allow to change the size of the tab list items and icons and the size of the popup in general

If you could implement those things it would be the most useful addon in AMO for me.

Wrong current window showed in Chrome version of Tabby

Steps to reproduce

  1. Open Chrome
  2. Build & Install the dev version of Tabby for Chrome
  3. Open a second window
  4. Switch back to the first window using Tabby
  5. Open Tabby again in the first window

Expected Result

Tabby shows that the first window is the current window

Actual Result

Tabby shows that the second window is the current window

Keyboard shortcut conflict with Bitwarden addon

On Firefox, installing both Tabby and Bitwarden (password manager, 160K users) breaks Bitwarden's autocomplete shortcut.

Bitwarden uses Ctrl + Shift + L for password autocompletion.

When Tabby's installed, Ctrl + Shift + L stops doing so.

Instead it makes you go to the last tab (similar to Ctrl+9).

If you use Ctrl + Shift + L a second time, it brings you back to the tab you were at first.

Removing Tabby solves the problem, but prevents you from using Tabby when Bitwarden's installed.

Search tabs box should be focused

When you click the tabby icon the search tabs box should be focused so you can start search immediately.
FIX:
File: tabby/src/popup/index.html
Line: 34
Change this:
<input id="search" type="text" placeholder="Search Tabs" />
to this:
<input id="search" type="text" placeholder="Search Tabs" autofocus />

Shortcuts

Maybe it's just me... but the keyboard shortcut to open Tabby selecting Tab (Ctrl+Shift+X) does nothing. I can open Tabby selecting Search but then the arrows and such does nothing until I move the cursor up hovering a tab first.

[Feature Request] Longer titles

Titles are truncated, so it's hard to read them.

There are two features for scaling: width and "popup scale". But they apply to both the preview (left) and titles (right).

Would be nice to be able to widen the title section (right) only, without creating a jumbo-sized popup.

Preferences to tabby is hidden

Problem

Although you can access it in add-ons manager, it pretty hidden.
There's probably some users that never would've known about this at all.

Suggestion

Add a button in tabby to manage the user's preferences.

Add ability to view Tabby in sidebar

The main thing needed is to add the action to the manifest.json

"sidebar_action": {
    "default_icon": {
        "16": "icons/tabby-16.png",
        "48": "icons/tabby-48.png",
        "64": "icons/tabby-64.png",
        "128": "icons/tabby-128.png"
    },
    "default_title" : "Tabby",
    "default_panel": "sidebar/index.html"
},

The "default_panel": "sidebar/index.html" bit may not be the way you want to do it, I was thinking of a separate HTML file to allow the page to be narrower (don't show the details or preview on the left) in the sidebar, as well as take the full available height and width instead of the popup height and width configured in the settings. Alternatively, the JavaScript on the index could detect whether it's in the sidebar. One way I've seen that done is to pass in some param (like ?sidebar=true) and check for it (like if (window.location.search.indexOf("?sidebar") > -1)).

Here's some related links

Dark theme

Allow to have a dark theme (like firefox)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.