yurikhan: (Default)

В комментах у Реймонда нашего Чена о том, почему в Windows пришлось заменить иерархическое Start Menu поиском по помойке.

Коротко — потому что производители программного обеспечения развели там помойку.

И это объясняет, почему в типичном дистрибутиве Linux’а такую замену делать не нужно: потому что у нас все приложения более-менее аккуратно разложены по группам, групп не слишком много, каждый производитель не стремится показать в главном меню название своей компании. Главный фактор помойки — натурально, Wine.

yurikhan: (Default)

Пока был в отпуске, запилил нормальный порт Pump It Up на общедоступную версию Stepmania 4 — некоторые метрики скин-движка называются по-другому, ну и half-double не работал совсем, пришлось сбэкпортировать какой-то сильно более поздний коммит. Заодно поучился собирать пакеты под Debian/Ubuntu.

А ещё у меня теперь есть два патча в ядре. Один про коврик MadCatz BeatPad, второй про коврик от Andamiro.

yurikhan: (Default)

Когда в Ubuntu 11.04 они выкатили в качестве основного DE сырой, глючный и неудобный Unity, я пожал плечами и перелогинился в Ubuntu Classic со вторым Гномом.

В Ubuntu 11.10 Classic’а уже не было. Был выбор — привыкать к Unity (который, может, уже не такой глючный, но не менее неудобный), ставить GNOME 3 Shell (который как Unity, только GNOME), ставить GNOME 3 Classic (который на вид как GNOME 2, только несовместимый с теми сторонними плагинами панели, к которым я привык), или искать другой DE.

В общем, я посмотрел ещё XFCE и LXDE и остановился на первом. Оно вполне вписалось в мой паттерн использования. Особенно после замены штатного xfwm4 на Compiz и доустановки темы Clearwaita для тех немногих, но важных программ, перешедших на GTK+3.

Сегодня проапгрейдился до XFCE 4.10, которая не успела в Xubuntu 12.04. Главная юзабилити-фича — таскбар теперь можно заставить не переключать окна по повороту колеса мыши.

yurikhan: (Default)

А вот как правильно установить собственную раскладку клавиатуры для xkb?

Нет, я знаю, как написать файл в /usr/share/X11/xkb/symbols, и знаю, что добавить в /usr/share/X11/xkb/rules/evdev.xml, чтобы оно подхватилось. Но время от времени приходит apt с обновлённым пакетом xkb-data и вываливает его прямо поверх моих изменений.

Замораживать пакет и отказываться от обновлений — не хочу.

yurikhan: (Default)

Стоит задача: время от времени собирать списки файлов с нескольких окрестных серверов. При этом серверы бывают CIFS и FTP, а те, которые FTP, в свою очередь, делятся на RFC2640-compliant и не-compliant. Но на списки это особо не влияет. Хочется иметь списки в каком-нибудь более или менее однородном формате и кодировке. Кодировку хотим какую-нибудь юникодную, дабы не ограничивать в именах себя и партнёров по обмену.

Под Windows задача тривиально решается для CIFS: cmd /u /c dir /a /-c /s \\server\share |iconv -f ucs-2le -t target_encoding >server-%DATE%.txt.

Под Linux у нас такого UNC-синтаксиса нет. Каноническое решение — замонтировать нужный сервер в файловую систему и сказать ls -lR.

CIFS-серверы монтируются через mount.cifs из пакета smbfs. Есть только один нюанс: в ключах -o должно быть iocharset=utf8, иначе по умолчанию оно берёт cp437. utf8 должно быть написано именно так, без привычного минуса, потому что это в данном случае не имя кодировки в iconv, а имя файла динамически подгружаемой библиотеки.

Если среди жертв есть древние серверы на Samba 1.x (или, возможно, Windows 9x/ME), то дополнительно придётся указать в smb.conf параметр dos charset = cp866.

Для монтирования FTP-серверов есть много разных решений — ftpfs (obsolete), lufs, lftpfs, curlftpfs.

lufs поначалу выглядит очень многообещающе, но мануал ни слова не говорит о кодировках. А значит, правильно смонтируются только серверы с правильной кодировкой. К сожалению, их ещё пока в процентном соотношении очень мало. Кроме того, сам пакет требует компиляции отдельного ядерного модуля, который для сборки под ядро 2.6 ещё надо патчить.

lftpfs работает поверх lftp, а значит, с поддержкой кодировок у него всё нормально. Однако он заточен под кэширование. Что само по себе интересно, но для каких-нибудь других задач.

curlftpfs тоже позволяет для каждого сервера задать, в какой кодировке он отдаёт листинги. На нём я и остановился.

Замеченные проблемы:

  • С curlftpfs не работает umount из-под простого пользователя, говорит, что параметры не совпадают с тем, что написано в fstab. Хотя смонтировано именно оттуда.
  • mount.cifs под пользователем позволяет смонтировать одну и ту же шару несколько раз, после чего опять-таки обламывается umount.
  • Если точки монтирования имеют одинаковые имена (скажем, /mnt/foo/pub и /mnt/bar/pub), то в Nautilus’е они показываются как pub и pub (1), что несколько затрудняет их различение.

PS: под Windows есть некая программа FTPDrive. Только она заброшенная (последний релиз два года назад) и, кроме того, её братья (NetView и KillCopy) не внушают доверия.

yurikhan: (Default)

В Windows, если ты открываешь мышью контекстное меню, оно открывается по отпусканию кнопки, справа и внизу от текущего положения курсора. За очень редким исключением. Потому что контекстные меню открываются функцией API, у которой именно так заданы умолчания.

В Ubuntu, даже в пределах одной framework — GNOME — поведение отличается в зависимости от контекста.

  • Меню верхней панели открывается по нажатию, так, что мышь оказывается на первом пункте, и отпускание кнопки ведёт к выполнению его.
  • Меню нижней панели «подставляет» свой последний пункт.
  • Меню элементов панели (launcher’ов, часов, индикатора языка ввода) — вываливается по нажатию, выравнивается верхним краем по нижнему краю панели (или нижним — по верхнему). При коротком нажатии открывается, при длинном — открывается и закрывается обратно.
  • Меню заголовка окна вываливается по нажатию, при отпускании кнопки сразу меню остаётся висеть, при этом следующий клик в той же точке ведёт к выполнению первой команды. Так же ведут себя меню текстового редактора в gedit и pidgin и меню терминала.
  • Меню Firefox’а открываются по отпусканию, справа и внизу. По клику в том же месте закрывается без выполнения какой-либо команды.

Эта шизофрения указывает на то, что в API никаких разумных умолчаний на этот счёт нет. Либо все разработчики считают себя умнее и выставляют неумолчательные значения.

А как с этим в KDE? А на Mac’е?

yurikhan: (Default)

Открыл OpenOffice.org Writer’ом первый попавшийся документ, дабы его распечатать. Тут же, на ровном месте, нарвался на отсутствие поддержки базовых возможностей.

Есть такая вещь, как cross-reference. Это когда у меня есть нумерованный список (скажем, пунктов в договоре, или литературы) и я могу в любом месте на какой-нибудь элемент этого списка сослаться. Например:

  1. Начальник всегда прав.
  2. Если начальник неправ, см. п. 1.

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

Так вот, выясняется, что в OOo, чтобы такое работало, нужно сделать много лишних подпрыгиваний и приседаний и всё равно найдутся юз-кейсы, не покрытые этим workaround’ом. И эта ситуация тянется как минимум с 2001 года и обещает исправиться только в OOo 3.0.

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

yurikhan: (Default)

Посмотрел на это чудо инженерной мысли.

Во-первых, у него не работает пробел. То есть он работает, но только в полноэкранном режиме. А в оконном функция Pause/Play назначена на клавишу P. Почему Так Сделано, я не понимаю. Самая главная функция должна висеть на самой большой клавише и вести себя независимо от других функций, это же самые основы хорошего дизайна.

Во-вторых, полноэкранный режим включается по F11. Что может сколько угодно соответствовать общей концепции GNOME, но не соответствует моим взглядам (которые, вкратце, состоят в том, что мой видеоплеер должен переключаться в full screen по Enter’у — второй по величине клавише на клавиатуре).

В-третьих, клавиши не настраиваются (исключая вариант взять исходники и пересобрать. А я именно этот вариант пока хочу исключить).

Ну и в-четвёртых, когда я пошевелил в полноэкранном режиме мышкой, вылезла панелька с seek bar’ом и кнопкой громкости, которую я обратно убрать патологически не смог, кроме как закрытием плеера.

Так что всё-таки mplayer. Без гуя.

yurikhan: (Default)

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

Принтер. Определился автоматически как Epson AcuLaser C1100, драйвер поставил от C1900, лампочкой мигает (типа данные льются), но не печатает. Погуглил, нашёл правильный драйвер. Выкачал, развернул, ./configure. Фигушки, «ваш компилятор C не умеет создавать бинарники». Читаю лог, вижу, что он не нашёл crt1.o, гуглю, ставлю libc6-dev, ./configure. Фигушки, не нашёл ещё чего-то. Ставлю libcupsys2-dev. ./configure. Ага. make. Ага. sudo make install. Ага. Пускаю тестовый лист. Фигушки, молчим, ничего не печатаем и лампочкой не мигаем. Включаю логи. Пускаю тестовый лист. Читаю логи. «Ниасилил запустить pstoalc1100.sh». Вроде с правами всё нормально, cups работает от рута, фиг поймёт, где засада. Копирую pstoalc1100.sh в другой bin, правлю .ppd. Пускаю тестовый лист. В логах «не нашёл alc1100. Его тоже копирую в другой bin. Пускаю тестовый лист, всё работает.

Сканер. Определился автоматически. На кнопку не реагирует. Запускаю руками xsane. Тыкаю «Сканировать» с дефолтными настройками. Сканер весело шуршит, доходит до конца страницы, виснет. Читаю гугл. Много думаю. Пишут, что вот конкретно HP ScanJet 5370C — это есть перемаркированный Avision и они почти работают с соответствующим драйвером. Драйвер стоит, не вижу причин виснуть. Наконец наталкиваюсь на чей-то пост, что «всё работает, только виснет на 150 dpi». Пробую на 100 dpi — и правда, работает. И на 300 тоже. А вот на 150 виснет.

Мышь. Razer Copperhead, лазерная, семикнопочная. Работает в базовом режиме, без функций Back/Forward в браузере. Две кнопки с правой стороны переключают чувствительность, но это фича самой мыши, а не софта. xev говорит, что левая кнопка — 1, правая — 3, колесо — 2, колесо от себя — 4, на себя — 5, левая боковая ближняя — 8, дальняя — 9. Читаю гугл. Много думаю. Прописываю в xorg.conf:

Section "InputDevice"
    Identifier     "Configured Mouse"
    Driver         "mouse"
    Option         "CorePointer"
    Option         "Device" "/dev/input/mice"
    Option         "Protocol" "ExplorerPS/2"
    Option         "Buttons" "7"
    Option         "ZAxisMapping" "4 5"
    Option         "ButtonMapping" "1 2 3 6 7 4 5"
EndSection

Не понимаю, почему ButtonMapping именно такой, но это работает.

Клавиатура. Logitech G15, первой версии, с 18-ю макроклавишами, четырьмя медиакнопками, колесом громкости и LCD-дисплейчиком 160×43. Колесо работает. Макроклавиши работают, но на них по умолчанию забиндено F1–F12 и 1–6 и не меняется. Дисплейчик показывает логотип Logitech. Когда-нибудь потом поковыряться с софтом с g15tools.sf.net.

yurikhan: (Default)

Вчера собрался с силами и водрузил на свой десктоп Ubuntu 7.10.

Read more... )

Profile

yurikhan: (Default)
Yuri Khan

May 2017

S M T W T F S
 123 456
78910 111213
14 151617181920
21 222324252627
28293031   

Links

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated 2017-05-29 17:07
Powered by Dreamwidth Studios