LINUX.ORG.RU

Как сделать скрин всех виртуальных рабочих столов ?

 , , , ,


1

1

Что бы в итоге было как тут например [GNOME 3][Arch] Привыкаю к третьегному Сабж.

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

Зависимости:

apt install xdg-utils graphicsmagick wmctrl scrot bash
Скрипт:
#!/bin/bash
SCREENALL_WM_IMAGE_DIR="/tmp/`uuidgen`/";
SCREENALL_WM_NUMBERS=`wmctrl -d | wc -l`;
SCREENALL_WM_CURENT_NAME=`wmctrl -d | grep "*"`;
SCREENALL_WM_CURENT_NUMBER=${SCREENALL_WM_CURENT_NAME:0:1};

mkdir $SCREENALL_WM_IMAGE_DIR;


for ((i=0; i < $SCREENALL_WM_NUMBERS; i++ ))
do
    wmctrl -s $i;
    scrot -q 100 -d 1  $SCREENALL_WM_IMAGE_DIR$i.png
done

wmctrl -s $SCREENALL_WM_CURENT_NUMBER;
convert -append $SCREENALL_WM_IMAGE_DIR*.png "/home/$USER/vertical`date`.png"
convert +append $SCREENALL_WM_IMAGE_DIR*.png "/home/$USER/horizontal`date`.png"

rm -rd $SCREENALL_WM_IMAGE_DIR;
xdg-open ~/;
echo "Done";

Всем спасибо, всем чаю сладкого с печеньками. Zubok те вафля шеколадна одна штука.

UDP: convert не смог склеить 9 рабочих столов по горизонтали 1920x1080 (( Только 8 https://imgur.com/ij5DA51 https://imgur.com/tw0ILNs

Deleted

Ответ на: комментарий от Deleted

scrot по умолчанию делает снимок всех рабочих столов в ряд.

У меня делает снимок текущего и всё. -m пробовал не помогает, scrot version 0.8

А так — любой редактор изображений в руки.

Я не хочу руками я хочу автоматом, сейчас если не найду решения надо смотреть как боковая панель гнома с рабочими столами делает превью и накодить на основе этого скришотер, но пока я ищу что-то готовое.

Deleted ()

Может быть, и есть такой или есть опции у известных нам утилит типа import из imagemagick. Надо посмореть внимательно. Но если не найдешь, то вот вариант. Пишешь скрипт, в котором wmctrl -s <n> (выбор виртуального стола <n>) перемежается с получением скриншота, а потом в этом же скрипте - монтаж. WM, разумеется, должен поддерживать EWMH или хотя бы его подмножество, которое позволяет переключать виртуальный стол.

UPD: или можно xdotool set_desktop переключать столы.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 3)
Ответ на: комментарий от anonymous

Всё делать надо через расширения, оно бы ладно, но стоит взглянуть в исходник любого расширения глаза разбегаются от многообразия объектов,методов и всего всякого, но нормальной документации нет от слова совсем, я сразу пошёл в https://github.com/GNOME/gnome-shell/blob/master/js/ui/workspaceThumbnail.js но блин мне грустно, откуда например унать что есть Gtk.Image.new_from_icon_name и откуда узнать что есть константы OVERRIDE_SCHEMA, в итоге идея gjs простой и быстрый пилите расширения на нём, превратилось в то что чтобы написать расширения понимая что ты пишешь, а не копируя куски кода ты можешь только если изначально был в теме разработки shell и gjs. Выдыхаю. Блин, хотя такая херня со всем js говном, нода тоже самое, любой js проект тоже самое. Документация уровня дно.

Deleted ()
Ответ на: комментарий от Deleted

Ну, вот можно и xdootool. Перед переключением узнать, сколько столов (xdotool get_num_desktops), а потом им же и переключать. В wmctrl тоже можно узнать при помощи wmctrl -d, но эта команда выдает число виртуальных столов в виде строчек с параметрами. Одна строчка — один стол. Можно просто по числу строчек и понять, сколько виртуальных столов. Это на тот случай, если надо автоматически определять их число, а не использовать указанное пользователем число.

Также там можно в скрипте добавлять новые столы, но что и как добавится, зависит от WM.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от anonymous

Отнюдь. И в справке упомянуты только дисплеи.

Действительно, перепутал с дисплеями.

С рабочими столами да, только руками, либо что-то wm-cпецифичное.

Deleted ()