LINUX.ORG.RU

uniscreen: делаем снимок всех рабочих столов для unixporn

 unixporn, ,


7

2

Для быстрого создания снимка вашей композиции — для галереи ЛОР’a и не только — воспользуйтесь утилитой uniscreen, автоматизирующей многократные попытки сделать идеальный скриншот.

#!/usr/bin/env bash
UNISCREEN_WM_IMAGE_DIR=`mktemp -d --suffix=_UNISCREEN`;
UNISCREEN_WM_NUMBERS=`wmctrl -d | wc -l`;
UNISCREEN_WM_CURENT_NAME=`wmctrl -d | grep "*"`;
UNISCREEN_WM_CURENT_NUMBER=${UNISCREEN_WM_CURENT_NAME:0:1};

for ((i=0; i < $UNISCREEN_WM_NUMBERS; i++ ))
do
    wmctrl -s $i;
    scrot  -q 100 -d 1  $UNISCREEN_WM_IMAGE_DIR/src_$i.png;
done

wmctrl -s $UNISCREEN_WM_CURENT_NUMBER;
convert -append $UNISCREEN_WM_IMAGE_DIR/src_*.png "$UNISCREEN_WM_IMAGE_DIR/vertical.png";
convert +append $UNISCREEN_WM_IMAGE_DIR/src_*.png "$UNISCREEN_WM_IMAGE_DIR/horizontal.png";
xdg-open $UNISCREEN_WM_IMAGE_DIR;
echo "Done";

Так как размер скрипта довольно мал, вместо установки его можно разместить в файле .bashrc в таком виде:

uniscreen()
{
  скопируйте скрипт сюда
}

Или создать файл /usr/local/bin/uniscreen c содержимым скрипта, сделать его исполняемым chomd +x /usr/local/bin/uniscreen.

Затем просто вызовите из терминала uniscreen.

Рабочие столы начнут автоматически меняться, на каждом будет сделан снимок экрана. Затем рабочий стол вернётся в изначальное положение и откроется ваш файловый менеджер с готовыми склеенными изображениями в вертикальном и горизонтальном варианте.

Установить зависимости: sudo apt install wmctrl scrot imagemagick grep xdg-utils bash coreutils


Несмотря на всю ущербность двадцати строк кода, у скрипта есть имя и даже репозиторий с лицензией на случай обновления, например для поддержки wayland.

★★★★★

Проверено: hobbit ()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 16)

Псссс только тихо, я скопипастил свой же скрипт из галереи (хотя он был и ещё раньше спаcибо @Zubok ), полил водой и поперчил. А ещё убрал рм рф. Модераторам не говорите, а то не апрувнут :D

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от LINUX-ORG-RU

я пока не собираюсь использовать, но на всякий случай схоронил!

заодно наконец-то дошли руки таки посмотреть ман на wmctl ))

mumpster ★★★★★
()

есть же до сих пор редискинехорошие люди, которые в начало скрипта set -e не добавляют.

Потом, в итоговой склейке – с чего ты взял, что globbing раскроется именно в нужном тебе порядке?

Уровень башизмов, конечно, зашкаливает…

demidrol ★★★★★
()
Последнее исправление: demidrol (всего исправлений: 1)

Сиськи есть и ладно..

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

Здрав будь, боярин!

Паиба!

Что ж, для домохозяйки весьма, соображаешь))

Отнють! Я тот ещё дэбил. Если бы все сейчас видели над чем я туплю второй день, половина ЛОРа бы взоржала пацталом :D А я при этом неунывал

LINUX-ORG-RU ★★★★★
() автор топика

Ещё можно заскринить рабочие столы по отдельности, залить скрины в первый удобный онлайн-сервис и получить итоговую пикчу, склеенную хоть по горизонтали, хоть по вертикали.

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

А всё, я сделяль!! Короче я сидел и думал как карту высот превратить в карту нормалей

Кратко из всех вариантов лучше всего подошёл фильтр Собеля. Он даёт два градиента по X и Y изображения, добавить Z руками, нормализовать и вуаля получим вектор от каждого пикселя изображения почти перпендикулярный к прямой проходящей меж двух высот, а если так значит годится как нормаль.

А пердолился я с вариантом сначала построить тангенс и бинормаль, потом из них получить нормаль, оно работает, но я тупой и не понимаю до конца как оно работает. И поэтому косяки то тут то там. А Собель и подобные простые и тупые как палка, хотя если википедию глянуть то мало что понятно, сразу видно математик писал, так сложно объяснять такие банальные вещи могут только они.

Хотел всё сам, но пришлось таки загуглить :( Хотя в голове у меня было красивее типа вот двумерная плоскость значение пикселя это высота, берём искомый пиксель у него есть высота, но берём мы один над ним и другой под ним у них тоже высоты строим их на графике между высотами проводим прямую, от этой прямой строим перпендикуляр и вуаля у нас есть Y координата вектора, делаем тоже самое с левым и правым пикселем от нашего центрального и вуаля вот у нас X координата. Z координату выбираем по вкусу, не важно. Всё теперь мы имеем нормаль для нашего центрального пикселя, и так далее по всей карте высот для каждого пикселя считаем.

Красиво? Красиво, а на деле херота кака-то получалась :D Хотя я сравнил своё и то как GIMP генерирует, там похоже тоже собель внутри ибо всё пиксель в пиксель одинаково почти. А в 3D уже выглядит всё одинаково почти.

Теперь уже эксперименты остались, как это всё нормально оформить, я делал уже давно генератор нормалей на источниках света Как отрендерить в UV развёртку хотя там суть в другом, но да ладно.

Короче сделать то сделал, только вот сижу и думаю, а нахер оно мне нужно? :D Пока размышлял о том что оно мне ненужно, наткнулся на Spatial hashing, оч интересно! А главное вроде бы просто. Пойду делать, дураку и море по колено, тритатуськи тритата шлёп шлёп шлёп :D

LINUX-ORG-RU ★★★★★
() автор топика

Скрипт обновился, там теперь можно как тут Xfce, люблю блестючки делает ещё. Спасибо @dmitry237 за идею.

Делает дополнительный скрин сеткой если рабочих столов

  • 2x2 один вариант
  • 3x3 два варианта
  • 9x9 один вариант

Больше наверное нет смысла. Лежит там где лежал https://gitflic.ru/project/blogdron/uniscreen

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от sparkie

Ответ, тоже серьёзный, без шуток. Я его и не осваивал, никогда. Я фиксирую постановку задачи для себя, делю на части. А дальше, man/google/etc по мере необходимости по мере решения части общей задачи. У меня с памятью беда, поэтому учить бесполезно, я всё забуду (я уже забыл). Вот вчера увидел скрин Xfce, люблю блестючки и автор сказал что использовал модифицированную версию под себя. Мне показалось нужным, сразу постановка задачи.

  • Ага, нужно посчитать сколько всего картинок

  • Оно делится на 2?

  • если да то по ширине и высоте надо бы одинаково, тогда квадратный корень числа должен быть без остатка, находим его и всё, делаем сетку

  • Если нет оно делится на 3?

    • Если да то… и так далее
  • число картинок

  • получить ls

    • отфильтровать grep
      • посчитать wc
        • делится ли на два $((переменная % 2))
          • квадрат получить bc
            • получаем echo "scale=10; sqrt($переменная);" | bc -l
              • и так далее

Вот так по шажку всё и делается, но потом в середине приходит понимание что нахер это всё нужно есть типичное 2x2,3x3,9x9 а куда больше и проще просто вписать всё явно. Чем делать арифметику на баше :D

Ну и вот я только вчера узнал про $((арифметику в баше)) например. Через недельку другую меня спроси как числа в баше перемножить, я не скажу :D Мне придётся опять куда то лезть вспоминать.

Короче смотрю только то что надо и только когда это необходимо. Неимоверно завидую тем людям которые схватывают в память всё это или поднатужившись могут вспомнить то что всего пару тройку раз использовали или просто прочли. man/help/google моё фсё. :D Наверное отчасти поэтому NIH синдром ибо проще часто придумать самому чем что-то изучать. Хотя когда как. А так ящитаю, что если bash скрипт вырос до 100~200 строчек и работает как отдельная самостоятельная программа то его надо переписать на Сишечку срочна! (если это разумно).

В целом только практика ****шим код без теории, знаю это плёха ((( Но чво поделать, могу себе позволить :D

LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

Я понял. Спасибо за развёрнутый ответ.

Я знаю, что баш классная штука, но специально им заниматься не доводилось. Так, по мелочи. А тут образовалось несколько незанятого времени в связи с разными событиями и с травмой колена. Чем на диване валяться, излишки личной свободы можно применить на прокачку личных скиллов. Поизучать что-нибудь полезное, например. Всё время придумывать сюжеты книжек или орудовать паяльником несколько однообразно, а однообразие напрягает. Можно и в баш поокунаться.

По поводу памяти. У каждого свой тип памяти. Бывает смешанный тип. Бывает ассоциативный (не знаю, как по-научному). Но в принципе при желании она прокачивается до нужной кондиции.

без теории, знаю это плёха

Да я бы не сказал, что это плохо. Со студенческих времён у меня осталась привычка изучать что-то неведомое через овладение каким-либо источником по теме, даже самым примитивным. Берёшь в библиотеке/покупаешь примитивную брощюрку с упрощённым объёмом информации, получаешь какой-то начальный понятийный аппарат и на таком скелете наращиваешь нужное количество мяса нужного объёма.

могу себе позволить

Твоя жизнь — твои правила.

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

и с травмой колена

Ухх, лечись не торопись!

По остальному, ух яб написал. Но я сейчас как Бройлер 747 и у меня крутое пике в люльку :D

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от LINUX-ORG-RU

лечись не торопись!

Спасибо, лечимся. Сейчас уже полегче, а пару-тройку месяцев назад было такое себе, несколько кошмарненько.

и у меня крутое пике

Главное, спокойнее. Стабилизируй курсовую устойчивость, выпусти шасси, выпусти механизацию и на малом газу плаааавненько, и в момент касания штурвал чуть на себя. :-D

sparkie ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.