Включение splash-приветствия в Gnome.

В настройках автозагружаемых при старте сессии приложений и демонов вы можете увидеть «Gnome splash», и он даже отмечен стандартно, тем не менее сплеша нет :(

Чуть покопавшись в системе (а начал я с locate splash | grep -i gnome), я нашёл решение:

$ gconftool-2 --type bool --set /apps/gnome-session/options/show_splash_screen true

Иконка «Assistive Technologies» на панели Gnome.

Внезапно у меня на панели (gnome-panel) появилась иконка «Assistive Technologies» (человечек на синем фоне) и как её убрать я не знал: из автостарта демон убран, иконка не обладает свойствами, чтобы её можно было удалить. Что я делал до этого — не помню :(

В общем, решение такое (спасибо Арчефоруму): в System > Preferences > Keyboard > Accessibility убрать флаг «Accessibility features can be toggled with keyboard shortcut».

Демон, оповещающий о разряде батареи.

Сколько пользовался всяческими DE (десктопными окружениями) всегда натыкался на какие-нибудь ограничения. То есть всё прекрасно! Всё работает, дружественно к пользователю, но как только хочешь чего-то особенного — натыкаешься на ограничения системы (будь то работа с pulseaudio или настройка альтернативного шортката на закрытие окна). В общем, GNOME, KDE, Xfce удобны пока ваша фантазия находится в пределах того, что позволили разработчики.

Каждое из перечисленных DE обладает своим собственным powersave-демоном, он же берёт на себя всяческие оповещения, засыпания и прочее. К сожалению, ни один из них не двигается дальше «сделать потемнее экран» и «отключить композит», чтобы продлить время работы без розетки. По настоящему мощный powersave я увидел только у laptop-tools (в настройках, к слову, советую покопаться, ибо вся мощь этих утилит стандартно отключена). Но не только заботой о сохранении энергии хороши пресловутые демоны: они также умеют оповещения. Конечно, по юникс-вею laptop-tools не должен этим заниматься, поэтому мы напишем свой демон «с блекджеком и шлюхами».

Всплывающие информирующие окна у нас будут реализованы через libnotify — готовый, удобный, настраиваемый механизм. Также нам понадобится демон следящий за появлением новых сообщений и выводящий их на экран, у вас два на выбор: notification-daemon (Gnome) или xfce4-notifyd (Xfce, как ни странно), насчёт KDE’шной оповещалки ничего путного сказать не могу — видимо у них своя реализация (ещё один повод задуматься, а так ли хорош KDE4?).

Собственно сам скрипт-демон (скрипт сам отделяется от терминала) batterynotifyd:

#!/bin/bash
# Author: Vitaly Dolgov (ferhiord (at) gmail (dot) com), 2009

HALF_L=50
LOW_L=15
CRIT_L=5

(while true ; do
  sleep 5s

  MODE=$(acpi -b | awk '{print $3}' | sed 's/,//')
  CUR_L=$(acpi -b | awk '{print $4}' | sed 's/%,//')

  if [ "$MODE" = "Discharging" ] ; then continue ; fi

  if [ $CUR_L -eq $HALF_L ] ; then
    notify-send -i battery -u normal "Warning!" "Battery charge is half! ($HALF_L%)"
    sleep 2m
  elif [ $CUR_L -eq $LOW_L ] ; then
    notify-send -i battery -u normal "Warning!" "Battery charge is low! ($LOW_L%)"
    sleep 2m
  elif [ $CUR_L -eq $CRIT_L ] ; then
    notify-send -i battery -u critical "Warning!" "Battery charge is critical! ($CRIT_L%)"
    sleep 2m
  fi
done) & disown

Знаю, скрипт есть куда дорабатывать, но основную задачу он всё же выполняет. Тут вы сами вольны вызывать что хотите и в каком хотите порядке, не ограничиваясь рамками с кнопочками и выпадающими списками, которые для вас любезно создали разработчики. Если у вас будет время и желание улучшить скрипт (добавить функционал, прилизать), можете прислать доработанную версию мне — возможно я включу изменения. Удачи :)

P.S. Чтобы демон автоматически запускался при загрузке системы, пропишите его в /etc/rc.local.

Арч64 и ненависть.

Я всегда считал Арч системой для разработчика. Здесь всё просто, гибко и понятно, и я без зазрения совести поставил 64-битный Арч. Проблем с ним не было… пока я не наткнулся на невозможность собрать 32-битное приложение… Вот это меня просто вывело из себя (прошу обратить внимание на комментарий закрытия бага). Будет время — не будет Арча64 в моей жизни.

Будильник.

После того как я устроился на работу, я стал замечать, что будильник на мобильном телефоне не в состоянии меня поднять :( Понадобилось более мощное средство, конечно, менее действенное, чем чашка горячего кофе, пролитая на живот, но тем не менее :)

Нужен был будильник с пробуждающей музыкой :)

Для начала создадим то, что будет нас будить: скрипт, запускающий mplayer, который воспроизводит трек.

$ echo "/usr/bin/mplayer \"~/Lm1 - Desert Traveller (Soultec Remix).mp3\" -really-quiet >& /dev/null" > ~/alarm.sh

Лично я предпочитаю вставать под драм-н-бейс.

Делаем скрипт исполняемым:

$ chmod +x ~/alarm.sh

Далее запускаем правку crontab.

$ sudo crontab -e [username]

Вводим следующее:

30 8 * * mon-fri /home/[username]/alarm.sh

Таким образом будильник будет запускаться по будням в 8:30.
Запустим сам демон cron.

$ /etc/rc.d/crond start

Всё :) можно теперь не бояться просыпов.

moc и last.fm

В этом посте я расскажу как подружить эти две сущности :)

Ставим версию moc 2.5.0 (moc-devel), в Арче это можно сделать через AUR:

$ yaourt -S moc-devel

Разрешаем всем писать в технический каталог lastfmsubmitd:

$ sudo chmod o+rwx /var/spool/lastfm

Для скробблинга понадобится lastfmsubmitd:

$ sudo pacman -Sy lastfmsubmitd

Далее в конфиг moc (~/.moc/config) вписываем следующую строчку:

OnSongChange = "/usr/lib/lastfmsubmitd/lastfmsubmit --artist %a --title %t --length %d --album %b"

А в конфиг lastfmsubmitd (/etc/lastfmsubmitd.conf) информацию об аккаунте на Last.fm:

[account]
user: login
password: password

Запускаем moc и lastfmsubmitd (от рута).

$ sudo /etc/rc.d/lastfmsubmitd start

Скробблим.

Настройка «раздачи» ICQ через Squid.

Задача: разрешить доступ к протоколу ICQ через прокси Squid. Конечно, можно сколько угодно говорить, что «аська» не нужна, а «жаббер» — наше всё и прочее, но тем не менее многим людям требуется (в том числе и мне), поэтому приступаем к решению (от дефолтного конфига).

$ sudo vi /etc/squid/squid.conf

В секции «acl» можно указать всех пользователей, IP которых прописаны в специальном файле:

acl localnet src "/etc/squid/users"

Добавляем в список разрешённых портов стандартный «асечный» порт:

acl ICQ_PORT port 5190

Далее запрещаем подсоединяться к портам, кроме разрешённых:

http_access deny CONNECT !SSL_ports !ICQ_PORT

Ну и разрешаем пользователям использовать прокси:

http_access allow localnet

Всё, перезапускаем squid.

$ sudo /etc/rc.d/squid restart

Переназначение клавиш.

Требуется переназначить в русской раскладке символ «№» на символ «#» из-за ненужности первого (по крайней мере мне). Возникла задача, когда я начал писать коментарии на русском языке к коду на питоне (как известно, они как раз начинаются с символа «диез») и мне поднадоело менять раскладку для набора одного символа. Решение проще, чем может показаться :)

$ sudo vi /usr/share/X11/xkb/symbols/ru

Далее ищем раздел «winkeys» (только если вы используете раскладку «ru(winkeys)»), где в свою очередь ищем строчку с «тройкой», в ней заменяем слово «numerosign» на «numbersign». Всё. Перезапускаем «иксы» и радуемся мелочи :)

P.S. Умные люди, наверное, уже подумали, что можно не ограничиваться этим и создать, к примеру, типографскую или «кодерскую» раскладку.

Powerpill.

Гуляя по официальному форуму, я случайно наткнулся на очень полезную утилиту для pacman’а, написанную одним из трастед-юзеров. Powerpill — враппер, ускоряющий загрузку пакетов, через aria2c.

В принципе, можно все зависимости для установки собирать руками через скачку тарболов с AUR’а и makepkg. Но проще использовать Йогурт.

$ yaourt -S powerpill

Многого тут не скажешь, могу только отметить, что прирост скорости скачки пакетов с зеркал у меня вырос почти в 6 раз (с ~200 kB/s до ~1.1 MB/s).

«Перегон» изображений в чёрно-белый стиль.

Вот сидел ночью читал отфотографированные мной лекции с помощью не самого лучшего фотоаппарата при отвратительнейшем грязно-голубом освещении. Глаза начали лопаться сразу…
Так как информация более-менее контрастна, я решил перегнать все изображения в чёрно-белый стиль (grayscale). Уже было подумал, что можно было бы использовать скрипт для GIMP’а… но тут я опять «открыл» Америку, то есть «ImageMagick». Эта утилита умеет множество извращений над изображениями, но я скромно воспользовался только двумя: «перегоном» и увеличением контраста.

$ convert colorful.jpg -contrast -colorspace Gray blackandwhite.jpg

или, если требуется перегнать множество изображений:

$ mkdir -p blackandwhite
$ for I in $(ls | grep -iG '.jpg$'); do convert $I -contrast -colorspace Gray blackandwhite/$I; done

Тем самым я спас себе глаза, нервы и прочие радости…