Moin, ich habe da mal eine Frage zu mutt: Wie kann ich denn mutt expilzit mitteilen, mit welchem Programm ein bestimmter Dateinahang geöffnet werden soll? Normaler Weise steht das ja in der mailcap, aber wenn ich jetzt z.B. eine jpg-Bilddatei nicht, wie in der mailcap definiert, mit xv sondern z.B. mit gimp öffnen will, will ich nicht jedesmal die Datei erst abspeichern. Mit dem Pipe-Befehl aus dem Dateianhang-Menü von mutt komme ich nicht weiter. Wenn ich die entsprechende Datei markiert habe, | drücke und dann gimp eingebe, startet zwar gimp, die Datei wird aber nicht geöffnet. Any Ideas? cu Hannes
Hallo, Am Mon, 15 Mar 2004, Hannes Vogelmann schrieb:
Wie kann ich denn mutt expilzit mitteilen, mit welchem Programm ein bestimmter Dateinahang geöffnet werden soll? Normaler Weise steht das ja in der mailcap, aber wenn ich jetzt z.B. eine jpg-Bilddatei nicht, wie in der mailcap definiert, mit xv sondern z.B. mit gimp öffnen will, will ich nicht jedesmal die Datei erst abspeichern.
Nur ueber die mailcap geht das AFAIK nicht.
Mit dem Pipe-Befehl aus dem Dateianhang-Menü von mutt komme ich nicht weiter. Wenn ich die entsprechende Datei markiert habe, | drücke und dann gimp eingebe, startet zwar gimp, die Datei wird aber nicht geöffnet. Any Ideas?
Ein Wrapper um gimp. Z.B.: ==== ~/bin/gimp ==== #!/bin/sh GIMP="/usr/local/bin/gimp" GIMPR="/usr/local/bin/gimp-remote" EXE="$GIMP" ps aux | grep -q "^$USER.* ${GIMP%\/*}/[g]imp" && EXE="$GIMPR" || EXE="$GIMP" if test $# -eq 1 && test "x$1" = "x-"; then TMP="`mktemp \"/tmp/gimp.$$.XXXXXX\"`" cat > "$TMP" $EXE "$TMP" rm -f "$TMP" else exec "$EXE" "$@" & fi ==== Damit kannst du dann (z.B. aus mutt heraus, per | eines Attachments) gimp so aufrufen: | gimp - HTH, -dnh -- If you haven't got time to RTFM, you haven't got time to whine on this mailing list.
Hallo David, Am Mon, 15 Mär 2004, schrieb David Haller:
Hallo,
Am Mon, 15 Mar 2004, Hannes Vogelmann schrieb:
Wie kann ich denn mutt expilzit mitteilen, mit welchem Programm ein bestimmter Dateinahang geöffnet werden soll? Normaler Weise steht das ja in der mailcap, aber wenn ich jetzt z.B. eine jpg-Bilddatei nicht, wie in der mailcap definiert, mit xv sondern z.B. mit gimp öffnen will, will ich nicht jedesmal die Datei erst abspeichern.
Nur ueber die mailcap geht das AFAIK nicht.
Ich wollte es ja eigentlich auch nicht mit mailcap sondern explizit eingeben.
Mit dem Pipe-Befehl aus dem Dateianhang-Menü von mutt komme ich nicht weiter. Wenn ich die entsprechende Datei markiert habe, | drücke und dann gimp eingebe, startet zwar gimp, die Datei wird aber nicht geöffnet. Any Ideas?
Ein Wrapper um gimp. Z.B.:
==== ~/bin/gimp ==== #!/bin/sh GIMP="/usr/local/bin/gimp" GIMPR="/usr/local/bin/gimp-remote" EXE="$GIMP"
ps aux | grep -q "^$USER.* ${GIMP%\/*}/[g]imp" && EXE="$GIMPR" || EXE="$GIMP"
if test $# -eq 1 && test "x$1" = "x-"; then TMP="`mktemp \"/tmp/gimp.$$.XXXXXX\"`" cat > "$TMP" $EXE "$TMP" rm -f "$TMP" else exec "$EXE" "$@" & fi ====
Mit den entsprechend meiner Installation abgeänderten Pfaden funktioniert das. Aber eigentlich ist es immer noch nicht ganz das, was ich wollte. Wenn ich jetzt für jedes Programm so einen Wrapper schreiben muss, kann das wohl nicht Sinn der Sache sein. Ich müsste vielmehr so eine Art Universalwrapper haben, so dass ich aus mutt heraus noch mitteilen kann, welches Programm benutzt werden soll. Was bewirkt denn eigentlich das | in mutt ohne den wrapper? Warum geht es nicht einfach so? Ich will ja nur, dass mutt die jeweilige Datei temporär abspeichert und dann in einer subshell 'programmname dateiname' aufruft.
Damit kannst du dann (z.B. aus mutt heraus, per | eines Attachments) gimp so aufrufen:
| gimp -
Hmm, geht, und wenn ich jetz mit xnview öffnen will? cu Hannes
HTH,
HTH?
Hallo, Am Tue, 16 Mar 2004, Hannes Vogelmann schrieb:
Am Mon, 15 Mär 2004, schrieb David Haller:
Am Mon, 15 Mar 2004, Hannes Vogelmann schrieb: [..] Ich wollte es ja eigentlich auch nicht mit mailcap sondern explizit eingeben.
Ok.
Mit dem Pipe-Befehl aus dem Dateianhang-Menü von mutt komme ich nicht weiter. Wenn ich die entsprechende Datei markiert habe, | drücke und dann gimp eingebe, startet zwar gimp, die Datei wird aber nicht geöffnet. Any Ideas?
Ein Wrapper um gimp. Z.B.: [..] Mit den entsprechend meiner Installation abgeänderten Pfaden funktioniert das.
Fein :)
Aber eigentlich ist es immer noch nicht ganz das, was ich wollte. Wenn ich jetzt für jedes Programm so einen Wrapper schreiben muss, kann das wohl nicht Sinn der Sache sein. Ich müsste vielmehr so eine Art Universalwrapper haben, so dass ich aus mutt heraus noch mitteilen kann, welches Programm benutzt werden soll. Was bewirkt denn eigentlich das | in mutt ohne den wrapper? Warum geht es nicht einfach so? Ich will ja nur, dass mutt die jeweilige Datei temporär abspeichert und dann in einer subshell 'programmname dateiname' aufruft.
I see...
Damit kannst du dann (z.B. aus mutt heraus, per | eines Attachments) gimp so aufrufen:
| gimp -
Hmm, geht, und wenn ich jetz mit xnview öffnen will?
Probier's mal hiermit: ==== ~/bin/pipewrap ==== #!/bin/sh # set -x test -n "$1" || exit 1 EXE="$1" if test $# -eq 2 && test "x$1" = "x-" || test $# -eq 1; then TMP="`mktemp \"/tmp/pipewrap.$$.XXXXXX\"`" cat > "$TMP" $EXE "$TMP" rm -f "$TMP" else # Fehlerbehandlung? exec "$EXE" "$@" fi ==== Funktioniert mit xv, xnview, gimp, kuickshow, ee zumindest solange diese nicht im Hintergrund gestartet werden und das rm dem Programm zuvorkommt. Mit dem gimp-wrapper kollidiert es also. Mit $EXE "$TMP" rm -f "$TMP" im gimp-wrapper geht's aber.
HTH,
HTH?
Hope That Helps, -dnh PS: http://www.abkuerzungen.de -- If you haven't got time to RTFM, you haven't got time to whine on this mailing list.
Guten Morgen, Am Die, 16 Mär 2004, schrieb David Haller: [...]
Probier's mal hiermit:
==== ~/bin/pipewrap ==== #!/bin/sh # set -x test -n "$1" || exit 1 EXE="$1" if test $# -eq 2 && test "x$1" = "x-" || test $# -eq 1; then TMP="`mktemp \"/tmp/pipewrap.$$.XXXXXX\"`" cat > "$TMP" $EXE "$TMP" rm -f "$TMP" else # Fehlerbehandlung? exec "$EXE" "$@" fi ====
Perfekt! Genau dass, was ich wollte. Allerdings versteh ich es nicht ganz. Vielleicht habe ich auch ein etwas falsche Vorstellung von der Pipe-Funktion von mutt. Warum muss denn tatsächlich erst "manuell" die temporäre Datei erzeugt werden? Was produziert denn die muttsche pipe eigentlich? Muss ich mir das so vorstellen wie die shell-pipe, die die Standardausgabe auf die Standardeingabe umleitet? Ich kann mir allerdings nicht so recht vorstellen, was das bei z.B. einer Bilddatei bedeutet.
Funktioniert mit xv, xnview, gimp, kuickshow, ee zumindest solange diese nicht im Hintergrund gestartet werden und das rm dem Programm zuvorkommt. Mit dem gimp-wrapper kollidiert es also. Mit
In der Tat. Sehr nützlich das ganze. Auch außerhalb von mutt kann man diesen pipewrapper ja durchaus dazu benutzen um z.B. die Ausgabe von shell-Kommandos direkt in einem Editor zu öffnen. Eigentlich merkwürdig, dass so etwas nicht standardmäßig vorhanden ist. So eine "öffnen-mit-Funktion" gibt es doch sonst fast überall.
$EXE "$TMP" rm -f "$TMP"
im gimp-wrapper geht's aber.
Naja, den brauchts ja eigentlich nicht mehr, wenn der pipewrapper da ist. Danke jedenfallls mal. Hannes
Hallo, Am Wed, 17 Mar 2004, Hannes Vogelmann schrieb:
Am Die, 16 Mär 2004, schrieb David Haller:
Probier's mal hiermit:
==== ~/bin/pipewrap ==== [..] Perfekt! Genau dass, was ich wollte.
*bg*
Allerdings versteh ich es nicht ganz. Vielleicht habe ich auch ein etwas falsche Vorstellung von der Pipe-Funktion von mutt. Warum muss denn tatsächlich erst "manuell" die temporäre Datei erzeugt werden? Was produziert denn die muttsche pipe eigentlich? Muss ich mir das so vorstellen wie die shell-pipe, die die Standardausgabe auf die Standardeingabe umleitet?
Genau. Mutt macht praktisch ein "cat Anhang_oder_Mail | $programm".
Ich kann mir allerdings nicht so recht vorstellen, was das bei z.B. einer Bilddatei bedeutet.
Weil mutt eine "echte" Pipe zur Anwendung aufmacht hat man ein Problem wenn die Anwendung wie z.B. gimp und xnview eben Bilder nicht aus stdin lesen wollen. xv aber z.B. macht es, wenn man "-" als "Dateinamen" angibt: | xv - funktioniert aus mutt heraus, ebenso wie auf der Konsole mit 'cat $bilddatei | xv -'. Wie du ausprobieren kannst weigern sich aber gimp und xnview stdin zu lesen, und folgende Befehle ergeben nur ne Fehlermeldung: 'cat $bilddatei | gimp -' -> "invalid option", 'cat $bilddatei | gimp /dev/stdin' -> "/dev/stdin is not a regular file", 'cat $bilddatei | xnview -' -> "Can't open file " 'cat $bilddatei | xnview /dev/stdin' -> "Can't open file ". gimp und xnview oeffnen also nur "echte" Dateien, und deswegen braucht's den Wrapper, der eine temporaere Datei anlegt und diese "regular" Datei dann mit $programm oeffnet. Programmen wie xv, display, less, u.a., die eben generell (auch) aus ner Pipe lesen, kannst du eben auch aus mutt Bilder / Texte per pipe ueberreichen. Das alles liegt also nicht an mutt ;)
Funktioniert mit xv, xnview, gimp, kuickshow, ee zumindest solange diese nicht im Hintergrund gestartet werden und das rm dem Programm zuvorkommt. Mit dem gimp-wrapper kollidiert es also. Mit
In der Tat. Sehr nützlich das ganze. Auch außerhalb von mutt kann man diesen pipewrapper ja durchaus dazu benutzen um z.B. die Ausgabe von shell-Kommandos direkt in einem Editor zu öffnen. Eigentlich merkwürdig, dass so etwas nicht standardmäßig vorhanden ist. So eine "öffnen-mit-Funktion" gibt es doch sonst fast überall.
*g* Mutt ist halt ein Spezialist. Und ein 'gimp %s' in der mailcap funktioniert ja auch, d.h. mutt erzeugt die temporaere Datei. -dnh -- If you haven't got time to RTFM, you haven't got time to whine on this mailing list.
participants (2)
-
David Haller
-
Hannes Vogelmann