Hipe logo

Hipe: Hypertext Pipe


Hipe is a display server for Linux and UNIX-like computing environments.

If you aren't sure what a display server is, it's a system process that's always running on your desktop computer. It provides and manages the graphical user interface. When you run applications on your computer, those applications connect to the display server in order to place stuff on the screen and respond to user interaction. Common examples are the X Window System (Linux), Apple Quartz (OSX), and Windows GDI.


Every display server provides its own obscure and esoteric system for rendering content on the screen and responding to user interaction. Compared to the rendering capabilities of a modern web browser, the display servers provided by most platforms have fallen behind. The programming interfaces are cumbersome to use, and it takes a lot of effort to produce a fluid layout. In the case of the X Window System, more recent effort has been placed into bypassing X's outdated rendering capabilities rather than using or enhancing them.

Every day, fewer and fewer people care about display servers.

Hipe is something different. Hipe encapsulates the Webkit rendering engine (used by Apple Safari and Google Chrome) and provides similar layout and rendering capabilities to those browsers, as well as the ubiquity of dealing with HTML tags and CSS style rules (languages that many developers know intimately, as opposed to the obscure programming interfaces provided by existing platforms), but without the annoyances of dealing with actual web pages.

Hipe Calculator screenshot

Here is a screenshot of a simple calculator application that was created to use Hipe for its interface. Note that the title-bar in this screenshot was not provided by Hipe. To create this screenshot, the Hipe display server was run 'rootless' inside another computing environment.

In the calculator screenshot, the rounded corners of the output display were achieved with CSS style rules, and the calculator buttons are HTML <button> tags within a <table> layout.

However, there is no real 'web browser' here, and no HTTP protocol to go through. Instead, the calculator application interacts with the display server to manipulate each on-screen element directly, and receives events from button clicks on request, just like any traditional standalone application would.

In summary, Hipe provides:


Where Hipe fits

Generally, each user runs a single instance of the Hipe display server. The display server provides a local socket which applications written for Hipe can connect to.

Client applications communicate with Hipe by exchanging messages over the socket connection. For example, a client might send a message to manipulate the contents of a particular tag element, or may receive a message in response to the user clicking a particular tag element.

The Hipe display server itself is actually implemented as a Qt/Webkit application. Although it may seem ironic (and somewhat redundant), the Hipe display server needs to run on top of another display server (currently X, but hopefully something more streamlined down the track). Believe it or not, Webkit just doesn't work that well in a text-only console.

Framing System

While most display systems allow applications to create 'windows', Hipe uses frames instead. Frames are more tightly regulated than traditional windows. Each application is granted a single frame and is expected to contain its activities within that frame. A 'framing manager' is any application that manages layout of frames on behalf of other applications.

For transitional reasons, Hipe provides the functionality of allowing client windows to be created and managed by an X window manager at the 'top level' of its framing hierarchy.