Как стать автором
Обновить

Subtle — tiling window manager in ruby

Время на прочтение3 мин
Количество просмотров6.5K
Для начала давайте узнаем что такое «tiling window manager».

Вики нам говорит:
Это менеджер окон X Window System, разбивающий рабочее пространство экрана на взаимно не пересекающиеся прямоугольные области — фреймы. Каждый фрейм используется для вывода информации отдельным приложением, в противоположность традиционным менеджерам окон, которые создают области покоординатно и послойно («окна»), пытаясь следовать метафоре «рабочего стола». Помимо полного использования всего видимого пространства, подход фреймовых оконных менеджеров позволяет минимизировать использование мыши в операциях с окнами, в основном применяя различные клавиатурные комбинации, уменьшая таким образом время, затрачиваемое на выполнение рутинных операций и повышая эффективность работы.

Звучит вкусно и я решил попробовать. По советам взялся за Xmonad, и из этого получилось следующее.

Xmonad мне понравился уже по описанию. Его возможности настроек захватывали (сразу скажу, я не хотел использовать xmonad + что-либо, только чистый xmonad). Повозившись с ним несколько дней, я немного расстроился… Ну не могу я сделать такой конфиг, который мне нужен не зная haskell'a. И тут пришла в голову идея — а что если поискать тоже самое только на ruby. И, о чудо, нашлось — subtle.

Итак, попробуем это чудо завести на debian'е(apt-get install subtle для ленивых, а мне интересна версия из репозитория разработчиков + чтобы не мусорила систему).

Для начала расскажу что же меня привлекло в данном WM.

1. Знакомый ЯП (ruby)
2. ruby >= 1.9 (о чудо!)
3. В отличии от xmonad'а он manual (т.е. сам не думает как расположить окно)
4. Ну очень мелкий
5. В стандартном комплекте уже есть панель (по умолчанию — список рабочих столов + название активного приложения + трей + место для саблетов(sublets — см. ниже).

Для тестов я пользовал VirtualBox + debian sid, по этому и расскажу как это чудо завести в данной конфигурации.

1. Ставим Дебиан без какого-либо графического интерфейса.
2. apt-get install mc vim-nox htop ruby rake slim xserver-xorg mercurial build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion libx11-dev pkg-config libxrandr-dev libxinerama-dev libxpm-dev libxft-dev (Список пакетов придуман мной — это зависимости subtle + X11 + desktop manager + немного полезных программ)
3. Устанавливаем rvm
4. rvm install 1.9.3
5. rvm use 1.9.3 --default
6. gem update --system
7. gem update
8. gem install archive-tar-minitar
9. hg clone hg.subforge.org/subtle && cd subtle
10. rake prefix=~/.subtle sysconfig=~/.subtle/etc install (все ставим в домашнюю директорию, чтобы не захламлять систему)
11. echo "export PATH=$HOME/.subtle/bin:$PATH" >> ~/.bashrc
12. echo "exec ~/.rvm/bin/rvm-exec ~/.subtle/bin/subtle --config ~/.subtle/etc/xdg/subtle/subtle.rb" > ~/.xsessionrc
13. /etc/init.d/slim start

Вот и все. В итоге мы получим полностью работоспособный гуй кушающий совсем немного.

Вот скрин того что получилось(запущено — sakura(terminal emulator) + htop):


Все настройки в ~/.subtle/etc/xdg/subtle/subtle.rb. Так же можно устанавливать дополнительные вещи в панель (sublets — что-то вроде gem'ов. используют свой пакетный менеджер sur). Они автоматически будут добавлены в правый угол панели (например часы(sur install clock), погода и т.д.)

P.S. В целом статья вышла как «я пиарю» + «how to»( а думалось что выйдет намного больше и интереснее :/ ), поэтому задавайте вопросы и буду стараться добавлять в статью (ну или как это назвать...).
Теги:
Хабы:
Всего голосов 40: ↑30 и ↓10+20
Комментарии19

Публикации

Истории

Ближайшие события

One day offer от ВСК
Дата16 – 17 мая
Время09:00 – 18:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область