Como posso fazer capturas de tela facilmente das regiões da tela no Arch Linux com i3 WM?

Há cerca de um mês mudei do Ubuntu 14.04 LTS para o Arch e estou muito feliz com esta decisão. No entanto, sinto falta de alguns recursos da minha nova distribuição , especialmente Shift + printscr que no Unity permite a seleção de uma região da tela a ser capturada.

Eu uso i3 WM. Então, minha pergunta é: como posso configurar o comportamento de captura de tela do Unity para poder capturar regiões da tela ou janelas com um atalho de teclado ou algo assim (sem cavar na id da janela e coisas do console)?

Resposta

Você pode usar import, parte do ImageMagick.

Capture uma região

Isso transformará seu cursor em uma cruz e quando você clicar e arrastar para formar uma caixa, essa caixa será salva como ss.png.

import ss.png 

Capture a tela inteira

Você também pode substituir a palavra root pelo id da janela para capturar uma janela específica.

Comentários

  • Você também pode clicar em uma janela após import ss.png para fazer uma captura de tela dessa janela.
  • Isso não ‘ não funciona a partir da configuração i3, entretanto. Exemplo mínimo: adicione a linha bindsym $mod+shift+s exec import ~/screenshot.png à sua configuração. Não ‘ não faz nada por mim.
  • Veja a outra resposta sobre flameshot. Isso ‘ é o que eu ‘ m usando atualmente.

Resposta

Já se passou muito tempo desde que “fiz esta pergunta e parece que é útil para alguns dos usuários. Portanto, forneço meu próprio script para fazer capturas de tela com os pacotes xclip e imagemagick.

Primeiro de tudo, instale as dependências mencionadas acima. Então você pode fazer o que você quiser com o script abaixo. Ele suporta fazer uma captura de tela de uma tela inteira ou de uma região da tela e também copia automaticamente uma captura de tela para uma área de transferência para que você possa colá-la em qualquer lugar (navegador ei ou mensageiro Telegram). p> Alguns hacks não tão difíceis de criar adicionariam um suporte para capturar janelas específicas e alternar a parte de cópia.

 #!/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}  

E aqui estão meus atalhos de referência para um i3wm para fazer uso deste s 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/" 

Resposta

Flameshot é uma alternativa decente.

bindsym Print exec flameshot full bindsym Shift+Print exec flameshot gui 

Você pode usar a opção -p /path/to/directory para pular selecionando o diretório de salvamento.

Comentários

  • ótima ferramenta que eu estava procurando para fazer alguma documentação. Até você pode adicionar marcações à captura de tela

Resposta

você já tentou scrot a, utilitário de captura de tela de linha de comando simples

ref.,: https://faq.i3wm.org/question/202/what-do-you-guys-use-for-printscreen/

Comentários

  • você também pode usar scrot -s para capturar uma região específica. execute o comando, clique e segure a seguir clique no segundo ponto, ‘ criará um arquivo com data como nome de arquivo em seu diretório atual.

Resposta

Primeiro, instale xclip, imagemagick e jq!

pacman -S imagemagick jq xclip 

I tenho esta linha na minha configuração 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 

Isto irá colocar uma captura de tela da janela ativa em sua área de transferência quando você pressionar mod (Window / Alt) + Printscreen .

i3-msg -t get-tree obtém todas as janelas de i3 como json, então usamos jq para obter o id da janela em foco. Nós o passamos para o comando imagemagicks import e canalizamos o resultado para o xclip, que o colocará na área de transferência!

Resposta

Use maim . É mais ativamente desenvolvido e depende do slop que é muito melhor.

Não use o scrot. Sua caixa de seleção corrompe e deixa uma impressão na captura de tela (também a caixa deforma ao ser redimensionada) quando usada sobre uma janela de atualização (digamos htop).

Comentários

  • (1) O que é “desordem”? (2) O que, exatamente, é melhor do que? (3) Por quê?
  • 1. Operação de seleção, usada para selecionar regiões da janela [ github.com/naelstrof/slop] 2. É ‘ melhor do que scrot porque não ‘ sofre corrupção da caixa de seleção (tente scrot over htop). 3. idk.

Resposta

Uma opção muito simples se você o instalou ou não se importa em instalá-lo está usando xfce4-screenshooter e a configuração i3 seria:

bindsym Print exec --no-startup-id xfce4-screenshooter 

Advertência: embora sejam bastante leves, existem algumas dependências se você não estiver usando nenhum outro programa xfce4

Resposta

Eu gosto de obturador por seus recursos de pós-processamento (círculos vermelhos desenhados à mão!) e opções de configuração abrangentes.

Você pode pegar uma região da tela executando

shutter --select 

Você pode configurar os atalhos de teclado em .config/i3/config da seguinte maneira:

bindsym Print exec shutter --full bindsym Shift+Print exec shutter --select 

Leva um segundo para carregar, então você pode querer inicializá-lo automaticamente em segundo plano:

exec shutter --min_at_startup 

O obturador estará acessível por meio de um ícone na bandeja, que oferece muitas opções úteis além das acima.

Com mentos

  • O obturador pode ‘ t ser facilmente instalado totalmente no Ubuntu 18.04 neste momento (a ferramenta de edição depende da biblioteca indisponível ; PPA personalizado desatualizado). Triste.

Resposta

Este script perl6 leva raiz, área, janela, ou atraso ScreenShots usando importar e os salva em um arquivo $ e na área de transferência.

#!/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"; } 

Estas são as combinações de teclas no i3 para executar o 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 

Resposta

Editou levemente a solução por @ddnomad acima, aqui “está a bash versão do script com mais explicações e outro sinalizador que permite salvar apenas na área de transferência.

 #! /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  

Então isso é o que você adiciona 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/"  

Portanto, a combinação de teclas é:

  • = fazer uma captura de tela
  • +Control = salvar apenas na área de transferência
  • +Shift = captura apenas uma região específica da tela

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *