О нужности HAL в Xorg

Горячая дискуссия разгорелась в мэйл-листе xorg.
Напомню, что в xorg-server-1.5.x конфигурация устройств ввода оществляется не в xorg.conf, а через HAL. Это позволяет подключать различные клавиатуры и мышки «на лету» и они будут работать без необходимости рестарта иксов.
Но эта лёгкость омрачается правкой xml-конфигов HAL’а вместо human-readable файла xorg.conf. К тому же вылезают многочисленные проблемы, связанные с поддержкой национальных раскладок. Только недавно мне удалось настроить клавиатуру через HAL, чтобы помимо us-раскладки была ещё и русская.

/etc/hal/fdi/policy/10-keymap.fdi

<?xml version="1.0" encoding="ISO-8859-1"?> 
<deviceinfo version="0.2">
  <device>
    <match key="info.capabilities" contains="input.keymap">
      <append key="info.callouts.add" type="strlist">hal-setup-keymap</append>
    </match>

    <match key="info.capabilities" contains="input.keyboard">
      <merge key="input.xkb.rules" type="string">base</merge>
      <merge key="input.xkb.layout" type="string">us,ru</merge>
      <merge key="input.xkb.options" type="string">grp:shift_caps_toggle,grp_led:scroll,caps:internal,compose:ralt</merge>
    </match>
  </device>
</deviceinfo>

И это вместо двух строчек в xorg.conf:

Option "XkbLayout" "us,ru"
Option "XkbOptions" "grp:shift_caps_toggle,grp_led:scroll,caps:internal,compose:ralt"

Конечно же всю эту радость можно отключить при компиляции сервера и вернуться к старому доброму xorg.conf.

Опубликовано в Linux. Комментарии (6) »

Shutdown dialog в KDE 3 с поддержкой suspend hybrid

Без сторонних патчей KDE 3 не поддерживает режимы suspend и hibernate. Разработчики Kubuntu постарались и сделали красивый диалог завершения.

Shutdown dialog в Kubuntu

Вот только поддержки suspend hybrid там не оказалось. Поэтому я немного дополнил патч (в основном это был обычный copy&paste :) ).

Shutdown dialog

Скачать патч можно тут (он накладывается поверх патчей из Kubuntu).

Настройки диалога берутся из файла ~/.kde/config/power-managerrc. Например у меня он выглядит так:

lockOnResume=false
#disableSuspend=true
#disableHibernate=true
#disableSuspendHybrid=true

Для пользователей Gentoo я выложил свой оверлей. После его добавления достаточно будет установить ksmserver. В будущем планирую прикрутить какую-нибудь vcs для человеческого обновления оверлея.

Suspend Hybrid

Suspend Hybrid это нечто среднее между hibernate и suspend. В Mac OS X эта технология известна под названием Safe Sleep. У данного режима есть свои достоинства:

  • энергонезависимость — даже если полностью отключить питание или вытащить батарею в ноутбуке, то останется возможность восстановить состояние компьютера;
  • скорость восстановления — такая же, как и у режима suspend

И недостатки:

  • скорость «засыпания» — такая же, как и у режима hibernate
  • возможность механических повреждений жёсткого диска — особенно актуально для владельцев ноутбуков с трясущимися руками :)

Я использую ядро с патчами TuxOnIce. Проверить, поддерживает ли ваша система гибридный режим, можно с помощью HAL:
% lshal | grep power_management.can_suspend_hybrid
power_management.can_suspend_hybrid = true (bool)

В конфиге для pm-utils необходимо указать, какой модуль для засыпания необходимо использовать. В случае с Gentoo это будет /etc/pm/config.d/gentoo:

SLEEP_MODULE="tuxonice"

После этого можно попробовать отправить компьютер поспать :)

sudo pm-suspend-hybrid

Опубликовано в Gentoo, Linux. 1 комментарий »

Обновление BIOS ноутбука Dell Inspiron 1525 в Gentoo Linux

Уже более полугода я являюсь счастливым обладателем ноутбука Dell Inspiron 1525. После долгой настройки под себя осталась одна маленькая деталь – обновление BIOS. На официальном сайте Dell предлагается 2 способа: с помощью Windows и с помощью досовской дискеты. Windows у меня, разумеется, не установлена, а дискетку просто физически некуда засунуть :)

Изучая сайт linux.dell.com, наткнулся на упоминание флешера под линукс – biosdisk. Оказывается, он уже есть в portage.

Обновление BIOS у меня свелось к нескольким простым шагам:

1. Устанавливаем biosdisk

# emerge biosdisk

2. Скачиваем последнее обновление BIOS с сайта Dell. В моём случае это был файл 1525_A16.EXE

3. Монтируем загрузочный раздел /boot (если он уже не примонтирован):

# mount /boot

4. Копируем memdisk, необходимый для работы флешера, в загрузочный раздел:

# cp /usr/share/syslinux/memdisk /boot

5. Устанавливаем флешер в загрузчик:

# biosdisk install 1525_A16.EXE

Данная команда автоматически добавит новую запись в menu.lst.

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

Будьте внимательны!

Still alive…

Реальная жизнь имеет свойство затягивать. Вовлекать в круговорот событий. Поглощать целиком и полностью. Особенно, когда не умеешь распределять своё время и силы.

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

Stay tuned :)

Опубликовано в Life. 1 комментарий »

Проверка орфографии в OpenOffice.org

Буквально на днях появились ебилды для сборки OpenOffice.org из исходников. Бинарная сборка была доступна в portage почти сразу же после релиза. Но так сложилось, что я этой сборкой не пользуюсь. Поэтому приходится ждать ебилдов :)
Сразу после обновления выяснилось, что цифра 2 из названия всех исполнимых файлов офисного пакета исчезла. В результате kicker ругнулся на отсутствующий файл oowriter2, когда я попытался запустить Writer с панели.
Что самое неприятное, приходится каждый раз после установки OOO добавлять русские словари для проверки орфографии. Дело в том, что файл /usr/lib/openoffice/share/dict/ooo/dictionary.lst заменяется стандартным, в котором про русский язык ничего нет.
Оказывается, установку словарей и редактирование файла dictionary.lst можно автоматизировать и осуществить стандартными средствами Gentoo.

sudo emerge myspell-en myspell-ru
sudo eselect oodict set myspell-en myspell-ru

Собственно, всё :)

preved.png

Опубликовано в Gentoo, Linux, Tips&Tricks. Комментарии (11) »

Opera segmentation fault

Обновил сегодня world, и Opera перестала работать. Оказалось, что дело в новой libX11. Opera Desktop Team operaтивно выпустили hotfix :)

Опубликовано в Linux, Opera. Комментарии (2) »

Yakuake и Zsh

Yakuake — это quake-подобный эмулятор терминала, который использует konsole в качестве основы. Последняя на данный момент версия — 2.7.5.
При активной работе с yakuake очень неудобно, когда создаются вкладки с «неговорящими» именами вида ‘Shell No. XXX’. Так очень легко запутаться, особенно, если открыто более 7 вкладок. Чтобы это исправить, можно воспользоваться технологией DCOP.
Чтобы поменять имя вкладки, необходимо выполнить команду

dcop yakuake DCOPInterface slotRenameSession $DCOP_YAKUAKE_SESSION "текст"

Вместо текста у меня отображается моё текущее положение в файловой системе

dcop yakuake DCOPInterface slotRenameSession $DCOP_YAKUAKE_SESSION "`pwd`"

Версия для эстетов :)

dcop yakuake DCOPInterface slotRenameSession $DCOP_YAKUAKE_SESSION "`pwd | sed "s,^$HOME,~,"`"

Теперь осталось сделать так, чтобы при каждом выполнении новой команды в шелле, у нас обновлялась информация. В Zsh есть специальная функция precmd(), которой мы и воспользуемся. В ~/.zshrc необходимо добавить следующий код:

function precmd() {
if [ "$DCOP_YAKUAKE_SESSION" ]
then
dcop yakuake DCOPInterface slotRenameSession $DCOP_YAKUAKE_SESSION "`pwd | sed "s,^$HOME,~,"`"
fi
}

И ещё маленький штрих. По умолчанию Zsh не меняет title терминала, в отличие от bash, что создает некоторые неудобства. Это тоже легко исправляется. На просторах Сети был найден такой код:

function title() {
# escape '%' chars in $1, make nonprintables visible
a=${(V)1//\%/\%\%}

# Truncate command, and join lines.
a=$(print -Pn «%40>…>$a» | tr -d «\n»)

case $TERM in
screen)
print -Pn «\e]2;$a @ $2\a» # plain xterm title
print -Pn «\ek$a\e\\» # screen title (in ^A»)
print -Pn «\e_$2 \e\\» # screen location
;;
xterm*|rxvt)
print -Pn «\e]2;$a @ $2\a» # plain xterm title
;;
esac
}

Чтобы title менялся перед выполнением команды, необходимо использовать другую функцию — preexec().

function preexec() {
title "$1" "%m(%35<...<%~)"
}

Что получилось:
yakuake.png

Опубликовано в KDE, Linux, Tips&Tricks. Комментарии (2) »

Ударь GTalk’ом по AOL’у

Пара слов о настройке Xorg

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

Проблема первая
При переключении из иксов в консоль и обратно, индикаторы клавиатуры гаснут. Если включить/выключить какой-нибудь индикатор (NumLock, CapsLock, ScrollLock), cостояние восстанавливается. Появилось где-то с версии 6.8.

Как лечить:
Добавить опцию Option "Xleds" "1 2 3" в секцию InputDevice для клавиатуры.
Эта опция указывает, какие индикаторы могут контролироваться с помощью xset. Заодно и решает вышеуказанную проблему.

Проблема вторая
Я переключаю раскладку по CapsLock. При этом хочется, чтобы индикатор группы был Scroll LED. Переключение регистра по Shift+CapsLock, индикация по Caps LED. Только вот при нажатии на Caps, загораются оба индикатора.

Как лечить:
Как это ни странно, но опции должны быть такими:
Option “XkbOptions” “grp:shift_caps_toggle,grp_led:scroll,caps:internal,compose:rwin“

Но после запуска иксов надо переопределить код для CapsLock:
xmodmap -e 'keycode 66 = ISO_Next_Group Caps_Lock'

Опубликовано в Linux, Tips&Tricks. Комментарии (9) »