Share

Sawfishs native pager

File Release Notes and Changelog

Release Name: 0.1

Notes:
Hi,

My foremost reason for looking at spager.jl was to fix an endlessly annoying
bug: when displaying just one workspace and when not in 1st ws, Button1 would
always switch to 1st ws, but pager display would remain in old ws.

The other thing was finally exploring about that horrible sample.rc which I
did not want in my rc file.  What I wanted, and what in hindsight probably
already worked anyways was just

(require 'sawfish.wm.ext.pager)
(setq pager-executable "/home/pfeiffer/bin/pager")
(pager)

And the second line shouldn't be necessary on a properly installed system.
While exploring all this I noticed quite a bit of redundant, inefficient and,
concerning the huge C-array with mysterious offsets, appalling code.  So I
went for a major rewrite:

- current viewport gets framed over all else, so you can see it even when
  it's fully covered

- viewport gets displayed properly even when it's not aligned to multiple of
  screen dimensions (as is easily achieved with
  http://dapfy.bei.t-online.de/sawfish/move-viewport/)

- viewports are by default proportional to your screen

- copies are, and stickies can be shown on every workspace and/or viewport

- ignoreds are by default omitted

- pager-show-all-workspaces works properly

- click on window will focus that by default

- click anywhere can optionally warp pointer to corresponding spot

- last row and column are as big as others

- Result of "Send window to/Copy to previous or next" now gets shown
  immediately

- pager-executable defaults to be in sawfish-exec-directory

- replaced merlin/fancy-message with standard tooltips

- also show button bindings when generally enabled

- avoid tooltip flicker

- streamlined code (lisp is only 1/2 and C 3/4 the size of spager's)

- use define-structure, keeping most symbols out of the global namespace

- make dependencies between customization options explicit

TODO:

- Highlight viewport transparently after drawing windows.  This can't be
  achieved well with gc functions, maybe with gdk-pixbuf?

- Display a background picture, maybe even a dynamically updated miniature of
  the various workspace's wallpapers

- Moving copies should take into account which copy was moved

What I have not messed with are the mouse bindings.  These should be
configurable and I would find it way more intuitive to have Button1 drag if I
move the mouse.

And Button3 should be done in sawfish (via a private extended keymap) and
popup a context menu where I can change the setting (most importantly
pager-show-all-workspaces) ad hoc.

best regards
Daniel

Changes: This is a complete reimplementation of spager 0.16 , without the bugs, and with new features: * Current viewport gets framed over all else, so you can see it even when it's fully covered. (Satyaki, author of spager, feels this should be a user option. Anybody else for that?) * viewport gets displayed properly even when it's not aligned to multiple of screen dimensions (as is easily achieved with my move-viewport patch.) * ignoreds are by default omitted * viewports are by default proportional to your screen * copies are, and stickies can be shown on every workspace and/or viewport * pager-show-all-workspaces works properly * click on window will focus that by default * click anywhere can optionally warp pointer to corresponding spot * last row and column are as big as others * Result of "Send window to/Copy to previous or next" now gets shown immediately * pager-executable defaults to be in sawfish-exec-directory * replaced merlin/fancy-message with standard tooltips * also show button bindings when generally enabled * avoid tooltip flicker * streamlined code (lisp is only ½ and C ¾ the size of spager's) * use define-structure, keeping most symbols out of the global namespace * make dependencies between customization options explicit