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

22

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

Eu uso o i3 WM. Então, minha pergunta é: como eu configuro o comportamento de captura de tela do tipo Unity para conseguir encaixar regiões de tela ou janelas com um atalho de teclado ou algo assim (sem entrar no id da janela e no material do console)?

    
por ddnomad 01.10.2015 / 20:56

8 respostas

8

Faz muito tempo desde que eu fiz essa pergunta e parece que é útil para alguns usuários. Por isso, forneço meu próprio script para fazer capturas de tela com xclip e imagemagick packages.

Primeiro, instale as dependências mencionadas acima. Então você pode fazer o que quiser com o script abaixo. Ele suporta fazer uma captura de tela de uma tela inteira ou 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 e.i ou Telegram messenger).

Alguns não tão difíceis de criar hacks adicionariam um suporte para capturar janelas específicas e alternar a parte de cópia.

Espero que ajude alguém!

#!/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 os meus atalhos de referência para que um i3wm faça uso deste 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/"
    
por 22.02.2017 / 12:49
20

Se você precisar apenas de regiões de tela, use import , parte do ImageMagick. Se você chamá-lo sem argumentos, exceto o nome do arquivo de saída, por exemplo,

import ss.png

ele transformará seu cursor em uma cruz e quando você clicar e arrastar para formar uma caixa, essa caixa será salva como ss.png . Você também pode usá-lo para capturar imagens da tela inteira como

import -window root ss.png

e você pode fornecer ids de janela específicos para a opção -window para capturar uma janela específica.

    
por 01.10.2015 / 22:01
5

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

ref.,: link

    
por 01.10.2015 / 21:44
3

Primeiro, instale xclip, imagemagick e jq!

pacman -S imagemagick jq xclip

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

Isso 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 do i3 como json, então usamos jq para obter o id da janela da janela focada. Nós passamos para o comando imagemagicks import e canaliza o resultado para o xclip que irá colocá-lo na área de transferência!

    
por 10.06.2017 / 18:50
1

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

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

Ressalva: apesar de bastante leve, existem algumas dependências se você não estiver usando nenhum outro programa xfce4

    
por 19.10.2017 / 19:36
1

Eu gosto do obturador para 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 de tela executando

shutter --select

Você pode configurar as combinações de teclas em .config/i3/config da seguinte forma:

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

Demora um segundo para carregar, por isso, talvez você queira iniciá-lo automaticamente em segundo plano:

exec shutter --min_at_startup

O obturador será acessado por meio de um ícone de bandeja, o que oferece muitas opções úteis além das citadas acima.

    
por 09.11.2017 / 14:17
0

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 imagem (também a caixa se deforma ao redimensionar) quando usada em uma janela de atualização (digamos, htop).

    
por 07.11.2017 / 18:51
0

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 a seleção do diretório de salvamento.

    
por 05.05.2018 / 20:05