четвер, 8 листопада 2007 р.

Легкий и красивый десктопчик (fluxbox+xcompmgr)

Признаться честно, у меня было довольно сильное предубеждение относительно всяческих рюшечек на десктопе: тени, полупрозрачность и прочее. Тем более, что на рабочем столе у меня Fluxbox, а у него своей прозрачности нет (есть правда псевдопрозрачность, но это штука гадкая). Однако, путешествуя по различным блогам наткнулся на интересную весч - xcompmgr. Автор использовал ее вместе с transset, однако, как выяснилось в последствии, он мне не пригодился. На работе выдалось свободный часик, и я решил попробовать...

Как оказалось, в репозитариях Debian Lenny этого пакета не оказалось, однако же он нашелся в ветке Experimental. Опасаясь неприятностей с неудовлетворенными зависимостями и прочих трудностей, решил собрать этот пакет из исходников в своем окружении.

1. Насторойка apt-get

В список репозитариев /etc/apt/sources.list добавляем строчку:
deb-src [WWW] http://ftp.debian.org/debian experimental main contrib non-free

После этого:

#apt-get update

Будем считать систему готовой к дальнейшим действиям

2. Получение и распаковка исходников:

$apt-get source package

В нашем случае package=xcompmgr поэтому делаем

$apt-get source xcompmgr
Читання переліків пакетів... Виконано
Побудова дерева залежностей
Reading state information... Виконано
Потрібно завантажити 72,5kB архівів з вихідними текстами.
Отр:1 http://ftp.debian.org experimental/main xcompmgr 1.1.1+cvs.20051218-1 (dsc) [844B]
Отр:2 http://ftp.debian.org experimental/main xcompmgr 1.1.1+cvs.20051218-1 (tar) [70,2kB]
Отр:3 http://ftp.debian.org experimental/main xcompmgr 1.1.1+cvs.20051218-1 (diff) [1470B]
Отримано 72,5kB за 2sB (35,9kB/s)
gpg: Signature made пн, 19-гру-2005 04:57:34 +0200 EET using DSA key ID 37155778
gpg: Can't check signature: public key not found
dpkg-source: extracting xcompmgr in xcompmgr-1.1.1+cvs.20051218
dpkg-source: unpacking xcompmgr_1.1.1+cvs.20051218.orig.tar.gz
dpkg-source: applying ./xcompmgr_1.1.1+cvs.20051218-1.diff.gz


Ну вот, все получили, хотя были предупреждения о том, что не найден public key, ну да это не критично.

3. Зависимости для сборки:

Это может оказаться как самый простой вопрос, так и самый сложный. Ситуация состоит в следующем. Майнтенер пакета, как правило является человеком хорошо разбирающимся во внутреннем устройстве Debian поэтому майнтенеры зачастую раньше других переходят на использование testing/unstable веток. Кроме того аплоад пакетов в Debian происходит прежде всего в unstable, а потому во первых: майнтенер часто оттестировал сборку своего пакета только под testing/unstable, а во вторых прописал Build-зависимости на те версии библиотек которые у него были на момент сборки. Довольно редко авторы программ указывают версионные зависимости для своих детищ, а потому такое поведение майнтенера, зачастую, является наиболее логичным. Выяснять с какой версией той или иной библиотеки перестанет собираться программа занимает много времени и сил, а зачастую и не очень нужно.

4. Установка зависимостей:

Делаем

# apt-get build-dep xcompmgr

Тут возможны два варианта:
1 - все получилось с первого раза. Мы облегченно вздыхаем, создаем .deb-пакет и радуемся.
2 - есть неудовлетворенные зависимости. Тогда придется еще немного поплясать.

Есть разные варианты решения этой проблемы, но 100% результат дает метод - проверить, каких пакетов не хватает, и рекурсивно, по этому же руководству их установить. Как правило их перечень не настолько большой чтобы испугать настойчивого человека.

Для того чтобы узнать что еще не установлено для сборки пакета, запустите утилиту dpkg-checkbuilddeps в каталоге с исходными текстами. Эта утилита выведет список того что требуется для сборки, но еще не установлено в Вашей системе. Для перехода к следующему шагу Вам необходимо добиться того чтобы утилита dpkg-checkbuilddeps не выдавала сообщений о неудовлетворенных зависимостях.

5. Сборка пакета:

Переходим в каталог с распакованными исходниками и набираем:

$ fakeroot ./debian/rules binary

В результате в родительском каталоге будет собран .deb-пакет, ради которого все и затеивалось. В нашем случае это xcompmgr

Ну а дальше просто:

#dpkg -i xcompmgr_1.1.1+cvs.20051218-1_i386.deb

И сердце учащенно бьется ожидая, когда же мы увидим заветную прозрачность и тени... :)

Для этого в консоли набираем:

$xcompgr &

И тут возникает вопрос: "Почему ничего не происходит?.."
А все дело в том, что мы забыли включить необходимые опции в файле /etc/X11/xorg.conf :)

Идем в xorg.conf и добавляем туда такой раздел:

Section "Extensions"
Option "Composite" "Enable"
Option "RENDER" "Enable"
EndSection


Пробуем еще раз:

$xcompgr &

Это добавит нам прозрачности. Чтобы установить прозрачность окошка, кликаем правой кнопкой мыши на заголовке интересующего нас окошка и мышкой устанавливаем значения прозрачности. Левая кнопка - уменьшить, Правая - увеличить. Потом желательно пойти в раздел: Запомнить, и значения прозрачности запомнить, поставив галочку напротив пункта Прозрачность.

Если хочется теней вокруг окошек, то делаем так:
$xcompmgr -c &

А если хочется еще и эффекта затухания, тогда делаем так:
$xcompmgr -cf &

Для того чтобы эта радость сопровождала нас каждый сеанс работы за компьютером, идем в ~/.fluxbox/startup и дописываем туда xcompmgr -c & перед exec /usr/bin/fluxbox
Вот что у нас получилось...






Статья о том, как устанавливать пакеты из unstable и experimental лежит здесь
А вот здесь я взял саму идею. Спасибо авторам.

6 коментарів:

virens сказав...

Читал про это, но всё побаивался делать. Может, получится. Чтобы в IceWM была ещё и прозрачность, которая время от времени нужна.

P.S. Добавил вас в кольцевой поиск.

Jona сказав...

to virens:
Может, получится. Чтобы в IceWM была ещё и прозрачность, которая время от времени нужна.
И правда порой нужна, но перебарщивать тоже не стоит. Я вот на радостях сначала сделал все прозрачным, а потом понял, что это не всегда удобно :)

Добавил вас в кольцевой поиск
Спасибо

P.S.
Спасибо за первый комментарий по теме блога :)

Анонім сказав...

На FreeBSD+fluxbox хотел настроить прозрачность, в статьях на эту тему не встретил уточнения про то что нужен xcompmgr, целых два дня ломал голову почему у всех есть прозрачность, а у меня нет... спасибо автору за подробности! Очень радовался.

Jona сказав...

to Анонім:
Рад был, что статья оказалась полезной, даже не для пользователя Debian. :)

Анонім сказав...

Спасибо, пригодилось, хотя до этого не собирался ставить прозрачность и тени, но теперь при этом =)

Анонім сказав...
Адміністратор блогу видалив цей коментар.