Highlighter

четверг, 19 января 2012 г.

Установка JBOSS AS 7 + ajp

Сначала тут должен был быть большой пост с пошаговыми инструкциями, но потом я понял, что если кто-то устанавливает jboss, то он всякие базовые вещи знает и понимает. Поэтому только то, что реально пришлось сделать.

Мне нужно было установить JBOSS в качестве бэкэнда к апачу через ajp, затем что-нибудь задеплоить.

Я поднял контейнер openvz, выделил ему 2 гига ОЗУ и запустил.

Вот, что я ставил:
Debian 6
Apache 2.2.16(from debian repositories)
mod_jk 1.2.30 (from debian repositories)
JDK 1.6.0_26 (from debian repositories)
JBoss AS 7.0.2.Final
OpenAM 9.54


Настройка:
Сразу отмечу, что JBoss я ставил впервые и с ajp пришлось неслабо повозиться. Особенно "приятно", что он отличается от предыдущих версий в качестве настройки и управления, поэтому его я сразу очень полюбил за бурный секс.


Сначала настроим apache.
/etc/apache2/sites-enabled/000-default
<VirtualHost *:80>
        JkMount /* myworker
        ServerAdmin liparinai@gmail.com
        ErrorLog ${APACHE_LOG_DIR}/error.log
        LogLevel debug
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost> 

 /etc/apache2/mods-available/jk.conf
<IfModule mod_jk.c>
# The Jk shared mem location
JkShmFile /var/log/apache2/mod_jk.shm

# Jk logs
JkLogFile /var/log/apache2/mod_jk.log

# Jk loglevel
JkLogLevel error

# Jk logformat
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

# Our workers config
JkWorkersFile /etc/apache2/workers.conf
</IfModule>
 /etc/apache2/workers.conf
worker.list=myworker
worker.myworker.port=8009
worker.myworker.host=127.0.0.1
worker.myworker.type=ajp13
worker.myworker.lbfactor=1
Теперь делаем.
a2enmod jk

и перезапускаем апач.

Теперь настраиваем JBoss.
Установка элементарна - тупо распаковываем, например, в /opt/java. Для удобства, я сделал ссылку на эту папку в /opt/java/jboss

Теперь настройка. Эти вещи слабо гуглятся, в официальных доках с этим проблема.

/opt/java/jboss/standalone/configuration/standalone.xml
(Modifications marked with bold font)

<server name="temporary.ru" xmlns="urn:jboss:domain:1.0">
    <extensions>
            ... skipped ...
    </extensions>

    <system-properties>
        <property name="jvmRoute" value="myworker"/>
    </system-properties>

    ... skipped ...

        <subsystem xmlns="urn:jboss:domain:web:1.0" default-virtual-server="default-host">
            <connector name="http" protocol="HTTP/1.1" socket-binding="http" scheme="http"/>
            <connector name="ajp" protocol="AJP/1.3" socket-binding="ajp" scheme="http"/>
     ... skipped ...
         <socket-binding-group name="standard-sockets" default-interface="public">
                <socket-binding name="http" port="8080"/>
                <socket-binding name="ajp" port="8009"/>
                 <socket-binding name="https" port="8443"/>
... skipped ...

В частности, проблема с jvmRoute, который (по идее) должен был сам подхватиться. Спасибо Sirex'у за то, что дал хороший совет.

Затем можно запускать.
/opt/java/jboss/bin/standalone.sh &.

По-хорошему нужно создать пользователя, сделать его владельцем jboss и от его имени запускать.

Теперь можно задеплоить OpenAM. Читаем руководство, делаем что написано и кидаем в папку /opt/java/jboss/standalone/deployments.

Если нужно, можно настроит балансировку нагрузки и jboss не светит в интернет.

воскресенье, 15 января 2012 г.

Установка Quake2 с улучшенной графикой

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

Одним из самых известных сайтов, посвященных разработке на движках quake является Quakedev. А лучшим на данный момент движком является QuDos. Вот его мы и будем собирать.

Сначала идём сюда и качаем исходник
После этого распаковываем и открываем в редакторе Makefile. Там нам нужны следующие строчки


# Client and Renderers
BUILD_QUAKE2?=YES   # Build client (OSS sound, cdrom ioctls for cd audio).
BUILD_DEDICATED?=NO # Build dedicated server.
BUILD_GLX?=YES      # Build OpenGL renderer.
BUILD_SDLGL?=YES    # Build SDL OpenGL renderer.
ifeq ($(OSTYPE),Linux)
BUILD_ALSA_SND?=YES     # Enable support for ALSA (default sound on 2.6 Linux).
endif
BUILD_ARTS_SND?=NO      # Enable support for libaRts (KDE sound system) sound.
BUILD_OSS_SND?=YES      # Enable support for OSS (default) sound.
BUILD_SDL_SND?=YES      # Enable support for SDL sound.

# Mods
BUILD_GAME?=YES     # Build original game modification (game$(ARCH).so).
BUILD_3ZB2?=NO      # Build 3zb2 (bots) modification.
BUILD_CTF?=NO       # Build CTF (Capture The Flag) modification.
BUILD_JABOT?=NO     # Build JABot (bots) modification.
BUILD_ROGUE?=YES        # Build Rogue modification.
BUILD_XATRIX?=YES   # Build Xatrix modification.
BUILD_ZAERO?=YES        # Build Zaero modification.

# Configurable options.
WITH_BOTS?=YES      # Enable Ace Bot support in modifications (Quake2, Rogue, Xatrix and Zaero).
WITH_DATADIR?=NO    # Read from $(DATADIR) and write to "~/.quake2".
WITH_DGA_MOUSE?=NO  # Enable DGA mouse extension.
WITH_GAME_MOD?=YES  # Enable custom addons in the main modification (Quake2, Rogue, Xatrix and Zaero).
WITH_IPV6?=NO       # Enable IPv6 support. Tested on FreeBSD.
WITH_JOYSTICK?=NO   # Enable joystick support.
WITH_LIBDIR?=NO     # Read data and renderers from $(LIBDIR).
WITH_QMAX?=YES      # Enable fancier OpenGL graphics.
WITH_REDBLUE?=NO    # Enable red-blue 3d glasses renderer.
WITH_RETEXTURE?=YES # Enable retextured graphics support.
WITH_X86_ASM?=YES   # Enable x86 assembly code (only for i386).
WITH_XMMS?=NO       # Enable XMMS support (thanks AprQ2).
В них включаем/выключаем те параметры, которые нам нужны/не нужны (а то нафига мне поддержка xmms, которого у меня нету и мне незачем ставить его хедеры и библиотеки). Далее пишем make и ждём, когда соберётся. Если ругается на отсутствие какого-нибудь файла, то ставим соответствующий dev-пакет и повторяем операцию.
Мне потребовалось установить следующие пакеты из того, что у меня не было.
sudo apt-get install xorg-dev libvorbis-dev libsdl-dev
В результате, в папке quake2 появился собранный под мою систему движок игры. Далее с купленного диска игры (если найдёте) в папку baseq2 копируете pak0.pak
Потом нужно туда же скопировать этот файл.
Теперь можно и запускать QuDos. Тут я это сделал и мой монитор ругнулся на некорректное разрешение и пришлось перезапускать иксы. После этого я запускал его так

./QuDos +set vid_fullscreen 0
Теперь у нас есть квака с симпатичными эффектами и кучей плюшек
например, красивые взрывы
aaa10w.th.jpg

или нормальная вода
aaa11.th.jpg

Эффект блюра под водой
aaa16.th.jpg

А теперь идём сюда и качаем пак с текстурами (~300 MiB). Кидаем, естественно, в baseq2. Кстати, там есть ещё дополнительные текстуры с большим разрешением - если готовы качать около 800 Мбайт, то смотрите в разделе Berserker@Quake2.
В результате у нас получается что-то типа этого
aaa12.th.jpgaaa13.th.jpgaaa14.th.jpg

В общем, осталось поискать нормальные высокополигональные модели - и будет всё просто замечательно.







Опубликовано на Welinux.ru

Настройка Xorg + awesome для работы с двумя мониторами

Купил я, значит, монитор Benq 24" G2420HD, воткнул его вместе со своим старым LG Flatron L192WS и стал думать, как бы их нормально настроить.

Настройка Xorg

Растягивать на два экрана ничего не нужно было (просто не смог придумать такую задачу), перемещать вручную окна между экранами тоже (ибо awesome), поэтому решил просто настроить как два отдельных экрана.

Секция Device — указываем, что к одному устройству подключено два экрана

 
Section "Device"                                                                                                                       
       Identifier     "Device0" 
        Driver "nvidia"
        Option "NoLogo" "True"
        Screen  1
EndSection

Section "Device"
       Identifier     "Device1" 
        Driver "nvidia"
        Option "NoLogo" "True"
        Screen          0   
EndSection
Теперь описываем мониторы
 
Section "Monitor"                                                                                                                      
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "LG Electronics L192WS"
    HorizSync       30.0 - 83.0
    VertRefresh     56.0 - 75.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "BenQ G2420HD"
    HorizSync       24.0 - 83.0
    VertRefresh     50.0 - 76.0
    Option         "DPMS"
EndSection
Теперь настройка экранов

Section "Screen"
    Identifier     "Screen0"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "TwinView" "0"
    Option         "metamodes" "DFP: nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "0"
    Option         "metamodes" "CRT: 1440x900 +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection
И напоследок настроим Layout и укажем, что маленький монитор слева от большого.

Section "ServerLayout"                                                                                                             
   Identifier     "DualSreen"
   Screen       0 "Screen0"
   Screen       1 "Screen1" LeftOf "Screen0"
   Option         "Xinerama" "0" 
EndSection
Если у вас версия xorg-server < 1.8, то настройки лежат в /etc/X11/xorg.conf, иначе лежат в отельных файлах в /etc/X11/xorg.conf.d/

Настраиваем awesome

Тут тоже ничего экстраординарного нету, ибо awesome умеет два монитора "искаропки". Стоит только помнить, что есть смысл следить за тем, с какого экрана запускаете программу. Например, если у меня у firefox тэг со свойством screen = 1, а запускаю я с другого экрана, то он запустится, но окна видно не будет. Поэтому нужно принудительно запускать как

DISPLAY=:0.0 firefox
Вот, как я разделил теги в shifty

-- shifty: predefined tags
shifty.config.tags = { 
 
    -- screen 1 
 
    <"term">         = { init = true, position = 1, screen = 1, layout = awful.layout.suit.fair                          },  
    <"web">          = { position = 2, screen = 1, layout = awful.layout.suit.fullscreen, mwfact = 0.6, spawn = browser  },  
    <"multimedia">   = { position = 8, screen = 1, layout = awful.layout.suit.fullscreen                                 },  
    <"office">       = { position = 9, screen = 1, layout = awful.layout.suit.tile.bottom                                },  
    <"gimp">         = { position = 0, screen = 1, layout = awful.layout.suit.max, spawn = "gimp"                        },  

    --screen 2

    <"im">           = { position = 3, screen = 2, layout = awful.layout.suit.tile.left, mwfact = 0.3                    },  
    <"skype">        = { position = 4, screen = 2, layout = awful.layout.suit.tile.left,                                 },  
    <"mail">         = { position = 5, screen = 2, layout = awful.layout.suit.tile.bottom                                },  
    <"picture">      = { position = 6, screen = 2, layout = awful.layout.suit.max                                        },  
    <"music">        = { position = 7, screen = 2, layout = awful.layout.suit.tile.bottom                                },  
}
Конечно, если бы я работал чаще с гимпом, то (наверное) настроил его для работы с двумя мониторами, но сейчас это не особо важно.

Ну, и напоследок изменил автоматический запуск программ

os.execute("pgrep -u $USER -x pidgin || (DISPLAY=:0.1 pidgin &)")
os.execute("pgrep -u $USER -x thunderbird|| (DISPLAY=:0.1 thunderbird &)")
os.execute("pgrep -u $USER -x deadbeef || (DISPLAY=:0.1 deadbeef &)")
os.execute("pgrep -u $USER -x skype || (DISPLAY=:0.1 skype &)")
Как можно увидеть, ничего особо сложного делать не пришлось. Но, может, кому-нибудь эта информация будет полезной.

Опубликовано на Welinux.ru

Creative Sound Blaster 5.1 VX и переход с ALSA на OSS

Захотелось мне приобрести полноценную звуковую карточку для мих Microlab Solo 2 mk3, так как та поделка, которую любят называть "встроенная звуковая карта" не могла раскачать их (всё-таки это простенький кодек, от него ничего ждать не стоит). Много денег отдавать желания совершенно не было, поэтому решил остановиться на Creative Sound Blaster 5.1 VX (SB1070).

Зашёл, значит, на alsa-project.org, посмотрел, а там статус
Not all features on all models supported. On the VX, white noise on playback unless initialized in Windows first.


"Хорошо" - Подумал я. Воткнул карточку и услышал злобное шипение.
"Не очень хорошо" - подумал я и решил поставить себе винду для того, чтобы посмотреть, что из этого выйдет, успешно забыв, что она может грузиться только с первого primary раздела. Через несколько часов поставились на неё драйвера и она под оффтопиком заиграла.
"Ну, хотя бы работает" - подумал я и пошёл ковыряться дальше.

Так как под alsa всё было грустно, я вспомнил, что с более-менее свежими карточками Creative, ALSA работает не очень хорошо (мягко выражаясь), а вот под OSS, всё очень даже неплохо, было принято решение перейти на эту систему.

В результате, всё поставилось (pacman -S oss),
Я запретил модуль soundcore (в /etc/rc.conf)
MODULES=(!soundcore
После перезагрузки запустилось (/etc/rc.d/oss start). Вот только были программы, которые используют для вывода только ALSA (тот же любимый мной xbmc). Погуглив, нашлось решение - поставить пакет alsa-plugins и прописать в /etc/asound.conf следующее

pcm.!default {
type oss
device /dev/dsp
}

ctl.!default {
type oss
device /dev/mixer
}
Вуаля! Всё работает. Вот только заметил я, что amarok очень сильно грузит процессор при работе. Решение нашлось быстро. Он же при работе использует xine, которому нужно указать, что требуется использовать oss вместо alsa.
Тут есть два варианта:
~/.xine/config

# используемый аудиодрайвер
# { auto  null  alsa  oss  jack  esd  file  none }, default: 0
audio.driver:oss
Либо установить xine-ui и там в настройках указать, что используется OSS как аудиодрайвер.

Осталось только найти хороший микшер для kde, а то дефолтный как-то плохо воспринимает oss.
В остальном всё замечательно и приятно работает. Кроме того, если раньше была проблема с одновременным проигрыванием звука из нескольких программ (например, если запустить chromium, xbmc не мог ничего выдать), то с переходом на oss этой проблемы нету.

Опубликовано на Welinux.ru

Убрать строки из одного файла в другом

Не заработал grep -v, стал делать так:

sort test_in test_ex | uniq -u

Hibernate на ASUS Eee 1201NL при помощи uswsusp

В продолжении этого поста

Понятно, что одним только Suspend2RAM сыт не будешь. Мне очень хотелось настроить нормальный hibernate при закрытии крышки ноута. Так как стандартные pm-utils не работали, то воспользовался этим руководством.


Для работы hibernate можно воспользоваться пакетом из AUR uswsusp-git. После сборки и установки редактируем файл /etc/suspend.conf и указываем там раздел со свопом
resume device = /dev/sda3
Затем нужно добавить в /etc/mkinitcpio.conf хук uresume перед filesystems — раздел в этот момент уже должен существовать. Теперь можно пересобрать initramfs:
# mkinitcpio -p kernel26
Важно! Сначала указываем параметр, потом собираем initramfs

Всё! Теперь по s2disk система уходит в hibernate, при загрузке восстанавливается.

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

Для этого подправим скрипты из acpi-eeepc-generic

У этих скриптов довольно запутанная структура, поэтому пришлось проделать довольно много работы.
Для этого в /etc/conf.d/acpi-eeepc-generic.conf
Добавляем следующее
COMMANDS_HIBERNATE=("/etc/acpi/eeepc/acpi-eeepc-generic-suspend2disk.sh")
SUSPEND2DISK_COMMANDS=("s2disk")

Переменная COMMANDS_LID_CLOSE_ON_BATTERY содержит команду, которая выполняется при закрытии крышки. Приводим её к следующему виду
COMMANDS_LID_CLOSE_ON_BATTERY=("${COMMANDS_HIBERNATE<@>}")

Теперь копируем /etc/acpi/eeepc/acpi-eeepc-generic-suspend2ram.sh в /etc/acpi/eeepc/acpi-eeepc-generic-suspend2disk.sh

Теперь исправляем в файле /etc/acpi/eeepc/acpi-eeepc-generic-suspend2disk.sh
execute_commands "${SUSPEND2RAM_COMMANDS<@>}"
на
execute_commands "${SUSPEND2DISK_COMMANDS<@>}"

Перезапускаем acpid
# /etc/rc.d/acpid restart

И закрываем ноут. И открываем. И опять закрываем. И снова открываем. Всё работает :)

Опубликовано на Welinux.ru

Как я настраивал нетбук ASUS Eee PC 1201NL

Я поделюсь радостью: я купил себе нетбук ASUS Eee PC 1201NL, который посоветовал Midler в этом посте. Ещё раз хочу сказать спасибо всем тем, кто помогал выбрать.

И значительная часть уик-энда была посвящена настройке под себя этого чуда под archlinux.


Вот этот красавец (кстати, к моей радости, enter там, в отличии от скриншота, узкий)
asus_1201nlsiv002w_132495.jpg

В самом деле, нетбук очень симпатичный. Я выбрал серебристый цвет, ибо у этих моделей есть один недостаток — они глянцевые да и нравится он мне! Правда, нетбуком эту машинку назвать можно с натяжкой — 12 дюймов это вам не хухры-мухры. Однако такие размеры позволили засунуть в него клавиатуру нормальных размеров, в результате чего набирать данный пост очень удобно.

Хочется отметить, что существуют разные руководства, например на арчевики, поэтому просто даю туда ссылку, и рассказываю нюансы, с которыми пришлось столкнуться. В результате работает всё, что нужно и одного заряда хватает часа на 4 работы.

Итак, начнём. Сначала я настраивал горячие клавиши. Гугление показало, что в свежих ядрах для работы специфического оборудования используется модуль eeepc-wmi, но все готовые скрипты предполагают, что используется eeepc-laptop.
Для его работы нужно поставить acpi и добавить в меню груба параметр ядра acpi_osi=Linux. То есть у меня нужно было исправить в /boot/grub/menu.lst
1
kernel /boot/vmlinuz26 root=/dev/disk/by-uuid/301248ef-1795-41ee-b390-6f3abb1018d4 ro acpi_osi=Linux  vga=792

и в /etc/rc.conf
MODULES=(r8192se_pci eeepc_laptop !eeepc_wmi)

Далее я поставил acpid и acpi-eeepc-generic и настроил как в мануале. И всё остальное оттуда тоже сделал. В результате получил систему, в которой работают кнопочки :) В том числе отключается тачпад, включаются/отключаются блютуз и вай-фай, регулируются яркость и громкость. Вот тут был нюанс: нужно было отключить клавиши регулировки громкости в awesome через alsactl. Иначе звук регулировался ужасно.

Проблемы, которые я не решил: не работает hibernate и для включения wi-fi нужно дважды нажимать Fn+F2.

Далее захотелось нормальной работы с тачпадом. И поставил xf86-input-synaptics, для мультитача привёл конфиг (/etc/X11/xorg.conf.f/10-synaptics.conf) к следующему виду
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Option "TapButton1" "1"
        Option "TapButton2" "2"
        Option "TapButton3" "3"
        Option "VertEdgeScroll" "on"
        Option "VertTwoFingerScroll" "on"
        Option "HorizTwoFingerScroll" "on"
        Option "CircularScrolling" "on"
        Option "CircScrollTrigger" "2"
        Option "EmulateTwoFingerMinZ" "0"
EndSection

В результате у меня заработала прокрутка двумя пальчиками :)

Далее я настроил автозагрузку иксов без ввода пароля, ибо при переноске я не собираюсь выключать - достаточно suspend2ram (хотя хотелось бы hibernate). Для этого добавил в /etc/inittab следующую строчку

x:5:once:/bin/su shtsh -l -c '/bin/bash --login -c /usr/bin/startx >/dev/null 2>/dev/null'

Теперь, когда система будет переходить в runlevel 5, будут запускаться иксы под моим пользователем.

Соответственно, логин - shtsh, shell пользователя /bin/bash

Правда, по умолчанию система грузится в 3й уровень, поэтому нужно передать ядру параметр 5. Соответственно, теперь строчка загруки ядра выглядит так
1
kernel /boot/vmlinuz26 root=/dev/disk/by-uuid/301248ef-1795-41ee-b390-6f3abb1018d4 ro acpi_osi=Linux  vga=792 5


Так как я собираюсь бывать в разных местах и использовать разные сети, то решил установить NetworkManager. Про установку NetworkManager можно прочитать тут. Обратите внимание, что для корректной работы нужно установить consolekit и запускать awesome так
exec ck-launch-session awesome

Так как я собираюсь использовать 3G-модемы, я установил modemmanager (приблуда для нормальной работы NM с модемами) и usb_modeswitch (ибо модемы любят определяться как накопители по-умолчанию).

Затем я настраивал bluetooth. Вот руководство.
Bletooth мне был нужен, чтобы можно было присоединиться к телефону LG KU 990i и использовать его как 3G-модем.
Стоит отметить, что blueman не хотел работать по-нормальному с NM. Везде советовали использовать gnome-bluetooth. Ну, я его и использую. В результате телефон настроился. Кстати, тут тоже нашёлся один нюанс. Если при настройке DUN выбирать оператора готовые предустановки, то при подключении появляется окошко с просьбой ввода пароля и никакой пароль из возможных не подходил. Решилось выбором своих настроек и вбиванием туда APN оператора.

Кстати, интересный факт: gnome-bluetooth и network-manager-applet (тоже гномовский) никаких гномовских либ за собой не тянут, так что они довольно лёгкие.

Далее я стянул с ББ конфиг awesome и переделал на работу с одним монитором и прописал серенькую тему strict и добавил скрипт мониторинга батареи.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
batwidget = widget({ type = "textbox" })
    vicious.register(batwidget, vicious.widgets.bat,
    function (widget, args)
        if  args<2> &lt; 30 and args<2> &gt;= 15 then
            return "" .. color_blue .. " Bat:<b> " ..  args<2> .. "</b>% <b>" ..args<3> .. "</b> "  .. color_default .. ""
        elseif args<2> &lt; 15 then
            return "" .. color_red .. " Bat:<b> " .. args<2> .. "</b>% <b>" .. args<3> .. "</b> " .. color_default .. ""
        else
            return " Bat:<b> " .. args<2> .. "</b>%  <b>" .. args<3> .. "</b> "
        end 
    end,
    60, 
    "BAT0")


Затем добавил для автозапуска следющее в конец
1
2
3
os.execute("pgrep -u $USER -x libreoffice || (libreoffice -nologo -quickstart &)")
os.execute("pgrep -u $USER -x nm-applet || (nm-applet &)")
os.execute("pgrep -u $USER -x bluetooth-applet || (bluetooth-applet &)")


Затем добавил переключение на русский по Caps Lock, скачал серую тему для chromium и радуюсь.

На всякий случай, вот мои запускаемые демоны.
DAEMONS=(syslog-ng dbus !network !netfs networkmanager acpid !crond @laptop-mode @alsa @bluetooth)

Вот набор скриншотов: терминалки, тема GTK+ на примере pidgin (qt программы выглядят так же благодаря gtk-qt-engine), chromium

s_1295856166_6da1db8ba3.pngs_1295856033_073bd8be20.pngs_1295856180_713033cda0.png

Опубликовано на welinux.ru