[Ext] Mouse Gestures Suite

Announce and Discuss the Latest Theme and Extension Releases.
Lemon Juice
Posts: 788
Joined: June 1st, 2006, 9:41 am

[Ext] Mouse Gestures Suite

Post by Lemon Juice »

Mouse Gestures Suite

Current version at AMO: 2.2.0 released on 2015-06-12

Compatibility: SeaMonkey 2.22 or higher, Firefox 25 or higher, e10s supported. Pale Moon users: use version 1.6.3.

Other resources:

Mouse gestures for SeaMonkey & Firefox: navigate & execute commands using mouse gestures (with single mouse button) and rocker gestures (by pressing 2 mouse buttons). Also: scroll wheel navigation, page scrolling, tab scrolling.

================================================

Mouse Gestures Suite is based on (abandoned) Firefox extension All-in-One Gestures and has been modified to work with Seamonkey and later also with Firefox (since ver. 1.5.0). Many fixes and improvements have been made and new features added.

Main features:

Mouse gestures - performed by moving the mouse with a button depressed allow you to quickly navigate through pages, open/close tabs and windows and perform many other commands without having to use toolbar buttons, menus or keyboard shortcuts. A gesture consists of a series of mouse movements in one of 4 directions (up, down, left, right).

Rocker gestures - invoked by pressing one mouse button and then the other while keeping the first one pressed. By default used to go back and forward in browsing history but can be customized to do something else.

Scroll wheel in tab bar - you can switch between tabs by scrolling mouse wheel over the tab bar.

Scroll wheel navigation - perform your favourite actions by pressing a mouse button and scrolling mouse wheel at the same time.

Middle button scrolling - auto scroll pages or textareas by clicking the middle mouse button once (pressing and releasing) and then control the scrolling speed by moving the mouse or using arrow keys. Grab and Drag options allow you to scroll by moving the mouse while the middle button is depressed.

Link tooltip - see details about links as you hover over them with your mouse. Useful especially for browsing without the status bar like in full screen mode.

All the above features work in the Browser component. Mouse and rocker gestures also work in Mail, Message, Mail Compose and View Page Source windows — the gesture movements are the same as those in Browser, however not all actions work in those other window types since not all of them are applicable there — see help for detailed information.

Press the Help button in options to read detailed description of all available features.

If you have any other mouse gestures extensions they may conflict with each other so please disable or uninstall them before trying out this one.

===============================================

Mouse Gestures Suite has been around for a while and the original thread was in the SeaMonkey section here. Now that it works also in Firefox I'm setting up a new thread here.

Development

I am working on this extension in my spare time so don't expect any rapid development pace. However, I plan to keep it current and bug free and occasionally implement some new features so you can share your ideas here and maybe I'll be able to implement some of them :D

Screenshots

Image Image
Last edited by Lemon Juice on June 12th, 2015, 11:48 am, edited 9 times in total.
*** SeaMonkey — weird name, sane interface, modern bowels ***
Mouse Gestures for SeaMonkey/Firefox
Convert Fx and TB extensions to SeaMonkey
Lemon Juice
Posts: 788
Joined: June 1st, 2006, 9:41 am

Re: [Ext] Mouse Gestures Suite

Post by Lemon Juice »

Changes in 1.7.0 relative to 1.6.3:

  • compatibility with multi-process Firefox (e10s), minimum version of Firefox is 25 (so no compatibility with Pale Moon - use 1.6.3 in Pale Moon), minimum version of SeaMonkey is 2.22.
  • new action: Save Image (without prompt)
  • "Open New Tab" and "Open Blank Tab" - when gesture initiated on tab then open new tab to the left or right depending on which half of the tab the gesture was started in
  • Scroll Wheel Navigation -> Navigate through Tabs: now there is a popup lisitng all open tabs so as to make it easy to swich. Previosly visited tab is marked as underlined. If you don't want the popup then in options set Scroll Wheel Navigation to Perform Gesture Actions and in Gesture Customization tab assign scroll wheel gestures (at the bottom) to Next Tab and Previous Tab functions.
  • pass referrer for links opened in new windows
  • respect rel="noreferrer" when opening links in new tabs and windows
  • "Open New Tab" action - don't open links under gesture if gesture initiated on tab
  • kill gesture if mousemove occurs with no buttons pressed - helps get rid of undesirable gesture drawing in certain rare circumstances when no mouse buttons are pressed any longer
  • fix: autoscroll with arrow keys didn't work on pages which steal key presses to control scrolling like groups.google.com
  • fix: gesture wasn't identified as started on tab when it was started on tab's X close button
  • fix: make gesture trails correct in print preview (they were positioned far away from the mouse cursor)
*** SeaMonkey — weird name, sane interface, modern bowels ***
Mouse Gestures for SeaMonkey/Firefox
Convert Fx and TB extensions to SeaMonkey
Lemon Juice
Posts: 788
Joined: June 1st, 2006, 9:41 am

Re: [Ext] Mouse Gestures Suite

Post by Lemon Juice »

New version 2.0.0 released!

The main new feature is the ability to define custom functions for gestures. A custom function can be either an action chosen from the main menu (File, Edit, etc.) or a custom javascript code. Javascript can be run either in native browser/extension scope or injected into a web page and run as if it were part of the page. For detailed description of custom functions and script parameters read the new online documentation here.

Also, the code is now hosted on GitHub - see the first post for details.

Here is a detailed chabgelog in 2.0.0 relative to 1.7.0:
  • Main Feature: Ability to define custom functions for gestures: running commands from the main menu (File, Edit, etc.) or executing custom scripts to control either the browser or the web page (choice of script scope).
  • Action "Duplicate Tab" now respects the (default) browser setting browser.tabs.insertRelatedAfterCurrent so that duplicated tab will appear next to the current one (instead of at the end).
  • New option in Adv. Prefs #1: Open new blank tab next to current one. With this setting new blank tabs opened with mouse gestures will be placed next to the current tab and not at the end.
  • Showing tab list popup for switching tabs with scroll wheel (introduced in 1.7.0) is now optional.
  • Changed highlight colour in list popups for scroll wheel tab switching and history navigation - because this highlight was barely visible on win7 systems.
  • Scroll wheel popup highlights distinction: the tab switching selected menu item has blue highlight while history navigation has dark grey highlight (so you can better see in which menu you are).
  • Enable gestures in browser's sidebar and allow gestures to open links (in new tab or window) from sidebar's bookmarks and history.
  • (SeaMonkey) Enable "Show/Hide Sidebar" action in mail compose window.
  • (SeaMonkey) Mail window: enable gestures also on collapsible email headers area (not only on email content area).
  • (SeaMonkey) Mail compose: enable gestures also in sidebar.
  • (SeaMonkey) Links from mail now open next to current tab in browser (respecting browser.tabs.insertRelatedAfterCurrent) instead of at the end.
  • (SeaMonkey) Some actions opening new tabs (like open link, duplicate tab) didn't preserve relations to the original tab so that closing them didn't switch to the original tab. Now user is switched back to original tab after closing.
  • Preserve scroll position of gesture definitions list in options (for current session).
  • Fix: Prevent unwanted text selections when performing rocker gestures that switch tabs.
  • Fix: searching for selection and opening URL in selection stopped working in Firefox Nightly.
Last edited by Lemon Juice on May 9th, 2015, 2:39 pm, edited 1 time in total.
*** SeaMonkey — weird name, sane interface, modern bowels ***
Mouse Gestures for SeaMonkey/Firefox
Convert Fx and TB extensions to SeaMonkey
pintassilgo
Posts: 200
Joined: August 30th, 2013, 3:50 pm

Re: [Ext] Mouse Gestures Suite

Post by pintassilgo »

Excellent!

Ten days ago I'd installed MGS, tested it and quickly uninstalled when I noticed that it didn't support user-created actions (JavaScript).

Now, finally seems to have emerged a candidate to replace Mouse Gestures Redox, which still works perfectly but is no longer developed.

I'll try again.
Lemon Juice
Posts: 788
Joined: June 1st, 2006, 9:41 am

Re: [Ext] Mouse Gestures Suite

Post by Lemon Juice »

pintassilgo wrote:Excellent!

Ten days ago I'd installed MGS, tested it and quickly uninstalled when I noticed that it didn't support user-created actions (JavaScript).

Now, finally seems to have emerged a candidate to replace Mouse Gestures Redox, which still works perfectly but is no longer developed.

I'll try again.

Great! For me user scripts was the last of the *major* missing features in the mouse gestures extension so I decided to implement it. Let me know how it works for you.
*** SeaMonkey — weird name, sane interface, modern bowels ***
Mouse Gestures for SeaMonkey/Firefox
Convert Fx and TB extensions to SeaMonkey
pintassilgo
Posts: 200
Joined: August 30th, 2013, 3:50 pm

Re: [Ext] Mouse Gestures Suite

Post by pintassilgo »

Some requests:

- scroll wheel navigation should work on entire ChromeWindow (I'm used to doing it over the urlbar);
- minimal gesture size (in pixels) should be customizable (sometimes I do very lazy movements that aren't recognized);
- HIGH PRIORITY (in my opinion, of course): customizable rocker gestures (only left->right and right-> left for now, what about combinations with middle button?)
- should allow multiple trigger buttons (my "main" trigger is right button, but I would like to control zoom with middleclick+scroll)

/\ These: parity with MG Redox

Advantages of MGS:
- much much more predefined functions
- much much better to create user-defined functions
- active development!
- grab and drag integrated, although:

\/ This: parity with Grab and Drag

- should have "Momentum" setting to middle button scrolling (stay scrolling in the same speed when I release middle click until I click again or scroll - hard to explain, but Grab and Drag do it flawlessly).

For now I think that's it.

Thanks and congratulations for the work!
User avatar
Rollo_Tommasi
Posts: 29
Joined: June 14th, 2014, 10:21 am

Re: [Ext] Mouse Gestures Suite

Post by Rollo_Tommasi »

Maybe is just an impression or because I switched to Debian 8, but version 2.0.0 seems smoother, in SeaMonkey and also in IceWeasel.

Anyway, thanks!

:)
Lemon Juice
Posts: 788
Joined: June 1st, 2006, 9:41 am

Re: [Ext] Mouse Gestures Suite

Post by Lemon Juice »

pintassilgo wrote:- scroll wheel navigation should work on entire ChromeWindow (I'm used to doing it over the urlbar);


pintassilgo wrote:- HIGH PRIORITY (in my opinion, of course): customizable rocker gestures (only left->right and right-> left for now, what about combinations with middle button?)

I'll keep those in mind but I'm afraid your high priority means most work of all these so I'm not promising anything soon :mrgreen:

pintassilgo wrote:- should allow multiple trigger buttons (my "main" trigger is right button, but I would like to control zoom with middleclick+scroll)

Are you talking about scroll wheel navigation? Middle button zooming with middle button pressed?

pintassilgo wrote:- minimal gesture size (in pixels) should be customizable (sometimes I do very lazy movements that aren't recognized);

At least this one is easy - it appears as though only a pref needs to be added in options. I'll add it in the next release.

pintassilgo wrote:- should have "Momentum" setting to middle button scrolling (stay scrolling in the same speed when I release middle click until I click again or scroll - hard to explain, but Grab and Drag do it flawlessly).

Interesting idea :).
Thanks for your comments!

Rollo_Tommasi wrote:Maybe is just an impression or because I switched to Debian 8, but version 2.0.0 seems smoother, in SeaMonkey and also in IceWeasel.

I don't want to spoil your fun but I think there is nothing in version 2.0.0 that would make it smoother (or rougher!) as compared to the previous version - but I'm glad it's working well for you :D
*** SeaMonkey — weird name, sane interface, modern bowels ***
Mouse Gestures for SeaMonkey/Firefox
Convert Fx and TB extensions to SeaMonkey
pintassilgo
Posts: 200
Joined: August 30th, 2013, 3:50 pm

Re: [Ext] Mouse Gestures Suite

Post by pintassilgo »

Lemon Juice wrote:
pintassilgo wrote:- should allow multiple trigger buttons (my "main" trigger is right button, but I would like to control zoom with middleclick+scroll)

Are you talking about scroll wheel navigation? Middle button zooming with middle button pressed?


Yes. Wheel scroll while pressing middle button (simultaneous action on the same button). But without compromising switch tabs by right button + scroll.
User avatar
raj_bhaskar
Posts: 1946
Joined: November 7th, 2002, 3:50 am
Location: Glasgow, Scotland
Contact:

Re: [Ext] Mouse Gestures Suite

Post by raj_bhaskar »

I've just switched to MGS from Mouse Gestures Redox. Thanks for this! I've noticed a wee thing though that you might want to look into (low priority though). The first thing I did was to switch the trigger button from the right button to the middle (wheel) button, as that's what I've been used to for years. I then noticed that I couldn't turn autoscroll off (Middle Button Scrolling on 'general preferences' tab). I think these two things should be independent of each other. Indeed, when I changed the trigger button back to right, the 'Middle Button Scrolling' preference was enabled, I was able to turn it off and then put the trigger button back to 'middle'.

Oh, and could you also make the preferences window non-modal, so that you can continue to use the suite while looking at preferences (very useful while writing a forum post about extension preferences, for instance ;) ).
Lemon Juice
Posts: 788
Joined: June 1st, 2006, 9:41 am

Re: [Ext] Mouse Gestures Suite

Post by Lemon Juice »

raj_bhaskar wrote:The first thing I did was to switch the trigger button from the right button to the middle (wheel) button, as that's what I've been used to for years. I then noticed that I couldn't turn autoscroll off (Middle Button Scrolling on 'general preferences' tab). I think these two things should be independent of each other. Indeed, when I changed the trigger button back to right, the 'Middle Button Scrolling' preference was enabled, I was able to turn it off and then put the trigger button back to 'middle'.

Indeed, I see the problem. I think setting the trigger button to the middle button should automatically turn off middle button scrolling because these two features cannot sensibly co-exist.

raj_bhaskar wrote:Oh, and could you also make the preferences window non-modal, so that you can continue to use the suite while looking at preferences (very useful while writing a forum post about extension preferences, for instance ;) ).

Okay, I may look into this but I can see some minor issues caused by this being non-modal so I'll need to test things further. But you can open two browser windows and the modal will be glued only to one of them so you can write a forum post in the second window while the modal is positioned to the side (and linked to the first window) :idea: :lol:

Today, I released version 2.0.1 that fixes a problem with saving gesture properties for built-in functions (the window didn't close due to a js error).
*** SeaMonkey — weird name, sane interface, modern bowels ***
Mouse Gestures for SeaMonkey/Firefox
Convert Fx and TB extensions to SeaMonkey
User avatar
raj_bhaskar
Posts: 1946
Joined: November 7th, 2002, 3:50 am
Location: Glasgow, Scotland
Contact:

Re: [Ext] Mouse Gestures Suite

Post by raj_bhaskar »

But you can open two browser windows and the modal will be glued only to one of them

Hah, I didn't know that! Thanks for the tip, I'll bear it in mind :). And thanks for looking at the middle-button problem too.
Lemon Juice
Posts: 788
Joined: June 1st, 2006, 9:41 am

Re: [Ext] Mouse Gestures Suite

Post by Lemon Juice »

A small update: Mouse Gestures Suite 2.1.0 released!

Changes in 2.1.0 relative to 2.0.1:
  • added option to change movement sensitivity for mouse gestures (in pixels)
  • new parameter passed to native scripts: upEvent (=mouseup event)
  • fix: always disable native autoscroll when middle button gestures are enabled
  • fix: some changes were not applied in open windows after editing custom functions
  • fix: custom scripts in native scope were always executed without checking defined window types
  • fix: js error when scroll wheel gesture was set to custom function

A user from AMO comment section asked about a gesture for a recently closed tabs menu. Such a function is not built in currently but it can be done if you install the Undo Closed Tabs Button extension. This is a good example of how mouse gestures can interact with other extensions. In version 2.1.0 add this script in native scope:

Code: Select all

var button = document.getElementById("uctb-toolbar-button");

if (button && upEvent) {
  undoClosedButt.rightClickMenu(button, upEvent);
  var popup = document.getElementById("uctb-menu");
  popup.moveTo(upEvent.screenX, upEvent.screenY);
}

The undo closed tab button must be placed in some visible place for this script to work. It will basically remotely press the button and move the context menu to where the mouse cursor is. This will work for normal mouse gestures but not for rocker gestures (I don't know why - probably some Undo Closed Tabs Button event type requirement).

(Undo Closed Tabs Button works in SeaMonkey as well after conversion)
*** SeaMonkey — weird name, sane interface, modern bowels ***
Mouse Gestures for SeaMonkey/Firefox
Convert Fx and TB extensions to SeaMonkey
wmarcello
Posts: 262
Joined: December 13th, 2003, 7:30 am
Location: NB, Canada

Re: [Ext] Mouse Gestures Suite

Post by wmarcello »

One reviewer on the AMO site requested Pin/Unpin Tab functionality. I can't reply there, but I'll leave this here for posterity. This worked for me as a custom script.

Code: Select all

var curTab = gBrowser.selectedTab;

if(curTab.pinned)
    gBrowser.unpinTab(curTab);
else
    gBrowser.pinTab(curTab);
Lemon Juice
Posts: 788
Joined: June 1st, 2006, 9:41 am

Re: [Ext] Mouse Gestures Suite

Post by Lemon Juice »

Very nice! I would improve it just a little bit:

Code: Select all

var curTab = tab || gBrowser.selectedTab;

if(curTab.pinned)
    gBrowser.unpinTab(curTab);
else
    gBrowser.pinTab(curTab);

This makes it possible to pin/unpin a tab other than the current one by starting a gesture on that tab.
*** SeaMonkey — weird name, sane interface, modern bowels ***
Mouse Gestures for SeaMonkey/Firefox
Convert Fx and TB extensions to SeaMonkey
Post Reply