Показаны сообщения с ярлыком Программы. Показать все сообщения
Показаны сообщения с ярлыком Программы. Показать все сообщения

понедельник, 23 мая 2011 г.

Mirage


   Поиски легкой и не сильно навороченной софтинки для просмотра изображений привели меня к программе Mirage. Которая, надо сказать, приятно удивила, удовлетворив практически все мои запросы. Программка GTK'шная и весит всего пару сотен килобайт. Из зависимостей лишь Python, да пара библиотечек. Работает быстро, лишними функциями тоже особо не перегружена. Интерфейс позволяет отключать лишние элементы.
   Ставится программа по команде:
sudo aptitude install mirage

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

   По дефолту выглядит так:


   Теперь чуть подробнее о том, что же она может:

   Помимо стандартных и не очень форматов изображений, к несомненным плюсам можно отнести возможность проигрывания gif'ок.
   Умеет выводить изображения в полноэкранном режиме с возможностью перелистывания в нем.
   Имеет режим "слайдшоу" с возможностью выбора длительности паузы перед следующей картинкой (так же доступно и в полноэкранном режиме).
   Два режима снятия скриншотов: всего рабочего стола или же отдельного окна, находящегося в данный момент под курсором мышки. Можно задать паузу перед тем, как будет сделан скриншот.
   Сохранение изображений в другом формате.
   Поворот и отражение изображений.
   Изменение размера изображения, насыщенности, а так же обрезка.
   Создание миниатюр изображений, заданного размера.
   Просмотр изображений в случайном порядке.
   4 режима при открытии нового изображения:
      Smart - если открываемое изображение меньше свободной области окна, то оно откроется в режиме 1:1. Если же размер изображения превышает доступное пространство окна, то картинка будет масштабирована к размеру окна.
      Zoom to fit mode - масштабирует все изображения к размеру окна (большие уменьшает, маленькие увеличивает).
      1:1 mode - открывает все картинки в их реальном размере.
      Last active mode - для нового изображения используется последний активный режим открытия.
   При открытии нового изображения позволяет выбирать: загружать ли только его или все файлы из этой папки (опция Load all images in current directory).
   По желанию может отображать скрытые картинки (опция Allow loading hidden files).
   Позволяет задать пользовательские действия (например, открытие картинки в Gimp или перемещение в папку с избранным).
   Гибко настраиваемый интерфейс и поведение.
   Неплохой набор хоткеев.


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

Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.6/mirage.py", line 2342, in screenshot
    self.screenshot_delay = int(delay.get_text())
ValueError: invalid literal for int() with base 10: ''

В общем-то ничего страшного тут нет и легко исправляется, если у кого-то такая же проблема. Открываем с правами рута какой-нибудь текстовый редактор, например Gedit. Жмем Alt+F2 и пишем:
gksu gedit

Затем открываем в нем файл mirage.py по пути, указанному в ошибке. У меня /usr/lib/pymodules/python2.6/mirage.py. У вас может быть другая версия Питона.
Открыли и ищем в нем поиском следующие слова:
int(delay.get_text())
Целиком строка выглядит так (у меня это строка 2342):
self.screenshot_delay = int(delay.get_text())

И исправляем (delay.get_text()) на (delay.get_value())
Сохраняем и, собственно, все. Ошибка должна пропасть и скриншоты будут нормально сниматься.

   По умолчанию Mirage сохраняет скриншоты в папке /tmp/mirage-произвольный набор символов. По одному скриншоту с именем screenshot.png в каждой такой папке. Разумеется, никто не мешает после снятия скриншота сохранить его где угодно через меню File (Файл) -> Save image as... (Сохранить изображение как). Не могу сказать, что это очень быстро. Да и вообще довольно сомнительное удобство - запускать просмотрщик, чтобы сделать скриншот. Есть способы и получше ;)

Горячие клавиши для работы с программой:

F1 - Помощь
Ctrl-0 - Масштабировать к размеру окна
Ctrl-1 или 1 - Оригинальный размер изображения
Ctrl-F - Открыть каталог
Ctrl-O - Открыть изображение
Ctrl-S - Сохранить изображение
Shift-Ctrl-S - Сохранить изображение как...
F2 - Переименовать изображение
Delete - Удалить изображение
Ctrl-Q - Выход из программы
Ctrl-Left - Повернуть изображение влево
Ctrl-Right - Повернуть изображение вправо
Ctrl-H - Отразить изображение горизонтально
Ctrl-V - Отразить изображение вертикально
Ctrl-Up или +/= или Num+ - Увеличить изображение
Ctrl-Down или - или Num- - Уменьшить изображение
Home - Перейти к первому изображению в списке
End - Перейти к последнему изображению в списке
Left или Backspace или PgDown - Предыдущее изображение
Right или Space или PgUP - Следующее изображение
R - Перейти к случайному изображению в списке
F11 или Shift-Return - Переключение в полноэкранный режим и обратно
Escape - Выход из полноэкранного режима, остановка поиска изображений
F5 - Включить/Выключить режим "слайдшоу"


   Один из примеров пользовательского действия, которое будет преобразовывать изображения в формат jpg:
Идем в меню Edit (Правка) -> Custom actions -> Configure (Конфигурация).
Там добавляем новое действие и пишем в строке Command (Команда): convert %F %P%N.jpg Придумываем какое-нибудь название и задаем горячие клавиши.
Теперь по этой команде изображение будет конвертироваться в формат jpg и сохраняться с тем же именем, что у оригинала, в той же папке.

пятница, 29 апреля 2011 г.

Работа с FFMpeg


   FFmpeg - это кодировщик и конвертер аудио/видео с интерфейсом командной строки и поддержкой большого количества входных и выходных форматов. Список его возможностей и количество опций довольно велико, поэтому попробуем разобраться в некоторых из них.
Все, сказанное ниже, справедливо для Debian Squeeze и FFmpeg установленному из несвободного репозитория Multimedia.

В общем случае формат строки выглядит следующим образом:
ffmpeg [опции исходного файла] -i [исходный файл] [опции конечного файла] [конечный файл]

   Простейший пример конвертации с установленной опцией 24 кадра в секунду в конечном файле будет такой:
ffmpeg -i input.avi -r 24 output.avi


Опции ffmpeg
   Рассмотрим некоторые полезные опции (в скобках примеры). Если какие-то из опций не будут указаны, то FFmpeg подставит их из значений по умолчанию:

-i - задает имя исходного (входного) файла.
-threads - числовое значение, определяет количество ядер процессора. Что, естественно, отражается на скорости кодирования и операций над файлами. Число 0 устанавливает автоматическое определение доступного числа ядер (-threads 2).
-t - задает длительность кодируемого видео в целых секундах или же в формате чч:мм:сс.
-ss - указывает позицию в видеофайле с которой будет начинаться кодирование. Формат в целых секундах или чч:мм:сс.
-fs - числовое значение в байтах, килобайтах (k), мегабайтах (M). Регистр приставки важен. Ограничивает размер конечного файла. Полезно для экспериментов над небольшим кусочком видеофайла, чтобы не кодировать весь файл (-fs 5M).
-y - эта опция перезаписывает уже существующие файлы без запроса на подтверждение.
   Видео опции:
-vcodec - видеокодек, которым будет осуществляться кодирование видео (-vcodec mpeg4).
-vpre - выбираем предустановку для видеокодека. Сначала FFmpeg ищет файлы предустановок в ~/.ffmpeg, затем в /usr/share/ffmpeg или /usr/local/share/ffmpeg, в зависимости от пути установки. Посмотреть самим, какие присутствуют файлы предустановок, можно по этим же путям.
-f - force, указываем принудительно формат конечного файла (-f avi).
-b - битрейт видеопотока. По умолчанию: 200kb/s (-b 1500).
-bt - толерантность битрейта. По умолчанию: 4000k. При двухпроходном кодировании указывает как далеко в первом проходе можно отклониться от указанного среднего битрейта. Значение не связано с минимальным/максимальным битрейтом. Слишком сильное снижение этого параметра оказывает негативное влияние на качество.
-r - количество кадров в секунду. По умолчанию: 25 (-r 15).
-s - размер фрейма, то есть разрешение выходного видеофайла. По умолчанию определяется размером файла-источника. Может быть задано буквенными сокращениями, например svga означает размер 800x600. Просмотреть все доступные сокращения можно в man ffmpeg. (-s 640x480 или -s vga).
-aspect - числовые значения, определяет соотношение сторон выходного файла (-aspect 4:3 или -aspect 1.3333).
-croptop
-cropbottom
-cropleft
-cropright - обрезка кадров сверху, снизу, слева, справа. Значения указываются в пикселях. Может использоваться, например, для удаления черных полос (-croptop 15). В некоторых версиях ffmpeg данные опции могут быть удалены и вместо них используется опция -vf crop=width:height:x:y. Подробнее о ней в соответствующем разделе ниже.
-pass - количество проходов при кодировании, 1 или 2 (-pass 2).
-g - размер группы кадров, после которой следует ключевой кадр. Например -g 300 устанавливает по одному ключевому кадру каждые 10 секунд, при скорости исходного видеофайла 29.97fps. 30 кадров в секунду * на 10 секунд = значение опции 300 (примерное значение для рипа DVD-файла). Чем меньше битрейт и количество кадров в секунду, тем меньше должно быть это значение.
-deinterlace - удаление "гребенки".
   Аудио опции:
-ar - устанавливает частоту дискретизации звука. По умолчанию: 44100Гц (-ar 22050).
-ab - битрейт звуковой дорожки. По умолчанию: 64kb (-ab 256k).
-ac - число каналов звуковой дорожки. По умолчанию, для входящих потоков это значение равно 1, для исходящих равно числу каналов исходного файла. Другими словами, если вы делаете захват звука, то число каналов по умолчанию 1, а если берете звук из видеофайла, например, то число каналов по умолчанию будет равно исходнику (-ac 2).
-an - кодирование видео без звуковой дорожки.
-acodec - аудиокодек, которым будет осуществляться кодирование звука (-acodec flac).
-apre - набор предустановок для аудиокодека.


Обрезка видео (Crop)

   Формат опции следующий:
-vf crop=width:height:x:y

Опция содержит много переменных, приведу лишь несколько примеров простой обрезки:
-vf crop=100:100 - обрезка изображения от центра до размера 100х100.
-vf crop=in_w-2*10:in_h-2*20 - обрезка по 10 пикселей слева и справа и по 20 пикселей сверху и снизу, исходя из размера исходного изображения.
-vf crop=2/3*in_w:2/3*in_h - обрезка от центра до 2/3 от исходного изображения.

   Назначение переменных x и y я объяснить затрудняюсь, но в общих чертах они задают положение верхнего левого угла выходной области (необрезанной). Вычисляется для каждого кадра. Если полученное значение не является допустимым, то округляется до ближайшего допустимого значения.
Выражение для y может зависеть от x и наоборот.
К примеру -vf crop=800:600:0:0 - вырежет окошко размером 800х600 не из центра, а точно от левого верхнего угла.


Общие функции

   Просмотр доступных форматов:
ffmpeg -formats

   Просмотр доступных кодеков:
ffmpeg -codecs

   Просмотр доступных фильтров:
ffmpeg -filters

   Получение информации о мультимедийном файле:
ffmpeg -i input.avi

   Конвертирование из одного формата в другой:
ffmpeg -i input.mov output.avi

   Сохранение звуковой дорожки:
ffmpeg -i input.avi -vn -ab 128k output_audio.mp3
Желательно указывать битрейт, потому что 64кб/с по умолчанию вас вряд ли устроят.

   Вырезаем нужный фрагмент видео без перекодирования видео и звуковой дорожки:
ffmpeg -i input.avi -ss 00:10:00 -t 00:03:00 -vcodec copy -acodec copy cut.avi
В этом примере мы вырезали 3-х минутный фрагмент, начиная с 10-й минуты видео.

   Микшируем видеодорожку со звуковой:
ffmpeg -i video.avi -vcodec copy -i audio.mp3 -acodec copy output.avi

   Можно засунуть несколько видеофайлов в один и переключаться между ними:
ffmpeg -i test1.avi -i test2.avi -vcodec copy -acodec copy -vcodec copy -acodec copy output.avi -newvideo -newaudio
В данном случае у вас получится в одном файле 2 видеодорожки и 2 аудиодорожки, между которыми можно переключаться при воспроизведении. Размер исходного файла будет меньше, чем у двух файлов по отдельности.
Опции -newvideo, -newaudio и -newsubtitle должны быть указаны непосредственно после имени файла, в котором вы собираетесь их объединить.

   Делаем скриншот с видео:
ffmpeg -i input.vob -an -ss 00:02:00 -r 1 -vframes 1 -s 720x480 -f image2 screenshot.jpg
Будет получен скриншот второй минуты видео, с разрешением 720х480


Кодирование видео с помощью кодека libx264 в формат mkv

   Однопроходное кодирование с пресетом slow и пережатием звука в mp3:
ffmpeg -i input.mov -vcodec libx264 -vpre slow -crf 22 -threads 0 -acodec libmp3lame -ar 44100 -ab 128k output.mkv
Чем меньше значение -crf, тем лучше качество и больше размер файла. Примерные пределы от 18 до 28.

   Однопроходное кодирование DVD файла с пресетом slow, с сохранением исходного формата звука, деинтерлейсом (удалением "гребенки"), и обрезкой черных полос:
ffmpeg -i input.vob -vcodec libx264 -vpre slow -crf 22 -threads 0 -deinterlace -vf crop=in_w-2*15:in_h-2*10 -acodec copy output.mkv

   Двухпроходное кодирование с примерным битрейтом 1000k/s и с пережатием звука в aac:
ffmpeg -i input.avi -pass 1 -vcodec libx264 -vpre fast_firstpass -b 1000k -bt 1000k -threads 0 -f mp4 -an /dev/null && ffmpeg -i input.avi -pass 2 -vcodec libx264 -vpre slow -b 1000k -bt 1000k -threads 0 -acodec libfaac -ar 48000 -ab 128k -f mp4 output.mkv


Кодирование видео с помощью кодека Xvid

   Однопроходное кодирование:
ffmpeg -i input.mkv -vcodec libxvid -qscale 8 -me_method full -mbd rd -flags +gmc+qpel+mv4 -trellis 1 -threads 0 -acodec libmp3lame -ab 128k -ac 2 output.avi
Опция -qscale отражается на качестве итогового видео. Чем меньше значение, тем выше качество, больше размер видео и дольше кодирование. Значения лежат в пределах от 1 (лучшее качество) до 31 (худшее).

   Двухпроходное кодирование кодеком Xvid с пережатием звука в Ogg vorbis:
ffmpeg -i input.vob -an -vcodec libxvid -bt 4000k -pass 1 -f rawvideo -threads 0 -y NUL && ffmpeg -i input.vob -vcodec libxvid -b 1500k -pass 2 -threads 0 -y -acodec libvorbis -ab 128k -ac 2 output.avi


Некоторые советы

   Параметры опций для кодирования с высоким качеством в mp4:
'-mbd rd -flags +mv4+aic -trellis 2 -cmp 2 -subcmp 2 -g 300 -pass 1/2', также можно попробовать: '-bf 2', '-flags qprd', '-flags mv0', '-flags skiprd'.

   Параметры опций для кодирования с высоким качеством в MPEG-1/MPEG-2:
'-mbd rd -trellis 2 -cmp 2 -subcmp 2 -g 100 -pass 1/2' но учтите, что '-g 100' могут вызывать проблемы с некоторыми декодерами. Еще стоит попробовать: '-bf 2', '-flags qprd', '-flags mv0', '-flags skiprd.

Запись скринкастов (видео с рабочего стола)

   Использование формата mov (QuickTime) без сжатия позволит сэкономить ресурсы процессора во время записи, но сильно скажется на размере конечного файла. В отличии от кодирования "на лету", которое создает файлы гораздо меньшего размера, но сильно нагружает процессор. Пример записи скринкаста без сжатия:
ffmpeg -f x11grab -s 1280x1024 -r 25 -i :0.0 -vcodec qtrle screencast.mov
где:
-f x11grab - источник сигнала, в данном случае вывод Х-сервера.
-s 1280x1024 - размер захватываемой области, в данном случае соответствует разрешению монитора.
-r 25 - количество кадров в секунду.
-i :0.0 - экран X-сервера / номер монитора. Дополнительно можно указать смещение захватываемой области (положение верхнего левого угла) по X и Y следующим образом -i :0.0+10,20
-vcodec qtrle - видеокодек QuickTime.

   Захват области определенного размера со смещением от левого верхнего угла:
ffmpeg -f x11grab -s 640x500 -r 25 -i :0.0+200,300 -vcodec qtrle screencast.mov
В данном случае мы захватываем окошко размером 640х500, со смещением от левого верхнего угла на 200 пикселей по оси X и 300 пикселей по оси Y.

   Раскадровка видеофайла:
ffmpeg -i input.mov -r 25 -f image2 images%05d.png
создаст 25 изображений в формате PNG для каждой секунды исходного видеофайла. Изображения будут сохранены в текущий каталог. Созданные файлы изображений будут начинаться со слова "images" и будут последовательно пронумерованы так: images000001.png, images000002.png images000003.png и т.д.

   Сохранение изображений в отдельный подкаталог tmp:
ffmpeg -i input.mov -r 25 -f image2 tmp/images%05d.png

   Раскадровка первой секунды видео от начала видеофайла:
ffmpeg -i input.mov -r 25 -t 00:00:01 -f image2 images%05d.png
Ключ -t в FFmpeg указывает длительность декодируемого видео, которую можно задать в формате целых секунд или же в формате чч:мм:сс.

   Раскадровка с заданного участка времени:
ffmpeg -i input.mov -r 25 -ss 00:00:10 -t 00:00:05 -f image2 images%05d.png
Ключ -ss используется для указания отметки времени, с которой начинается обработка. Формат времени такой же.

   Сохранение одного изображения первой секунды:
ffmpeg -i input.mov -r 1 -t 00:00:01 -f image2 images%05d.png
Если нужен один кадр из другой части клипа, используйте ключ -ss в команде, аналогичной приведённой выше команде.

   Раскадровка всего видео с уменьшенным размером сторон кадра:
ffmpeg -i input.mov -r 1 -f image2 -s 120x96 images%05d.png

   Объединение последовательности изображений в видеофайл:
ffmpeg -f image2 -i images%05d.png -r 25 -s 1280x1024 output.avi

   Конвертируем видео в gif-анимацию:
ffmpeg -i screencast.mov -an -pix_fmt rgb24 -vframes 100 -r 6 -s 640x480 -loop_output 0 -f gif -y screencast.gif
Параметром -vframes 100 мы указываем, что хотим получить 100 кадров в нашей анимации. Параметром -r 6 говорим, что хотим брать по 6 кадров с каждой секунды видео. -loop_output - задает число повторений анимации, при значении 0 она будет повторяться бесконечно.

   Запись видео со звуком (предварительно в микшере нужно включить соответствующие входы и выставить уровни записи):
ffmpeg -f alsa -ac 2 -i hw:0,0 -acodec pcm_s16le -f x11grab -s 1280x1024 -r 25 -threads 0 -i :0.0 -vcodec qtrle screencast.mov
Список доступных для записи устройств ALSA можно посмотреть командой: arecord -l

   Лично у меня запись с QuickTime'ом шла не очень гладко, еще и наблюдалось расхождение видео со звуком. Предпочтительнее оказался вариант все с тем же libx264 и пресетом lossless_ultrafast:
ffmpeg -f alsa -i hw:0,0 -acodec pcm_s16le -ac 2 -ab 128k -f x11grab -s 1280x1024 -r 30 -i :0.0 -threads 0 -vcodec libx264 -vpre lossless_ultrafast screencast.mkv
Размер файла получился даже несколько меньше, в сравнении с .mov и отсутствовали рывки и рассинхронизация звука.


Те, кто не любят консоль, могут воспользоваться графической оболочкой, поставив пакет winff. Но у меня большие сомнения относительно ее возможностей.

воскресенье, 10 апреля 2011 г.

Выживание в «бездесктопной» среде. Часть III

Есть ли жизнь на Марсе или Особенности выживания в «бездесктопной» среде Linux.

Часть III.
   Добавим еще несколько удобств в нашу бездесктопную среду.
Ну, во-первых небольшой GTK-интерфейс для просмотра и выбора тем оформления и значков. Я приведу пример двух - lxappearance и gtk-theme-switch2. Первая, помимо работы с темами, умеет работать со значками. Ставятся и запускаются эти утилиты одноименными командами.
   Для тех, кто не в курсе, сообщаю, что скачанную тему нужно распаковать, чтобы получилась папка с названием темы, примерно такого содержания: файл темы index.theme и папки gtk-2.0 и metacity-1 (могут быть дополнительные файлы и папки, например для xfce). Эту папку надо положить либо в /home/ваша учетка/.themes/, тогда она будет применена только к вашей учетной записи, либо (с правами рута) в /usr/share/themes/ - в этом случае тему смогут использовать любые пользователи.

   lxappearance выглядит так:

В общем-то объяснять тут нечего, все вполне понятно. В первой закладке (Window) выбор тем, во второй (Icon) - значков. Применяются они одновременно.

   gtk-theme-switch2 попроще, как по возможностям, так и по интерфейсу. Окошко выбора:

   Окошки предпросмотра:


   Следующим шагом немного облагородим Thunar. Добавим миниатюрки для видеофайлов. Для этого понадобится установить следующие пакеты:
sudo aptitude install thunar-thumbnailers ffmpegthumbnailer

   Thunar хранит кэш миниатюр в файле ~/.cache/Thunar/thumbnailers.cache. Поэтому если старые файлы не обновились и миниатюрки не отображаются, то удалите этот файл. Сами миниатюры лежат в папке ~/.thumbnails.

   Не лишним будет слегка облегчить работу с архивами. Обзаведемся какой-нибудь единой оболочкой для разных методов сжатия, чтобы обеспечивала базовые функции распаковки и упаковки из контекстного меню того же Thunar'a. Мне для этих целей понравилась программка под названием Z. Ее нет в репозитории, но без труда можно скачать отсюда. Собирается элементарно, одной командой (перейдя предварительно в каталог с распакованным архивом):
sudo make install

Если нужно установить мануал, то еще одна команда:
sudo make install.man

   Команды ее крайне простые. Для распаковки достаточно набрать в терминале:
z имя_архива

Для создания архива понадобятся дополнительные параметры. К примеру для создания архива gzip команда будет выглядеть так:
z -gz имя_архива_или_папки

Если нужно создать архив bzip2, то -gz заменяем на -I
Для упаковки в lzip используем параметр -lz
Для архивов zip и jar параметры будут -zip, -jar соответственно
Упаковка с помощью compress потребует параметра -Z

   Дополнительно можно указать степень сжатия для архивов gzip, bzip2, lzip и zip. Делается это добавлением параметра -1 (или --fast) для быстрого сжатия с минимальной степенью и до -9 (или --best) с максимальным сжатием. По умолчанию для gzip степень сжатия -6, для bzip2 -9.

   Но пользоваться консолью для этих действий мы не будет. А создадим для них контекстные команды в Thunar'е. Для этого идем в меню Edit (Правка) -> Configure custom actions... (Настроить особые действия...). В открывшемся меню щелкаем "Добавить", задаем имя, описание и пишем для распаковки следующую команду: z %F %N
Затем переходим во вкладку Appearance conditions (Условия появления) и ставим галочку напротив "Other files (Другие файлы). Можно конечно не ставить галочки и перечислить по шаблону все расширения архивов. Тогда опция распаковки не будет появляться на всяких ненужных файлах. Формат шаблона простой и в описании он указан.
Теперь точно таким же образом создадим еще пару команд. Для упаковки архиватором gzip команда будет такая: z -gz %F %N
Для упаковки в bzip2 создадим команду z -I %F %N. И не забудьте указать условия появления этих команд для всего, что вы собираетесь архивировать.
По желанию можно присвоить значок каждой команде.

Можно пойти по другому пути и воспользоваться пакетом squeeze, который является графической оболочкой и интегрируется в контекстное меню Thunar'a. Для такого способа ставим следующее:
sudo aptitude install squeeze thunar-archive-plugin

Собственно это и есть все усилия. Теперь в контекстном меню появятся команды "Создать архив", "Распаковать сюда" и "Распаковать в...".

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

Сначала ставим пакет aosd_cat:
sudo aptitude install aosd_cat

Затем создаем скрипт (скрипт не мой, найден в инете, я лишь прокомментирую некоторые его строки), обзываем его aosd_volume, делаем исполняемым и отправляем в /usr/bin.

Сам скрипт выглядит следующим образом:


#!/bin/bash
#================================================================================
### mixer-osd
## Modified from the work of jelloir and slapfish on the CrunchBang
## Linux Forums.
#================================================================================

# Некоторые значения, заданные пользователем
MIXERNAME="PCM" # Имя общего регулятора громкости в микшере. У меня это "Master"
GRANULARITY=32 # Приблизительное количество возможных позиций регулятора громкости
FONTSIZE=80 # Размер шрифта, который будет использован для индикации
# Размер шрифта связан с количеством позиций. Изменение одного может повлечь изменение другого

# Получаем максимальное значение регулировок в микшере
LIMIT=$(amixer get $MIXERNAME | grep "Limits" | awk '{print $5}')

# Устанавливаем шаг изменения громкости, основываясь на количестве позиций (GRANULARITY)
let VOLINC=LIMIT/GRANULARITY
let volmod=LIMIT%GRANULARITY
let threshold=GRANULARITY/2
if [ $volmod -gt $threshold ]; then
   let VOLINC=VOLINC+1
fi

# Команды управления
case $1 in

   volup) (amixer set $MIXERNAME $VOLINC+) ;;

   voldown) (amixer set $MIXERNAME $VOLINC-) ;;

   mute) (amixer set $MIXERNAME toggle) ;;

   *)
      echo "Usage: $0 { volup | voldown | mute }"
      exit
      ;;

esac

# Определяем режим приглушения звука и устанавливаем цвет OSD индикации
MUTESTATUS=$(amixer get $MIXERNAME | grep "Left:" | awk '{print $4}' | tr -d '[]')

if [ $MUTESTATUS == "off" ]; then
   OSDCOLOR=red; else
   OSDCOLOR=green
fi

# Создаем полоску индикации из символов "I", основываясь на количестве шагов регулировки в микшере
volset=$(amixer get $MIXERNAME | grep "Left:" | awk '{print $4}')

let volcounter=volset/$VOLINC
if [ $volcounter -gt $GRANULARITY ]; then
   volcounter=$GRANULARITY
fi

OSDI="" # Здесь я для себя добавила приставку "Vol: "

while [ $volcounter -gt 0 ]
do
   OSDI=`echo $OSDI"I"`
   let volcounter=volcounter-1
done

# Убиваем любые запущенные aosd_cat процессы
killall aosd_cat &> /dev/null

# Выводим полоску индикации из символов "I"
echo "$OSDI" | aosd_cat -n "Arial Black $FONTSIZE" -u 1000 -o 200 -R $OSDCOLOR -S none -f 0 -y -10

# END



   И еще некоторые комментарии вдогонку.
   В "командах управления" вам нужно указать команды вашего микшера вместо того, что я выделила жирным:
;volup) (amixer set $MIXERNAME $VOLINC+) ;;
У меня, например команда такая:
;volup) (amixer -q sset $MIXERNAME $VOLINC+) ;;

   В этой строке:
MUTESTATUS=$(amixer get $MIXERNAME | grep "Left:" | awk '{print $4}' | tr -d '[]')
мне пришлось заменить выделенное на Front Left: и print $7
Узнать нужное значение можно командой:
amixer get Master

Нас интересуют следующая строчка:
  Front Left: Playback 31 [100%] [0.00dB] [on]
Каждый подчеркнутый элемент являет собой отдельное значение. Таким образом у меня их всего 7 и нужное нам значение статуса ([on] [off]) идет 7-м по счету.

   Строки:
OSDCOLOR=red; else
OSDCOLOR=green
означают, что в обычном режиме полоска индикации зеленого цвета, в режиме приглушения звука - красного. Так же допустимо использование синего цвета: blue.

   Что же касается параметров в этой строке:
echo "$OSDI" | aosd_cat -n "Arial Black $FONTSIZE" -u 1000 -o 200 -R $OSDCOLOR -S none -f 0 -y -10
то они следующие:
-n - задает шрифт
-u - время отображения информации на экране, после полного появления
-o - время плавного исчезновения
-f - время плавного появления
-R - цвет отображаемой информации
-S - цвет тени
-y - смещение положения выводимого текста по оси Y
-x - смещение положения выводимого текста по оси X

   Осталось только прицепить этот скрипт к клавишам управления громкостью, которые мы задали ранее с помощью xbindkeys. Открываем файлик ~/.xbindkeysrc и исправляем наши команды управления громкостью на:
"aosd_volume volup" - увеличение громкости
"aosd_volume voldown" - уменьшение громкости
"aosd_volume mute" - приглушение звука

   Что еще интересного можно поставить из легких прог? У нас, кажется, до сих пор нет смотрелки для графических файлов, а без нее никуда :) Тут уж, конечно, дело вкуса, но если выбирать легкое, быстрое, удобное и простое, то я рекомендую Mirage. Про него я рассказывала в этом обзоре. Его краткое описание:
Mirage идеально подходит для пользователей, которым не нравится ставить раздутые программы, но которые хотят иметь хороший просмотрщик изображений.

   Для редактирования списка дефолтных приложений, которые будут запускаться при тех или иных действиях, воспользуемся утилитой под названием gAlternatives:
sudo aptitude install galternatives

Наиболее интересные и полезные связки находятся в конце списка в левой части окна и начинаются на x-. Справа можно выбрать к какой команде (приложению) привязать то или иное действие. К примеру, чтобы задать браузер по умолчанию (если их несколько в системе), выбираем в списке слева x-www-browser и в правом окне нужный браузер.

   Лично я нахожу для себя весьма удобным использование "липких записок". В Gnome был такой апплет под названием Sticky notes. Ему на замену меня вполне устроила прога Xpad. Есть в репозитории.
sudo aptitude install xpad

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

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

   Как я уже упоминала, вместо меню приложений я использую gmrun. Но, возможно, кому-то захочется видеть и пользоваться привычным главным меню. Что ж, никто не мешает осуществить и такое желание ;) Но сделаем так, чтобы его не было видно вообще - ни панелей, ни апплетов, ни DE в придачу. Примерно так:

   Для начала ставим пакет lxpanel:
sudo aptitude install lxpanel

   Затем запускаем одноименной командой и видим обычную панель со всякой фигней от LXDE. Все это не нужно, поэтому заходим в настройки панели, переходим во вкладку "Апплеты панели" и удаляем оттуда все, кроме Меню приложений. Идем во вкладку "Дополнительно" и снимаем галку с опции Зарезервировать место и не закрывать окнами, развернутыми на весь экран. Далее - вкладка "Размещение", выбираем позицию на экране, какая больше нравится, а также устанавливаем размер панели: Ширина 0, Высота минимальная (у меня 16 пикселей). Следующая вкладка "Внешний вид", тут просто выбираем Задать цвет (прозрачность) и ставим полную прозрачность выбранного цвета, то есть 0. На этом настройки панели закончены и можно их закрыть. С экрана исчезнет все, относящееся к панели.
   Осталось задать команду вызова главного меню. Запускаем ccsm и идем в раздел "Общие" -> плагин "Команды" (там, где мы назначали клавиши для вызова gmrun). Во вкладке "Команды" пишем следующую команду в свободной строчке: lxpanelctl menu. Затем, во вкладке "Комбинации клавиш" вешаем эту команду на какую-нибудь комбинацию (обычно в Гноме меню вызывает Alt+F1). А для пущей красоты можно назначить еще и активный край экрана во вкладке "Закрепления грани". У меня меню закреплено в левом нижнем углу, и я назначила такой же активный край для его вызова. Теперь достаточно ткнуть мышкой в угол, чтобы оттуда вылезло главное меню :) Ну, а чтобы избежать ложных срабатываний, назначьте небольшую задержку срабатывания на краях. Сделать это можно в разделе "Общие" -> плагин "Общие настройки" -> вкладка "Общие" -> опция Задержка срабатывания на краю. Только учтите, что эта задержка будет действовать на все активные края.
   Теперь добавим команду lxpanel в наш /usr/bin/autostart.sh, чтобы она запускалась автоматически и можно пользоваться этим сомнительным удобством =) А если вам захочется снова залезть в параметры панели, то просто щелкните правой кнопкой мыши в самом углу, где находится скрытая панель и появится контекстная менюшка. Но, учтите, что если назначен активный край для вызова Главного меню (совмещенный с местом появления этого самого меню), то этот трюк не пройдет, сначала отключите активный угол в Компизе. Иначе он не даст вызвать меню настроек.

суббота, 26 марта 2011 г.

Tilda - красивый и удобный терминал

Как-то так получилось, что будучи с самого начала пользовательницей Gnome, мне сразу полюбился и его эмулятор терминала - gnome-terminal. В нем было все, что мне нужно, включая поддержу вкладок, прозрачность и функцию "копирование-вставка". 
Сейчас, оказавшись в системе "по-минимуму" (то есть минимальная установка, полное отсутствие какого-либо десктопа, X-ы и Compiz в качестве оконного менеджера), встал закономерный вопрос. Терминал - вещь незаменимая и хотелось бы, чтобы он был таким же красивым и удобным, как в Гноме (красота, да-да, даром что ли компиз стоит :)) Мне не хотелось ставить "гномовский" терминал, он хоть и немного, но все же тянул за собой дополнительные пакеты. И вот, в ходе поисков и тестировании различных эмуляторов терминала, я наткнулась на Тильду. 
Маленькая, практически без зависимостей, ставится это чудо командой:
sudo aptitude install tilda

После установки и запуска, взгляду открылось немного странное окошко, без какого-либо оформления оконным менеджером. Да, забыла сказать - данная система была установлена на ноутбуке, поэтому требование "минимальности" предъявлялось не только к лишним пакетам и громоздким DE, но и к оформлению. Поэтому такой внешний вид Тильды не мог не порадовать. (Хотя в настройках есть параметр "Рамка вокруг окна". Возможно не дружит с компизом или я неправильно поняла его назначение, но у меня он ни на что не повлиял, никакая рамка вокруг окна не появилась. В конфиге эта опция обозвана "notebook border")


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

Анимашка по всем закладкам
Настроек больше, чем достаточно, чтобы подогнать под себя внешний вид, функциональность и удобство использования. Можно задать любой размер окна; расположить вкладки на любой стороне окна; полосу прокрутки - справа, слева или вообще отключить; задать фоновое изображение, шрифты, цветовую схему и еще много всего.
Еще одна "вкусняшка" этого терминала - горячая клавиша, при нажатии на которую его окошко появляется или скрывается без всяких следов (если конечно стоит галка "Не показывать в панели задач"). При этом вся история сохраняется и он остается вполне себе работоспособным в фоне. Безусловно удобная фишечка, чтобы не захламлять окнами видимое пространство.

Что еще можно отметить. 
Количество строк истории - можно выбрать по желанию.
"Копирование-вставка" присутствует.
Вкладки - есть.
Проблем с кириллицей нет.
Прозрачность - в лучшем виде.
Фиксированный размер окна (кстати, иногда не очень удобно, если окошко слишком маленькое. Некоторым программам, делающим вывод в терминал, может его не хватить и тогда придется лезть в настройки и менять размер окна. Как это сделать оперативно я не нашла).
Сохранение заданного положения окна при перезагрузке.

Под мои нужды и оформление моего десктопа данная программка подошла
практически идеально. Но не обошлось без ложечки дегтя, куда же без нее? Я не нашла как изменить высоту вкладок и размер шрифта в них. А хотелось бы сделать их поменьше.

Окошко с вкладками

Запуск по команде:
tilda

Добавить в автозагрузку можно использовав эту же команду.