v. 0.1.2 <change log>

screenpager

Screenpager is a screenwise pager for X workstations running Xinerama. It works like a desktop pager, but acts at the level of screens. Instead of paging the desktop as a whole, it can page each screen independently, or move pages from screen to screen.

installation  using screenpager  see also

Screenpager is meant for use with Xinerama, an extension of the X Window System that combines multiple screens into a single, larger display. Xinerama lets you drag windows from one screen to another, or stretch them across multiple screens, and so on. But it is not always compatible with a conventional desktop pager.

Pagers are generally used to create virtual displays (pages) and to swap them in and out of the real display. This is useful because the total page area can exceed the physical display, giving you a larger desktop. Pagers may be distinguished by the scale of pages they handle. Most systems have a variety of pagers operating at scales from small GUI widgets, to mid-size documents and windows, to the whole desktop. For desktop pages, the size of the page is normally limited by the physical screens. If you have multiple screens, you would normally get a separate desktop (and therefore a separate desktop pager) for each screen. However, under Xinerama, all screens are joined together and the desktop pager operates across the joint whole; so you can no longer page the screens individually. This is where screenpager comes in.

0 1 2 3 4
17 inch screen 19 inch screen 19 inch screen 17 inch screen 19 inch screen
Figure 1.  A Xinerama desktop spanning 5 screens of different sizes, some 17 inch and some 19 inch. (This is the layout actually used by the author.)

To illustrate how screenpager works, consider the multi-screen Xinerama desktop in figure 1. Imagine you are working on some documents in an editor (Figure 1, screen 1). Suppose that you need a mail client at some point. Here is how screenpager can be used to bring it into view, by paging a screen:

0 1 2 3 4
17 inch screen 19 inch screen 19 inch screen 17 inch screen 19 inch screen
Figure 2.  Paging up on screen 1, the mail client is swapped in, while the editor windows are swapped out. The on-screen display (green) appears briefly. (Click images to enlarge)

The on-screen display reveals the stacking order of pages. It represents each page by a single display line. Each display line summarizes the windows that are held within that page. In figure 2, line  ( m )  is for the mail client page that you swapped in; line  i b s  is for the editor page (and its three windows) that were swapped out; while lines  p  and  T  represent other pages sitting at the bottom of the stack.

You can also move pages from screen to screen. For example:

0 1 2 3 4
17 inch screen 19 inch screen 19 inch screen 17 inch screen 19 inch screen
Figure 3.  Moving a page. The mail client  ( m )  is squeezed onto screen 0, where it displaces a terminal page (also  m ). The editor windows pop back into screen 1 automatically.

In figure 3, the mail client is moved to the left. This allows the editor page to resurface on screen 1. Now mail client and editor are side by side.

You could accomplish roughly the same result using the facilities of the window manager, instead of screenpager, but screenpager is more convenient. For example, it re-maximizes the mail client window after moving it to screen 0, to fit the reduced screen height. Also, where there are multiple windows to move, screenpager takes care of them with a single command. Furthermore, it keeps the off-screen pages neatly stacked; so you can easily flip through them, or shuffle them about like cards.

Screenpager is a simple tool, encoded as a script. It runs once per request; not as a backround daemon. It does not interfere with the window manager or other desktop tools; they continue to function as usual. For example, you can still use the desktop pager:

0 1 2 3 4
17 inch screen 19 inch screen 19 inch screen 17 inch screen 19 inch screen
Figure 4.  Using the full desktop pager to swap in another multi-screen desktop. On this virtual desktop, a web browser is stretched across two screens in order to display large images. A smaller browser (screen 3) is employed as an index to select new images.

Screenpager remains useable after swapping to the new virtual desktop. After swapping, you cannot flip through pages currently displayed on another desktop. If you start screen-paging on the desktop of figure 4, for example, the pages of figure 3 will not appear among your swap choices.

installation

If you have trouble installing screenpager, let me know. I still use it myself and the latest version is posted here. But I haven't yet packaged that version into a proper release, and the documentation is a little out of date.

requirements

instructions for manual installation

  1. Installation dependencies:

    If you need additional information on a dependency, you can find it in the portage tree: http://www.gentoo.org/cgi-bin/viewcvs.cgi/.

  2. Find the latest tarball (.tar.gz file) in the release directory, and download it.
  3. Extract the contents of the tarball:

    To list the contents first, before extracting them: tar -tzf tarball-name.tar.gz

  4. Proceed with configuration, below.

configuration

  1. Create the initial configuration files, copying from the examples provided.
  2. Edit these files according to the instructions in them. For example, see the files in use on my own workstation:
  3. Start an X session, if not already started.
  4. Test the configuration:
  5. Ensure that screenpager is reset prior to each X session. In my own case, I add the following line to my ~/.xinitrc:
    /usr/bin/screenpager reset

using screenpager

For detailed instructions, refer to the manual page.

For keystroke, mouse and menu binding examples, refer to my ~/.config/openbox/. Most of these bindings do not directly invoke screenpager itself, but rather intermediate scripts; these are located in my /usr/local/bin/. The heaviest is desk-launch, which is highly customized for my own desktop. The lightest are mere wrappers (such as screenpager-heads-up) that adorn screenpager invocations with some extra logic.

This is an alpha version. The code has not been widely tested, and there are rough edges.

see also

See also cascade-pilot, a screenwise window cascader. It can move a window north|south through a cascade of other windows; or east|west from screen to screen, and cascade to cascade.

Copyright 2004-2006, 2010 Michael Allan <mike@zelea.com>.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Screenpager Software"), to deal in the Screenpager Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Screenpager Software, and to permit persons to whom the Screenpager Software is furnished to do so, subject to the following conditions:

The preceding copyright notice and this permission notice shall be included in all copies or substantial portions of the Screenpager Software.

THE SCREENPAGER SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SCREENPAGER SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SCREENPAGER SOFTWARE.