2012-04-04 67 views
2

是否可以自定義鍵盤映射添加到猞猁(在配置文件〜/ .lynxrc),它發送信息(例如當前的URL,HTML,標題等)一個shell命令?地圖鍵運行shell命令

一個示例用例: 我在OSX上,shell有一個命令open,它試圖以默認方式打開任何東西。所以,如果我在l and中,並且想將當前網頁移動到默認瀏覽器,我想從shell中調用open current-url

另: 通過向shell腳本(或其他)發送URL和標題來整理有組織的書籤文件。

使用默認的鍵盤映射!打開默認的shell,但它不會給我的URL,也不會運行一個命令,並退回到山貓,因爲我想這樣做。

任何想法將不勝感激。

回答

1

我實際上最終找到了一些方法來處理這個問題。有些人比其他人更理想。這需要通過默認的lynx.cfg文件來挖掘一些這方面的內容。

以下是兩個最成功的方法,我實現了從山貓發送信息到一個shell命令:

  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。