Клавиши сопоставления в lynx для запуска команды оболочки

Можно ли добавить в lynx пользовательскую раскладку клавиатуры (в конфигурационном файле ~/.lynxrc), которая отправляет информацию (например, текущий URL-адрес, html, заголовок и т. д.) в команду оболочки?

Пример использования: я на OSX, и в оболочке есть команда open, которая пытается открыть все, что ей задано, по умолчанию. Итак, если я нахожусь в lynx и хочу переместить текущую веб-страницу в браузер по умолчанию, я бы хотел вызвать open current-url из оболочки.

Другое: сопоставление организованного файла закладок путем отправки URL-адреса и заголовка в сценарий оболочки (или что-то еще).

Использование раскладки клавиатуры по умолчанию ! открывает оболочку по умолчанию, но она не дает мне URL-адрес и не запускает ни одной команды и не выходит обратно в lynx, как я хотел бы для этого.

Любые идеи очень приветствуются.


person scicalculator    schedule 04.04.2012    source источник


Ответы (1)


На самом деле я нашел пару способов справиться с этим. Некоторые из них более идеальны, чем другие. Потребовалось немного покопаться в файле lynx.cfg по умолчанию, чтобы кое-что понять.

Ниже приведены два наиболее успешных способа отправки информации в команду оболочки из lynx:

  1. поместите вариант этого в ваш файл lynx.cfg. Он может отправлять только URL-адрес, поэтому он ограничен тем, что не может обрабатывать заголовок или любую другую информацию с веб-страницы без разбора самого дампа lynx. (Это должно быть настроено с помощью --enable-extern, который недоступен в версии lynx для MacPorts, поэтому вы должны установить из исходного кода).

    # in lynx.cfg
    # EXTERNAL:<url>:<command> %s:<norestriction>:<allow_for_activate>[:environment]
    # Ex 1: send the url to `open <url>` to open default browser
    EXTERNAL:http:open %s:TRUE
    # Ex 2: download with wget if ftp page
    EXTERNAL:ftp:wget %s &:TRUE
    
    # By default ',' and '.' map to running EXTERNAL on the page and link respectively
    # KEYMAP:,:EXTERN_PAGE   # Run external program with current page
    # KEYMAP:.:EXTERN_LINK   # Run external program with current link
    
  2. Создайте сценарий и запустите его на принтере для сбора переменных среды печати.

    # in lynx.cfg
    # PRINTER:<name>:<command>:<option>:<lines/page>[:<environment>]
    PRINTER:openurl:/Users/username/bin/openurl %s:TRUE 
    

    Затем скрипт openurl, который открывает URL-адрес в браузере по умолчанию (OSX), содержит:

    #!/bin/sh
    # /Users/username/bin/openurl
    url=$LYNX_PRINT_URL
    title=$LYNX_PRINT_TITLE 
    # other variables exist like the date etc... look them up :)
    # http://osr600doc.sco.com/en/INT_lynxDoc/keystrokes/environments.html
    
    # perform magic ...
    /usr/bin/open $url
    

Могут быть и другие способы, такие как использование lynxified прокси lynxexec, lynxprog и lynxcgi, но мне не удалось успешно передать переменные с помощью этих методов в моих собственных тестах. Если вы знаете способ получить информацию о заголовке и URL-адресе с помощью этих методов, мне было бы интересно это услышать. В приведенном выше примере № 1 заголовок и другая информация может быть получена путем вызова lynx или другого браузера, поэтому с помощью этого метода можно выполнить все действия. Кроме того, это позволяет одной клавише, сопоставленной для выполнения функции, когда экран печати добавляет несколько нажатий клавиш в микс, что нежелательно. Я рекомендую пункт 1 выше.

person scicalculator    schedule 05.04.2012