Problemas de Conkeror por solucionar

conkeror (escrito con c, no con k) es un navegador web que sigue el estilo de Emacs; es por tanto muy personalizable. Es el que más uso, y aunque me permite ser muy productivo, aún no me es cómodo del todo. Aquí listo los fallos que intento corregir.

Esta página es parte de mi lista de cosas por hacer e incluye muchas notas personales e información irrelevante o anticuada. Se puede ver de forma estructurada con org-mode (es como mantengo ésta y otras listas de tareas; lo explico aquí).

18.m10.2017 (desde 2009). En 2017 esta página sigue vigente. Daniel Clemente Laboreo (web, correo). Este fichero .html se ve mejor abriendo el .org con org-mode (Emacs)

Otras listas: Índice (varias tareas) Temas de investigación (tareas mayores) Emacs Bazaar Conkeror Sobre este sistema (y org-mode)


Índice


1 fallos en conkeror y pequeños cambios

1.1 BONUS fallo raro al volcar búfers

1.2 IS al cerrar una pestaña quiero ir al búfer de la derecha

  • CONCLUSIÓN escrita el <02.m03.2009 11:34>
    ya se hizo; es con „w“ en mi conkeror

Pues considero la barra como una pila donde lo izquierdo es lo más viejo. Puedo empezar a usar bury-buffer para salir del paso.

1.2.1 IS preguntado en grupo de conkeror

1.3 BONUS quitar cuadro que pide bajar plugin de Flash

1.3.1 IS encontrar una página donde pase

1.3.1.1 una donde pasa: <02.m02.2009 15:43>: http://my.colby.edu/ics/Libraries/
<!-- Beginning of meebo me widget code. Want to talk with visitors on your page? Go to http://www.meebome.com/ and get your widget! -->
<div style="TEXT-ALIGN: center">  <embed src="http://widget.meebo.com/mm.swf?RDEHFPsHqk" width="160" height="250" type="application/x-shockwave-flash" wmode="transparent"><br><span class="text11"><strong><strong></strong></strong></span><strong><strong></strong></strong></div><strong><strong>
<div align="center"><a href="http://www.colby.edu/academics_cs/library/im-olin.cfm" target="_blank"">OlinHelp</a> | <a href="http://www.colby.edu/academics_cs/library/im-bixler.cfm" target="_blank"">BixlerHelp</a><a href="http://www.colby.edu/academics_cs/library/about/forms/meet-librarian.cfm?renderforprint=1"> </a></div>
</strong></strong></div></div></div><br style="clear:both" />
1.3.1.2 otra donde pasa: <02.m02.2009 16:40>: http://www.jivesoftware.com/
<script type="text/javascript" language="javascript">
    AC_FL_RunContent(
        'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0',
        'width', '720',
        'height', '359',
        'src', '/resources/flash/homepage',

1.3.2 IS página mínima reproducible

<embed src="http://widget.meebo.com/mm.swf" type="application/x-shockwave-flash" />
Hola

1.3.3 IS escribir a lista (cuando tenga página reproducible)

Hi, each time I open a page which embeds a Flash object, a popup appears which says:


This page contains information of a type (application/x-shockwave-flash) that can only be viewed with the appropriate Plug-in. Click OK to download Plugin.


I certainly don't want Flash, and I don't like that Conkeror asks me each time. There should be a way to remember the user's decision… or a way to disable this dialog.

You can use this code to try:

<embed src="http://widget.meebo.com/mm.swf" type="application/x-shockwave-flash" /> Hola

Or test it by opening any of these URLs:

This seems to happen only in a computer running Ubuntu 8.04. In my home computer running Debian unstable, no popup appears. However, both have the same values in about:config:

  • application.use_ns_plugin_finder;false
  • plugin.expose_full_path;true
  • plugin.override_internal_types;false
  • privacy.popups.disable_from_plugins;2
  • security.xpconnect.plugin.unrestricted;true

Greetings, Daniel

1.3.4 ¿por qué en ali no pasa y en CPU107 sí?

ali: Debian

  • application.use_ns_plugin_finder;false
  • plugin.expose_full_path;true
  • plugin.override_internal_types;false
  • privacy.popups.disable_from_plugins;2
  • security.xpconnect.plugin.unrestricted;true

En CPU107: Ubuntu

  • esas 5 están igual
1.3.4.1 IS mirar en CPU107
1.3.4.2 probar con perfil nuevo en cada uno

1.3.5 MALFAR ver si lo solucionan o responden los de Conkeror

  • CONCLUSIÓN escrita el <09.m03.2009 11:08>
    me da igual; ya lo solucioné yo; ya me enteraré por otros medios

http://bugs.conkeror.org/issue130

1.3.6 IS ∴ solución temporal

  • CONCLUSIÓN escrita el <20.m02.2009 09:10>
    pues ya va, pero no aviso para ver qué dicen ellos

You need to disable the Adobe Reader plugin to prevent it from viewing PDFs inside Conkeror. Type M-x extensions to open the extensions manager, select plugins, select Adobe Reader, and click disable.

Desactivar el plugin base.

1.3.7 cosa relacionada

1.4 quiero más teclas útiles

1.4.1 IS C-t (transpose-chars) en más sitios y más útil

  • CONCLUSIÓN escrita el <21.m03.2010 21:39>
    ya se arregló y va en todos lados

Lo mandé a la lista el <24.m09.2009>. Mandado otro parche el <09.m10.2009>.

1.4.2 BONUS teclas para usar combos y listas de selección

Quiero:

  • tecla para moverme arriba/abajo por SELECT
  • tecla para desplegar combo
  • tecla para moverme arriba/abajo por combo

Ver en conkeror/modules/bindings/default/content-buffer/select.js

O preguntar:

  • when a combo or a selection list (<select><option><option>…) is focused, C-p and C-n scroll the list, whereas up/down (cursor keys) move the selection pointer up/down. I would like to change …

1.5 BONUS motor de búsqueda en el idioma local

Ej: que poniendo minibúfer g y luego „g 142857“ me dé la interfaz y resultados adaptados al idioma que yo elija.

Creo que en la definición de google en conkeror/search-engines/google.xml falta pasar un:

<Param name="hl" value="{language}"/>

Además creo que toma user_pref(LOCALE_PREF), cuando esto está lejos de la local del usuario (ej: yo tenía en-US aunque LANG=ca_ES.UTF-8).

1.6 BONUS que salga el atributo title (los rótulos) en imágenes, enlaces, etc.

Parece ser que es este informe http://bugs.conkeror.org/msg377

Lo más cómodo es que salgan flotantes sólo al apuntar, sin tocar teclas. Pero además con atajo de teclado para cuando no se usa el ratón.

1.7 IS evitar que se mueva el foco (regresión)

1.8 IS no siempre va a la URL del portapapeles (usando paste-url)

1.8.1 IS descripción

El problema está en esta entrada:

Author: John Foerch <…>  2009-09-23 02:02:23
Committer: John Foerch <…>  2009-09-23 02:02:49
Parent: 854151f3feecc7ff736ede69c0c05e5a3d5308d4 (comments and docstrings for browser object system)
Branches: master, remotes/origin/master, remotes/origin/new-input-system
Follows: abe-0.9--git090719-1
Precedes: 0.9.1

    browser object "pasteurl" renamed to "paste-url"
    
    also rewrote it to validate the url

Y por tanto en este código:

define_browser_object_class("paste-url",
    "Browser object which reads an url from the X Primary Selection, "+
    "falling back on the clipboard for operating systems which lack one.",
    function (I, prompt) {
        try {
            return make_uri(read_from_x_primary_selection()).spec;
        } catch (e) {
            throw new interactive_error("error: malformed url");
        }

El problema es que no coge como buenas URLs que no tengan el http:// al principio. Ej: www.a.com no va, pero http://www.a.com

1.8.2 IS corregir paste-url

Tocar esto: file:///w/conkeror/modules/element.js, el return make_uri read_from_x_primary_selection spec.

Si tiene ^[^:]+\. es que le falta la parte del protocolo, por tanto hay que añadir "http://" Antes le quito espacios.

make_uri hace al final: return io_service.newURI(uri, charset, base_uri);, donde uri es una cadena normal.

1.8.3 IS esperar corrección oficial

  • CONCLUSIÓN escrita el <16.m10.2009 08:56>
    metido

http://bugs.conkeror.org/issue212

1.9 BONUS los rótulos de selección de enlace podrían usar clases para cambiar por CSS

Yo he cambiado el color a todos los enlaces (a) y me encuentro que hay algunos a los que no se lo quiero cambiar: los que se iluminan mientras estoy tecleando letras al elegir el enlace a seguir. Pero como no tienen clase asignada los activos (__conkeror_hint es para todos) no puedo darles CSS.

1.9.1 marcar por CSS los activos

De hecho se podría tener todo este sistema de rótulos en CSS en vez de tocar estilo desde JavaScript. Así es más personalizable. Y ya hay una parte hecha en CSS (hints.css); lo que hay que hacer es quitar las definiciones de colores desde los .js (elem.style.color etc.)

1.9.1.1 plan

Se puede poner clase .conkeror_hint_link para todos (ahora amarillo) y .conkeror_hint_link_active para el seleccionado/actual (ahora verde). No hace falta crear clases especiales para imágenes pues eso se puede hacer por img.conkeror_hint_link_selected etc.

1.9.1.2 ¿se puede hacer todo con clases CSS?

Más difícil es iluminar IFRAMEs etc. No sé si se puede hacer por CSS

1.9.1.3 BONUS ¿más o menos velocidad?

No sé si pintar los rótulos por CSS sería más rápido. Por las pocas pruebas que he hecho, parece que sí.

1.9.1.4 primeras pruebas que van

En hints.css:

.__conkeror_hint_link { background-color: blue !important; color: white !important; }

Y luego en hints.js cambios del estilo: if (!h.img_hint && h.elem.style) { //h.elem.style.backgroundColor = (active_number = cur_number) ? active_hint_background_color : hint_background_color; h.elem.className=(active_number = cur_number)?"__conkeror_hint_link_active":"__conkeror_hint_link";

}

etc.

1.10 BONUS al usar „conkeror „fichero.html“, se confunde y quiere abrir http://fichero.html/

Debería añadir file:// según toque

http://bugs.conkeror.org/issue240

1.11 BONUS read_from_x_primary_selection() no coge bien unicode (o UTF-8)

Ej. cuando copio desde Emacs (-nw, o sea sin X) la palabra pewność y la recupera Conkeror mediante read_from_x_primary_selection(), recibe extrañamente pewno[, así, con un [ al final. Pasa lo mismo si la copia desde el mismo Conkeror en vez de desde Emacs.

Visto el <29.m05.2011>.

1.12 BONUS no respeta tabindex (el orden de navegación por campos con el tabulador)

Ej. en duckduckgo, quiero que con un TAB ya me mueva al cuadro de búsqueda (TABINDEX 1), pero hacen falta 3.

Está accesibility.tabfocus en about:config (http://kb.mozillazine.org/Accessibility.tabfocus) pero Conkeror no lo sigue pues su TAB va sólo a campos de formulario:

tab is bound to the command browser-focus-next-form-field in bindings/default/content-buffer/normal.js.
browser-focus-next-form-field is an interactive command in content-buffer-input.js.

Eso es: file:///w/conkeror/modules/content-buffer-input.js#orgd3a335e

  • [ ] buscar
  • [ ] mandar fallo a Conkeror
  • [ ] quejarse a DuckDuckGo. ¿A quién se le ocurre poner el botón de buscar antes que el cuadro de texto?

1.13 BONUS cómo escribir un valor de depuración

dumpln("hola")

Va.

1.14 Para que use el tema blackened

La siguiente entrada es maléfica: 782a0b9ec087b4e88846a7695aa14cd0700e1134

Puedo usar: git revert 782a0b9ec087b4e88846a7695aa14cd0700e1134 Y seguir usando theme_load("blackened");

Además mis modificaciones incluyen:

cambios a minibuffer.css

tree.completions treechildren::-moz-tree-row(current) {

  • background-color: blue !important;
  • background-color: #00a !important; color: white; }

1.15 instalar extensiones (noscript etc.)

http://conkeror.org/Extensions

Poner:

<!– Conkeror –> <em:targetApplication> <Description> <em:id>{a79fe89b-6662-4ff4-8e88-09950ad4dfde}</em:id> <em:minVersion>0.1</em:minVersion> <em:maxVersion>9.9</em:maxVersion> </Description> </em:targetApplication>

Y borrar los META-INF.

1.16 IS Para que arranque con el xulrunner bueno, cómo hacer el run-conkeror o equivalente

1.16.1 forma rara y vieja

Tocar el /usr/local/bin/conkeror y añadirle al final:

echo 142857 cambia xr y conkeror xr=`compgen -f /usr/lib/xulrunner-1.*` conkeror=/w/conkeror

exec "${xr%/}"/xulrunner "$conkeror"/application.ini "$@"

1.16.2 ∴ invocando yo a xulrunner y pasando application.ini

file:///w/conkeror/arranca-conkeror:

#!/bin/bash cd xulrunner-8.0 /w/conkeror/application.ini "$@"

1.17 cómo obtener el valor del prefijo

interactive("pruebaprefijo",
    "Da el valor del prefijo (C-u)",
    function (I) {
        var window = I.window;
        I.minibuffer.message("Prefijo: "+I.prefix_argument);
    });

1.18 BONUS conkeror me muestra automáticamente muchas compleciones en cuadros de texto, y no lo quiero así

No quiero sugerencias en formularios.

1.19 IS no va el sonido en vídeos HTML5 (ej. Youtube)

Uso OSS4.

  • Con aoss no se soluciona.
  • poniendo FIREFOX_DSP=aoss tampoco

Ni en conkeror ni en iceweasel ni en chromium… Bueno, chromium dice:

… nvfx_screen_get_param:95 - Warning: unknown PIPE_CAP 30 ALSA lib confmisc.c:768:(parse_card) cannot find card '0' ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_card_driver returned error: Нет такого файла или каталога ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_concat returned error: Нет такого файла или каталога ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_refer returned error: Нет такого файла или каталога ALSA lib conf.c:4720:(snd_config_expand) Evaluate error: Нет такого файла или каталога ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM default ALSA lib confmisc.c:768:(parse_card) cannot find card '0' ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_card_driver returned error: Нет такого файла или каталога ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings ALSA lib conf.c:4241:(_snd_config_evaluate) function snd_func_concat returned error: Нет такого файла или каталога ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name …

He tenido que activar la traducción ALSA→OSS4 con trocito de configuración en file:///home/dc/.asoundrc, y ya va.

1.20 sobre el xulrunner: dónde bajarlo, etc

1.20.1 BONUS ¿cdv? ¿código fuente?

1.20.2 números de versión liados: 1.9.2, 17, …

1.20.3 historial de cambios

No encuentro.

1.20.6 MALFAR „xulrunner SDK“, está para bajar

1.20.7 ¿ha muerto? → no, pero hay que usar el de dentro de Firefox

1.21 IS que abra con el programa que toca (ej. pdf con mupdf en vez de con gimp)

  • ya lo corregí alguna vez, y se ha vuelto a estropear al poner xulrunner nuevo

Curioso que esto da „evince“:

external_content_handlers.get("application/pdf")

Y sin embargo se abre gimp. Y no veo „gimp“ ni por etc ni en mi ~/.mailcap ni en tablas MIME de conkeror ni en fuente de conkeror…

„Removing the pdf mimetype from /usr/share/applications/gimp.desktop does seem to help…“ Probado, no.

Solución: a file:///home/dc/.local/share/applications/mimeapps.list añadirle esto:

[Added Associations] application/pdf=mupdf.desktop;

Imagino que eso refiere a /usr/share/applications/mupdf.desktop Con esto va inmediatamente.

1.22 BONUS hace una especie de „caché DNS“ demasiado agresiva, de forma que un error de conexión deja muchos dominios inaccesibles cuando la conexión vuelve

1.22.1 dicen que el cuadro de „borrar datos“ tiene opción para borrar caché DNS

1.23 BONUS evitar que una web me cambie las funciones de mis teclas

Ej. es eso de „access keys“; „shortcut keys“ le llaman.

Es muy molesto. Quiero que las páginas me definan ninguna tecla, pues ya me defino yo las que quiero.

Larga discusión sin resultados pues es dilema difícil: https://bugzilla.mozilla.org/show_bug.cgi?id=380637

Puedo:

  • buscarme otras teclas que no se superpongan
  • crear modo especial para esta página, o algo así
  • evitar el robo de teclas en todas las páginas, con alguna preferencia
  • cambiar código fuente de conkeror/xulrunner para evitar ceder el control de teclado a la página
  • usar extensión/script que las recupera
  • ∴ desactivar JS
  • por ahora, usar la tecla con prefijo („u“), eso activa mi versión en vez de la de la web

1.23.1 conkeror tiene „modos de página“ pero no quiero definir un modo para cada página molesta

  • github tiene uno, pero activarlo es aún peor

1.23.2 puedo usar noscript

1.24 es demasiado verborreico pues me registra errores de páginas web (que yo no puedo controlar) mezclado con errores del propio conkeror

JavaScript strict warning: https://startpage.com/adsense/search/async-ads.js, line 297: SyntaxError: test for equality (==) mistyped as assignment (=)?
JavaScript strict warning: https://startpage.com/adsense/search/async-ads.js, line 52: ReferenceError: reference to undefined property a.waitForAds
JavaScript strict warning: https://startpage.com/adsense/search/async-ads.js, line 246: ReferenceError: reference to undefined property window.CSE_OPTIONS_
JavaScript strict warning: https://startpage.com/adsense/search/async-ads.js, line 252: ReferenceError: reference to undefined property u.ctcIconFormat
JavaScript strict warning: https://startpage.com/adsense/search/async-ads.js, line 178: ReferenceError: reference to undefined property a.clicktrackUrl
[…]
JavaScript strict warning: https://startpage.com/js/result_header_new.js?v=d85aee1303aea48fb0adef596918449c, line 18: ReferenceError: assignment to undeclared variable UNIT_NONE
Console error: [JavaScript Warning: "Penggunaan getPreventDefault() sudah usang. Gunakan defaultPrevented." {file: "https://startpage.com/js/result_header_new.js?v=d85aee1303aea48fb0adef596918449c" line: 3}]
  Category: DOM Core
  • javascript.options.showInConsole: no ayuda

1.25 una página me da „401 - unauthorized“ sin pedirme la clave, y no consigo que me la pida. ¿Cookies?

Ej. el nivel 9 de Python Challenge. Quizás es mala configuración del servidor suyo… En otros navegadores sí que me pide clave.

2 ideas para cosas nuevas

2.1 extensiones y utilidades de Firefox que me faltan (o no)

  • firebug: se puede, ver ahí
  • bugmenot: ya lo tengo

2.1.1 tiene gestor de permisos

M-x permission-manager Ahí puedo bloquear cuquis (cookies), popups, imágenes de ciertos dominios. ¡Funciona!

2.1.2 consola de errores de javascript

Ver js-console que añadí. Malo: funciona a medias.

2.2 BONUS recargar cada cierto tiempo

He mandado: http://bugs.conkeror.org/issue177

Mensajes relacionados:

2.3 IS reordenar pestañas

  • CONCLUSIÓN escrita el <30.m01.2012 18:02>
    ya está en el oficial
  • CONCLUSIÓN escrita el <16.m04.2009 21:48>
    hice lo que pude; ahora me toca esperar y corregir mínimamente

Lo he probado en file:~/.conkerorrc::function test_move_tab_left window Y lo he enviado a conkeror.

2.3.1 IS mandar como fallo

2.3.2 MALFAR ver si me ayudan un poco con lo de las pestañas (ver si resuelven el fallo)

  • CONCLUSIÓN escrita el <18.m05.2009 20:18>
    Lo abandono porque no sé mucho; ya envié el fallo y quizás más adelante recupero el código.

2.3.3 IS parche de arlinius, lo implementa

  • CONCLUSIÓN escrita el <09.m07.2011 00:53>
    el parche de John Foerch sucede a éste y corrige lo que dije

Tabs no longer have closures on their buffers. Instead, a tab's buffer is now stored as a property of the tab. Also fixed some whitespace in tab.addEventListener calls.

The buffer container now has a buffer_ordering list which specifies the order of the buffers used for buffer_next, rather than using the order of the buffer vbox elements in the buffer-container deck directly.

A new function, buffer_move_forward, has been added. This function moves a buffer forward in its window's buffer container. The interactive commands buffer-move-forward and buffer-move-backward have also been added. There is a new hook, move_buffer_hook, which is run every time the order of buffers is changed. Its argument is the buffer that was moved.

new-tabs.js uses move_buffer_hook to update the index numbers shown on the tabs as well as the ordering of the tabs. Tab ordering is controlled by setting the ordinal attribute on the tab.

Respondo:

Thanks for implementing this. I have been testing it and it works pretty well.

  • I would add this.add_hook("move_buffer_hook") in buffer_count_widget (mode-line.js) to update the „[13/13]“ part in the modeline.
  • Each reordering should be written to the session file. Now, if I change the order of a tab and close Conkeror without adding/removing other tabs, the original ordering is saved. So session_auto_save_save should be run in move_buffer_hook too
  • It doesn't work when the tab bar is disabled, due to move_buffer_hook always calling tab_bar_move_buffer. I suppose it could rearrange buffers so that you'll notice those invisible changes when you turn the tab bar on again.

2.3.4 IS John lo implementó en rama buffer-ordering; revisar

  • CONCLUSIÓN escrita el <30.m01.2012 18:02>
    integrada en rama central

El <14.m05.2011>.

  • „The keys M-N and M-P are used to move buffers manually through the spatial buffer list.“
  • [X] probar un tiempo
  • [ ] apuntar fallos
  • [ ] comentar

2.4 BONUS inspector de DOM y CSS fácil de usar

Está DOM Inspector, pero algo como Firebug es más fácil de usar.

2.5 IS tecla en conkeror para traducir página

2.6 IS tecla para traducir palabra, detectando el idioma de origen y enviando al diccionario apropiado

2.7 desplazamiento horizontal en conkeror

Ver file:~/.conkerorrc::moverse horizontalmente hacia derecha e izquierda

// Pues ya está esto, que va bien.
//    define_key(keymap, "C-b","cmd_scrollLeft");
//    define_key(keymap, "C-f","cmd_scrollRight");
// Pero además definiré unos equivalente a C-uC-uC-b y C-uC-uC-f, que se mueven más rápido. Los pongo en Meta

No encuentro función para hacer „→“ aunque la tecla „→“ va porque está definida como builtin_command.

Más difícil de lo esperado. Necesito ejemplos de extensión de una función. O preguntar a Conkeror…

2.8 ATENDAS mapa para modificar el directorio de destino de descargas

Mandado a Conkeror el <30.m08.2010>: „Be able to select the download directory programmatically“ http://bugs.conkeror.org/issue294

Quizás es útil la resolución que se hizo para http://bugs.conkeror.org/issue271 (refactorizando suggest_file_name).

2.9 BONUS función para atrás+cerrar en botón del ratón

Ya que no uso mucho el ratón, puedo asignar funciones útiles a sus botones. Además las necesito.

Ej.

  • [ ] clic derecho en fondo:
    • [X] ir atrás
    • [ ] si ya no se puede ir más atrás, cerrar búfer → esto deshace en 1 paso la navegación global
  • [ ] clic derecho en enlace: copiar destino del enlace

Interesante:

Quiero:

  • [X] que no afecte a barra de pestañas
  • [X] que se active para todos los búfers
  • [ ] que se pueda desactivar (ej. conmutar globalmente) ya que alguna página me puede exigir el clic derecho (aunque no debería)

2.9.1 primera prueba, detecta el clic derecho y va atrás

Funciona

interactive("deshaznave",
    "Atrás+cerrar con el botón derecho del ratón. A completar",
    function (I) {
        var window = I.window;
        function handler (e) {
            if (e.button == 2) { // 2==derecho
                e.preventDefault();
                e.stopPropagation();
                window.removeEventListener("click", arguments.callee, true);
                go_back(I.buffer,I.p);
            }
            // si no, nada
        }
        window.addEventListener("click", handler, true);
        I.minibuffer.message("he activádome e iré atrás tras próximo clic.");
    });

Pero va atrás en el búfer original, no en el actual. Y se desactiva. Y actúa también sobre barra de pestañas.

2.9.2 versión mejor, va atrás en el búfer actual, se activa para todos los búfers, dura; funciona muy bien

function clic_derecho(e){
    // va a la página anterior
    if (e.button == 2) { // 2==derecho
        e.preventDefault();
        e.stopPropagation();
        e.currentTarget.goBack();
    }
}
function activa_clic_derecho_especial (buffer) {
    buffer.browser.addEventListener("click", clic_derecho, true);
}
add_hook("create_buffer_hook", activa_clic_derecho_especial);
interactive("desactiva-clic-derecho-especial-en-el-b-actual",
    "Permite que el clic derecho sea tratado por la página del búfer actual (en vez de capturarlo); no requiere recarga",
    function (I) {
        I.window.buffers.current.browser.removeEventListener("click",clic_derecho,true);
    });
// Para desactivar globalmente (en nuevos búfers):
// remove_hook("create_buffer_hook",activa_clic_derecho_especial);

Le falta: matar búfer cuando ya no se puede ir atrás.

2.10 BONUS reabrir la última pestaña cerrada (deshacer el cierre de un búfer)

Tal como hace Firefox.

Cuidado:

  • la pestaña pudo haber sido la última de una ventana; entonces ¿hay que recrear la ventana?
  • hay que restaurar también todo el historial de esa pestaña, para que se pueda volver atrás/adelante como si nada hubiera pasado
  • se podría hacer que descierres sucesivos vayan reabriendo pestañas más viejas, hasta volver a tener todas
  • una pestaña descerrada puede ser cerrada otra vez. Y después descerrada otra vez, etc.
  • creo que es mejor no grabar todo lo descerrable en el fichero de sesiones

2.10.1 hay solución en JS en wiki

  • parece que esto va: http://conkeror.org/Tips#Restore_Killed_Buffer_Url
  • estaría bien integrarlo en conkeror
  • me dejó de funcionar (TypeError: this.refresh is not a function)

    • Y es que esto ya falla (hasta con xulrunner 30):
    all_word_completer($completions = ['un','dos','tres'])
    
    

2.11 BONUS editor de URL que no codifique los caracteres no ingleses

Ahora se ven URLs muy raras, como:

https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%80%D0%BE%D0%BA%D0%BA%D0%B0%D0%BD%D1%81%D0%BA%D0%B0%D1%8F_%D0%9C%D0%B5%D1%81%D0%B5%D1%82%D0%B0

Quiero tecla que muestre los signos Unicode reales.

También afecta esto a signos conocidos para anglófonos: comilla „'“, espacio „ “, …

  • [ ] crear tecla que desescapa, edita y vuelve a escapar

3 sobre velocidad

3.1 una pestaña puede colgar todo el navegador; eso es malo

Al menos en la versión del <22.m12.2009> con xulrunner 1.9.1. Sin plugins.

3.1.1 IS fórmula para reproducir esto

Me pasa cuando tengo muchas pestañas abiertas (ej. >100) y una de ellas está haciendo cálculos complejos o está mal diseñada y simplemente está perdiendo el tiempo (mi tiempo). Entonces se ve el proceso xulrunner-bin con alta carga de CPU (no siempre 100%).

No pasa sólo por abrir conkeror con la página de bienvenida (eso era otro fallo de xulrunner). No es que sea xulrunner (Gecko) quien consume la CPU, sino que es quien permite que la página la consuma.

3.1.1.1 URLs

Páginas que especialmente roban la CPU del visitante (encontradas así tras un caso real):

He descubierto más con el prita que he hecho.

3.1.2 limitar los recursos a cada pestaña

Chromium separa más los páginas y limita sus privilegios; ese enfoque está bien.

Y si ya se acepta que página=programa, también podría correr cada página como un proceso distinto…

3.1.3 BONUS de momento hace falta una forma de ver qué pestaña está consumiendo más CPU

3.1.3.1 trazar sus llamadas a sistema
  • ltrace: lo hice y murió (SIGTRAP).
  • strace: con ello veo demasiada información
  • gdb: veo que está entre cosas de XUL y de JS (obvio), ej. libxul.so y función JS_EvaluateUCScriptForPrincipals

Nada útil.

3.1.3.2 ¿depurar xulrunner?
3.1.3.3 MALFAR pedir en lista; estaría bien integrarlo en Conkeror
  • CONCLUSIÓN escrita el <15.m01.2010 17:19>
    de momento parece que no hay interés: no ha habido respuesta

Enviado el <22.m12.2009 12:23>

…
  sometimes when I have many tabs open (>100) I notice that Conkeror is using much CPU (e.g. 35%) when idle. CPU usage drops to normal level if by chance I happen to close the right buffer, so it's a matter of a broken webpage, not of Conkeror itself.
  It would be nevertheless useful to know which amount of activity is producing each buffer, similar to what "top" does for processes.
  Can Conkeror provide this debug information?

Y anuncié mi prita.

3.1.3.4 IS he hecho un programita para medir el tiempo de CPU gastado por cada página abierta
3.1.3.5 BONUS algo parecido: medir cuánta RAM consume cada pestaña
3.1.3.5.1 ¿qué es eso de js-non-window que tanto ocupa? ¿La interfaz?

630.78 MB (100.0%) – explicit ├──362.77 MB (57.51%) – js-non-window │ ├──191.05 MB (30.29%) – runtime │ │ ├──168.54 MB (26.72%) ── script-data │ │ ├───16.10 MB (02.55%) ── atoms-table │ │ └────6.40 MB (01.02%) ++ (11 tiny) │ ├──106.20 MB (16.84%) – zones │ │ ├───75.75 MB (12.01%) – zone(0x7fb77d733000) │ │ │ ├──75.55 MB (11.98%) – strin …

Quizás es JS viejo de páginas cerradas.

3.1.4 soluciones temporales para descubrir cuál es

  • salgo del navegador; se guarda mi sesión en el fichero sessions/auto-save
  • aparto este fichero para entrar en un conkeror vacío
  • voy cargando cada URL de ese fichero, a mano, hasta ver cuál es la que causa la alta carga

Lo he automatizado con un programita.

3.2 ¿cómo puedo medir la velocidad de renderizado de páginas del motor actual?

Yo veo que va lento y a golpes, pero me gustaría cuantificarlo. Sé que hay cierto tipo de páginas que se le atragantan a Gecko (ya sin Javascript), como ésas del background:fixed cuyo informe de fallo está abierto desde hace mucho…

Con esto lo que quiero es ver si la lentitud de renderizado es debida a mi ordenador o a Gecko; así sabré cuál de los dos toca mejorar.

3.3 motores alternativos a xulrunner que se puedan integrar en la interfaz de Conkeror

3.3.1 minno (con WebKit)

As a sidenote, a few Conkeror developers are working on a WebKit-based browser codenamed Minno (http://sourceforge.net/projects/minno/) which will use Gambit Scheme instead of JavaScript and will probably be lightning-fast in comparison. We are all looking forward to seeing where that project goes!

3.3.2 Xulrunner ha de mejorar el motor JavaScript también

3.4 está creando fichero muy grande places.sqlite que creo que ralentiza

Son del historial etc.

4 estropeos imprevistos y puntuales

4.1 IS la tecla o abre el enlace enfocado, pero lo que yo le asigné fue scroll_up

Use this .conkerorrc with latest conkeror:

define_key(content_buffer_normal_keymap, "o", "cmd_scrollPageUp");
define_key(content_buffer_normal_keymap, "e", "cmd_scrollPageDown");

Open it. Both keys can scroll the web page correctly. Now do the drag+drop action on any link so that it gains focus (you'll see the dashed border). Press "o" then. The link is opened in a new window, instead of scrolling.

Culpable: ./modules/bindings/default/content-buffer/anchor.js:

define_key(content_buffer_anchor_keymap, "o", "follow-new-buffer",
          $browser_object = browser_object_focused_element);

Por tanto se soluciona con:

undefine_key(content_buffer_anchor_keymap, "o"); //era F

4.2 IS no arranca conkeror después de haber actualizado a xulrunner de Debian

  • CONCLUSIÓN escrita el <10.m01.2010 23:40>
    ya lo arreglé para mí; y ya han anunciado algunas correciones para Debian+Ubuntu. Si necesitan alguna prueba más ya me lo dirán
After I upgraded xulrunner 1.9.1.6-1 from Debian's „testing“ archive, conkeror no longer starts:

./contrib/run-conkeror

(xulrunner-bin:22326): GLib-WARNING **: g_set_prgname() called multiple times
Error initializing.
NS_ERROR_XPC_GS_RETURNED_FAILURE: Component returned failure code: 0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE) [nsIJSCID.getService]
null()@chrome://conkeror/content/history.js:10
Console error: [JavaScript Error: "conkeror.handle_command_line is not a function" {file: "file:///Werkstatt/conkeror/components/commandline.js" line: 18}]
  Category: XPConnect JavaScript

Mandado a lista

Probando:

# ~/.conkeror.mozdev.org/conkeror/hgwfry3w.default ; for a in *; do conmuta $a; echo ocultado $a, aprieta enter para conkeror; read; conkeror; rm -rf $a; conmuta $a; done

  • Candidatos: places.sqlite compreg.dat extensions.cache extensions.ini extensions.rdf localstore.rdf places.sqlite prefs.js XPC.mfasl xpti.dat
  • Culpable: places.sqlite
  Removing ~/.conkerorrc makes no difference.
  But removing ~/.conkeror.mozdev.org does: without that profile, it starts correctly (and creates a new profile).
  Carefully removing each file independently I found that the file places.sqlite-journal was the culprit:


~/.conkeror.mozdev.org/conkeror/hgwfry3w.default$> ll places.sqlite*
-rw-r--r-- 1 dc dc 21762048 ene  9 04:18 places.sqlite
-rw-r--r-- 1 dc dc      512 ene  9 10:38 places.sqlite-journal

conkeror                             # Doesn't run
sqlite3 places.sqlite3 ".schema"     # Says: Error: disk I/O error
rm places.sqlite-journal
sqlite3 places.sqlite3 ".schema"     # Now it shows its contents (~10 tables)
conkeror                             # And it runs, with my old whole profile


  I don't know why that database is corrupt. Is there something I can do to find it?

4.3 IS no arranca por libxpcom.so

? ~ ; /usr/lib/xulrunner-10.0/xulrunner-bin /w/conkeror/application.ini 
/usr/lib/xulrunner-10.0/xulrunner-bin: error while loading shared libraries: libxpcom.so: cannot open shared object file: No such file or directory
? ~ ; ldd /usr/lib/xulrunner-10.0/xulrunner-bin
	linux-vdso.so.1 =>  (0x00007fff9f4ad000)
	libxpcom.so => not found
	libmozalloc.so => not found
	libxul.so => not found
	libplc4.so.0d => /usr/lib/x86_64-linux-gnu/libplc4.so.0d (0x00007fe605f40000)

Lo soluciono arrancando con:

LD_LIBRARY_PATH=/usr/lib/xulrunner-10.0/ /usr/lib/xulrunner-10.0/xulrunner-bin /w/conkeror/application.ini

4.4 IS no restaura la sesión y arranca vacío

Quizás porque lo maté a medias una vez que estaba arrancando.

dc; ~ ; conkeror

SyntaxError: JSON.parse: unexpected end of data chrome://conkeror/content/session.js:211 session_read([object XPCWrappedNative_NoHelper])@chrome://conkeror/content/session.js:211 ()@chrome://conkeror/content/session.js:432 (true)@chrome://conkeror/content/mode.js:27 @chrome://conkeror/content/session.js:456 load1("chrome://conkeror/content/session.js","chrome://conkeror/content/")@file:///w/conkeror/components/application.js:108 ("session.js")@file:///w/conkeror/components/application.js:160 ("session.js")@file:///w/conkeror/components/application.js:231 …

4.5 IS no arranca, dice que perfil incompleto („Your conkeror profile cannot be loaded. It may be missing or inaccessible.“)

No ayuda instalar el de Debian ni otro xulrunner. ¿Quién dice eso? No encuentro el mensaje en conkeror ni en xulrunner. ∴ Era por haber movido caché a otro directorio y enlazar mal.

4.6 ya no va el ver ficheros de texto

NS_ERROR_NOT_IMPLEMENTED: Component returned failure code: 0x80004001 (NS_ERROR_NOT_IMPLEMENTED) [nsICacheService.createSession] cache_entry_clear()@chrome://conkeror/content/cache.js:56 override_mime_type_for_next_load()@chrome://conkeror/content/mime-type-override.js:83 _co_impl__send()@chrome://conkeror/content/coroutine.js:415 Handler.prototype.process()@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:937 this.PromiseWalker.walkerLoop()@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:816 this.PromiseWalker.scheduleWalkerLoop/<()@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:750

El código debe de estar anticuado.

4.7 IS peta con SIGSEGV al seguir un enlace con target="_blank" (o target="a")

Esto con xulrunner de firefox 53.0.2.

<a href="" target="a">elemento7'9, enlace con target „a“, a ningún lado</a>

Raro pues copiar/pegar el enlace va bien, lo malo es clicarlo (o seguirlo por teclado).

Antes no pasaba.

close(34) = 0 clock_gettime(CLOCK_MONOTONIC, {tv_sec=67248, tv_nsec=249527420}) = 0 gettimeofday({tv_sec=1494245982, tv_usec=180089}, NULL) = 0 — SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=NULL} — unlink("home/dc.conkeror.mozdev.org/conkeror/ikbwt84x.default/lock") = 0 close(7) = 0 rt_sigaction(SIGSEGV, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f9e3d4f30c0}, NULL, 8) = 0 rt_sigprocmask(SIG_UNBLOCK, [SEGV], NULL, 8) = 0 rt_sigprocmask(SIG_BLOCK, ~[RTMIN RT_1], [], 8) = 0 getpid() = 8784 gettid() = 8784 tgkill(8784, 8784, SIGSEGV) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 — SIGSEGV {si_signo=SIGSEGV, si_code=SI_TKILL, si_pid=8784, si_uid=1000} — + killed by SIGSEGV +

Thread 1 "firefox" received signal SIGSEGV, Segmentation fault. 0x00007f0f83ff89fd in ?? () from /w/firefox/libxul.so (gdb) bt #0 0x00007f0f83ff89fd in ?? () from /w/firefox/libxul.so #1 0x00007f0f862e8bef in ?? () from /w/firefox/libxul.so #2 0x00007f0f862e6db9 in ?? () from /w/firefox/libxul.so

Vuelvo a conkeror más viejo, y sigue pasando.

Probé browser.link.open_newwindow, no pasa nada.

De momento remarco por CSS estos enlaces, y los abro a mano en el fondo (tecla d), pues eso va.

Se corrigió en siguiente versión de Firefox (54).

5 notas sueltas

5.1 ver los ficheros que tiene a medio descargar (ej. un PDF de 20 Mb que va muy lento)

Seguro que hay interfaz… pero esto también va:

dc; ~ ; lsof -n -p `pidof xulrunner` | grep ' /tmp'

xulrunner 11814 dc 54w REG 8,3 5242880 1179776 /tmp/43.pdf.part

dc; ~ ; lsof -n -p `pidof xulrunner` | grep ' /tmp'

xulrunner 11814 dc 54w REG 8,3 5406720 1179776 /tmp/43.pdf.part

Si tras la descarga van a abrirse cosas… mejor hacer un chvt 1.