Как сделать снимок экрана в X.org?
Я не уверен, что кнопка Print Screen «просто сработает», и не знаю, как ее протестировать.
решение1
Наиболее часто используемое приложение Linux для создания снимков экрана называетсяscrot
Вы можете установить его для Debian с помощью:
sudo apt-get install scrot
Или для Арча:
sudo pacman -S scrot
Скриншот делается путем ввода:
scrot output-file.png
Если вы хотите привязаться scrot
к print screen
клавише, то это должно контролироваться вашим оконным менеджером.
решение2
Я нашел отличный ответ на этот вопросздесь, стоит повторить.
Это можно сделать с помощью ImageMagick. Установите, выполнив команду
sudo apt-get install imagemagick
Чтобы захватить весь рабочий стол, просто введите
import -window root screen.png
Или вы можете сделать это с задержкой в 5 секунд.
sleep 5; import -window root screen.png
решение3
Я использую 'xwd'. Например, вот что я только что сделал: xwd | xwdtopnm > dw.ppm
Единственный недостаток xwd, о котором я знаю, заключается в том, что вам нужна какая-то другая утилита для преобразования его вывода в нечто, понятное для чего угодно, кроме 'xwud'.
решение4
Это скрипт perl6, который я использую для полученияокно корневой областиилизадерживатьСкриншоты с использованием импорта:
#!/usr/bin/env perl6
use v6;
sub message(Str $file) {
run <xmessage -nearmouse -timeout 3>, "Screenshot saved in $file";
}
sub print_window(Str $file) {
qx{xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)"} ~~ /(0x\d*).*$/;
run <import -window>, $0, $file;
message($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; message($file) }
when 'area' { run "import", $file ; message($file) }
when 'window' { print_window($file) }
when 'delay' { sleep 5; print_window($file) }
default { say 'Something went wrong' ; exit }
}
}
Вот сочетания клавиш в i3 для запуска скрипта:
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