[Conkeror] Scrolling eye guide
Daniel Clemente
dcl441-bugs at yahoo.com
Fri Dec 26 23:46:31 PST 2008
Hi,
this is a very useful feature. Could it be included so that it is easy to turn it on?
Daniel
marting at gmx.ch writes:
> Hi all,
>
> In the firefox based conkeror there was a command called
> "toggle-eod-space" "that should help you read articles more smoothly"
> (see content/help.html where it is still documented). As far as I know
> there's no equivalent functionality in the xulrunner based conkeror so
> far. That's why I wrote the function below named after the similar
> feature in GNU gv. It scrolls down a page and draws a temporary
> horizontal line where you supposedly were reading before
> scrolling. The options are documented.
>
> I'm not familiar with the conkeror source nor xul (and not much with
> javascript either) so the code could be bad; please tell me if you
> think this is the case.
>
> *** start code ***
>
> define_variable("scr_eye_gui_interval", 800,
> "Interval during which the scrolling eye guide line is visible (in ms)");
> define_variable("scr_eye_gui_color", "#000000",
> "Color of the scrolling eye guide line");
> define_variable("scr_eye_gui_opt", "end",
> "'on'/'off'/'end', where 'end' means that the scrolling eye guide line" +
> "becomes visible only when scrolling not a whole page, i.e. at the end" +
> "of the buffer; while 'on' means that it becomes visible in any case; " +
> "'off' (or anything else) disables the scrolling eye guide");
>
> interactive("scroll-with-eye-guide", function(I) {
> var win = I.window.buffers.current.focused_frame;
> var old_y = win.scrollY;
> win.scrollBy(0, win.innerHeight - 50);
> var new_y = win.scrollY;
> if (new_y > old_y && (scr_eye_gui_opt == "on" ||
> (scr_eye_gui_opt == "end" &&
> new_y < old_y + win.innerHeight - 50))){
> //mostly copied from hints.js:
> var scr_eye_gui = win.document.createElementNS(XHTML_NS, "span");
> scr_eye_gui.className = "__conkeror_img_hint";
> scr_eye_gui.style.width = (win.innerWidth - 16) + "px";
> scr_eye_gui.style.height = "1px";
> scr_eye_gui.style.backgroundColor = scr_eye_gui_color;
> scr_eye_gui.style.left = "0px";
> scr_eye_gui.style.top = (old_y + win.innerHeight) + "px";
> //notice that the line is 16px off if there is a horizontal
> //scrollbar; I don't know if there is a reliable method to
> //detect a scrollbar
> win.document.documentElement.appendChild(scr_eye_gui);
> scr_eye_gui.textContent = "";
> scr_eye_gui.style.display = "inline";
> win.setInterval(function () {
> scr_eye_gui.style.display="none";
> }, scr_eye_gui_interval);
> }});
>
> *** end code ***
>
> You can then bind it as usual, e.g. to space:
>
> define_key(content_buffer_normal_keymap, "space", "scroll-with-eye-guide");
>
> --
> Martin
More information about the Conkeror
mailing list