Posts tagged ‘uzbl’

uzbl and uzbl_tabbed.py: a browser that adheres to the unix philosophy

uzbl-logo.png

Like Vimperator for Firefox?  Want something a bit smaller? Easier to config from plain text files? Well meet Uzbl. Uzbl follows the UNIX philosophy – “Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.”

  • very minimal graphical interface. You only see what you need
  • what is not browsing, is not in uzbl. Things like url changing, loading/saving of bookmarks, saving history, downloads, … are handled through external scripts that you write
  • controllable through various means such as fifo and socket files, stdin, keyboard and more
  • advanced, customizable keyboard interface with support for modes, modkeys, multichars, variables (keywords) etc. (eg you can tweak the interface to be vim-like, emacs-like or any-other-program-like)
  • focus on plaintext storage for your data and configs in simple, parseable formats Uzbl keeps it simple, and puts you in charge.
  • Uzbl is under heavy development and should be considered alpha. See the Get uzbl page

Now while this all good and dandy, even with a tiling window manager, I find most WMs bad at managing many open web pages and find that more suitable for tabs within the browser, fortunate others do too and have written uzbl_tabbed.py.

This python application is a shell that is able to open and contain multiple uzbl instances in the one window using a gtk.Notebook widget essentially giving uzbl tabbing support. The parent application (uzbl_tabbed.py) uses a FIFO socket to receive commands from child uzbl instances to execute various functions in the parent application like creating a new tab, opening a tab from the clipboard, going to the next tab, closeing tab number 5, etc in the same way you normally control uzbl through its FIFO socket. There is nothing stopping you from sending commands to uzbl_tabbed.py’s socket and performing those same actions yourself either manually or automatically.

Upon start-up the uzbl_tabbed.py script reads the users uzbl config file (found at $XDG_CONFIG_HOME/uzbl/config) for any commands it is able to inherit and or load that relate specifically to uzbl_tabbed.py. After spawning a uzbl instance the parent communicates to its new child uzbl instance through its socket the bind commands that (you are able to define/change either in the application itself or in your uzbl config file) give you the ability to control uzbl_tabbed.py as you would any other external script. Remembering that uzbl_tabbed.py doesn’t listen or catch ANY keys pressed by the user but rather relies entirely from commands it binds to each child to navigate to the next tab, open new tabs, close tabs, etc.

Screenshot:

click for larger

click for larger

Continue reading ‘uzbl and uzbl_tabbed.py: a browser that adheres to the unix philosophy’ »