четверг, 17 ноября 2011 г.

Настройки тачпада в 11.10

После апгрейда до 11.10 вылезла проблема с тачпадом на ноутбуке: перестал работать drag-n-drop и выделение текста. Оказалось, что нехорошие люди поставили в xserver-xorg-input-synaptics новое значение флага MaxTapTime равное 180. У кого-то с таким значением тачпад работает прекрасно, а у меня же ни в какую. Кроме того, время от времени тачпад стал откликаться на попытки вертикального двупальцевого скролла как на двупальцевый тач (эмуляция правой кнопки мыши, контекстное меню). Все это наконец-то и заставило разобраться с проблемой вплотную.

$ dmesg | grep Synaptic
[   17.399178] elantech: Synaptics capabilities query result 0x78, 0x16, 0x0d.

В Oneiric стандартный диалог настройки тачпада в gnome-control-center очень куцый и имеет минимальное количество опций. Утилита gpointing-device-settings из одноименного пакета умеет чуть больше, но все равно имеет не полный набор, да и настройки у меня не запоминает.

Полный же набор настроек для тачпадов Synaptics отражающий все возможности датчика, контроллера и драйвера хорошо описан в документации и в моем случае решил все проблемы. Настройки можно изменять с помощью утилиты synclient из пакета xserver-xorg-input-synaptics что очень удобно - для начала можно создать временный скриптик со своими настройками, а затем, после того как станет понятно что настройки подходят, переместить все настройки на постоянную основу в /usr/share/X11/xorg.conf.d/51-synaptics-quirks.conf

Вот моя новая секция в 51-synaptics-quirks.conf:

Section "InputClass"
 Identifier "UBUNTU Oneiric custom quirks"
 Driver "synaptics"
 MatchIsTouchpad "on"
 MatchDevicePath "/dev/input/event*"
 Option "VertTwoFingerScroll" "1"
 Option "TapAndDragGesture" "1"
 Option "SingleTapTimeout" "300"
 Option "FastTaps" "1"
 Option "PalmDetect" "1"
 Option "PalmMinWidth" "2"
 Option "PalmMinZ" "140"
 Option "FingerLow" "10"
 Option "FingerHigh" "30"
 Option "MaxTapTime" "10"
 Option "MaxTapMove" "10"
EndSection
  • VertTwoFingerScroll=1 включает двупальцевое скроллирование
  • TapAndDragGesture=1 включает drag-n-drop
  • SingleTapTimeout=300 исправляет проблему, отрубившую drag-n-drop
  • FastTaps=1 ускоряет распознавание одиночного клика за счет замедления распознавания двойного клика
  • PalmDetect=1 включает игнорирование касания ладонью
  • PalmMinWidth=2 устанавливает ширину пятна касания. Ширина пятна касания выше этого значение будет означать, что тачпад задет ладонью, поэтому есть смысл установить по-минимуму
  • PalmMinZ=140 устанавливает силу касания выше которой касание будет игнорировано. Суть в том, что как правило по тачпаду мы легко водим кончиками пальцев, а вот сильное касание будет означать при этом, что тачпад задет случайно. Хорошо бы поставить поменьше, но значения меньше 130 отрубают у меня двупальцевый тач.
  • FingerHigh=30 устанавливает давление касания. Касание с давлением выше этого будет зарегистрировано.
  • FingerLow=10 устанавливает давление отпускания. Когда давление на тачпад будет ниже этой величины тачпад проинформирует об отпускании. Имеет смысл установить значение поменьше, чтобы только полностью убранный с тачпада палец приводил к отпусканию
  • MaxTapTime=10 устанавливает максимальное время для регистрации клика. Установил поменьше, чтобы только быстрое касание приводило к клику
  • MaxTapMove=10 устанавливает максимальную дистанцию скольжения пальца при регистрации клика. Также поставил поменьше, чтобы только несмазанные касания приводили к клику, а двупальцевый скролл не вызывал контекстное меню.

вторник, 15 ноября 2011 г.

Conky

Моему нытью про негодные/отсутствующие/нерабочие индикаторы пришел конец - я познакомился с пакетом conky. Вообще совершенно непонятно как такой полезный пакет мог пройти мимо моего внимания раньше.

Conky - пользовательский демон который выводит различную информацию и графики прямо на рабочем столе. Конфигурационный файл поначалу кажется нелогичным и запутанным, однако после знакомства с документацией настройка его уже не составит труда. Множество встроенных плагинов, а также стандартный конвейер команд *nix позволяют вывести что угодно и как угодно.

Мой конфигурационный файл идет ниже. Он не требует дополнительных утилит и программ и достаточно адаптивен к конфигурации системы. Погодный информер (url картинки) для своего города можно взять у Яндекса или Гисметео.

# Conky configuration file (~/.conkyrc)
# http://ubuntudrom.blogspot.com/search/label/conky

own_window yes
own_window_type override
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_colour brown

alignment top_right
minimum_size 240 700
maximum_width 240
gap_x 20
gap_y 40

double_buffer yes
use_spacer right
use_xft yes

update_interval 2.0
update_interval_on_battery 5.0
cpu_avg_samples 2

draw_shades no
draw_outline no
draw_graph_borders yes
draw_borders no
stippled_borders 0
border_width 0
border_inner_margin 10
border_outer_margin 0

default_color grey
default_bar_size 10 60

xftfont ubuntu:size=8
xftalpha 1
text_buffer_size 512

uppercase no
format_human_readable yes

top_name_width 15
top_cpu_separate false

TEXT
# ------ System
${time} ${if_existing /proc/acpi/battery/BAT0/info}${alignr} Battery: ${battery_percent BAT0}%${endif}
Kernel: ${kernel} ${alignr} Uptime: ${uptime}

# ------ Weather
${color orange}Weather${color}
${execi 3600 wget -q -O- "http://info.weather.yandex.net/moscow/2_white.png" | convert -crop "200x38+0+30" -alpha Activate -channel alpha -evaluate multiply 0.7 "png:-" "png:${HOME}/.conkyweather"}
${voffset 4}
${alignc}${image ~/.conkyweather -f 300 -p 20,58}

# ------ CPU
${color orange}CPU${color}
${freq}MHz ${alignr} Load: ${loadavg}
${alignc}${loadgraph 20,240 e5e5e5 F1AA0E}
Total: ${cpu cpu0}% ${alignr} Temp: ${acpitemp}°C
${alignc}${cpugraph 0 20,240 e5e5e5 F1AA0E}
Core 1: ${cpu cpu1}% ${alignr} Core 2: ${cpu cpu2}%
${cpugraph 1 10,110 e5e5e5 F1AA0E}${alignr}${cpugraph 2 10,110 e5e5e5 F1AA0E}
Core 3: ${cpu cpu3}% ${alignr} Core 4: ${cpu cpu4}%
${cpugraph 3 10,110 e5e5e5 F1AA0E}${alignr}${cpugraph 4 10,110 e5e5e5 F1AA0E}

# ------ Processes
NAME${goto 90}PID${goto 130}CPU%${goto 170}MEM%${goto 210}TIME
${top name 1}${goto 90}${top pid 1}${goto 130}${top cpu 1}${goto 170}${top mem 1}${goto 210}${top time 1}
${top name 2}${goto 90}${top pid 2}${goto 130}${top cpu 2}${goto 170}${top mem 2}${goto 210}${top time 2}
${top name 3}${goto 90}${top pid 3}${goto 130}${top cpu 3}${goto 170}${top mem 3}${goto 210}${top time 3}

# ------ Memory
${color orange}Memory${color}
Total: ${memmax} ${alignr} Used: ${mem}
RAM: ${memperc}% ${alignr} Swap: ${swapperc}%
${memgraph 20,160 e5e5e5 F1AA0E} ${alignr} ${swapbar 20,60}

# ------ Disk
${color orange}Disk${color}
${alignc}${diskiograph /dev/sda 20,240 e5e5e5 F1AA0E}
Root: ${fs_used_perc /}% ${alignr} ${fs_bar 10,180 /}

# ------ Network
${if_up wlan0}\
${if_existing /sys/class/net/wlan0/operstate up}\
${color orange}Network: wlan0${color}
IP: ${addr wlan0} ${alignr} ESSID: ${wireless_essid wlan0}
<< ${totaldown wlan0} / ${downspeed wlan0} ${alignr} ${totalup wlan0} / ${upspeed wlan0} >>
${downspeedgraph wlan0 20,110 e5e5e5 F1AA0E} ${alignr} ${upspeedgraph wlan0 20,110 e5e5e5 F1AA0E}\

${endif}\
${endif}\
${if_up eth0}\
${if_existing /sys/class/net/eth0/operstate up}\
${color orange}Network: eth0${color}
IP: ${addr eth0}
<< ${totaldown eth0} / ${downspeed eth0} ${alignr} ${totalup eth0} / ${upspeed eth0} >>
${downspeedgraph eth0 20,110 e5e5e5 F1AA0E} ${alignr} ${upspeedgraph eth0 20,110 e5e5e5 F1AA0E}\

${endif}\
${endif}\

# ------ Misc

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

/bin/bash -c "sleep 30 && /usr/bin/conky"

воскресенье, 13 ноября 2011 г.

Thunderbird/Lightning - фикс таймзоны

Оказалось, что Thunderbird, а именно его расширение для планирования Lightning (пакет xul-ext-lightning) использует свою базу таймзон (игнорируя системную), а именно базу SQLite в файле /usr/share/xul-ext/calendar-timezones/timezones.sqlite - эта база ставится в составе пакета xul-ext-calendar-timezones.

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

Однако ситуацию можно исправить самим. Для этого копируем этот файл туда, где его можно будет отредактировать (но можно и поменять владельца прямо на месте). После этого его нужно отредактировать редактором (пакет sqlitebrowser) - в строку соответствующую зоне Europe/Moscow скопировать следующее определение.

BEGIN:VTIMEZONE
TZID:Europe/Moscow
X-LIC-LOCATION:Europe/Moscow
BEGIN:STANDARD
TZOFFSETFROM:+0400
TZOFFSETTO:+0400
TZNAME:MSK
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE

После чего нужно вернуть файл обратно (либо восстановить владельца root).

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

четверг, 10 ноября 2011 г.

11.10

Просидев два дня на Unity понял что наверное все-таки смогу ей пользоваться, посему решил не ждать LTS до апреля и проапгрейдится до 11.10 прямо сейчас.

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

  • indicator-session занимает очень много места из-за того что выводит полное имя пользователя. Можно отключить в настройках через dconf-editor.
  • Лоток привода оптических дисков больше не блокируется (мне это нужно на ноуте). Видимо что-то в свежем третьем ядре.
  • Не запоминается уровень подсветки при перезагрузке
  • Иконка заряда батареи отображается дважды - в индикаторе и в трее.
  • В oneiric новый репозиторий един для обеих (i386 и x86) архитектур из-за чего консольный aptitude не может разрешить зависимости и настойчиво предлагает снести с сотню пакетов. После отмены предлагаемых им изменений можно что-то делать до следующего запуска.
  • Есть впечатление, что визуальный редактор репозиториев Software Source работает как-то не так. Ничего, поредактируем из консоли.
  • weather-indicator все также не может загрузить подробный прогноз для Москвы. Краткий прогноз работает нормально.
  • Thunderbird орет, что не может подключиться к удаленной адресной книге в Ubuntu One (а я и правда не подключен). Снес все пакеты Ubuntu One - орать перестал. Заколебали со своими облаками.
  • Выпадающее окно Guake так же некорректно устанавливает свою ширину при закрепленной панели Unity. Я уже писал как можно вылечить.
Что еще можно заметить?
  • Шрифт очень крупный. Я раньше корректировал DPI в настройках до значения 82-84 и все было в порядке. Сунулся было тут и не нашел ничего подобного, вообще никаких настроек нет. Ставим gnome-tweak-tool (он заодно подтянет альтернативную оболочку gnome-shell AKA Gnome3) - там есть все настройки включая размер и масштаб шрифтов, антиалиасинг и настройки иконок. Все размеры на единицу меньше, моноширийный шрифт - Monospaced-9, новый шрифт Ubuntu Mono как-то не впечатляет вообще.
  • Из-за изменений в лицензионной политике Sun/Oracle JDK больше нет в репозиториях и не будет. К сожалению все прогрессивное человечество вернулось в своем развитии на ступеньку вниз - к виндузятникам и маководам. В репах есть OpenJDK6 и OpenJDK7. Я сначала немного расстроился и кинулся искать что же делать. Вариантов интернет предлагает два: воспользоваться неким загадочным репозиторием, либо полностью реализовывать все действия инсталлятора через механизм Debian alternatives. Потыкавшись немного, понял, что лучше всего оставить OpenJDK6 в качестве общесистемной JDK, а Oracle JDK для разработки, production и особых случаев качать и ставить руками в /opt - эта схема вдобавок дает кучу очень правильных преимуществ, о чем может напишу потом подробней. Так что все это нестрашно на самом деле.
  • Наконец-то можно в программах-по-умолчанию установить раздельно аудио и видео плееры. Для аудио использую Audacious (понимает cue-разметку, что редкость), для видео использую VLC (жрет все и позволяет настраивать размер буфера, что важно при стриминге через Wi-Fi). Пакет banshee снес нафиг - не люблю комбайны, да и выпилят его в следующем релизе все равно.
  • Ubuntu Software Center уверенно удет к успеху - так уверенно, что даже запускать его не хочется.
  • Тема Thunderbird прикольная, но странная и отличается от других приложений. Почему Firefox так себя не рисует?
  • Индикатор нагрузки indicator-multiload уже в штатном репозитории.
  • Настройки все сократили до минимума и сделали похожими на настройки в OS-X
  • Стрелочки около иконок на панели Unity показывают на каком рабочем столе находится окно: на активном или неактивном.
  • Окно Dash home во весь экран - очень правильно.
  • Вместо штатного Static windows switcher по Alt-Tab сделали свой. Красиво, но как-то не очень удобно - мышкой окно нельзя быстро выбрать. Надо доделывать.
  • По Alt-F2 можно вводить цепочки типа gksu gedit doc.txt - в 11.04 не работало

В целом все работает стабильно, ничего не падает. В целом складывается сильное впечатление, что Космонавту не дают покоя лавры покойного Джобса: "бездарности подражают, гении крадут". Меня все это беспокоит, не знаю радоваться или нет и держу дистрибутив Arch на всякий случай. Однако чем больше домохозяек и хомячков удасться привлечь, тем лучше будет и нам - простым работникам консоли.

Думаю народ поорет немного, набалуется форкнутыми от Ubuntu дистрибутивами и через годик, когда весь софт стабилизируется, будет восхвалять Космонавта за смелость. Только верните простое гномовское меню назад.

вторник, 8 ноября 2011 г.

Unity

В неравной борьбе между моим упрямством и волей Космонавта с предсказуемым преимуществом победила последняя и я от безысходности и с 100-го раза все-таки перешел на Unity. Радости особой не испытываю, так как считаю, что Gnome 2 меня устраивал чуть более чем полностью и был удобен и быстр, однако воля Космонавта непоколебима и начиная с 11.10 никакого Gnome 2 в репозиториях уже нет.

Все нижеследующее относится к Ubuntu 11.04 на которой я все еще временно остаюсь.

Индикаторы

Так как гномовских апплетов больше нет, всю необходимую функциональность приходится реализовывать индикаторами. Для себя лично установил:

  • weather-indicator (в штатном репозитории)
  • classicmenu-indicator (ссылка в статье)
  • indicator-multiload (ссылка в статье)

Индикатор classicmenu-indicator решает одную из самых больших проблем - отсутствие быстрого доступа к запуску приложений через общее меню

Также традиционно удаляю бесполезные для меня:

  • indicator-me
  • indicator-messages

Быстрые клавиши

Да, в Unity есть быстрые клавиши.

Объединенное меню

Вторая серьезная проблема - это объединенное меню. Нет ничего более раздражающего чем искать меню маленького окошка калькулятора на противоположной стороне экрана здорового монитора. Специально спросил маководов - говорят, что тоже привыкали. Мне привыкать к этому не хочется, поэтому решаем проблему удалением следующих пакетов: appmenu-gtk, indicator-applet-appmenu, indicator-appmenu

Трей

Сюрпризом стало то, что иконки большинства приложений в трее не показываются. Оказалось, что необходимо специально выдавать разрешения на публикацию иконок в трее. Я разрешил вообще все иконки - для этого в редакторе dconf-editor для ключа /desktop/unity/panel/systray-whitelist нужно установить значение ['all']

Настройки

Кое-какие настройки Unity можно найти в CompizConfig Settings Manager в разделе Desktop/Ubuntu Unity Plugin. Необходимые для меня:

  • Desktop/Ubuntu Unity Plugin/Behaviour/Hide Launcher = Never (чтобы хоть как-то видеть какие именно приложения сейчас запущены)
  • Desktop/Ubuntu Unity Plugin/Behaviour/Key to show the launcher = <Alt><Super> (активно пользуюсь комбинациями Super+W, Super+D, Super+S - заметил, что иногда при этих командах лаунчер случайно вылазит сам в случае когда у него установлен биндинг лишь на одну лишь клавишу <Super>)
  • Desktop/Ubuntu Unity Plugin/Behaviour/Key to open the first panel menu = Отключить (иначе весьма нужная клавиша F10 будет занята этой ерундовой функцией)
  • Desktop/Ubuntu Unity Plugin/Experimental/Launch Icon Size = 32 (меньше размер - больше иконок влезет)
  • Desktop/Ubuntu Unity Plugin/Experimental/Backlight Mode = Backlight Toggles
  • General/General options/Desktop Size = Нужная конфигурация рабочих столов (я предпочитаю 1x3)
  • Window Management/Static Application Switcher/Appearance/Mipmap = Enabled
  • Desktop/Expo/Appearance/Mipmaps = Enabled
  • Desktop/Desktop Wall/Viewport Switching/Allow Wrap-Aroung = Enabled

Guake

У выскакивающей панели Guake есть одна проблема: она растягивается по всей ширине монитора, что на современных мониторах приводит к тому, что такой широкой консолью пользоваться не совсем удобно. Кроме того, в Unity эта ширина не совсем корректна сама по себе. К сожалению, настроить ширину окна через диалог настроек не представляется возможным, поэтому настраиваем ширину прямо в коде

--- /usr/lib/guake/guake.py.bak 2011-11-07 11:42:14.580261012 +0400
+++ /usr/lib/guake/guake.py 2011-11-07 12:29:05.500261042 +0400
@@ -814,7 +814,7 @@
         """
         screen = self.window.get_screen()
         height = self.client.get_int(KEY('/general/window_height'))
-        width = 100
+        width = 70
         halignment = self.client.get_int(KEY('/general/window_halignment'))
 
         # get the rectangle just from the first/default monitor in the

Заодно добавляем рамку вокруг окна в 1 пиксел

--- /usr/share/guake/guake.glade.bak 2011-11-07 12:33:05.830261044 +0400
+++ /usr/share/guake/guake.glade 2011-11-07 12:44:12.660261052 +0400
@@ -13,6 +13,7 @@
     <child>
       <widget class="GtkVBox" id="mainframe">
         <property name="visible">True</property>
+        <property name="border_width">1</property>
         <child>
           <widget class="GtkNotebook" id="notebook-teminals">
             <property name="visible">True</property>