Vimb - the vim like browser is a webkit based web browser that behaves like the vimperator plugin for the firefox and usage paradigms from the great editor vim.

Vimb - the Vim-like browser

Build Status License: GPL v3 Latest Release

Vimb is a Vim-like web browser that is inspired by Pentadactyl and Vimprobable. The goal of Vimb is to build a completely keyboard-driven, efficient and pleasurable browsing-experience with low memory and CPU usage that is intuitive to use for Vim users.

More information and some screenshots of Vimb browser in action can be found on the project page of Vimb.

Features

  • it's modal like Vim
  • Vim like keybindings - assignable for each browser mode
  • nearly every configuration can be changed at runtime with Vim like set syntax
  • history for ex commands, search queries, URLs
  • completions for: commands, URLs, bookmarked URLs, variable names of settings, search-queries
  • hinting - marks links, form fields and other clickable elements to be clicked, opened or inspected
  • SSL validation against ca-certificate file
  • user defined URL-shortcuts with placeholders
  • read it later queue to collect URIs for later use
  • multiple yank/paste registers
  • Vim like autocmd - execute commands automatically after an event on specific URIs

Packages

dependencies

  • gtk+-3.0
  • webkit2gtk-4.0 >= 2.20.x
  • gst-libav, gst-plugins-good (optional, for media decoding among other things)

Install

Edit config.mk to match your local setup. You might need to do this if you use another compiler, like tcc. Most people, however, will almost never need to do this on systems like Ubuntu or Debian.

Edit src/config.h to match your personal preferences, like changing the characters used in the loading bar, or the font.

The default Makefile will not overwrite your customised config.h with the contents of config.def.h, even if it was updated in the latest git pull. Therefore, you should always compare your customised config.h with config.def.h and make sure you include any changes to the latter in your config.h.

Run the following commands to compile and install Vimb (if necessary, the last one as root). If you want to change the PREFIX, note that it's required to give it on both stages, build and install.

make PREFIX=/usr
make PREFIX=/usr install

To run vimb without installation for testing it out use the 'runsandbox' make target.

make runsandbox

Mailing list

Similar projects

license

Information about the license are found in the file LICENSE.

about

Comments
  • Cookies file randomly reset

    Cookies file randomly reset

    I can't pinpoint the trigger, but in my setup the cookies file seems to get randomly reset, such that I lose all my cookies and have to re-login to all sites if I open a new window (existing windows retain their session cookies and continue to work).

    This was discussed in #154 but I have fixed the issues related to the values of cookie-expire-time and cookie-timeout, and this does not seem to be related AFAICT. I've reproduced the issue on two separate laptops (both running arch linux, both running vimb 2.10 (although slightly different commits)).

    For now I'd just be happy to hear if anybody else has encountered the same issue, otherwise it is possibly due to my particular setup (both laptops have the same dotfiles, packages, etc. so almost identical). Any other clues to help debug this would be appreciated, I'm at a loss for how to figure out what's going on.

  • Motion commands are ignored

    Motion commands are ignored

    % /usr/pkg/bin/vimb3 --bug-info                                                                                                       ~
    Commit:          3.0-alpha-56-gbcccce8
    WebKit compile:  2.16.6
    WebKit run:      2.16.6
    GTK compile:     3.22.19
    GTK run:         3.22.19
    libsoup compile: 2.58.2
    libsoup run:     2.58.2
    Extension dir:   /usr/pkg/lib/vimb
    

    Motion commands (as documented in vimb(1) man page) are ignored.

    Steps to reproduce

    Install vimb3-git available on pkgsrc-wip in pkgsrc/wip/vimb3-git, install it via `make install' and then execute it via:

    % vimb3 -p empty
    

    (the `-p empty' profile is used just to avoid possible honoring of - already present - vimb2 config files)

    And then try type j, k, gg, G, CTRL-D, CTRL-U, CTRL-F or CTRL-B to scroll a web page.

    Expected behaviour

    As documented in vimb3(1) man page I expect them to scroll the current web page.

    At least for gg I can see that on the status bar a g is printed on the bottom right, and after the second g it's cleaned (exactly as vimb 2.12).

    Actual behaviour

    For neither of the above listed scrolling commands no action is performed, i.e. all the key combination seems ignored.

    Please note that pressing Space or Shift-Space works.

    Apart that other commands like gu, r, o, etc. correctly works.

    Sorry for the incompleteness of this bug report but unfortunately I do not have any idea on how to debug it. Of course, any tips about that are welcomed (I can rebuild it via debug symbols and inject breakpoints via gdb).

    It's also worth to mention that this happen on NetBSD/amd64 8.99.1 with pkgsrc-current (I do not have access to any other operating systems so no idea if this can be related to NetBSD or pkgsrc).

  • Build Error in FreeBSD

    Build Error in FreeBSD

    Hello; While building in freebsd-10-stable; I get these errors both with GTK=3 and without.

    make: "/usr/home/avalon/build/vimb/config.mk" line 16: Missing dependency operator
    make: "/usr/home/avalon/build/vimb/config.mk" line 17: Missing dependency operator
    make: "/usr/home/avalon/build/vimb/config.mk" line 20: Need an operator
    make: "/usr/home/avalon/build/vimb/config.mk" line 22: Need an operator
    make: "/usr/home/avalon/build/vimb/config.mk" line 23: Need an operator
    make: "/usr/home/avalon/build/vimb/config.mk" line 24: Need an operator
    make: "/usr/home/avalon/build/vimb/config.mk" line 26: Need an operator
    make: "/usr/home/avalon/build/vimb/config.mk" line 34: Missing dependency operator
    make: "/usr/home/avalon/build/vimb/config.mk" line 36: Need an operator
    make: Fatal errors encountered -- cannot continue
    make: stopped in /usr/home/avalon/build/vimb
    
  • Ctrl-Q is dependably faster than :quit

    Ctrl-Q is dependably faster than :quit

    What command is Ctrl-Q mapped to? I have noticed that :quit (and :quit!) are particularly laggy with one web page (tt-rss) while Ctrl-Q is not. Overall, I haven't noticed lag problems with :quit since I pruned my history down to a svelte 1K records so there must be something else going on with :quit and that particular web page.

  • Login credentials lost when opening a new window (tabopen)

    Login credentials lost when opening a new window (tabopen)

    I am logged in to e.g. eBay and follow a link with middle-click to open the link in a new window/tab (window manager = i3). New window/tab opens but I have to log in to eBay again.

  • font size problem

    font size problem

    I've recently purchased a retina macbook and installed vimb on it. Functionally it works just as on my old computer (of course), but unfortunately the text is way too small (the input box, the status bar, the hinting text, as well as the normal text size for the content on the website). I tried zooming but it doesn't seem to change text size. I also tried increasing the font size in the gtk config; or setting the 'defaultfontsize' in vimb config. But neither of these works nicely. Is there any workaround for this?

  • Content-Security-Policy

    Content-Security-Policy

    Add support to force vimb to apply the Content-Security-Policy http://www.w3.org/TR/CSP/. Allow to fake the server response header to apply the security policy also for those pages that do not provide the header at th time.

    This issue continues a discussion done on the pull request #133.

  • Webkit2 page source view

    Webkit2 page source view

    webkit2 does not provide the view mode source so maybe this is going to be removed together with the gf keybinding or we find a simple workaround for this

  • hsts / redirect problem

    hsts / redirect problem

    Hi Daniel,

    I encounter an issue with hsts: it don't catch all possibles cases for url rewrite, and it is possible to by-pass it.

    Here an example:

    • first, visit https://www.eff.org/ in order to see the HSTS header one time at least.
    • now, if you go to http://www.eff.org/ you will be redirected to https version
    • now, go to http://bit.ly/1zZ4fzo it is a shorten url for http://www.eff.org/

    vimb don't redirect to https version, and you arrive on the http version.

  • Hinting

    Hinting

    Allow to highlight clickable elements and assign keyboard shortcuts to them.

    Was implemented in vimb2 already. The code should be used as a reference.

    There are some insights available:

    • https://github.com/fanglingsu/vimb/issues/337#issuecomment-292942461
    • https://github.com/fanglingsu/vimb/issues/337#issuecomment-292946599
  • Update distribution packages

    Update distribution packages

    In order to allow users to install vimb3 (webkit2) easily, we could provide packages for distributions. I'd start with Arch Linux and Gentoo.

    What other distributions should be added to the list?

    Vimb2 has several distribution packages already [1].

    We could start adding the package sources / build scripts to the vimb git repository to track them properly.

    [1] https://fanglingsu.github.io/vimb/#packages

  • `G` navigates to top of vimb manual instead of bottom

    `G` navigates to top of vimb manual instead of bottom

    Not sure if you wish to receive issues on the HTML documentation... anyways this was very confusing for a new user.

    Steps to reproduce

    Install vimb. Run vimb. Navigate to vimb manual at https://fanglingsu.github.io/vimb/. Note that G scrolls to top of page, not bottom.

    Expected behaviour

    G should scroll to bottom of page.

    Actual behaviour

    G scrolls to top of page on the vimb manual page. This must be an interaction between the vimb manual HTML and vimb, it works fine on other websites.

    vimb --bug-info
    Version:         3.6.0
    WebKit compile:  2.34.6
    WebKit run:      2.38.0
    GTK compile:     3.24.33
    GTK run:         3.24.34
    libsoup compile: 2.74.2
    libsoup run:     2.74.2
    Extension dir:   /usr/lib/vimb
    
    uname -a
    Linux workstation 5.19.13-arch1-1 #1 SMP PREEMPT_DYNAMIC Tue, 04 Oct 2022 14:36:58 +0000 x86_64 GNU/Linux
    
  • Can't get scripts.js working

    Can't get scripts.js working

    Version: 3.6.0 WebKit compile: 2.36.7 WebKit run: 2.36.7 GTK compile: 3.24.34 GTK run: 3.24.34 libsoup compile: 2.74.2 libsoup run: 2.74.2 Extension dir: /usr/lib/vimb

    My scripts.js:

    function userscript_twitter()
    {
    	if (window.location.href.search('://twitter.com/') != -1) {
    		window.location.href = window.location.href.replace('://twitter.com/', '://mobile.twitter.com/');
    	}
    
    	/* other code here unrelated to URL rewriting */
    }
    

    and in my config I have:

    au LoadFinished *://twitter.com/* eval! userscript_twitter();
    

    I just can't understand why this doesn't work. I've tried to also rename scripts.js to script.js and tried to run the function with eval from within vimb and none of these work. What can I do to get scripts working?

  • Debian build fail

    Debian build fail

    I initially tried on macOS but having no joy thought I'd give it a go on Linux. I'm using a bare bones Debian image (latest version) with the requirements installed. I cannot do a simple build. I followed the steps as per the home page.

    Step 1:

    make V=1
    

    Which results with:

    make -C src
    make[1]: Entering directory '/home/deployer/vimb/src'
    cc autocmd.o
    cc -DEXTENSIONDIR=\"/usr/local/lib/vimb\" -DPROJECT=\"vimb\" -DPROJECT_UCFIRST=\"Vimb\" -DGSEAL_ENABLE -DGTK_DISABLE_SINGLE_INCLUDES -DGDK_DISABLE_DEPRECATED -D_XOPEN_SOURCE=500 -D__BSD_VISIBLE -std=c99 -pipe -Wall -fPIC -pthread -I/usr/include/webkitgtk-4.0 -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/fribidi -I/usr/include/harfbuzz -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/webkitgtk-4.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -c -o autocmd.o autocmd.c
    make[1]: cc: No such file or directory
    make[1]: *** [Makefile:43: autocmd.o] Error 127
    make[1]: Leaving directory '/home/deployer/vimb/src'
    make: *** [Makefile:57: src.subdir-all] Error 2
    

    Step 2:

    make install
    

    Which results with:

    make[1]: Entering directory '/home/deployer/vimb/src'
    cc autocmd.o
    make[1]: cc: No such file or directory
    make[1]: *** [Makefile:43: autocmd.o] Error 127
    make[1]: Leaving directory '/home/deployer/vimb/src'
    make: *** [Makefile:57: src.subdir-all] Error 2
    

    I also tried the following:

    make PREFIX="/usr"
    make PREFIX="/usr" DESTDIR="/home/deployer" install
    

    But I didn't have any joy with this either.

    Any help appreciated :-)

  • Chinese character are displayed incomplete

    Chinese character are displayed incomplete

    version 3.6.0 os: archlinux 5.18.14-zen1-1-zen

    Steps to reproducer

    Open some website that contain chinese character, or make linux locale support chinese character

    Expected behaviour

    Display chinese character complete, and display latin character in centeral position of a line( seems like wrong autohint results from the chinese character is higher than the latin one)

    Actual behaviour

    Chinese character are displayed incomplete and latin character on the page move up and down when typing something. Untitled

    Remarks

    I use suckless surf browser as well and I notice that it also use webit2gtk thus same problems can be found on it. So I guess it might results from the poor support of chinese character. Anyway, thanks for reviewing.

  • `g:{mode}{hint` executes hints immediately, not as a batch

    `g:{mode}{hint` executes hints immediately, not as a batch

    Steps to reproduce

    1. execute g;t or g;o

    Expected behaviour

    Hints can be toggled as selected/unselected by hinting and manually with Enter. There can be multiple green hints. Escape starts the batch with all selected hints, CTRL+G aborts.

    Actual behaviour

    Mode command is executed as soon as hint is hinted. In case of g;t this is merely inconvenient, as focus is shifted to a new window, or in case of tabbed switched to a new tab. The g;o command in its plain form is also not useful even in proposed batch mode, as only the last hint would be opened. Perhaps it could be useful in combination with Handlers and AutoCommands.

    vimb --bug-info

    Version:         3.6.0-58-gabff254
    WebKit compile:  2.34.5
    WebKit run:      2.36.3
    GTK compile:     3.24.31
    GTK run:         3.24.34
    libsoup compile: 2.74.2
    libsoup run:     2.74.2
    Extension dir:   /usr/lib/vimb
    

    P.S. Sorry for reports flood, I just happened to run into all these in a short period. I'd like to help if I can somehow. P.S.2. I am writing this off to the instability of webkit2gtk, but I am getting a whole lot more webkit crashes. I was forced to write these issues in Firefox, as github window kept crashing on every form submission.

  • `editor-command` doesn't work everywhere, quotes seem to break it, and `;e` doesn't offer hints

    `editor-command` doesn't work everywhere, quotes seem to break it, and `;e` doesn't offer hints

    Steps to reproduce

    1. set editor-command according to doc in config file: (#set editor-command=termite -e "nvim %s") set editor-command=urxvt -e vis %s (note lack of quotes!)
    2. try executing it on archlinux forums using ;e and CTRL-T. Also attempt Amazon and DuckDuckGo

    Expected behaviour

    Urxvt window with vis instance opens up, with text from the hinted field. When closed, contents would be transferred over to the hinted field.

    Actual behaviour

    1. If quotes are retained, as in example - there is a quick flash then nothing happens. I presume Urxvt opens then immediately closes as quotes seem to break the command somehow
    2. on all three sites, hints aren't shown, but first field is sent to the external editor. This is understandable for archlinux forums and duckduckgo (as there's only one field), but amazon's Order page has two (search and search orders)
    3. on archlinux forums contents aren't transferred back into the post field. On duckduckgo, sometimes the searchbar contents are transferred to editor as 'undefined', and not transferred back (works second time around though). On amazon everything works, except I can't hint the field I'd like. If I manually hint at the field using f first, then it works normally.

    Vimb --bug-info

    Version:         3.6.0-58-gabff254
    WebKit compile:  2.34.5
    WebKit run:      2.36.3
    GTK compile:     3.24.31
    GTK run:         3.24.34
    libsoup compile: 2.74.2
    libsoup run:     2.74.2
    Extension dir:   /usr/lib/vimb
    

    Not using wyebadblock, but using hblock. No idea if that matters, but worth pointing out.

Simple text editor in C++ - Simple editor built upon kilo editor.

GUMBO editor Simple editor built upon kilo editor. Still big work in progress although this is just fun side project to learn more C/C++. From 0.0.2->

Sep 15, 2021
This is a plan9 port of the vim editor.

This is a plan9 port of the vim editor.

Dec 23, 2021
Zep - An embeddable editor, with optional support for using vim keystrokes.
Zep - An embeddable editor, with optional support for using vim keystrokes.

Zep - A Mini Editor Zep is a simple embeddable editor, with a rendering agnostic design and optional Vim mode. It is built as a shared modern-cmake li

Nov 19, 2022
Free,Open-Source,Cross-platform agent and Post-exploiton tool written in Golang and C++, the architecture and usage like Cobalt Strike
Free,Open-Source,Cross-platform agent and Post-exploiton tool written in Golang and C++, the architecture and usage like Cobalt Strike

Khepri Free,Open-Source,Cross-platform agent and Post-exploiton tool written in Golang and C++ Description Khepri is a Cross-platform agent, the archi

Nov 20, 2022
Khepri is a Cross-platform agent, the architecture and usage like Coblat Strike but free and open-source.
Khepri is a Cross-platform agent, the architecture and usage like Coblat Strike but free and open-source.

Khepri Free,Open-Source,Cross-platform agent and Post-exploiton tool written in Golang and C++ Description Khepri is a Cross-platform agent, the archi

Nov 24, 2022
QtWebKit-based web browser on Linux framebuffer.

FBrowser QtWebKit-based web browser on Linux framebuffer. Security Notes This browser is not intended for visiting untrusted websites. By default, OSB

Nov 7, 2022
Browser and NodeJS Web Assembly audio decoder libraries that are highly optimized for size and performance.

WASM Audio Decoders WASM Audio Decoders is a collection of Web Assembly audio decoder libraries that are highly optimized for browser use. Each module

Oct 29, 2022
A Minimal Web Browser with Built-in Adblocker in Less Than 100 Lines of Code
A Minimal Web Browser with Built-in Adblocker in Less Than 100 Lines of Code

A Minimal QtWebEngine Web Browser with Adblocker How Does It Work This is a minimal network filter implementation using QWebEngineUrlRequestIntercepto

Jul 23, 2022
an easy-to-use cross platform web browser controller for C++

WebBrowser++ 这是一个基于C++17的唯头文件跨平台浏览器控制库。 您只需要将本目录下的Include文件夹拷贝至您的项目中即可使用。如果使用CMake编译,则可直接include_directories(Include),也可以模仿本项目的CMakeLists.txt进行编写。 建立该

Nov 17, 2021
An old-style web browser stub, comes from Internet Explorer was genocided on Windows.
An old-style web browser stub, comes from Internet Explorer was genocided on Windows.

Outernet Explorer An old-style web browser stub, comes from Internet Explorer was genocided on Windows. Download from: https://github.com/kekyo/Outern

Oct 14, 2022
Arbitrary Precision provides C++ long integer types that behave as basic integer types. This library aims to be intuitive and versatile in usage, rather than fast.

Arbitrary Precision (AP) Cross-platform and cross-standard header-only arbitrary precision arithmetic library. Currently it offers integer types that

Sep 28, 2022
For Beginners, students and developers this is a great opportunity to learn and contribute to open source.

Hacktoberfest 2021 For Beginners, students and developers this is great opportunity to learn and contribute to open source. Link To HacktoberFest 2021

Aug 17, 2022
For Beginners, students and developers this is a great opportunity to learn and contribute to open source.

Hacktoberfest 2021 For Beginners, students and developers this is great opportunity to learn and contribute to open source. Link To HacktoberFest 2021

Nov 9, 2022
Redirects ux0 usage to other partitions.

hbRedirect An user plugin that redirects ux0 usage to other partitions. The use case of this plugin is about allowing to move data files of homebrew g

Sep 3, 2021
A small DLL that fixes tool's usage of the Halo 3 shader compiler.

h3-shader-compiler-fix A small DLL that fixes tool's usage of the Halo 3 shader compiler. Tool forgot to initialise the compiler before using it, so t

Jun 20, 2022
PRINT++ is a simple, open source print library for C++, the main usage of PRINT++ is printing out "log" messages
PRINT++ is a simple, open source print library for C++, the main usage of PRINT++ is printing out

note that for now, print++ is using std::cout. In future it will be using own print function. Windows version can be unstable That library is in alpha

Jan 23, 2022
UEFI Application for CPU Voltage/Frquency and Power Management adjustment. Great for undervolting.
UEFI Application for CPU Voltage/Frquency and Power Management adjustment. Great for undervolting.

Reduce CPU Power Waste and Gain Performance. Greener and Meaner! ______ ______ _ (_____ \

Nov 25, 2022
Repository of some great classical and Advanced cryptosystems

CryptoSystems ?? Repository of some great classical and Advanced cryptosystems Every C file here contains one of the most popular Cryptosystem in hist

Nov 8, 2022
The great software for some game that exploiting anime girls (and boys).
The great software for some game that exploiting anime girls (and boys).

Akebi GC The great software for some game that exploiting anime girls (and boys). Getting Started Building from source It is reccomended to use Visual

Sep 17, 2022