22 окт. 2008 г.

XBindKeys - не оставим мультимедиа клавиши без работы

Я пользуюсь мультимедиа клавиатурой Genius KB-21e Scroll, которая снабжена рядом дополнительных клавиш, таких как: управление звуком, аудио-плеером, браущером, а также ряд дополнительных клавиш наподобие вызова калькулятора, почтовой программы, запуска моего компьютера.
Поскольку расположение клавиатуры у меня на столе не позволяет всегда использовать горячие клавиши (правая часть клавиатуры не видна), однако - их функционал упрощает запуск того же калькулятора (часто я его использовал, когда курсовой по экономике писал), то я решил наделить клавиши данным функционалом
Так что не думаю, что данные клавиши никогда не пригодятся, мало ли какая ситуация может быть =)

В блоге своего знакомого наткнулся на описание xbindkeys, который позволяет привязать к каждой кнопке - запуск любой программы / выполнение скрипта
Решил создать функционал, который задумывали разработчики (не все горячие клавиши корректно работали в линуксе), поэтому если над кнопкой написано "E-mail" то к ней я привязывал почтовую программу, если "Calculator", то, соответственно, калькулятор.
Однако работу одной кнопки решил изменить и, вместо спящего режима решил запускать "Lock Screen" (Заблокировать экран), что для меня более актуально

Итак, приступим:

1. Установка xbindkeys:
sudo aptitude install xbindkeys // данный пакет есть в репозитариях *buntu
2. Создаём файл конфигурации

xbindkeys -d > ~/.xbindkeysrc
// заодно записываем настройки "по умолчанию" в файл

3. Для считывания скан-кодов клавиш используется команда
xbindkeys -mk
Появится небольшое окно, при нажатии клавиши в котором - в консоли отображается информация о клавише:
"(Scheme function)"
m:0x0 + c:160
XF86AudioMute
Из этих строк нас интересует только вторая, т.е m:0x0 + c:160

3. Теперь пришло время заполнить файл конфигурации своими данными

nano ~/.xbindkeysrc
куда вписываем (
все данные по умолчанию я удалил, за ненадобностью)
#Комментарий // не обязательно, лишь для того, чтобы не путаться в случае чего
"программа" // указывается программа, которая должна выполниться при нажатии клавиши
скан-код // сюда пищем скан-код (напр.:
m:0x0 + c:160) - без кавычек
4. Сохраняем скрипт (в nano это CTRL+O)

5. Добавляем xbindkeys в автозагрузку

ln -s /usr/bin/xbindkeys /home/cool/.kde4/Autostart/

6. Проверяем работу, нажимая нужные клавиши =)


Вот собственно содержание моего файла ~/.xbindkeysrc , для клавиатуры Genius KB-21 Scroll
Используемый софт: аудио-плеер Amarok, калькулятор SpeedCrunch, web-браузер FireFox, файловый менджер Dolphin, почтовая программа ThunderBird, средство для поиска Beagle-Search из коллекции beagle, для управления звуком (уменьшить/увеличить/заглушить) я использовал Front канал, ну, и, Kubuntu 8.04

## Start of Multimedia functions
#Amarok Start
"amarok"
m:0x0 + c:237

#Next track
"amarok -f"
m:0x0 + c:153

#Previous track
"amarok -r"
m:0x0 + c:144

#Play-Pause
"amarok -t"
m:0x0 + c:162

#Stop
"amarok -s"
m:0x0 + c:164

#Volume Up
"amixer sset Front 1+"
m:0x0 + c:176

#Volume Down
"amixer sset Front 1-"
m:0x0 + c:174

#Volume Mute
"amixer sset Front toggle"
m:0x0 + c:160

##End of Multimedia functions

#Mail - Tunderbird
"thunderbird"
m:0x0 + c:236

#Browser - Firefox
"firefox"
m:0x0 + c:178

#Calculator
"speedcrunch"
m:0x0 + c:161

#MyComputer - Dolphin
"dolphin ~/"
m:0x0 + c:235

#Search
"beagle-search"
m:0x0 + c:229

#Lock Screen (on the "Sleep" button)
"kdesktop_lock --forcelock"
m:0x0 + c:223

P.S. Спасибо Sysmouse за подачу идеи

21 окт. 2008 г.

Как выкладывать коды (<...>) в blogspot

Часто требуется выложить какой-либо код, с требованием - чтобы он не интерпретировался, а показывался "как есть"

Тэг <pre> ... </pre> почему-то не работал и все тэги <...> всё равно преобразовывались и не отображались "как есть", нашёл хорошую (но, думаю, не идеальную) идею, смысл которой в следующем:

Для того, чтобы корректно отображались <html><head><title></title> .. и тп - без интерпретации браузером, стоит изменить знаки < и > на их HTML эквиваленты, т.е на &lt ; и &gt ; (без пробела перед ; )

Дабы автоматизировать эту работу, можно использовать данный инструмент

Также возможно будут полезны и другие возможности

Извлечение звуковой дорожки из видео файла

mplayer -vo null -ao pcm:file=mywav.wav myvideo.avi // -vo null означает, что использовать видео драйвер - не будем, а -ao pcm, то что будет использоваться аудио драйвер pcm:file

mplayer извлечёт аудио дорожку (mywav.wav) из файла myvideo.avi

Теперь переведём аудио дорожку из формата wav в mp3

1. Установка lame (программа для выполнения последующей операции)
2. lame mywav.wav sample.mp3

Если lame установлен, то это можно выполнить одной строкой

mplayer -vo null -ao pcm:file=mywav.wav myvideo.avi && lame mywav.wav sample.mp3

Русские имена на флешках под KDE4

How-to не мой, но крайне полезный

1. Создаем файл /sbin/mount.mvfat (например sudo kate /sbin/mount.mvfat) со следующим содержимым:

#!/bin/bash

dev=$1
mpoint=$(echo $2 | sed —e 's/\ /\\\\ /')
shift
shift
eval mount —t vfat $dev $mpoint $@,quiet,iocharset=utf8,codepage=1251,showexec,umask=0,flush


2. Делаем его исполняемым:

sudo chmod +x /sbin/mount.mvfat

3. Создаем файл /etc/hal/fdi/policy/10_my_fsops.fdi

<?xml version="1,0" encoding="UTF-8"?>
<deviceinfo version="0,2">
<device>
<match key="volume.fstype" string="vfat">
<match key="@block.storage_device:storage.hotpluggable" bool="true">
<merge key="volume.fstype" type="string" >mvfat</merge>
<merge key="volume.policy.mount_filesystem" type="string">mvfat</merge>
<merge key="volume.mount.valid_options" type="strlist">utf8</merge>
<merge key="volume.mount.valid_options" type="strlist">shortname=</merge>
<merge key="volume.mount.valid_options" type="strlist">codepage=</merge>
<merge key="volume.mount.valid_options" type="strlist">iocharset=</merge>
<merge key="volume.mount.valid_options" type="strlist">umask=</merge>
<merge key="volume.mount.valid_options" type="strlist">dmask=</merge>
<merge key="volume.mount.valid_options" type="strlist">fmask=</merge>
<merge key="volume.mount.valid_options" type="strlist">uid=</merge>
<merge key="volume.mount.valid_options" type="strlist">flush</merge>
</match>
</match>
</device>
</deviceinfo>

Сделано!

Лечение BROKEN TRANSLATION

Примеры приводятся исходя из того, что вы скачиваете файл в домашнюю директорию (/home/"user")

Лечение BROKEN TRANSLATION в amarok


1. Заходим по ссылке http://websvn.kde.org/branches/stable/l10n/ru/messages/extragear-multimedia/amarok.po?view=log
2. Скачиваем самый верхний файл (у меня это был файл Revision 829341)
3. sudo apt-get install gettext (если не установлен, требуется для п.4)
4. msgfmt amarok.po -o amarok.mo
5. sudo cp amarok.mo /usr/share/locale/ru/LC_MESSAGES
6. Перезапускаем amarok и наслаждаемся результатом.

Лечение BROKEN TRANSLATION в ktorrent

1. Заходим по ссылке http://websvn.kde.org/branches/stable/l10n-kde4/ru/messages/extragear-network/ktorrent.po?view=log
2. Скачиваем самый верхний файл
3. sudo apt-get install gettext (если не установлен, требуется для п.4)
4. msgfmt ktorrent.po -o ktorrent.mo
5. sudo cp ktorrent.mo /usr/share/locale/ru/LC_MESSAGES
6. Перезапускаем ktorrent и наслаждаемся результатом.


Лечение BROKEN TRANSLATION в dolphin

1. Заходим по ссылке http://websvn.kde.org/branches/stable/l10n-kde4/ru/messages/kdebase/dolphin.po?view=log
2. Скачиваем самый верхний файл
3. sudo apt-get install gettext (если не установлен, требуется для п.4)
4. msgfmt dolphin.po -o dolphin.mo
5. sudo cp dolphin.mo /usr/share/locale/ru/LC_MESSAGES
6. Перезапускаем dolphin и наслаждаемся результатом.

alien: Установка «чужих» пакетов в систему

Пакет alien предназначен для конвертации пакетов между Red Hat rpm, Debian deb, Stampede slp, Slackware tgz, и Solaris pkg форматами

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

Сразу хочу оговориться, что не следует конвертировать важные системные пакеты «чужих» дистрибутивов для последующей установки на свой, но alien вполне сносно использовать для конвертации различного пользовательского по.

Для начала установим пакет

sudo aptitude install alien

Теперь можно приступать к конвертации, сколько раз я его не использовал всегда конвертировал либо .rpm либо тарболы (.tar, .tar.gz) в .deb

Сделать это не сложно:

К примеру есть пакет thunder.tar.gz, из него требуется получить thunder.deb, чтобы «одним кликом» поставить в систему

sudo alien ~/thunder.tar.gz —d - если всё пройдет хорошо, то в домашней директории создастся файл thunder.deb (при конвертации из так называемых тарболов, т.е *.tar.gz рекомендуется запускать alien из под sudo, чтобы конкретно настроились права на файлы)

-d -это ключ, указывающий что надо собрать именно debian (.deb) пакет

Наиболее частоиспользуемые опции (ключи) команды

-d, -to-deb
Создаёт debian пакет (опция по умолчанию)

-r, -to-rpm
Создаёт rpm пакет

-t, -to-tgz
Создаёт tgz пакет

-to-slp
Создаёт slp пакет

-p, -to-pkg
Создаёт Solaris pkg пакет

-i, -install
Автоматически устанавливает генерируемый пакет (без сохранения генерируемого пакета)

-c, -scripts

Выполняет попытку конвертировать скрипты, которые должны заруститься, когда пакет устанавливается или удаляется, используйте осторожно, потому что скрипты могут быть написаны под другую систему и их выполнение на вашей может понести различные проблемы, при конвертировании из lsb пакетов опция включена по умолчанию

Чтобы узнать больше, наберите в консоли man alien , здесь я изложил лишь основной функционал команды (используя памятку по alien и личный опыт)

Необъективное решение проблемы загрузки Half-Life (Counter-Strike)

Установил wine, порылся в его настройках (не особо вникая), сегодня захотел поиграть в counter-strike, но при запуске игры (уже при загрузки мапы) возникала ошибка
Runtime Error
/…/hl2.exe
Abnormal program termination

Поскольку в каталоге .wine ничего важного у меня не было, и особо сложных настроек я не выполнял, то помогла команда
sudo rm —rf /home/user/.wine (Полное удаление каталога .wine)
Далее запускаем winecfg, что восстанавливает стандартные настройки
Затем запускаем Counter-Strike, запуск прошёл нормально =)