Il y a environ un mois, je suis passé d'Ubuntu 14.04 LTS à Arch et je suis assez satisfait de cette décision. Cependant, je manque certaines fonctionnalités avec ma nouvelle distribution, en particulier Shift+printscr qui dans Unity permet de sélectionner une région d'écran à capturer.
J'utilise i3 WM. Donc, ma question est: comment puis-je configurer un comportement de capture d'écran semblable à Unity pour pouvoir accrocher des régions d'écran ou des fenêtres avec un raccourci clavier ou quelque chose (sans creuser dans l'ID de la fenêtre et les éléments de la console)?
Cela fait longtemps que je n'ai pas posé cette question et il semble que cela soit utile pour certains utilisateurs. Je fournis donc mon propre script pour faire des captures d'écran avec les packages xclip
et imagemagick
.
Tout d'abord, installez les dépendances mentionnées ci-dessus. Ensuite, vous pouvez faire ce que vous voulez avec le script ci-dessous. Il prend en charge la capture d'écran d'un écran entier ou d'une région d'écran et copie automatiquement une capture d'écran dans un presse-papiers afin que vous puissiez la coller partout (navigateur e.i ou messager Telegram).
Un couple de pas si difficile à trouver des hacks ajouterait un support pour capturer des fenêtres spécifiques et basculer la copie.
#!/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}
Et voici mes raccourcis de référence pour un i3wm
pour utiliser ce script:
# 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/"
Vous pouvez utiliser import
, une partie d'ImageMagick.
Capturer une région
Cela changera votre curseur en un réticule et lorsque vous cliquez et faites glisser pour former une boîte, cette boîte sera enregistrée en tant que ss.png
.
import ss.png
Capture tout l'affichage
import -window root ss.png
Vous pouvez également remplacer le mot root
par l'ID de fenêtre pour capturer une fenêtre spécifique.
avez-vous essayé scrot un simple utilitaire de capture d'écran en ligne de commande
réf.,: https://faq.i3wm.org/question/202/what-do-you-guys-use-for-printscreen/
Tout d'abord, installez xclip, imagemagick et jq!
pacman -S imagemagick jq xclip
J'ai cette ligne dans ma configuration 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
Cela mettra une capture d'écran de la fenêtre active sur votre presse-papiers lorsque vous appuyez sur mod (Window/Alt) + Printscreen.
i3-msg -t get-tree récupère toutes les fenêtres d'i3 en tant que json, puis nous utilisons jq pour obtenir l'id de la fenêtre de la fenêtre focalisée. Nous le passons à la commande d'importation imagemagicks et redirige le résultat vers xclip qui le mettra dans le presse-papier!
Flameshot est une alternative décente.
bindsym Print exec flameshot full
bindsym Shift+Print exec flameshot gui
Vous pouvez utiliser l'option -p /path/to/directory
pour ignorer la sélection du répertoire de sauvegarde.
J'aime obturateur pour ses capacités de post-traitement (cercles rouges dessinés à la main!) Et ses options de configuration complètes.
Vous pouvez saisir une région d'écran en exécutant
shutter --select
Vous pouvez configurer des raccourcis clavier dans .config/i3/config
ainsi:
bindsym Print exec shutter --full
bindsym Shift+Print exec shutter --select
Le chargement prend une seconde, vous pouvez donc le démarrer automatiquement en arrière-plan:
exec shutter --min_at_startup
L'obturateur sera alors accessible via une icône de plateau, ce qui vous donne de nombreuses options utiles au-delà de ce qui précède.
Une option très simple si vous l'avez installée ou si cela ne vous dérange pas de l'installer utilise xfce4-screenshooter et la configuration i3 serait:
bindsym Print exec --no-startup-id xfce4-screenshooter
Mise en garde: bien que relativement léger, il existe certaines dépendances si vous n'utilisez aucun autre programme xfce4
Ce script Perl6 prend racine, zone, fenêtre, ou délai Captures d'écran utilisant l'importation et les enregistre dans un fichier $ et dans le presse-papiers.
#!/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";
}
Voici les principales liaisons dans i3 pour exécuter le 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
Utilisez maim . Il est développé plus activement et dépend de slop qui est bien meilleur.
N'utilisez pas de scrot. Sa boîte de sélection corrompt et laisse une impression dans la capture d'écran (également la boîte se déforme lors du redimensionnement) lorsqu'elle est utilisée sur une fenêtre de mise à jour (disons htop).