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.
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 |
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 |
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 |
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 |
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.
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.
.ebuild
file
in the release directory
RDEPEND
section, which lists all 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/.
cd /
tar -xvzf tarball-name.tar.gz
To list the contents first, before extracting them:
tar -tzf tarball-name.tar.gz
cd /etc/xdg/screenpager/
cp Config_1-example.pm Config_1.pm
cp Pref_0-example.pm Pref_0.pm
For working examples, see:
/usr/bin/screenpager --screen=0 display on
/usr/bin/screenpager reset
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 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@reluk.ca>.
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.