понедельник, 30 ноября 2009 г.

Macbook + Linux....

Как-то летом, когда на Линуксфорум наползло троллей яростно выбирающих Windows, стало складываться ощущение что все разумное, доброе и вечное из мира ушло. Поэтому, для того чтобы восстановить потерянное равновесие, я создал тему с вопросом "А за что вы любите Линукс?". Ответов было много разных, и практически без образчиков предсказуемого идиотизма в духе: "Как можно любить операционную систему? Любить надо женщин". Ничего не имею против второй части утверждения, но мои жалкие знания русского языка подсказывают что любить можно еще и Родину, пиво, и много-много чего другого. Почему не может быть любимой операционной системы, если есть, скажем, любимый свитер, или любимый сорт сыра непонятно.

Можно относится к компьютерной программе как к некоторой абстракции, имеющей вполне определенный функционал. И это в принципе будет правильно. Можно даже пойти дальше, и утверждать что программы нужно выбирать исходя из поставленных задач, основываясь на законах логики, и никаким "любимым программам" в серьезном мире не место, да и вообще эмоции в отношении программного обеспечения - это бред. Но, допустим, у нас есть несколько программ обладающих примерно одинаковым функционалом: vim vs. emacs, Opera vs. Firefox, etc. Обе программы неплохи, сами по себе, но если мы возьмем двух живых пользователей, с примерно одинаковыми требованиями, которые обоими программами покрываются с головой, они могут сделать разный выбор, и потом ночами на пролет доказывать друг другу на очередном форуме, что собеседник неправ. Логика отходит в сторону уступая место тем самым эмоциям, ассоциациям и беспокойному дедушке Фрейду.

Я, наверное как и многие линуксоиды, ради интереса, чтобы поиграться, устанавливал себе практически все дистрибутивы к которым мог дотянуться. Ответить на вопрос о любимом дистрибутиве мне будет несколько сложно, хотя это, безусловно Debian. С нелюбимыми все гораздо проще: Mandriva и Ubuntu, причем какой-то разумной аргументации привести я не смогу, поскольку ни тем, ни другим никогда сколько-нибудь долго не пользовался... до последнего времени не пользовался:

diesel@indie:~$ cat /etc/issue
Ubuntu 9.10 \n \l

diesel@indie:~$ uptime
02:31:56 up 3 days, 6 min, 5 users, load average: 0.38, 0.56, 0.55
diesel@indie:~$

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

diesel@indie:~$ sudo dmidecode -s system-product-name
MacBook4,1

diesel@indie:~$ lspci
00:00.0 Host bridge: Intel Corporation Mobile PM965/GM965/GL960 Memory Controller Hub (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (rev 03)
00:1a.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #4 (rev 03)
00:1a.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #5 (rev 03)
00:1a.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #2 (rev 03)
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 03)
00:1c.0 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 1 (rev 03)
00:1c.4 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 5 (rev 03)
00:1c.5 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 6 (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #2 (rev 03)
00:1d.2 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #3 (rev 03)
00:1d.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #1 (rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev f3)
00:1f.0 ISA bridge: Intel Corporation 82801HEM (ICH8M) LPC Interface Controller (rev 03)
00:1f.1 IDE interface: Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E) IDE Controller (rev 03)
00:1f.2 IDE interface: Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E) SATA IDE Controller (rev 03)
00:1f.3 SMBus: Intel Corporation 82801H (ICH8 Family) SMBus Controller (rev 03)
02:00.0 Network controller: Broadcom Corporation BCM4328 802.11a/b/g/n (rev 03)
03:00.0 Ethernet controller: Marvell Technology Group Ltd. Marvell Yukon 88E8058 PCI-E Gigabit Ethernet Controller (rev 13)
04:03.0 FireWire (IEEE 1394): Agere Systems FW322/323 (rev 61)


Начинка вполне стандартная, ничего особенного там нет, установка практически ничем не отличается от установки на любой другой ноутбук. Есть нюансы с разбивкой диска и установкой загрузщика(потому что http://en.wikipedia.org/wiki/GUID_Partition_Table). Нюансы хорошо документированы в Debian-wiki( http://wiki.debian.org/MacBook ), даже если вы не собираетесь устанавливать именно Debian, советую прочитать, это наиболее полное и наиболее доходчивое описание особенностей установки.

Пробовал устанавливать:
* openSuSE 11.2, x64: устанавливается, загружается. Во время установки нужно или придумать как сделать gptsync после разбивки дисков, или же дождаться окончания установки, сделать gptsync средствами refit и переустановить загрузщик(не уверен что не рассказываю ужасы, но кажется, gptsync оно таки не делает).
* Debian Lenny, х32: устанавливается, загружается, собственно история таже самая: или gptsync, после разбивки диска(этот момент освещен в wiki), или просто потом нужно будет переустановить загрузщик.
* Ubuntu 9.10, х64: устанавливается, загружается, ничего дополнительно делать не надо(кроме собственно установки refit).

openSuSE только установил, посмотрел что работает, дальше разбираться желание не появилось.

Две целиком стандартные проблемы Linux на ноутбуках: засыпание и wifi.И в Debian(обновленном до unstable) и в Ubuntu практически все одинаково. Засыпание при закрытии крышки - работает из коробки, ничего специально не устанавливал. Какой "подвид" засыпания срабатывает когда закрываем крышку - не знаю, не разбирался, я про это с одной стороны практически ничего не знаю, с другой - мне это совершенно неинтересно. Процесс засыпания и пробуждения несколько дольше чем в OS X, но в принципе терпимо.

Wifi. В debian'е собирал драйвера отсюда: http://www.broadcom.com/support/802.11/linux_sta.php, после этого все заработало. В ubuntu: установил судя по всему тоже самое через их менеджер драйверов. С ubuntu'вским менеджером драйверов было забавное приключение - нормально он заработал только после обновления системы, до этого ничего сканировать не хотел, и соответственно карточку не находил (не знаю, возможно его как-то можно принудительно заставить посмотреть на железо), после обновления - все вроде заработало нормально.

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

Клавиатура:
* следует обратить внимание на пакет pommed

root@indie:/home/diesel# aptitude search pommed
i pommed - Apple laptops hotkeys event handler

По-умолчанию, и в OS X, и в Linux F1-F12 клавиши ориентированы на специальные функции, такие как изменение яркости дисплея и далее по списку. Если вы, хотите использовать эти клавиши в приложениях, нужно нажимать Fn+F[1-12], это может быть несколько неудобно, и это поведение можно изменить с помощью pommed.

* клавиатура MacBook'а несколько специфична в плане расположения control-клавиш: Fn - Ctrl - Alt -Cmd. В OS X активно используются клавиатурные комбинации с Cmd, например Cmd+C/Cmd+V, вместо милых любому виндузятнику Ctrl+C/Ctrl+V. Окончательного мнения по поводу того как с этим быть в Linux пока не имею.

Тачпад(synaptics toucpad). Есть некоторые особенности(перечисляю те которыми я пользовался в OS X):
* у тачпада одна кнопка, соответствует левой кнопке мыши
* так же левая кнопка - это "Tap" по тачпаду одним пальцем
* правая кнопка - это "Tap" по тачпаду двумя пальцами
* Горизонтальная/Вертикальная прокрутка - двумя пальцами по тачпаду, в любом месте.
В принципе, это все работает, кое-что правда требует включения: через xorg.conf, hal'овы настройки X-ов, GUI-конфигуратор мыши, консольный synclient - на выбор. "Feel" сильно отличается от такового в OS X, дело скорее всего в мелочах, очень много разных временных параметров можно выставить для тачпада:

root@indie:/home/diesel# synclient -l | wc -l
70

Apple'овцы с этой задачей справились лучше. В Ubuntu без дополнительных настроек тачпад ведет себя гораздо приятнее, в Debian - ужасно. Собственно это главная причина почему сейчас выбор пал на Ubuntu. Переносить настройки в Debian с LiveCD Ubuntu не пробовал, man synaptics, хотя и содержит описание всех возможных опций настройки, ответа на главный вопрос: как сделать так чтобы этим можно было пользоваться, не дает. Тем не менее, не смотря на то что тому как работает тачпад в Ubuntu далеко до того как он работает в OS X, пользоваться тачпадом,вместо мыши, и не чувствовать себя обделенным получается: за обычным нетбуком/ноутбуком это гораздо сложнее, там уж или полноценную мышь подключай, или хоткеи настраивай на все случаи жизни во всех приложениях.

Возвращаясь к тому с чего начинал. Ubuntu на Macbook'е уже четыре дня, и я этой системой активно пользуюсь, хотя, многое еще не настроено и очень далеко до идеала. Для меня это точно персональный рекорд - раньше убунту редко выживала после первой перезагрузки - становилось неинтересно и я ее сносил. Я не собирался писать даже краткого обзора установки Linux на Macbook, но поскольку так уже получилось, то на этом разрешите откланяться. Продолжение будет.

воскресенье, 8 ноября 2009 г.

немного о рабочем окружении

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

Где-то около года я использовал свой Macbook и дома и на работе и за это время достаточно сильно к нему привязался. Хотя еще где-то весной лавочка закрылась, и пользоваться лэптопами на работе уже не разрешают, до сих пор смотрю на Mac главным образом как на рабочий инструмент, хотя это может показаться немного странным, есть какое-то количество линуксоидов воспринимающих продукцию Apple исключительно как набор свистелок и перделок, активно сдобренную маркетнингом. Как бы там ни было, я снова переехал на Debian на работе, и не так давно купил второй лэптоп, для того чтобы играться с Линуксом дома, потому как постоянная смена рабочего окружения раздражает.

Достаточно значительным отличием различных дистрибутивов Linux от OS X, является количество разнообразных выборов, которые может сделать, и которые обязан делать пользователь при настройке своего рабочего окружения. OS X дает вам, в терминах Linux, один DE: хороший, продуманный, качественный, но с очень урезанными возможностями для настройки ( да там есть Х-сервер, и на нем можно пускать все что угодно, включая любимые WM'ы, но это извращение). В Linux-системе вас скорее всего заставят выбрать как минимум DE, в котором, в свою очередь можно пилить очень очень много, более того, чтобы этим можно было пользоваться - пилить, так или иначе придется.

Когда стало понятно что придется опять переползать на Linux, первым желанием было сделать в Linux примерно тоже самое к чему я привык в OS X. Сходу, можно вспомнить: хоткеи(я уже писал об этом), эффекты: превью всех окон и превью всех рабочих столов, общее "меню" для всех приложений в верхней строчке, док, внешний вид. Если кратко: хоткеи можно, но не везде и не все, например как нормальный человек может поменять хоткеи в firefox для меня осталось загадкой, равно как осталось загадкой какой светлой голове пришло в голову для открытия нового таба в некоторых приложениях требовать от пользователя нажать Ctrl+Shift+t. Alt+Shift+t - нажимается с трудом, Ctrl+Shift+t - это акробатика смешанная с йогой. Эффекты - чисто теоретически, компиз это может, причем может почти как в OS X, к сожалению "почти", если "look" смущает своей топорностью, но с этим еще можно жить, то "feel" убивает насмерть, Control Center компиза явно нацелен на глубокую внутреннюю работу того кто будет им пользоваться, я к такой работе в отношении этого WM не готов. Наиболее вменяемым dock'ом из увиденных оказался cairo dock, хотя бы отдаленно напоминает Mac'овский, но его Панель Управления ничуть не легче, если не сложнее, компизовской, особенно, если учесть что искал я не как включать все возможные навороты, а как отключать те что были :) Общее меню: gnome-globalmenu2 - работает далеко не для всех приложений, даже тогда когда оно работает, на OS X это не очень похоже. Настройки внешнего вида: mac4lin - действительно неплохая штука, но к сожалению, есть вещи которые и ей неподвластны.

Короче говоря поигравшись вдоволь с тем что хорошо смотрится на скриншотах, пришел к неутешительному для себя выводу - сделать как в Mac'е, при наличии настоящего Mac'а с OS X рядом не получится, да и пытаться не стоит. Пусть лучше будет все еще до конца не настроенный, но по своему рабочий xmonad. Вот тут мы и подходим к главному вопросу передачи :)

Первым Window Manager'ом из разряда tiled WM которым я пользовался был ion3. Немного о "паттерне" своего использования tiled WM я уже писал и даже показывал скриншот. Не смотря на то что рабочих столов я таки держу обычно четыре, активно используется только первый, на котором скапливаются все нужные на данный момент приложения: обычно это браузер(ы), пиджин, и некоторое количество терминалов. Получается такой себе "рабочий стол", где все под рукой, хотя маленькое окошко браузера - это если честно не очень приятно, особенно если шрифты не очень маленькие. Похожую схему я повторил и в xmonad'е, правда повторив "look" не совсем повторил "feel"(в данном случае в силу ограниченных знаний haskell немного сложно повторить переключение между окнами в табах с помощью чего-то типа Alt+k n внутри кажого конкретного tabbed layout'а).

Вчера в очередной раз задумался вот над какой штукой: в OS X я пользуюсь четырьмя рабочими столами, у каждого из которых свое отдельное, устоявшееся назначение. В Linux же неизменно все стягивается на один рабочий стол, хотя это не сильно то и удобно когда все окна не очень большого размера, и на 15.4" и на 19" мониторах. Попасть на нужный рабочий стол в OS X можно несколькими способами: кликнув на нужный рабочий стол в превьюшках, или же так или иначе добраться туда с помощью хоткеев. Превьюшки имеют хорошее преимущество - ты физически видишь все рабочие столы, и выбираешь нужный, тыцая туда мышкой. Если помнишь в какой части экрана находится нужный квадрат - сделать это легко, быстро и приятно, вот он набор открытых приложений для нужной задачи, вот я его выбрал. В Linux для прямого попадания на рабочий стол часто используют хоткеи, причем хоткеи из серии Alt+F{1..9}. Связывать конкретную задачу, или даже конкретное приложение и безликую цифру - на совести пользователя, у меня это получается не очень хорошо.

В очередной попытке разделить рабочие столы по задачам/приложениям пришел к тому что:
- нужно дать рабочим столам вменяемое название, 1-2-3-4 - это фигня.
- нужен отдельный, запоминаемый, и нормально нажимаемый хоткей для попадания на каждый конкретный рабочий стол
- если есть штука которая показывает доступные рабочие столы - она должна показывать и хоткей тоже, так легче привыкнуть

В итоге получились:


myWorkspaces = [ "a:chat", "e:term", "l:mail", "w:webs", "m:mix" ]

первая буква соответственно обозначает комбинацию alt+<что> ведет на этот рабочий стол. Пока привыкаю, мне кажется есть шансы что таки привыкну.

Каждый рабочий стол имеет свой набор layout'ов: "a:chat" - вариация на тему IM-layout'а, просто показывает ростер справа, в маленькой колонке, и чат в большом центральном окне. "l:mail" - пользуюсь thunderbird'ом, простого tabbed достаточно. "e:term" - возможность переключения между Tabbed, Grid, TwoPain, и интересной штукой под названием CenteredMater, которая показывает "Master"-окно по центру, а остальные на бэкграунде в любом другом заданом layout'е, в сочетании с "мастер окном становится окно которое сейчас в фокусе" от MagicFocus - прикольно :). "webs" - основной layout все тот же tabbed, и еще несколько, на случай если захочется странного. "mix" - сохраненная старая схема, если все захочется заново собрать все до кучи. Еще один интересный Layout(из "mix"): MouseResizableTile - простенький tiled layout, с возможностью легко менять размеры "прямоугольников, в которых заточены окна" мышкой. MouseResizableTile и MagicFocus + Tabbed на скриншотах ниже:






Мой текущий конфиг, можно найти здесь, конфиг xmobar. Вот такая очередная странная история от меня получилась (: