Übergeben von angeklickten Links in rxvt an ein Skript

7

Ich starte meinen Browser vimprobable in tabbed wie folgt :

"`tabbed -d > /tmp/tabbed.xid`; vimprobable2 -e `cat /tmp/tabbed.xid`" [1][1]

Ich bin dann in der Lage, alle neuen Instanzen von vimprobable an tabbed (und kein neues Hauptfenster geöffnet zu haben) in anderen Apps zu senden, z. B. mutt, durch:

vimprobable2 -e $(cat /tmp/tabbed.xid) %s

Ich möchte dasselbe in Urxvt erreichen.

Derzeit .Xdefaultsenthält meine die Matcher-Argumente:

URxvt.perl-ext-common: default,matcher
URxvt.urlLauncher: vimprobable2
URxvt.matcher.button: 1

Ich habe die Launcher-Zeile so geändert, dass sie auf ein Wrapper-Skript verweist:

URxvt.urlLauncher: vimprobtab.sh

Welches ist nur:

vimprobable2 -e $(cat /tmp/tabbed.xid) %s &

Dies öffnet jedoch nur eine Browserinstanz in einer Registerkarte mit dem Standard-Suchmaschinenergebnis für &(oder %swenn ich das kaufmännische Und entferne).

Ich habe es mit anderen offensichtlichen Variablen versucht, wie "$1"und "$@"- sie funktionieren auch nicht.

Wie übergebe ich die URL an das Wrapper-Skript?

[1] Dies fühlt sich auch wie eine nutzlose Verwendung von Katze an , daher wären alternative Vorschläge willkommen

Jasonwryan
quelle

Antworten:

5

Der Hilfetext für die Matcher- PERL-Erweiterung zu urxvt lautet:

Wenn Sie mit der in der matcher.button Ressource angegebenen Maustaste klicken (Standard 2 oder Mitte), wird das in der matcher.launcherRessource angegebene Programm (Standard, die urlLauncherRessource sensible-browser) mit dem übereinstimmenden Text als erstem Argument gestartet.

Daher müssen Sie URxvt.matcher.launcherein Skript festlegen , das ein einzelnes Argument verwendet (in Sh-Shells wird dies geschrieben $1), und es öffnen. Zum Beispiel:

#! /bin/sh

exec vimprobable2 -e $(cat /tmp/tabbed.xid) "$1"

Hinweis: Es ist ratsam, das Argument zu zitieren$1 , um zu verhindern, dass die Shell Metazeichen interpretiert, die möglicherweise in der URL enthalten sind (z . B. &oder ;).

Riccardo Murri
quelle