Circa un mese fa sono passato da Ubuntu 14.04 LTS ad Arch e sono abbastanza contento di questa decisione. Tuttavia, mi mancano alcune funzionalità della mia nuova distribuzione , in particolare Shift + Printscr che in Unity consente di catturare la selezione di una regione dello schermo.
Uso i3 WM. Quindi, la mia domanda è: come posso configurare il comportamento dello screenshot simile a Unity per essere in grado di catturare aree dello schermo o finestre con una scorciatoia da tastiera o qualcosa del genere (senza scavare nellID della finestra e nelle cose della console)?
Risposta
Puoi utilizzare import
, parte di ImageMagick.
Cattura una regione
Questo cambierà il tuo cursore in un mirino e quando fai clic e trascini per formare una casella, quella casella verrà salvata come ss.png
.
import ss.png
Cattura tutto il display
Puoi anche sostituire la parola root
con lid della finestra per catturare una finestra specifica.
Commenti
Risposta
È passato molto tempo da quando “ho” posto questa domanda e sembra che sia utile per alcuni utenti. Quindi fornisco il mio script per creare screenshot con i pacchetti xclip
e imagemagick
.
Prima di tutto, installa le dipendenze sopra menzionate. Quindi puoi fare qualunque cosa tu voglia con lo script qui sotto. Supporta la creazione di uno screenshot di un intero schermo o di una regione dello schermo e inoltre copia automaticamente uno screenshot negli appunti in modo da poterlo incollare ovunque (browser o Telegram Messenger).
Un paio di hack non così difficili da trovare aggiungerebbero un supporto per lacquisizione di finestre specifiche e attivare / disattivare la copia di parti.
#!/usr/bin/env bash # screenshots stuff # TODO: docs function help_and_exit { if [ -n "${1}" ]; then echo "${1}" fi cat <<-EOF Usage: scregcp [-h|-s] [<screenshots_base_folder>] Take screenshot of a whole screen or a specified region, save it to a specified folder (current folder is default) and copy it to a clipboard. -h - print help and exit -s - take a screenshot of a screen region EOF if [ -n "${1}" ]; then exit 1 fi exit 0 } if [ "${1}" == "-h" ]; then help_and_exit elif [ "${1:0:1}" == "-" ]; then if [ "${1}" != "-s" ]; then help_and_exit "error: unknown option ${1}" fi base_folder="${2}" else base_folder="${1}" params="-window root" fi file_path=${base_folder}$( date "+%Y-%m-%d_%H-%M-%S" )_screenshot.png import ${params} ${file_path} xclip -selection clipboard -target image/png -i < ${file_path}
Ed ecco le mie scorciatoie di riferimento per un i3wm
per fare uso di questo cript:
# take a screenshot of a screen region and copy it to a clipboard bindsym --release Shift+Print exec "scregcp -s /home/ddnomad/pictures/screenshots/" # take a screenshot of a whole window and copy it to a clipboard bindsym --release Print exec "scregcp /home/ddnomad/pictures/screenshots/"
Risposta
Flameshot è unalternativa decente.
bindsym Print exec flameshot full bindsym Shift+Print exec flameshot gui
Puoi utilizzare lopzione -p /path/to/directory
per saltare selezionando la directory di salvataggio.
Commenti
- simpatico strumento che stavo cercando per fare un po di documentazione. Anche tu puoi aggiungere un contrassegno allo screenshot
Risposta
hai provato scrot una, semplice utility di cattura dello schermo da riga di comando
ref.,: https://faq.i3wm.org/question/202/what-do-you-guys-use-for-printscreen/
Commenti
- puoi anche usare scrot -s per catturare una regione specifica. esegui il comando quindi fai clic e tieni premuto, quindi fai clic sul secondo punto, ‘ creerà un file con la data come nome file nella directory corrente.
Risposta
Innanzitutto, installa xclip, imagemagick e jq!
pacman -S imagemagick jq xclip
I avere questa riga nella mia configurazione i3:
bindsym $mod+Print exec \ import -window $( \ i3-msg -t get_tree | \ jq "recurse(.nodes[]) | select(.focused).window" \ ) png:- | \ xclip -selection clipboard -t image/png
Questo inserirà uno screenshot della finestra attiva negli appunti quando premi mod (Window / Alt) + Printscreen .
i3-msg -t get-tree ottiene tutte le finestre da i3 come json, quindi usiamo jq per ottenere lid della finestra focalizzata. Lo passiamo al comando di importazione di imagemagicks e inviamo il risultato a xclip che lo metterà negli appunti!
Risposta
Usa mutilare . È sviluppato più attivamente e dipende da slop , che è decisamente migliore.
Non usare scrot. La sua casella di selezione si corrompe e lascia unimpressione nello screenshot (anche la casella si deforma durante il ridimensionamento) quando viene utilizzata su una finestra di aggiornamento (ad esempio htop).
Commenti
- (1) Che cosè “slop”? (2) Che cosa è, esattamente, meglio di? (3) Perché?
- 1. Seleziona operazione, utilizzata per selezionare le aree della finestra [ github.com/naelstrof/slop] 2. ‘ è migliore rispetto a scrot perché ‘ non subisce la corruzione della casella di selezione (Prova scrot su htop). 3. idk.
Risposta
Unopzione molto semplice se lhai installata o se non ti dispiace installarla sta usando xfce4-screenshooter e i3 config sarebbero:
bindsym Print exec --no-startup-id xfce4-screenshooter
Avvertenza: sebbene sia abbastanza leggero ci sono alcune dipendenze se non stai usando nessun altro programma xfce4
Risposta
Mi piace otturatore per le sue capacità di post-elaborazione (cerchi rossi disegnati a mano!) e le opzioni di configurazione complete.
Puoi prendere una regione dello schermo eseguendo
shutter --select
Puoi configurare le associazioni di tasti in .config/i3/config
in questo modo:
bindsym Print exec shutter --full bindsym Shift+Print exec shutter --select
Il caricamento richiede un secondo, quindi potresti volerlo avviare automaticamente in background:
exec shutter --min_at_startup
Lotturatore sarà accessibile tramite unicona nella barra delle applicazioni quindi, che offre molte opzioni utili oltre a quanto sopra.
Com menti
- Shutter non può ‘ essere facilmente installato completamente su Ubuntu 18.04 in questo momento (lo strumento di modifica dipende dalla libreria non disponibile ; PPA personalizzato non aggiornato). Triste.
Risposta
Questo script perl6 accetta radice, area, finestra, o ritardo Schermate utilizzando limportazione e le salva in un $ file e negli appunti.
#!/usr/bin/env perl6 use v6; sub print_window(Str $file) { qx{xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)"} ~~ /(0x\S*)/; run <import -window>, $0, $file; } sub MAIN( Str $option where $option ∈ <root area window delay> ) { my $today = DateTime.now( formatter => { sprintf "%04d_%02d_%02d_%02d-%02d-%02d", .year, .month, .day, .hour, .minute, .second } ); my $file = "$*HOME/Dades/Imatges/ScreenShots/$today.png"; given $option { when "root" { run <import -window root>, $file } when "area" { run "import", $file } when "window" { print_window($file) } when "delay" { sleep 10; print_window($file) } } run <xclip -selection clipboard -target image/png -i>, $file; run <xmessage -nearmouse -timeout 3>, "Screenshot in clipboard, and saved in $today.png"; }
Queste sono le associazioni di tasti da eseguire in i3 lo script:
bindsym $mod+Print exec Print_Screen root bindsym --release $mod+Shift+Print exec Print_Screen area bindsym $mod+Mod1+Print exec Print_Screen delay bindsym $mod+Control+Print exec Print_Screen window
Answer
Modificato leggermente la soluzione da @ddnomad sopra, ecco la bash
versione dello script con più esplicita e un altro flag che consente il salvataggio solo negli appunti.
#! /bin/bash - help_and_exit() { cat <<-EOF Usage: scregcp [-h|-s|-c] [<screenshots_base_folder>] Take screenshot of a whole screen or a specified region, save it to a specified folder (current folder is default) and copy it to a clipboard. -h - print help and exit -s - take a screenshot of a screen region -c - save only to clipboard EOF exit 0 } base_folder="./" savefile=true region=false params="-window root" while test $# -gt 0; do case "$1" in -h|--help*) help_and_exit ;; -r|--region*) params="" shift ;; -c|--clipboard-only*) savefile=false shift ;; *) if [[ $1 =~ ^\- ]] ; then echo "error: unknown flag "$1"" help_and_exit fi base_folder="${1}" shift ;; esac done file_path=${base_folder}$( date "+%Y-%m-%d_%H-%M-%S" )_screenshot.png import ${params} ${file_path} xclip -selection clipboard -target image/png -i < ${file_path} if [ "$savefile" = false ] ; then rm ${file_path} fi
Quindi questo è ciò che aggiungi a i3
config
:
bindsym --release Shift+Print exec "/dir/to/script.sh -r $HOME/Pictures/screenshots/" bindsym --release Control+Shift+Print exec "/dir/to/script.sh -r -c $HOME/Pictures/screenshots/" bindsym --release Print exec "/dir/to/script.sh $HOME/Pictures/screenshots/" bindsym --release Control+Print exec "/dir/to/script.sh -c $HOME/Pictures/screenshots/"
Quindi la combinazione di tasti è:
- = crea uno screenshot
-
+Control
= salva solo negli appunti -
+Shift
= cattura solo una regione specifica dello schermo
import ss.png
per acquisire uno screenshot di quella finestra.bindsym $mod+shift+s exec import ~/screenshot.png
alla tua configurazione. ‘ non fa niente per me.