среда, 14 декабря 2011 г.

Кнопки мыши

Чтобы быстро определить под какими номерами идут дополнительные кнопки мыши можно воспользоваться утилитой xev. Я себе настроил переключение рабочих столов боковыми кнопками (button6, button7) - через Compiz Settings Manager.

четверг, 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>

пятница, 28 октября 2011 г.

PDF > DJVU

Читаю много книжек в последнее время на планшете. Периодически попадаются странные (но не растровые!) PDF документы, которые открываются с жуткими тормозами - не помогает даже перегон файла через pdfedit. Для таких книжиц выполняю конвертирование в DJVU через штатную утилиту pdf2djvu командой типа:
pdf2djvu --monochrome -j0 -o output.djvu input.pdf

At

Оказалось, что штатная утилита at не способна запустить ни одну gui программу. Проблема в том, что переменная окружения DISPLAY не запоминается и не передается дочернему процессу - причем это даже описано в руководстве по at. Решением будет запоминать и передавать переменную DISPLAY принудительно.
echo export DISPLAY=$DISPLAY \&\& zenity --info --text \"Hello\" | at now + 1 minutes
Небольшой скрипт-напоминалка:
#!/bin/bash

if (( $# < 1 ))
then
    echo "Time for 'at' is not specified"
    exit -1
fi

echo export DISPLAY=$DISPLAY \&\& \(play -q /usr/share/sounds/ubuntu/stereo/dialog-information.ogg \&\) \&\& \
  zenity --info --title \"Alarm\" --text \"Notification for [$@]\" | at "$@"

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

Обои для экрана входа

Мне никогда не нравилась штатная черно-синюшняя тема Ubuntu. Но, если основную тему и обои рабочего стола сменить очень просто, то смена обоев для экрана входа является неочевидной.

Вот инструкция по простой смене обоев для экрана входа: http://maketecheasier.com/change-login-and-boot-screen-in-ubuntu-lucid/2010/05/13:

  1. Скопировать файл с картинкой в /usr/share/backgrounds
  2. sudo cp /usr/share/applications/gnome-appearance-properties.desktop /usr/share/gdm/autostart/LoginWindow
  3. Завершить сеанс (log out). Появится экран входа с запущенным апплетом в котором можно сменить обои. Залогиниться обратно.
  4. sudo unlink /usr/share/gdm/autostart/LoginWindow/gnome-appearance-properties.desktop

суббота, 1 октября 2011 г.

KVM и Microsoft Windows XP

Решил перейти с безблагодатного VirtualBox на православный KVM. Как и ожидал, основные проблемы возникли с переводом гостевой Windows XP SP3 EN, которую держу лишь ради пары нужных программ.

Проблемы возникли следующие.

  • Просто сконвертировать контейнер с виртуалкой не получилось - из-за смены виртуального оборудования Windows вылетает при загрузке с синим экраном. Поскольку возиться с выяснением причин было лень, пришлось переустановить Windows заново
  • Низкая производительность виртуального диска - все сильно тормозит
  • В VirtualBox можно было задать Shared Folders для удобного обмена файлами между хостом и гостем, обещанная в KVM опция -smb почему-то не работает
  • Нет интеграции буфера обмена между хостом и гостевой системой
  • Можно задать только фиксированные стандартные разшения экрана у гостевой системы, при этом окно QEMU использует рабочее пространство на моем мониторе неэффективно. Нельзя задать произвольный размер окна как в VirtualBox

Устранение всех проблем и заметки по интеграции.

После внимательного чтения мануала к KVM выяснилось, что режим работы виртуального диска по-умолчанию "writethrough" является надежным, но не очень производительным, особенно для файловых контейнеров в формате QCOW2 - поэтому меняем его на гораздо более производительный режим "writeback".

Отказываемся от работы с гостевой системой через окно QEMU - вместо этого используем программу rdesktop и доступ к гостевой системе через протокол RDP-v5. Для этого нужно включить в Windows XP опцию доступа через RDP и пробросить порт RDP (3389) из гостевой системы в хост. При этом можно запускать гостевую систему KVM даже в headless режиме, т.е. без основного окна.

У програмы rdesktop кроме кучи задокументированных ключей есть отсутствующий в man-руководстве ключик -r "clipboard:PRIMARYCLIPBOARD" который дает возможность интегрировать буферы обмена между хостом и гостевой системой.

Рекламируемый seamless-rdp режим у меня так нормально и не заработал - впрочем, не очень-то и нужно

Гостевая система может получить доступ к файлам хоста с помощью опции -r disk:{name}={path} программы rdesktop. При этом гостевая система видит диск как шару \\tsclient\name

Если опция -r disk:{name}={path} включена, гостевая система Windows XP при создании файлов устанавливает у них аттрибут "+x" что не очень приемлимо. Чтобы атрибуты у создаваемых и модифицируемых файлов были нормальными нужно установить umask для процесса rdesktop в значение 0133.

Размер экрана rdesktop настраивается под конкретный монитор опцией -g, причем кроме фиксированного размера в пикселах можно задать размер окна в процентах от размера экрана.

Неочевидный момент, который поначалу вводил в сильное замешательство - после запуска гостевой системы подключение через RDP возможно лишь по истечении 40-50 секунд. Причина такого поведения не совсем ясна: возможно это происходит из-за того, что необходимые сервисы Windows подгружаются не сразу; а возможно такое поведение обуславливается политиками безопасности Windows XP.

После окончательной настройки Windows XP можно установить у виртуальной системы опцию -snapshot которая будет предохранять файловый контейнер гостевой системы от новых изменений. Таким образом при каждом повторном запуске система будет в одном и том же состоянии, независимо от производимых в ней операций.

Для Windows XP существует паравиртуализированный драйвер для сетевой карты virtio. Без этого сетевого драйвера перерисовка окон в rdesktop происходит очень медленно, также без этого драйвера в rdesktop не работает шаринг папки. Также существует драйвер и для жесткого диска virtio.

Windows XP (в отличие от Linux) предполагает что часы на материнской плате идут по локальному времени - поэтому необходима опция KVM -rtc "base=localtime"

Опция -usbdevice "tablet" позволит избежать захвата мыши окном QEMU

В режиме удаленного RDP-подключения в главном меню Windows XP отстутствует пункт Shutdown. Однако, если нажать Ctrl+Alt+Del, то в меню появившегося приложения "Windows Task Manager" операция отключения компьютера будет доступна. Кроме того, если у виртуальной машины включена опция -snapshot ее можно отключать простым закрытием окна QEMU без риска повредить файловую систему.

Финальный скрипт запуска виртуальной машины с гостевой системой Windows XP

#!/bin/bash

# user: winxp/winxp

CURRENT_DIR=`readlink -f $0`
CURRENT_DIR=`dirname ${CURRENT_DIR}`

unset NET_FWD
NET_FWD="hostfwd=tcp:127.0.0.1:13389-:3389" # RDP

XP_DISTRO="/home/archive/distro/xp/winxppro-sp3-x86-vl-en.iso"
XP_ADDONS="/home/archive/distro/xp/NETKVM-20081229.iso"

unset OPTS
OPTS=("${OPTS[@]}" -snapshot)
OPTS=("${OPTS[@]}" -daemonize)
OPTS=("${OPTS[@]}" -pidfile "${CURRENT_DIR}/vm-winxp.pid")
#OPTS=("${OPTS[@]}" -vnc "127.0.0.1:1")
#OPTS=("${OPTS[@]}" -monitor "tcp:127.0.0.1:34526,server,nowait")
OPTS=("${OPTS[@]}" -name "WinXP Workstation")
OPTS=("${OPTS[@]}" -uuid "46036849-8658-4998-a918-166d900cffc7")
OPTS=("${OPTS[@]}" -enable-kvm)
OPTS=("${OPTS[@]}" -smp 1)
OPTS=("${OPTS[@]}" -m "512M")
OPTS=("${OPTS[@]}" -drive "file=${CURRENT_DIR}/vm-winxp.qcow2,if=ide,media=disk,index=0,cache=writeback")
#OPTS=("${OPTS[@]}" -drive "file=${XP_DISTRO},if=ide,media=cdrom,index=1,cache=writeback")
#OPTS=("${OPTS[@]}" -drive "file=${XP_ADDONS},if=ide,media=cdrom,index=1,cache=writeback")
OPTS=("${OPTS[@]}" -boot "order=c")
OPTS=("${OPTS[@]}" -rtc "base=localtime")
OPTS=("${OPTS[@]}" -soundhw "es1370")
OPTS=("${OPTS[@]}" -vga "cirrus")
OPTS=("${OPTS[@]}" -net "nic,vlan=0,macaddr=52:54:00:12:34:56,model=virtio")
OPTS=("${OPTS[@]}" -net "user,vlan=0,hostname=vm-winxp,${NET_FWD}")
OPTS=("${OPTS[@]}" -usb)
OPTS=("${OPTS[@]}" -usbdevice "tablet")

kvm "${OPTS[@]}" "$@"

Финальный скрипт запуска rdesktop

#!/bin/bash

WORKAREA=$(xprop -root "_NET_WORKAREA")
WORKAREA_X1=$(echo ${WORKAREA} | awk -F'[, ]+' '{print $3}')
WORKAREA_Y1=$(echo ${WORKAREA} | awk -F'[, ]+' '{print $4}')
WORKAREA_X2=$(echo ${WORKAREA} | awk -F'[, ]+' '{print $5}')
WORKAREA_Y2=$(echo ${WORKAREA} | awk -F'[, ]+' '{print $6}')
WORKAREA_W=$(( ${WORKAREA_X2} - ${WORKAREA_X1} - 2 ))
WORKAREA_H=$(( ${WORKAREA_Y2} - ${WORKAREA_Y1} - 2 ))

unset OPTS
OPTS=("${OPTS[@]}" -u "winxp")
OPTS=("${OPTS[@]}" -p "winxp")
OPTS=("${OPTS[@]}" -T "WindowsXP Workstation")
OPTS=("${OPTS[@]}" -a 24)
OPTS=("${OPTS[@]}" -P)
OPTS=("${OPTS[@]}" -5)
OPTS=("${OPTS[@]}" -g "${WORKAREA_W}x${WORKAREA_H}")
OPTS=("${OPTS[@]}" -r "clipboard:PRIMARYCLIPBOARD")
OPTS=("${OPTS[@]}" -r "sound:local")
OPTS=("${OPTS[@]}" -r "disk:home=${HOME}")
OPTS=("${OPTS[@]}" "127.0.0.1:13389")

daemon \
    --noconfig \
    --umask=0133 \
    -- \
    rdesktop "${OPTS[@]}" "$@"

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

OmegaT - редактор для переводчика

Обнаружилась замечательная программа для ручного перевода текстов OmegaT.

Собственно, основная проблема при ручном переводе - редактируя перевод, держать перед собой оригинал текста. Также часто при редактировании мешает верстка оригинального документа.

OmegaT решает обе проблемы - сначала разбирает входной документ на отдельные параграфы без верстки, затем позволяет удобно эти параграфы редактировать. После окончания перевода, благодаря внутренней системе тэгов OmegaT позволяет "собрать" уже переведенный документ в той же верстке в какой он и был. Поддерживается куча форматов, в том числе и java-properties файлы.

Буду пробовать в бою.

четверг, 11 августа 2011 г.

IntelliJ IDEA

Пятиминутка внимания к настройкам IntelliJ IDEA - оптимизация работы под Ubuntu на ноутбуке

1. Первое, о чем подумалось - шорткаты. Шорткаты по умолчанию хорошо подходят для Windows, но в Gnome конфликтуют со многими системными шорткатами.

Settings -> Keymap -> Keymaps = Default for Gnome

2. Повышение реакции отклика

Settings -> Appearance -> Animate Windows (выключить)

3. Большинство тулбаров умеют динамически появляться "поверх" основных окон и скрываться при потере фокуса. Иконка на тулбаре в правом верхнем углу Dock/Undock переводим в положение Undock - позволяет автоматически скрывать окна на тесном экране ноутбука

4. Иконка в левом нижнем углу IDE освобождает пространство IDE от иконок тулбаров. Динамически показать все иконки - двойное нажатие Alt

вторник, 2 августа 2011 г.

Проблемы с Adobe Flash 10.3

Идущий в комплекте с Natty 11.04 плагин Adobe Flash портит встроенное в Firefox страничках видео странными белыми квадратиками. На самом YouTube а также в полноэкранном режиме все показывается нормально.

Решением является установка 64-х битного плагина 11-й бета-версии в локальную папку ~/.mozilla/plugins

http://241931348f64b1d1.wordpress.com/2011/06/05/problem-ubuntu-11-04-x64-and-flash/

Плагин можно скачать с сайта Adobe

http://labs.adobe.com/downloads/flashplayer11.html

понедельник, 1 августа 2011 г.

пятница, 29 июля 2011 г.

Смена таймзоны

Поменять таймзону на сервере можно при помощи команды

sudo dpkg-reconfigure tzdata

Эффективная работа с SSH

Век живи - век учись. Недавно обнаружил, что вместо регулярного набора подобной команды:

ssh someotheruser@very.long.domain.url.com -p 12345 -i ~/.ssh/somespecialkey

Можно создать конфигурационный файл ~/.ssh/config

host abc
    HostName very.long.domain.url.com
    Port 12345
    User someotheruser
    IdentityFile ~/.ssh/somespecialkey

И после этого спокойно набирать

ssh abc
scp ~/myfile abc:

Там же куча других настроек, вроде форвардинга портов. Подробности - через man ssh_config

понедельник, 25 июля 2011 г.

JDK & Ubuntu Server 10.04 LTS

Установка JDK на Ubuntu Server 10.04 LTS

sudo apt-get install python-software-properties
sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
sudo apt-get update
sudo apt-get install sun-java6-jdk

После чего добавить в /etc/environment строчку

JAVA_HOME="/usr/lib/jvm/java-6-sun"

понедельник, 18 июля 2011 г.

Amazon EC2

Блог посвященный развертыванию Ubuntu на облачном хостинге Amazon EC2 с перечнем идентификаторов официальных AMI- http://alestic.com/

Вот, например, рецепт переезда во время печально известного апрельского блэкаута - http://alestic.com/2011/04/ec2-outage

Также доступна таблица идентификаторов официальных AMI от Canonical - https://help.ubuntu.com/community/EC2StartersGuide

пятница, 8 июля 2011 г.

Создание DEB пакетов

В дальнейшем планирую все создаваемые приложения оформлять в виде DEB пакетов так как это очень практично и удобно.

Вот хорошая, годная статья - http://habrahabr.ru/blogs/linux/78094/

четверг, 7 июля 2011 г.

Daemon

Утилита daemon годится не только для запуска сервисов, но и для повседневной работы - особенно для запуска GUI приложений из консоли.

Типа такого:

alias gitg="daemon gitg \$(readlink -f .) \$@"

- это вместо плясок с "nohup gitg 1>/dev/null 2>&1 &"

SOAP UI

Чтобы отучить SOAP UI от того чтобы он гадил гуда попало своими конфигами и логами (что важно при установке в /opt) нужно применить следующий патч к его запускающим скриптам - http://pastebin.com/v0gvMNhc.

patch -p1 -i soapui.diff

Удаленный доступ

Цитата из fortunes-ubuntu-server: "If the empty file ~/.hushlogin exists on the server, login to the server will be super quiet. Only the bash prompt is displayed."

среда, 22 июня 2011 г.

Смена заголовка у консоли

Нашел рецепт смены заголовка у текущего окна gnome-console (да и вообще любого окна) - что бывает полезным при одновременном запуске нескольких скриптов при отладке чего-бы то ни было.

THIS_WINDOW=`xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | awk '{ print $5}'`

xdotool set_window --name "aaaabbbbcccc" ${THIS_WINDOW}

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

вторник, 21 июня 2011 г.

Переносы строк

Похоже никакие плагины для LibreOffice/OpenOffice качать не надо.

sudo apt-get install language-support-writing-ru mythes-ru 

Индикаторы в Natty

В тысячный раз посмотрев в правый верхний угол на иконки я понял что там не так - во-первых, календарь стал совсем другим, старый мне нравился больше; а во-вторых, меню двух индикаторов (социального и нотификатора сообщений) я вообще никогда и никак не использовал.

Cнес три пакета (заодно удалил Ubuntu One) и перенабрал панель с индикаторами и апплетами заново.


Пакеты для удаления:

indicator-me
indicator-datetime
indicator-messages

Natty & Java

В 11.04 обнаружилась серьезная проблема с Java/Swing приложениями - через некоторое время после закрытия очередного диалога во всей системе слетает декорация окон, то есть не видно ни заголовков, ни кнопок управления окнами.

Для временного решения проблемы можно перезапустить декоратор командой "compiz --replace" - однако это очень быстро надоедает.

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

1. Использую Gnome Desktop
2. Выключил все эффекты в "CompizConfig Settings Manager/Effects" кроме "Window Decoration"
3. В секции "CompizConfig Settings Manager/Effects/Window Decoration" в поле "Command" установил значение "/usr/bin/gtk-window-decorator"

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

UPD. Проблему починили

AWN weather appler - network error

Всем замечателен Avant Window Navigator - однако его погодный апплет регулярно выдает ошибку запроса к своему серверу.

Самый простой способ - закомментировать строчку #240 в файле [/usr/share/avant-window-navigator/applets/weather/weather.py]

Вывод времени

Вместо длинного рецепта по изменению своей локали можно обойтись малыми затратами. Для этого, имея основную локаль по-умолчанию en_US.UTF-8 подправляем свой файлик .profile

export LC_TIME="en_GB.UTF-8"

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

Вот замечательная статья про локали - http://www.linux.com/archive/feed/53781.

суббота, 18 июня 2011 г.

Подключение по SSH

Чтобы при подключении по ssh не вылезало сообщение [xrdb: Can't open display ''] необходимо на сервере прописать в .bashrc строчку

# Display
if [[ -z ${DISPLAY} ]]
then
    export DISPLAY=":0.0"
fi

среда, 25 мая 2011 г.

LibreOffice

В Natty произошла замена пакета OpenOffice на LibreOffice. К сожалению, в стандартном списке пакетов для русского нет пакета для переноса строк - только пакет со словарем для проверки правописания.

Однако можно скачать специальное расширение для переноса строк в русскоязычном тексте. Установка производится при помощи пункта меню "Tools -> Extension Manager...", затем требуется перезапуск редактора

пятница, 25 марта 2011 г.

Tor

Заинтересовался анонимайзером Tor. Вариантов установки несколько.

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

https://help.ubuntu.com/community/Tor

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

https://www.torproject.org/download/download.html.ru#linux

воскресенье, 6 марта 2011 г.

Angry Birds

Величайший хит для всех офисных сидельцев замечательно работает и под Wine.

Для этого:

1. Берем папку купленной и установленной версии под Windows (или еще откуда)
2. Через winetricks устанавливаем пакет vcrun2008
3. Настроиваем звук в конфигураторе winecfg. Ставим ALSA/HwAcceleration=Emulation/DefSampleRate=22000/Bits=16 (иначе у меня звук захлебывается)
4. wine AngryBirds.exe
5. ...
6. PROFIT!

четверг, 3 марта 2011 г.

Linux на десктопах

Доля Linux на десктопах растет!

http://www.w3schools.com/browsers/browsers_os.asp

Google Talk

Оказалось, что в Ubuntu для видео/аудио общения наряду со Skype и многочисленными SIP клиентами можно использовать плагин Google Talk. Версия плагина под Linux существует с прошлой осени, регулярно обновляется и вроде бы вполне нормально работает.

Установить плагин можно из чата Google Talk который доступен в GMail или iGoogle. В ходе установки пакета плагин сам устанавливает свой репозиторий из которого потом будет обновлятся.

Естественно, что у собеседника также должен быть аккаунт гугла и установлен этот же плагин.

Ходят слухи, что в скорости из этого плагина за денежку можно будет звонить и на стационарные телефоны (в США уже вроде бы можно).

Работать не отвлекаясь

В репозитории найден pyroom - полноэкранный текстовый редактор для плодотворной работы над текстами.

среда, 19 января 2011 г.

Полезняшка

У ноутбука куча достоинств, но есть и недостатки. Одним из них является странное расположение кнопочки открытия трея привода оптических дисков - практически невозможно перенести ноут не нажав при этом на нее своими клешнями.

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

Создаем скрит /etc/init.d/cdlock

#!/bin/sh

eject -i on /dev/sr0

Где /dev/sr0 - устройство соответствующее моему приводу оптических дисков.

Далее инициализируем запуск сервиса с помощью команды

sudo update-rc.d cdlock defaults

Разблокировать привод можно обратной командой "eject -i off" - права суперпользователя при этом необязательны.

четверг, 13 января 2011 г.

Tips

Классный пост на хабре.

sudo apt-get install fortunes-ubuntu-server
/usr/bin/ubuntu-server-tip

Я добавил вызов ubuntu-server-tip в конец файла ~/.bashrc - теперь новый хинт показывается каждый раз при запуске новой консоли.

понедельник, 3 января 2011 г.

Oracle SQL Developer

Поставил связку Oracle SQL Developer и Oracle 10 XE. Корпоративный софт такой корпоративный...

Обнаружилось, что SQL Developer не работает - появляется ошибка ORA-00604. После изучения нытья в интернетах выяснилось, что ему совершенно необходимо, чтобы локаль при его запуске совпадала с локалью самого сервера и никакие внутренние настройки при этом не помогают. А у меня основная локаль несколько нестандартная (en_RU).

Дабы не переключать всю локаль ради одного кривого приложения я добавил в запускающий скрипт (sqldeveloper.sh) следующую команду:

export LC_ALL=C

Запускаем приложение, лезем в диалог "Help->About", на закладке "Properties" видим "user.language=en" и "user.country=US"