Как я могу легко делать скриншоты областей экрана в Arch Linux с i3 WM?

Прежде всего, очистите свой sources.list.d и удалите все ненужное.

Во-вторых, почему вы используете Персональные архивы пакетов ( PPA s)? Не используйте Ubuntu PPA в дистрибутиве Debian, многие PPA Launchpad несовместимы с Debian, поскольку пакеты построены на библиотеках Ubuntu.

Чтобы удалить PPA, сделайте следующее:

add-apt-repository --remove ppa:whatever/ppa

Кроме того, нет необходимости в строке deb-src , если она вам не нужна, строки deb являются относительно двоичных пакетов, а deb-src - для пакетов с исходным кодом. Так что от этого можно избавиться. - если это не важно для вас, я лично их не удаляю.

Между тем, Ошибка 404 - это статус HTTP и код ответа, указывающий на то, что клиент смог успешно связаться с сервером, но сервер не может найти то, что было запрошено. PPA не полностью совместимы с Debian, я рекомендую вам удалить их и попытаться создать необходимые репозитории.

Вот что вам нужно и что должно быть в вашем sources.list.d , ваших репозиториев не существует, поэтому вы получаете Ошибка 404 Not Found !

deb http://httpredir.debian.org/debian jessie main
deb-src http://httpredir.debian.org/debian jessie main

deb http://httpredir.debian.org/debian jessie-updates main
deb-src http://httpredir.debian.org/debian jessie-updates main

deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main

Если вам также нужны несвободные компоненты contrib и , добавьте contrib non-free после main :

deb http://httpredir.debian.org/debian jessie main contrib non-free
deb-src http://httpredir.debian.org/debian jessie main contrib non-free

deb http://httpredir.debian.org/debian jessie-updates main contrib non-free
deb-src http://httpredir.debian.org/debian jessie-updates main contrib non-free

deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free
27
10.06.2017, 22:30
5 ответов

Я давно не задавал этот вопрос, и похоже, что он полезен для некоторых пользователей. Поэтому я предоставляю свой собственный сценарий для создания снимков экрана с помощью пакетов xclip и imagemagick .

Прежде всего, установите вышеупомянутые зависимости. Затем вы можете делать все, что хотите, с помощью приведенного ниже сценария. Он поддерживает создание снимка экрана всего экрана или области экрана, а также автоматически копирует снимок экрана в буфер обмена, чтобы вы могли вставить его куда угодно (например, в браузер или мессенджер Telegram).

Пара несложных хаков могла бы добавить поддержку захвата определенных окон и переключить копируемую часть.

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

А вот мои ссылки на ярлыки для i3wm , чтобы использовать этот скрипт:

# 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/"
15
27.01.2020, 19:39

Сначала установите xclip, imagemagick и jq!

pacman -S imagemagick jq xclip

У меня есть эта строка в моей конфигурации 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

Это поместит скриншот активного окна в ваш буфер обмена, когда вы нажмете mod (Window / Alt) + Printscreen.

i3-msg -t get-tree получает все окна из i3 в формате json, затем мы используем jq для получения идентификатора окна, на которое наведен фокус. Мы передаем его команде импорта imagemagicks и передаем результат в xclip, который помещает его в буфер обмена!

6
27.01.2020, 19:39

Огненный выстрел — достойная альтернатива.

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

Вы можете использовать опцию -p /path/to/directory, чтобы пропустить выбор каталога для сохранения.

14
27.01.2020, 19:39

Этот сценарий perl6 используеткорень, область, окно,илизадержкускриншоты с помощью импорта и сохраняет их в $file и в буфере обмена.

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

Это привязки клавиш в 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
1
27.01.2020, 19:39

Слегка отредактировал решение @ddnomad выше, вот bashверсия скрипта с большей ясностью и другим флагом, который позволяет сохранять только в буфер обмена.

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

Тогда это то, что вы добавляете кi3config:

bindsym --release Shift+Print exec --no-startup-id "/dir/to/script.sh -r $HOME/Pictures/screenshots/"                                   
bindsym --release Control+Shift+Print exec --no-startup-id "/dir/to/script.sh -r -c $HOME/Pictures/screenshots/"                        
bindsym --release Print exec --no-startup-id "/dir/to/script.sh $HOME/Pictures/screenshots/"                                            
bindsym --release Control+Print exec --no-startup-id "/dir/to/script.sh -c $HOME/Pictures/screenshots/"                                 

Таким образом, привязка клавиш:

  • PrtSc= сделать скриншот
  • +Control= сохранять только в буфер обмена
  • +Shift= захват только определенной области экрана
2
02.02.2021, 07:36

Теги

Похожие вопросы