Screenshot nach stdout

linuxnutzer

Captain
Registriert
Dez. 2011
Beiträge
3.314
Ich möchte einen Screenshot-Befehl auf einen Tastendruck legen. Das als Vorbemerkung. Also 1 Befehl bei den Shortcuts definieren und möglichst kein Script.

Die 1. Herausforderung ist einen Screenshot nach stdout zu senden, dann geht es mit einer Pipe weiter. Mehr dazu, wenn der 1. Teil gelöst ist.

Unterscheiden muss man dann auch noch X11 und Wayland.

Wichtig ist auch, dass das aktive Fenster erkannt wird und dazu nicht rumgetrickst werden muss, das ja Zeit kostet.
 
  • Gefällt mir
Reaktionen: Alexander2
Ich glaube ich verstehe deinen Use Case noch nicht ganz.

Du bindest auf einen Shortcut in der DE den passenden Befehl für das Screenshot Tool deiner Wahl. Was hast du mit stdout und der Pipe Vor?
Warum sind Millisekunden zum starten eines Skriptes ein Problem? Start eines Screenshot Tools dauert auch ein paar Millisekunden.

Kannst du mal darlegen welches Problem du lösen möchtest unabhängig der technischen Umsetzung.
 
  • Gefällt mir
Reaktionen: RedPanda05, schwimmcoder, linuxnutzer und 4 andere
Es gibt soweit ich weiß ein kommandozeilen Screenshot tool, das könnte das vielleicht. alternativ, screenshot in bestimmten Ordner Y Datei erkennen, dann weitersenden an x
Ergänzung ()

https://linux-de.com/?p=18816
Das könnte das vielleicht machen, das war jedenfalls der Gedanke
Bildschirmfoto_20251130_224738.png

https://man.archlinux.org/man/scrot.1.html

Hier noch nen Infobit, aber du kannst ja selber schauen, es kann irgendwas mit focused.
Da gibts ja nen Man und sicher nich mehr Infos.

Bildschirmfoto_20251130_225305.png


Wird soweit ich weiß gerne bei Tiling WM benutzt.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: linuxnutzer
Alter_Falter schrieb:
Was hast du mit stdout und der Pipe Vor?

Das ist alles etwas kompliziert und noch nicht fertig gedacht.

Es geht um 3 Arten von Screenshots:

  • ganzer Schirm
  • aktives Fenster
  • zeitverzögert

Also das, was in der Regel funktioniert.

Es geht um verschiedene Arbeitsplätze und soll überall über den gleichen Shortscut funktionieren. Ob der Befehl selber für Wayland anders ist als X11 ist verschmerzbar.

Beispiel für einen UHD-Monitor mit 3840x1920.

Ein avif-Screenshot braucht 2.5MB. Den reduzierich auf 5kB. JPG liegt bei ca. 500kB.

Code:
$ time import -window root -resize 1600x -quality 20 "$HOME/Bilder/screenshot_$(date +'%Y-%m-%d_%H-%M-%S').avif"

Je nach Vorgabe ist die Komprimierung durchaus ausreichend.

Nun geht es darum einen Befehl für das aktive Fenster zu definieren.

Code:
$ time import -window $(xprop -root _NET_ACTIVE_WINDOW | awk '{print $NF}') -resize 1000x -quality 20 screenshot.avif

real    2m12.726s
user    0m0.556s
sys    0m0.112s

Manchmal geht das auch schneller, aber immer zu langsam.

Man könnte auch nach /tmp schreiben und von da weiter machen.

Ansätze findet man bei https://gitlab.freedesktop.org/emersion/grim für Walyand und https://github.com/naelstrof/maim Da fehlt mir aber noch der Durchblick.

Jedenfalls hat Imagemagick mit heif Probleme, avif scheint zu funktionieren. Aber eventuell ist eine Pipe für avif besser als Imagemagick. Vgl. https://linuxconfig.org/converting-images-to-avif-on-linux-including-jpg-png-and-webp-formats
 
  • Gefällt mir
Reaktionen: Alexander2
Das klingt schon wieder nach einen XY-Problem..
 
  • Gefällt mir
Reaktionen: ueg und Alter_Falter
schwimmcoder schrieb:
schon wieder nach einen XY-Problem

Ich hoffe du bist nicht an einem Skotom erkrankt. Was hat das mit der Fragestellung zu tun. Der Rest ist Diskussionsbasis, die wie geschrieben, noch nicht fertig gedacht ist. Es geht vorerst nur um das Thema der Überschrift.

Alexander2 schrieb:

Darüber kann man diskutieren, aber zuerst müssen wir dahin kommen um das anzuwenden. Die Frage ist dann, wird die Bildvorschau von JPEG XL in Thunar und Dolphin angezeigt?

Wenn ich den Screenshot in stdout habe, dann kann ich verkleinern und in fast jedes Format konvertieren.

Code:
$ time import -window root -resize 1600x -quality 20 "$HOME/Bilder/screenshot_$(date +'%Y-%m-%d_%H-%M-%S').avif"

real    0m0.317s
user    0m0.775s
sys    0m0.220s

Code:
$ time import -window root -resize 1600x -quality 20 "$HOME/Bilder/screenshot_$(date +'%Y-%m-%d_%H-%M-%S').jxl"

real    0m0.162s
user    0m0.531s
sys    0m0.200s

Ok, jxl ist schneller, aber wird in Thunar nicht als Bildvorschau angezeigt.

PS:
Imagemagick dürfte mit JXL nicht klar kommen.

Gleicher Screenshot.
JXL: 8.4MiB
avif: 8,5kiB

Ein schöner Faktor ;-) Auch bei heif gibt es noch einen Bug.

https://manpages.debian.org/trixie/maim/maim.1.en.html
maim (make image) is an utility that takes a screenshot of your desktop, and encodes a png, jpg, bmp or webp image of it. By default it outputs the encoded image data directly to standard output.

Das funktioniert schon ganz gut, aber imagemagick hat in diesem Fall Probleme mit avif.

Code:
time maim | convert - -resize 1600x -quality 80 "$HOME/Bilder/screenshot-maim_$(date +'%Y-%m-%d_%H-%M-%S').jpg"

Man muss sich also eine Pipe überlegen um nach avif umzukodieren und dort die Qualität definieren. Da gibt es mehrere Möglichkeiten. Hat wer einen Vorschlag was? Ich tendiere zu https://github.com/AOMediaCodec/libavif/blob/main/doc/avifenc.1.md
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Alexander2
linuxnutzer schrieb:
Das funktioniert schon ganz gut, aber imagemagick hat in diesem Fall Probleme mit avif.
Was nicht schlimm ist. In so einem Fall reduziert man die Komplexität, lässt AVIF einfach weg und nimmt stattdessen JPEG oder PNG. Dein größeres Problem ist ohnehin der Unterschied zwischen X11 und Wayland. Du wirst verschiedene Tools benötigen, die natürlich anders bedient werden. Da wird es mit nur einer Taste "die alles kann" schwer.
 
  • Gefällt mir
Reaktionen: schwimmcoder
Evil E-Lex schrieb:
lässt AVIF einfach weg

Da bin ich zur Zeit.

Code:
maim -i $(xdotool getactivewindow)  | convert - -resize 1600x -quality 20 "$HOME/Bilder/screenshots-$USER/screenshot_$(date +'%Y-%m-%d_%H-%M-%S').jpg"

Evil E-Lex schrieb:
Dein größeres Problem ist ohnehin der Unterschied zwischen X11 und Wayland.

Sehe ich nicht so. Ich sehe das eher als das geringere.

Evil E-Lex schrieb:
Du wirst verschiedene Tools benötigen,

Ja, bei Wayland muss ich mich mit grim auseinandersetzen, aber eines nach dem anderen. Über grim bin ich ja zu maim gekommen.

Evil E-Lex schrieb:
Da wird es mit nur einer Taste "die alles kann" schwer.

Wieso? Hinter der gleichen Taste stehen dann verschiedene Befehle, je nach OS.

Mein größtes Problem dürfte vielleicht Ubuntu 24.04 (stable) sein.

Code:
$ maim  | avifenc --stdin  output.avif
Y4M header too small: (stdin)
ERROR: Cannot read y4m through standard input

Es stellt sich die Frage, ob ich einen Syntaxfehler habe oder eine zu alte Version.

https://man.archlinux.org/man/avifenc.1.en

--stdin
Read y4m frames from stdin instead of files; no input filenames allowed, must set before offering output filename.

Liegt es an y4m?
 
  • Gefällt mir
Reaktionen: Alexander2
linuxnutzer schrieb:
Die Frage ist dann, wird die Bildvorschau von JPEG XL in Thunar und Dolphin angezeigt?
Gvenview kanns auch

2025-12-01_16-07.webp


Hatte letzt als ich nen Bericht zu JPEG XL gesehen hatte (wird bald in vielen Browser integriert sein, Zen hats jetzt schon direkt, Alles bei apple hats, Microsoft hatte ebenfalls bereits integriert.) QT5 und QT6 Plugin installiert.

Eigentlich hakt nur Google und als Konsequenz auch Firefox, weil die das erst machen wollten,wenn Google das vormacht. Also Google hatte irgwendwie wohl interesse daran, das eigene Format durchzusetzen, aber JPEG XL ist in jedem Belang besser und ist Adobe das in den PDF Standard integrieren will/hat macht google nun auch mit, wohl wegen der PDF Unterstützung im Browser.

Ich kenne natürlich nicht jedes Programm, das es kann, aber bei mir funktionierts. Das einzige, das ich mir auch irgendwie davon erhoffe ist die Möglichkeit HDR Screenshots zu machen, aber die Screenshot Tools könnens noch nicht.

Edit:
Übrigends, Computerbase erkennt das noch nicht als regelkonformes Bildformat im Forum an :-) kennt der Dialog nicht.
Ergänzung ()

Das ist schade, das JPEG XL mit Imagemagick noch Buggy ist.

Ich mache aber auch Screenshots und auch Screenshot ausschnitte inklusive "schnellbearbeitung direkt im Screenshottol und da kann zumindest spectacle JPEG XL und das funktioniert dann auch, bei Flameshot geht das mit dem Ausschnitt, dem bearbeiten, aber es kann kein JPEG XL leider.

Edit: für das Forum nehme ich Webp, man hat eine große auswahl an Formaten, die man einstellen kann für Screenshots.
 
Zuletzt bearbeitet:
Die Default..Screenshots werden bei UHD in png viel zu groß, in jeder Hinsicht, also überelge ich, was man da optimieren könnte.

Auflösungsreduzieurng
schlechtere Qualität bei stärkerer Kompression
Bildformat
Benamung und Ablage, die nach einer Neuinstallation in einer anderen Partition erhalten bleibt

Zur Auflösungsreduzieurng fällt mir nur IM o.ä. ein., daher Ausgabe nach stdout. Aber notfalls schreibe ich nach /tmp

schlechtere Qualität bei stärkerer Kompression notfalls auch mit IM und jpg

Beim Bildformat muss einiges mitspielen und wie du schon schreibst computerbase ist noch nicht so weit für neue Formate

Ich will eine automatische Speicherung ohne Interaktion. Da wird es für mehrere User schwierig.

Zur Zeit bin ich bei:

Code:
maim -i $(xdotool getactivewindow)  | convert - -resize 1600x -quality 20 "$HOME/Bilder/screenshots-$USER/screenshot_$USER""_$(date +'%Y-%m-%d_%H-%M-%S').jpg"

Da muss ich mir was einfallen lassen, dass das Zielverzeichnis für alle User des PCs vorhanden ist. In einem Script jedes Mal abfragen, ob das Verzeichnis vorhanden ist, ist bei einem Screenshot zu aufwendig. Vielleicht stecke ich das in ein Script beim Booten. Jetzt muss ich erst mal wissen wie alles organisiert sein soll. Sieher anderer THread.

Alexander2 schrieb:
Gvenview kanns auch

Wichtig sind die die Dateimaanager Thunar und Dolphin. Ich mag eigentlich Geeqie lieber. Kann Gwenview die Auflösung und Dateigröße wie bei geeqie direkt anzeigen?

Ich habe bei Thunar bis jetzt nur avif geschafft, vielleicht fehlt ein Paket? Für avif braucht man libavif-gdk-pixbuf
 
linuxnutzer schrieb:
Beim Bildformat muss einiges mitspielen und wie du schon schreibst computerbase ist noch nicht so weit für neue Formate
Ich hatte überlegt mal ein JXL als JPG reinzuschmuggeln, ich vermute eine simple Dateiendungserkennung. Keine Dateitypserkennung durch Dateiinhalte.
Edit:
Ok hab ich grad mal getestet :D
es wird doch mehr getestet, eine OOOps beschwerde kam.

Dolphin übrigends stellt sich Dümmlich an und ab umbenennung der Datei erkennts kein Vorschaubild mehr. Standard war doch mal unter Linux, das alle Dateien nach dem Inhalt erkannt werden, nicht nach dem Namen. Also die ersten Bits der Dateien. Hat sich wohl geändert. Gvenview wiederum ist sinnvollerweise die Umbenennung egal, es wird normal korrekt geladen, was ich umbenannt habe.

Edit:
Bei 2 bei diesen Tabs, da hat Gvenview immer auf, was du als letztes benutzt hattest.
2025-12-01_17-47.webp

Und da sind die Infos 3 + 4 , wobei dir auch direkt schon in der Titelleiste nach dem Namen sind. Bei 1

Unter den Tabs bei 2 kannste auch Aktionen wählen, wo du das auch per klick tort an ein anderes Programm weitergeben kannst. und andere Sachen.

Edit:
Ah, das habe ich selbst gerade erst entdeckt, bei Gvenview kannste da unter Aktionen auch so wie ich das oben im Screenshot mit Flameshot gemacht habe Schnellbearbeitungen machen, also Pfeile, zahlen, .. ist auch ziemlich gut :D

2025-12-01_17-51.webp


Edit: aber kein Resize an der Stelle.
Edit:
das Resize ist direkt unter aktionen als Einzelpunkt.

Aber ich verstehe schon, das ist natürlich dann manuell. Und mit dem vorgehen wie du das Planst stellst du dir ja fest dein Preset per Kommandozeile ein, evtl. sogar mit if then, drin und hast so die wollmilchsau schnell Lösung für genau dein Bedürfnis, wenns fertig ist :-)

Dir sind diese "magieeinzeiler" unter Linux bekannt? man kann so viel an logik und funktion ein eine einzelne Befehlszeile Quetschen und teils mega Kurz.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: linuxnutzer
Alexander2 schrieb:
direkt schon in der Titelleiste

Kann man die Info nach unten bringen?

Alexander2 schrieb:
für das Forum nehme ich Webp

Habe es gerade probiert:

Code:
maim -i $(xdotool getactivewindow)  | convert - -resize 1600x -quality 20 "$HOME/Bilder/screenshots-$USER/screenshot_$USER""_$(date +'%Y-%m-%d_%H-%M-%S').webp"

WebP: 111kB
jpg: 92kB

Die 20% Qualität bei jpg reichen schon um zB ein Menü zu zeigen. Die Frage ist ob webp bei den % vergleichbar ist.

Interessant sind auch die Farbunterscheid zwischen jpg und webp, aber für meinen Zweck völlig egal.
 
  • Gefällt mir
Reaktionen: Alexander2
Zurück
Oben