vimperator/vimperator-labs

Feature wishlist for WebExtensions port

bovine3dom opened this issue Β· 77 comments

See #705 first. I'd like to use this issue specifically to understand what features people would miss from Vimperator, so that we can try to ensure that any WebExtensions port/successor contains them. What follows is my personal opinion:

High priority

  • user remappable keys to arbitrary commands (e.g. bind s ogoogle )
  • moving around page
  • link hinting mode
  • insert/passthrough mode
  • find in page mode
  • history navigation
  • tab switching / navigation (:buffer style)
  • opening/closing URLs / tabs / windows
  • consistent UX: e.g, works on about:newtab, about:home, hopefully others.

Medium priority

  • bookmarks
  • hide Firefox GUI
  • window switching

Low priority

  • download UI (can't use about:downloads unless Firefox devs change their minds).
  • :js
  • VIMPERATOR_INIT

Please disagree with me below πŸ˜„.

whirm commented

The external editor functionality (CTL+I) Is super useful to me, I use it very often to edit all sorts of stuff in Emacs.

whirm commented

I use it with Spacemacs/evil if that offends you any less ;)

MoSal commented
  • Extended hints.
  • :set gui
  • :tab* commands.
  • :style* commands.
  • :bmark (with -keyword and -title).
  • :bdelete (with arg).
  • :restart

Looks like a decent list but needs to be reconciled with what is possible and not possible with web-ext. For example, hiding the firefox GUI is probably not going to be possible even with the new theming support.

Also, can you elaborate some more about "moving around the page"?

I mean hjkl, ^D, ^U etc.

I think it makes sense to work out which features we desire most, and then talk about feasibility after, so we know how hard to fight, and where we can make compromises more easily.

The theming, for example, is something we can lobby for, and if we must, we could make our own WebExtensions API to hide GUI which can be used in the developer edition only.

Oh, of course, those kind of movement.

We probably should prioritize things by web-ext support as well. So, high things should be core vimperator stuff and those that web-ext supports (well, key bindings are an exception to something we need to have regardless of web-ext support).

thanks for the list
ctrl+I is awesome. It is good to see that there is a way
I also use ctrl+t quite a bit. really handy

The theming, for example, is something we can lobby for, and if we must, we could make our own WebExtensions API to hide GUI which can be used in the developer edition only.

Agree, when the rest is mature, we shouldn't be too scared of changing FF itself. Just small changes close always to upstream.

We probably should prioritize things by web-ext support as well.

Definitely.. I would focus on what we can do easily first, then start the extreme tweaks ;)

I think this bug will be most useful to implementers as a list of desired features, without concern for whether they can be implemented or not. Just tell us what you would miss from Vimperator if it was gone.

Let implementers worry about filtering by feasibility - feasibility will be a moving target, anyway.

Some more

  • o and O to open url/search (modifying current in upper case)
  • t and T to open a new tab( modifying current in upper case)
  • d to close a tab
  • p and P to open URL in clipboard in tab (current or newr
  • u to bring back a closed tab
  • CTRL+D CTRL+U CTRL+E CTRL+Y
  • vimlike jumps (G, gg, '' ...)
  • quick marks
  • maps keys to javascript code (low priority, but I use it a lot also)
  • find (/) with hlsearch support, n and N to navigate results
  • CTRL H and CTRL L to navigate history

well, some have already been said

Those are the important ones I would say.

I would however like to add support for custom search engines, e.g. use yt for searching on youtube just like is possible in the normal address-bar and in vimperator now.

@cmcaine makes sense. We can then filter things later.

MoSal commented

Are we supposed to list everything?

More features:

  • :set complete
  • :set encoding
  • :zoom (with value)

We are just stating what is more useful for now. Anyway, for completeness I will post here the main sections in Vimperator help. This does not mean that we are doing all this, but just to help people remember what they use the most.

  • Browsing: Basic mappings and commands needed for a browsing session (how to open a web page or go back in history).
  • Buffer: Operations on the current document like scrolling or copying text.
  • Command-line mode: Command-line editing.
  • Insert mode: Insert-mode editing.
  • Options: A description of all options.
  • Text search commands: Searching for text in the current buffer.
  • Tabs: Managing your tabbed browsing session.
  • Hints: Selecting hyperlinks and other page elements.
  • Key mappings, abbreviations, and user-defined commands:
  • Defining new key mappings, abbreviations and user commands.
  • Expression evaluation: Executing JavaScript.
  • Marks: Using bookmarks, QuickMarks, history and local marks.
  • Repeating commands: Using macros to repeat recurring workflows.
  • Automatic commands:
  • Automatically executing code on certain events.
  • Printing: Printing pages.
  • Vimperator's GUI: Accessing Firefox menus, dialogs and the sidebar.

I use the following .vimperatorrc settings on a vanilla install:

; move left tabs with SHIFT+J
nmap J gT
; move right tabs with SHIFT+k
nmap K gt
; use a home row mapping for following links
set hintchars=hjklasdfgyuiopqwertnmzxcvb

Common operations for me include:

  • Normal mode:
    • follow links - f, F
    • tabopen - t, T
    • open - o, O,
    • (undo) close tab - d, u
    • page marking and jumping - m, '
    • jump top/bottom - g, G
    • copy - y
  • Command mode:
    • tab buffers - :b, :ls
    • yank <a> names - ;#
    • copy links instead of following them - ;y

IMPORTANT - The primary reason why I find vimperator useful over other clones (like vimium for Chrome) is the command mode bar. Additionally, navigating tabs doesn't annoyingly force-focus the URL bar like it does in Chrome. I hope going forward vimperator doesn't adopt this poor behavior. I like using the ESC key.

If I think of more, I'll update my comment.

oh yeah, forgot two

y - copy the URL of current tab
CTRL+^ go to last tab. This one is awesome! ( or CTRL+6)

rr- commented

What I use, non-exhaustive list:

  • command mode and normal mode like someone mentioned earlier
  • f F
  • ;i and similar
  • gg, G, 50j, etc.
  • [[ and ]], very underrated
  • tabs (gt, d, P, :xall)
  • system clipboard (y, P)
  • history (H, L)
  • bookmarks (A)
  • bookmarks II - autocomplete in tab open (surprisingly, I don't use history in autocomplete)
  • zooming (4zi, 4zI)
  • keyboard shortcuts remapping (duh)
  • GUI (hide everything but tabs and command line) (we'll probably have to pester Mozilla to include this natively)
  • external form / textarea editing with gvim (probably process spawning will be considered too insecure to include in web extensions)
  • :js - open with mpv, including custom hint mode (same note as above - I'd really like this to work in some form)
  • integration with <input type=file> (see my pull requests, btw) to avoid the hellish GTK file dialog
  • :set hintchars=123456
  • :set browser.* like this
    "fit image to window
    noremap zf :set! browser.enable_automatic_image_resizing=true<CR><Esc>:reload<CR>
    
    "show image at original size
    noremap zo :set! browser.enable_automatic_image_resizing=false<CR><Esc>:reload<CR>
    

Process spawning is fine: we just do the same procedure as #729 (comment)

We'd probably just define a "native application" that's a python script that just runs whatever we ask it to, and use that script for all external invocations.

set browser. doesn't do anything for me... Is it intended to make changes to the settings on about:config?

rr- commented

Yes, I meant the family of browser. options followed by anything browser-specific from about:config

Ah, you have to use set!, with the !. Cool: didn't know about that. Not sure we'll be able to reimplement, but thanks for the use case.

mavaa commented

Don't think there's anything here I'm missing that hasn't already been mentioned, but the f and F keys always worked surprisingly well for me when switching from Vimium+Chrome to Vimperator+Firefox, just because it seems to highlight many links/buttons that Vimium couldn't Ugly look at the MS Outlook Web App

Slightly tangential to this issue: what do people think about redirecting Vimperator users (or maybe a subset of users) to a survey of feature importance in some future update?

One of my pet hates is when an extension opens tabs with changelogs and a donation button, but I think as a one-off, this might be acceptable due to the following benefits:

  • We'd get a much more representative sample of users compared to the hyper-engaged people we have here on GitHub
  • We'd have some ammunition when begging for extensions to the WebExtensions API: e.g, look, we have 500 people who say that they want to be able to hide the GUI.

We'd obviously need to put a lot of thought into the survey to make sure it was useful and worth the imposition on users.

rr- commented

At very least, this issue is a good place to gather the feature set to put in such a survey.

  • Commandline/statusbar
  • o, O, t, T, w, W – they must open something like the completion in Vimperator.
  • f, F and ;y to follow and copy links
  • / with the current behavior, the normal findbar doesn't work for me
  • y and p to copy and paste URL
  • Mappings that can override Firefox keybindings like Ctrl+Q
  • b to show and switch buffers
  • :set gui=none – just me, the content and a statusbar
  • Some kind of NoScript integration. Showing the popup would be enough.
  • Keyboard navigation of course (h, j, k, l, gg, G)
  • Open an external editor (Ctrl+I) would be nice
  • Commands to change preferences (:set! …)
  • Tab commands (d, u, :tabdetach, :tabmove)
  • Passthrough mode (Ins)

everything @SammysHP mentions is essential to me, as well. I would add:
[[ and ]] for pagination
and go* + gn* for accessing qmarks.

I did not know ]] !!!!!

genius!!!!!!!!!!!

MoSal commented

There is also C-a and C-x for incrementing/decrementing the last number in URL.

There is also C-a and C-x for incrementing/decrementing the last number in URL.

goddamn awesome!

I use C-6 or C-^ a lot to switch to the last used tab

In addition to what has been already listed here β€” :set gui=none, buffers!, quickmarks and local marks, ]], obviously f/F, etc. β€” I really, really love the vim-like self-documentation :help + key or :help + command/topic.

(I'd say that I'd have been even more ecstatic about an emacs-like C-h k (which has the two advantages that one can just press the keys exactly as one would use them (i.e. just press C-h k C-a on your keyboard, rather than type in :help <C-a>) and that it's updated to user-modifications, in case you forget what you added to your config a year ago), but I'd probably be lynched, it'd be a new feature request, and keeping the existing :help in the webextension vimperator would still be amazing.)

Half page navigation ctrl+u and ctrl+d are additional shortcuts I enjoy using.

tecfu commented

I use caret mode / visual mode extensively for search and copy.

In addition to what is already listed I frequently use gu

oh gu.... don't use it much but reminded me that I do use gr a LOT

And I forgot ctrl+w in insert mode or when editing an URL (e.g. from a wikipedia page to another: shift+O, then ctrl+w, a letter or two and tab + enter)

timss commented

Nice list, but I'd personally bump js up to medium because it's so important for extensibility with other addons (TST, ..), user scripts and even running scripts/programs in your OS from FF1. Functions and commands using what is really eval() with sugar are something I use all the time.

I'd also like to echo the usefulness of set!. Not only can you configure most of FF through these preferences, but also many addons. Reinstalling or deploying my config to new profiles/installations isn't that tiresome much because of this.

1 Altough I realise this doesn't seem like it's going to be possible in the same way as we have now in the era of WE anytime soon.

Biggest, almost inevitable, loss for me will/would be the gui=None. I genuinely dislike having an url bar eat up vertical space.

@timss, interop with addons like TST will now rely on the active support of those addon developers (see below) and may be somewhat complicated as the addons will execute in different processes. js eval is not otherwise problematic.

@rr, @SammysHP, @timss, on set! word of mozilla is thus:

18:07 <@aswan> colinc: there won't be general access
18:07 <@aswan> we have apis like privacy, proxy, etc that give controlled access to individual prefs
18:07 <@aswan> and we can add more like those

It's also worth noting that webextensions will not be able to add keys to about:config, so no configurability of addons will be possible through that interface in the future. Interop with other addons will have to be done by either the addon community agreeing on some common API/configuration system or by pull requests on each project.

If anyone has the time to look into this, it could be an interesting project for Vimperatoralikes and the wider webextension community.

This thread is a goldmine of vimperator features I had no idea about. Quite ironic that they are the features in the greatest danger of being discontinued.

@Travolter, It will be possible to hide the tab bar, but Mozilla devs are strongly opposed to allowing the navigation bar to be hidden. See: https://bugzilla.mozilla.org/show_bug.cgi?id=1332447

I don't understand their security concerns, but they seem fairly set about it. At some point, I'd like to get some direct contact with someone from the security team to try and understand their position better.

If any of you do decide to post on bugzilla, please remember that the only productive way to engage is politely and constructively - webextensions, multiprocessing and the other breaking changes are, IMHO, good things for firefox. Too many people are already ranting unjustifiably at the Firefox team about this.

@cmcaine I had read that bug, and I am aware of the problem. It's why I mentioned it, to highlight how important that feature is to some of us. I sincerely hope a solution can be found. As far as I am aware their security concerns have to do with the green SSL icon and probably url redirecting. Which both only make sense for the non tech savvy users, not for people who go around messing with their browser UI.

dasJ commented

I could live with a subset of the functionality proposed here. The question is: When do we start? Who is 'we'? Will there be a new repository in the vimperator/ namespace or does somebody else take it?
By quickly reading over this thread, I found people saying there willing to contribute and I think the earlier the project gets started, the better.
Maybe WebExtensions doesn't support all features we need, but we should starting to implement the functionality it already has.

So does anyone have more information on the near future? @gkatsev

After switching to chrome for a short while because of my job, I had to use cvim. A huge problem with cvim (which is much closer to vimperator than vimium) is that it is based on injecting some code in each page. The problem with that is that a) not all pages are injectable (eg pdfs and chrome links) and b) no control until the page has sufficiently loaded.

How well is the webextension port doing in this respect?

Slightly tangential to this issue: what do people think about redirecting Vimperator users (or maybe a subset of users) to a survey of feature importance in some future update?

FF57 is going to be released on November 14th. I think it might be worth having a kind of "exit poll" - one last update to the AMO within the next weeks, directing people to a survey containing:

  • a short note saying that Vimperator is dying and explaining why,
  • a short list of alternatives (Qutebrowser et al),
  • and a text area asking people to list their favourite features of Vimperator separated by newlines.

Hopefully such a survey would be useful to any successor projects, and also to the users themselves.

timss commented

Good idea, @bovine3dom πŸ‘

How about a Google Forms survey with public results? I'd be willing to make one, but it would be nice with some feedback/collaborators before it's published.

cc @maxauthority @gkatsev (who have access to AMO).

I'd be happy to give feedback / ideas.

For a start - I think most people have missed that using Firefox's "Extended Support Release" will let them use Vimperator until June 2018 [1], so it might be wise to mention that.

Other alternatives:

  • Qutebrowser
  • uzbl
  • Vimium-FF [2]
  • Tridactyl (maybe)
  • Palemoon & Pentadactyl

[1] https://blog.mozilla.org/addons/2017/10/03/legacy-add-on-support-on-firefox-esr/
[2] https://addons.mozilla.org/en-GB/firefox/addon/vimium-ff/

Don't have much else to add that others haven't (I'd be happy to contribute to the exit poll if desired), but

became a dad 7 weeks ago

Congratulations @maxauthority!

Some more alternatives other than what @bovine3dom mentioned:

  • luakit (recently gained a lot of traction again after making a WebKit2-fork the official "successor")
  • vimb (quite minimal, and not much activity recently...)
  • Saka Key (another Firefox WebExtension)

(disclaimer: I haven't used any of the alternatives for longer than a few minutes, with the exception of qutebrowser, which I'm the author of)

And congratulations @maxauthority on becoming a dad! Don't worry about not being responsive, family is more important than GitHub πŸ˜‰

timss commented

Congratulations @maxauthority ! :D


I've created an initial version of the survey which I'd like feedback on/help completing.

https://docs.google.com/forms/d/1WtS8eBXpLIyVXl2j937N-PP4nKX7ZjKL7P5cCEn2nc0/edit?usp=sharing

Feel free to add stuff or comments, especially where I've added TODOs. I'm not aware of any easy way to share edit permissions without anyone possibly tampering with it (now or later), but hopefully we'll be OK. Responses will be deleted before survey is published on AMO etc.

(disclaimer: I haven't used any of the alternatives for longer than a few minutes, with the exception of qutebrowser, which I'm the author of)

Similarly, I don't have experience with all of these addons or browsers. Please keep in mind when reviewing the survey :)

That's a good start, I think.

I don't quite see the point of section 3. Everyone viewing the survey will be using Firefox and Vimperator, so almost everyone will just answer that. I don't think it's a very interesting question.

I'd rather keep it to either just a free text area asking people what they liked in Vimperator, or that and a simple "Do you want a replacement for Vimperator?". Currently, there's a lot to scroll through.

Edit for clarity: I think the other sections should be kept.

timss commented

Thanks for having a look. I like your introduction better, and the colors (if that were you) :)

I was sort of thinking it could serve as a survey not only for current users of Vimperator, but also for those who've moved to other projects. Although, maybe it's better for this survey to be focused on informing about alternatives and gathering interesting user info (primarily what users like about Vimperator).

[..] or that and a simple "Do you want a replacement for Vimperator?".

Maybe this fits into section 4?

Currently, there's a lot to scroll through.

Fair enough, was thinking the same! Although, sections will be paginated I believe.

I've made some tiny stylistic changes.

Regarding the "favourite features" section, I think that in addition to the lists listed in this issue, we could look at the feature list from :helpall (copied verbatim below). This would have the advantage that our biases wouldn't result in some features being missed from the survey.

* Vim-like keybindings (h, j, k, l, gg, G, 0, $, ZZ, <C-f>, etc.)

* Ex commands (:quit, :open www.foo.com, …) with a proper command line

* Tab completion available for all commands, showing suggestions while you type

* Hint mode (start with f to follow a link)

* Extensions! Yes, you can extend Vimperator's functionality with scripts just like you can extend Firefox with extensions

* Explore JavaScript objects with :echo window and even context-sensitive tab completion

* Easily customizable GUI (easily hide all GUI elements with :set gui=none)

* Ability to :source JavaScript files, and to use a ~/.vimperatorrc file with syntax highlighting if you install vimperator.vim

* Easy quick searches (:open foo will search for "foo" in google, :open ebay terminator will search for "terminator" on ebay) with support for Firefox keyword bookmarks and search engines

* Count supported for many commands (3<C-o> will go back 3 pages)

* Beep on errors

* Marks support (ma to set mark a on a web page, 'a to go there)

* QuickMarks support (quickly go to previously marked web pages with go{a-zA-Z0-9})

* :map and :command support (and feedkeys() for script writers)

* :time support for profiling

* Move the text cursor and select text with Vim keys and a Visual mode

* External editor support

* Macros to replay key strokes

* AutoCommands to execute actions on certain events

* A comprehensive help system, explaining all commands, mappings and options

I think that the main points present in the feature list but not mentioned in the GitHub issue are :time and AutoCommands (I had not been aware of these, but it's possible that they have a dedicated following somewhere on the internet).

@aplaice there are so many features that I think just asking people to write their own in is more sensible. Just scroll up through this thread to see what diversity there is.

I think it is important to keep it as short and simple as possible. Potentially, it might be worth having three or four main options for alternatives, and then to provide a link to a related projects page with more detail.

there are so many features that I think just asking people to write their own in is more sensible. Just scroll up through this thread to see what diversity there is

It's easy to forget some feature you use. Maybe it's worth adding a link to this thread? I learned a bunch of nice features myself from it.

I've tweeted a sad message to @mozilla and @firefox that vimium is basically the only reason I'm using Firefox. I've now got to switch to Chrome because Vimium is the second most comfortable extension I use (not as comfortable or featured as vimperator). https://twitter.com/sag47/status/917434763001999360

Also, it seems a bit silly to ask people to put a wishlist in the poll (with results opaque to the users) when this GitHub issue exists. You should just reference it if you still want to do the exit poll.

@samrocketman I still don't get this argument. You are saying you are switching to a browser (Chrome) with even less opportunities for add-ons (i.e. less powerful add-ons), because the new Firefox has less powerful add-ons APIs than the old Firefox, but still more than Chrome... and growing.

@samrocketman just use Firefox ESR. You're safe until June then.

Edit: as for the poll: it has a lot less friction than asking someone to make a GitHub account. Personally, I'm particularly interested in what the "silent majority" who are too busy / lazy to comment here would like. Also, reading thousands of comments on a GitHub issue would be much less nice than a spreadsheet.

@Croydon I'm not really asking you to understand my argument. My statement is fairly simple and a preference for me. I don't really want to hijack this issue to convince you of my point of view. We can chat on twitter if you'd like to continue the conversation πŸ˜‰ I'm @sag47.

In general, if volunteer development is not enough (or currently available Firefox APIs are not enough), then hopefully Mozilla/Firefox will listen and provide the necessary APIs or development support necessary for vimperator to continue.

@bovine3dom I'll search my package repository for Firefox ESR. That's a good idea πŸ˜„ if it allows me to use vimperator a little longer ❀️

I think the purpose of the survey should be:

  1. To inform users that vimperator is dying
  2. Inform them of alternatives
  3. Inform us about what features people like and how important they are to them

I think 2 should be mostly done via a section in the README on this project. That makes the content more accessible and discoverable, means we can use proper markup and shortens the exit poll.

I suggest that the form should be:

  1. Intro and goodbye
  2. Brief survey of vimperator features
  3. Link to a markdown page/wiki page in this repo talking about alternatives
timss commented

It's easy to forget some feature you use. Maybe it's worth adding a link to this thread? I learned a bunch of nice features myself from it.

Also, it seems a bit silly to ask people to put a wishlist in the poll (with results opaque to the users) when this GitHub issue exists. You should just reference it if you still want to do the exit poll.

It was already referenced in the introduction, but I've added another link to this issue in the section in question (4).

I think 2 should be mostly done via a section in the README on this project. That makes the content more accessible and discoverable, means we can use proper markup and shortens the exit poll.

Good idea. Similar lists can be found in your tridactyl repo, or qutebrower's, both of which have been helpful. The one in Vimperator should be fairly short and unopinionated though, just as was intended in the survey.

I could try to look into it when I got some time on my hands, but until then feel free to create a PR. Take whatever is included in the alternatives section of the survey now deemed useful.


@bovine3dom I'll search my package repository for Firefox ESR. That's a good idea πŸ˜„ if it allows me to use vimperator a little longer ❀️

It's available in some distros (Debian, but only PPA on Ubuntu), but Firefox is fully self contained and is therefore also easy to install manually. Personally I have a few installations laying around in /opt/firefox with some symlinks for latest esr etc.

See PR #800.

timss commented

Merged and linked to in the survey. The lack of formatting options in Google Forms is kind of annoying, so it might be better to just make it a seperate section for some boldness and stuff.

Since alternatives are gone, I opted for removing the section about which current browsers and if any, which Vim- or Vimperator-like addons/extensions people are currently using. By now it felt out of place.

As for the last free text section where we ask to list favorite features, someone filled in and replaced the question title with his/her answer ("Keyboard shortcuts, custom commands, GUI modifications, external commands execution"), lol. I tried remembering what it used to say, but feel free to modify however you see fit, @cmcaine, @bovine3dom or others. And thanks for the help so far! :)

MoSal commented

It's available in some distros (Debian, but only PPA on Ubuntu), but Firefox is fully self contained and is therefore also easy to install manually. Personally I have a few installations laying around in /opt/firefox with some symlinks for latest esr etc.

@timss @bovine3dom It should be noted that profiles are no longer backwards-compatible (since FF55, I think). So, you can't go back from FF56 to ESR with the same profile.

timss commented

Well that's nice to know..

@MoSal I've noticed no issues when I started using ESR this week, on macOS, Linux, and Windows. All my windows, tabs, addons, and preferences were correctly restored as far as I could tell. Any specific problem I should be expecting?

MoSal commented

@laurentbardin

I wouldn't know what to expect.

Firefox does not support downgrades, even though this may have worked in past versions. Users who install Firefox 55+ and later downgrade to an earlier version may experience issues with Firefox.

Reading this in the release notes deterred me enough to not even try.

@MoSal Thanks for the heads up, I missed that changelog item for some reason. So far, so good, fingers crossed.

timss commented

FYI details regarding the "EOL" of Vimperator as well as the survey is now up on vimperator.org and AMO. Thanks @maxauthority and @gkatsev

I've locked the survey and it's now available on the following URLs:

That's great. Thanks to all involved.

Is there any intention to update Vimperator to have a pop up with the same information so that current users can be informed?

Just a new tab that shows up once with the survey would be enough I think.

timss commented

And thanks to you and the others here who helped out with the survey, documentation of alternatives and of course a special thanks to those who are currently working with alternatives to Vimperator- or vim-like browser or addon alternatives! πŸ‘ Personally I'll stick to ESR for a while longer, it's going to be hard to change even though the work looks promising.

There are as far as I know no plans for something like that, no, but it could probably be done using the same piece of code responsible for opening :help the first time:

// first time intro message

I'm looking into creating something.