Forum: PC-Programmierung feh Viewer, Tastenbefehle per Kommando?


von epikao (Gast)


Lesenswert?

Hallo,
bzgl. dem "FEH" Bildbetrachter für Linux (bzw. verwende es jetzt aufm 
Raspberry)..
per feh -F -D 3 directory  wird eine slideshow gestartet.

Per Tastatur kann dann z.B. mit der H-Taste die slideshow pausiert 
werden. Wie simuliere ich die H-Taste per Kommando-Befehl??

Danke

von Seb A. (aslmx)


Lesenswert?

Schau mal hier den Link:

http://xmodulo.com/simulate-key-press-mouse-movement-linux.html

Hab das dort stehende Beispiel etwas umgebastelt und es hat bei mir 
funktioniert, also es pausiert alle 2 sekunden feh, bzw. hebt die Pause 
auf. Ob das zweite sleep nach dem Fokussieren wirklich nötig ist musst 
du mal ausprobieren.

1
#!/bin/bash 
2
 
3
for i in {1..30} 
4
do
5
  WID=`xdotool search --name "feh" | head -1` 
6
  echo $WID
7
  xdotool windowfocus $WID 
8
   sleep 1
9
  xdotool key "h"
10
  sleep 1 
11
done


hope that helps

vgs

von epikao (Gast)


Lesenswert?

ok. ja danke, habe auch an xdotool gedacht...(schade ist nicht anders 
möglich)

ABER da ist noch ein anderes Problem bevor ich das nutzen kann,
also wenn ich mit einem script den "feh" starte...  wird der weitere 
Code im script gar nicht mehr ausgeführt.

Ich bekomme es nicht hin, auch mit zwei scripten... sobald "feh" 
gestartet ist wird jeder weitere code im script ignoriert, wieso?

von Rolf M. (rmagnus)


Lesenswert?

epikao schrieb:
> ABER da ist noch ein anderes Problem bevor ich das nutzen kann,
> also wenn ich mit einem script den "feh" starte...  wird der weitere
> Code im script gar nicht mehr ausgeführt.

Dann hänge mal ein & dahinter.

von epikao (Gast)


Lesenswert?

Anders beschrieben:

ich kann per script nicht gleichzeitig zwei programme starten, also:

./main.py && feh -D 3 "/..."

GEHT NICHT? es wird immer nur das erstere ausgeführt, wieso?

von Rolf M. (rmagnus)


Lesenswert?

epikao schrieb:
> Anders beschrieben:
>
> ich kann per script nicht gleichzeitig zwei programme starten, also:
>
> ./main.py && feh -D 3 "/..."
>
> GEHT NICHT? es wird immer nur das erstere ausgeführt, wieso?

Wenn du das so schreibst, sollte das zweite schon ausgeführt werden, 
aber erst, nachdem das erste erfolgreich (also mit Return-Code 0) 
beendet wurde.

von asdfgghhjj (Gast)


Lesenswert?

epikao schrieb:
> ./main.py && feh -D 3 "/..."
>
> GEHT NICHT? es wird immer nur das erstere ausgeführt, wieso?

Weil das eben heisst:
fuehre "main.py" aus und wenn dessen Ergebnis true ist dann "feh..."
Das Ergebnis(exitcode) bekommst Du aber erst zum Ende.

asdfgghhjj

von TippGeber (Gast)


Lesenswert?

dann probier es mal so:
feh -D 3 "/..."  &
./main.py  &

Dein Konstrukt argeitet die programme in der angegebenen Reihenfolge ab:
./main.py && feh -D 3 "/..."

Das logische und (&& ) dazwischen sorgt sogar dafuer dass das
zweite Programm nicht gestartet wird wenn das erste (./main.py) false
zurueckliefert.

von epikao (Gast)


Lesenswert?

wenn ich schreibe:

feh... && main.py

dann wird main.py nie ausgeführt...
also müsste ich das zweite ausführen egal ob was zurückkommt oder nicht, 
geht das? (also egal ob true, oder ein return)

von epikao (Gast)


Lesenswert?

feh -D 3 "/home/...." & ./main.py

das funktioniert. Danke

von epikao (Gast)


Lesenswert?

mit Python funktioniert es aber nicht:

call(["feh", ... "&", "./main.py"])

startet feh, bringt aber dann den Fehler: & does not exist - skipping

von Noch beim Kaffee. (Gast)


Lesenswert?

epikao schrieb:
> (schade ist nicht anders möglich)


Frage?

Es gab mal ein xsendkey

https://web.archive.org/web/people.csail.mit.edu/adonovan/hacks/xsendkey.html

Die FensterID kriegt man z.B. einfach mit wmctrl
simples vereinfachendes skript dazu

http://kyoto.github.io/sendkeys/

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.