Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Скрипт периодичного создания скриншотов через определённую задержку  (Прочитано 2310 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн thunderamur

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6844
    • Просмотр профиля
Собсно возникла такая потребность для создания скринов во время игры в кваку, программ подходящих не нашёл сразу, пошёл искать как написать скрипт... В итоге это мой первый скрипт на bash, где не просто создание/копирование/удаление файлов или распаковка архивов.

#!/bin/bash
# Скрипт написал
# Рамиль (aka Thunder) Миннигалиев

echo "Введите задержку (сек.)"
read delay

echo "Введите количество итераций, -1 для бесконечного цикла"
read count

while [ $count != 0 ]
do
sleep $delay
date=`date "+%d-%m-%Y_%H:%M:%S"`
xwd -root | convert - scr_$date.png
echo "scr_$date.png"
let count=count-1
done

exit 0

хотелось бы ещё сделать, чтобы скринил нужное окно по имени, т.е надо как-то команду изменить эту
xwd -root | convert - scr_$date.pngпробовал
xwd -name gedit | convert - scr_$date.pngно возникала ошибка типа не найдено окна с таким именем, по -id то же самое
xwd: error: No window with name gedit exists!
convert: Missing an image filename.

З.Ы.: очередной велосипед, зато свой  :)
« Последнее редактирование: 07 Апреля 2009, 19:06:35 от Thunde® »

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
xprop поможет верно определить имя и id нужного окна.
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн thunderamur

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6844
    • Просмотр профиля
чёт не понял я xprop, вроде узнал id - 0x3a00001, подсунул - ругается...
покажи пример, плиз.

а вообще вопрос такой, как определить id/name активного окна?

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Это предполагается в интерактивном режиме использовать.
Т.е. запустил что-то, в другом терминале написал xprop, определил id окна, подставил в скрипт, запустил скрипт.
У меня xwd -id 0x... .. . сработало.

Что-то я не могу сходу найти системной утилитки для определения id id активного окна.
Но можно простенькую программку написать.

Вот, например, на перле. Надо предварительно установить модуль X11::Tops (сам не пробовал, в CPAN ссылку нашел).


perl -MX11::Tops -e "print active(); "
« Последнее редактирование: 07 Апреля 2009, 18:00:31 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн thunderamur

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6844
    • Просмотр профиля
тыкал в окно терминала
(Нажмите, чтобы показать/скрыть)

как видно в последнем случае ошибки нет, но скрин вышел 1х1 пиксел... чего я не понимаю, поправь где я ошибся.

Оффлайн vasilisc

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2563
  • г.Северодвинск - строим АПЛ
    • Просмотр профиля
    • Авторские статьи об OpenSource
я юзаю такой
где то нашел - не помню
(Нажмите, чтобы показать/скрыть)

Оффлайн thunderamur

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6844
    • Просмотр профиля
import -window root $HOME/d.pngвместо окна терминала и gkrellm увидел чёрные пустоты... но кое-что от этого лисапеда я на свой стяну)))

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
тыкал в окно терминала
xprop | grep id
bitmap id # to use for icon: 0x340002b
bitmap id # of mask for icon: 0x340002e
window id # of group leader: 0x3400001
_NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x3400174
WM_CLIENT_LEADER(WINDOW): window id # 0x3400001

xwd -id 0x340002b | convert - scr.png
как видно в последнем случае ошибки нет, но скрин вышел 1х1 пиксел... чего я не понимаю, поправь где я ошибся.

Надо было брать id от window (window id = 0x3400174), a не id от какого-то битмапа.
Хм.. У меня для разных окон это то получается, то нет. Не силен я в программировании оконных интерфейсов.  :-\
"Читайте маны, они рулез." :)
« Последнее редактирование: 08 Апреля 2009, 10:45:19 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн thunderamur

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6844
    • Просмотр профиля
я же написал, что перепробовал все, там где не было ошибки на выходе получил 1х1))

да в общем щас есть чем заняться...

 

Страница сгенерирована за 0.016 секунд. Запросов: 22.