Блог Александра Башкирова

ИТ и бизнес, компьютеры и ПО, фото, программирование и просто мысли…
Этот сайт в основном посвящен тому, что мне интересно вне работы. Ведется в порядке хобби.
Все изложенное на сайте - мое частное оценочное мнение и не может быть истолковано иначе.
Со всеми вытекающими из этого последствиями.

марафон январь 2015

Подписаться на эту метку по RSS

Про IceWM. Тест в боевых условиях.

Просмотров: 2279Комментарии: 0
Linux

Я псиал про легковесный дистртибутив AntiX: http://www.alib.spb.ru/blog/page/legkovesnyj-linux-distributiv-antix и чем-то меня зацепла IceWM до состояния, что решил постаить и попробовать настроить.
В отличие от того поста, я не был связан производительностью (i3 & 8Gb Ram), так что мог делать не "чтобы быстрее", а "как нравится". А нраится мне когда панель сверху, есть все индикаторы - в том числе сеть :) еще мне нравится gonky на рабочий стол, и на рабочем же столе - файлы и обои :) А еще я люблю выпадающие меню прямо с панель (XFCE-style рулит). И меню, чтобы слева...
В общем, получилось практически все, что планировал. До состояния, когда можно использовать IceWM вместо основной среды (xfce), кроме одного: меню там (пока?) вправо не перенесети. Что, я считаю, очень круто.

Что сделал:

  1. Убрал из автозагрузки - icewmbg (обои будт делать pcmanfm)
  2. Прописал в автозагрузку
    1. Корретировку раскладки
      setxkbmap -layout us,ru -variant -option grp:alt_shift_toggle,grp_led:scroll,terminate:ctrl_alt_bksp &
    2. Локер (странно, но IceWM экран лочить не умеет никак)
      xscreensaver -no-splash &
    3. Демон настроек GNOME - в основном для предоставления стиля GTK+ приложений. Можно и без него. Но не так красиво :)
      gnome-settings-daemon &
    4. Рабочий стол. Обои, значки, плюшки.
      pcmanfm --desktop &
    5. Индикатор клавиатуры. Как это ни странно, но IceWM собственного элемента на этот счет не имеет.
      xxkb &
    6. Системный монитор. Ну тут все понятно... Даешь информации о системе больше и лучше :)
      conky --config=/home/alex/.conky/.conkyrc &
    7. Терминал. С ним небольшая накладка - пришлось ему в настройках сказать, чтобы открывался снизу, так как сверху он не видит панель и открывается под ней. Жить можно (всего-то 1,5 строки) - но лучше видеть все.
      guake &
    8. Апплет network manager. Для привычного способа доступа к сетям.
      nm-applet &
    9. Апплет blueman. Графическая морда для bluetooths.
      blueman-applet &
    10. Индикатора громкости тоже нет в IceWM. Хотя есть обращения к штатной системе управления громкостью. Но в целом, мне больше нравится volumeicon - потому что он беспроблемно цепляется к увеличить/уменьшить громкость клавишам на любой клавиатуре. Сам, без бубнов.
      volumeicon &
  3. Настроил настройки (подробно настройки и что в них измеил - описано тут: http://wiki.crystaltask.ru/doku.php?id=linux:icewm-main-settings )

    Что получилось:

Ссылки (для кросспоста, который режет картинки):

http://www.alib.spb.ru/blog/uploads/icewm-1.jpg
http://www.alib.spb.ru/blog/uploads/icewm-2.jpg
http://www.alib.spb.ru/blog/uploads/icewm-3.jpg

Выводы:

  • в IceWM можно запросто настроить очень много чего. В целом на мой взгляд - там избыточное число настроек. (Из прямо бросающегося в глаза - 4 способа фокусировки)
  • для особых эстетов в IceWM есть настройка, которая скрывает панель, оставляя только рабочий стол. Можно завести на этом столе панель lx или xfce. Ну или tint2. Зачем это делать - не знаю. Но можно.
  • в IceWM из коробки идет достаточно много тем. Можно выбрать ту, что нравится. Или найти в Интернет. Или сделать свою.
  • все настройки достаточно хорошо документированы.
  • очень круто я считаю, что IceWM имеет свой встроенный лаунчер (Win+Пробел). При его наличии уже можно жить. А если еще настроить клик-элементы - то вообще прекрасно.
  • на сочетания клавиш можно повесить все, что угодно. Я вот на Ctrl+Пробел повесил вызов xfce4-appfinder - прекрасная вещь (хотя и не очень нужная, с учетом нормального меню и клик-элементов)
  • меню настраиваемо. Можно скрыть что-то, что-то добавить.
  • очень крутая возможноть, которую я не встречал в других оконных менеджерах / средах - при разворачивании окна на экрнан, можно настроить так, чтобы заголовок окна не отрисовывался. (Что из этого получается - смотри последний скриншот).
  • теперь ложка дегтя. Все настройки текстовые. На сайте проекта есть утилиты для настройки, но я так, по старинке - конфиги правил ... ))))
  • система получилась на удивление не сильно тяжелой. При том, что у меня постоянно в памяти сидит apache/mysql/postgre.


Сайт проекта IceWM: http://www.icewm.org/
Сайт с темами: https://www.box-look.org/

Маленькая плюшка для тех, кому интересно. Я написал скрипт, который в теории приводит свежеустановленный Linux к виду как на картинке. Скачать.

Ограничения: скрипт работает только с Linux Mint (это условие проверяется сразу же на входе) - так как на других дистрибутивах не было возможности проверить.

Скрипт скачат, установит и настроит необходимые для окружения пакеты.

Скрипт НЕ скачает и НЕ установит другие пакеты, которые у меня живут в меню:

  •  palemoon
  • firefox
  • chromium-browser
  • tor
  • vivaldi
  • opera
  • chrome
  • skypeforlinux
  • viber
  • telegram
  • liferea
  • deadbeef
  • gedit
  • leafpad
  • geany
  • juffed
  • wpsoffice
  • libreoffice
  • onlyoffice

Их необходимо скачать самостоятельно - и они появятся в меню. Или не скачивать - тогда они в меню не появятся :)

Можно было бы конечно, предусмотреть логику - если есть, то генерировать в меню вхождение... Можно. Но лень. Так как скрипт писал для себя, по принципу - установил Linux Mint, запустил скрипт - получил привычное окружение.

Легковесный Linux дистрибутив AntiX

Просмотров: 22655Комментарии: 0
Linux

Давно я не писал обстоятельно про Linux.... А тут как раз подвернулся случай.

Итак, вводные данные - у меня был Sony Vaio серии P, выпуска 2010 года. В чем-то уникальная машинка: 2 Gb оперативки / Intel Atom Z540 (1@1.86GHz) / 64 Gb SSD SunDisk, 1600x768 8”. Для 2010 очень достойно. Особенность ноутбука в том, что там отдельными блоками стоит WiFi-WiMax модуль, видеокарта… А остальное все распяно на плате. То есть ноут принципиально не апгрейдится никак, от слова “ни разу”.

В общем, захотелось это чудо немного восстановить, для чего начал смотреть в сторону легковесных дистрибутивов Linux. Ввиду того, что апгрейд нереален - смотрел на потребление “голым” дистром памяти и процессора.

Сразу же скажу, что для меня предпочтительны debian-based дистрибутивы, так как основной дистрибутив у меня Linux Mint (“хорошо доточенная Убунта”), поэтому смотрел в сторону именно их. Хотя и не только.

Итак, рассматривал:

  1. Lubuntu. Дистрибутив на базе Убунты. Оконная среда - LXDE. Потребление памяти после загрузки - 200 Мб. Процессора - около 1..3%. Формат пакетов - deb.
  2. anitX. Дистрибутив на базе Debian. Оконная среда - IceWM. Потребление памяти после загрузки - 80 Мб. Процессор - около 1%. Формат пакетов - deb.
  3. slitaz. Дистрибутив на базе самого себя. Оконная среда - кажется, E17. После загрузки - около 60 Мб. Процессор около 1%. Формат пакетов - свой.
  4. puppu linux. Дистрибутив на базе самого себя. Оконная среда - JWM. После загрузки - около 60 Мб. Процессор - 1%. Формат пакетов свой.

Slitaz и Puppu “завел” в режиме LiveCD, посмотрел и не стал ставить. Ибо - “не тот формат пакетов”, и не очень хотелось париться с незнакомым форматом - незнакомым дистрибутивом… (Да, скорее всего, в них решены все задачи, но искать решения не хочу - хочу применить то, что уже знаю).

В общем, поставил Lubuntu (точнее он там был… сам когда-то ставил какой-то древний, 14.04 вроде). Ну что сказать. Тормозит-с. И достаточно сильно. Я сначала поставил zram, потом снес - потому что памяти высвободилось (160 Мб примерно), но вот процессор показывал около 5%..10%, и начались визуальные тормоза.

Выдохнул. И поставил antiX (https://antixlinux.com/) - чисто “посмотреть”. И внезапно понял, что вообще то на этом “можно жить”.

Так что дальше - рассказ про antiX

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

Во-вторых, дистрибутив базируется на debian. Что как я говорил, для меня - большой плюс. При установке установщик спрашивает, какой репозиторий использовать - stable или testing. Я выбрал testing (на нем Убунта) и как мне кажется - не прогадал :)

В-третьих. Я писал в январском марафоне 2015 про IceWM (http://www.alib.spb.ru/blog/page/janvarskij-marafon-post-3-icewm) - так вот… я понял, что я был глубоко неправ. На самом деле, IceWM настраивается достаточно неплохо.

Первым делом я поставил GDebi (apt install gdebi) - так как мои любимые офисные редакторы ставятся из пакетов, и мне удобнее ставить их им, а не через dpkg (на вкус и цвет, ага…).

Дальше - есть в этой среде такое шикарное сочетание: Super+Пробел=Выполнить. То есть нажимаем на WinKey (это Super по умолчанию) и пробел - вводим команду, получаем результат. Очень удобно, если настроить алиасы и их использовать, для быстрого запуска приложений.

В-четвертых, оно же “ложка дегтя”. Процессор 32х битный. Соответственно 64х битные приложения не пойдут. Никак. Или компилировать (что с учетом слабого процессора то еще огого), или смириться. Я решил пойти по второму пути. То есть ставить только те приложения, которые имеют нативную 32х битную архитектуру.

Сначала - браузеры.

Нормально встал и завелся Midori (http://midori-browser.org/download/debian/)/ Страшненький, конечно, но работает. Бывает, правда, глючит с кукисами - войти в Облако@Mail.Ru не получилось из-за этого бага.

Затем - surf (он из пакетов встал). Вообще интересный браузер - голый WebKit без всего. Запускается surf %url% - иначе ссылку, по которой перейти, ему не передать. (Для этого кстати, очень помогает как раз Super+пробел - вводим например “surf www.alib.spb.ru” - и попадаем на мой блог и т.д.). GMail из него работает корректно, а вот Ютуб нет (надо отдельно ставить flash player именно под surf, видимо)… Кстати, про Ютуб. Он на указанном ноуте работает только на минимальном качестве картинки. Увы, современный Интернет совсем не тот, что был 10 лет назад...

После - Palemoon (http://www.palemoon.org/). Palemoon - это форк firefox с примененными оптимизациями. Работает быстрее, памяти жрет меньше. Об установке его вот заметка в вики: http://wiki.crystaltask.ru/doku.php?id=linux:palemoon

Palemoon работает и с кукисами, и с Ютубом. Но на качестве 240 или 144p - иначе начинает заливать процессор.

Для сравнения поставил firefox. Для него с ходу процессора как-то маловато… Память - около 200 Мб на вкладку… В общем, разочаровал. (Palemoon - до 80 Мб на вкладку с тем же сайтом, что и ff).

Выводы по браузерам:

  1. Современные браузеры в первую очередь “жрут” процессор, а не память. Памяти есть - а система тормозит из-за нехватки процессорных мощностей.
  2. Можно найти кучу “легких” браузеров. Их скорее всего хватит на “текстовый веб” (пошариться на Али, Авито… почитать новости) - но их точно НЕ хватит на видео и аудио. То есть по любому - надо иметь нормальный процессор.
  3. Таки нашел “хорошо оптимизированный firefox” - palemoon - и оп памяти норм, и нагрузка на процессор не бешеная (хотя бы в “текстовом интернете”)

Дальше по приложениям, которые использую.

  • viber - однозначно 64х битный. То есть на antiX его не использовать никак.
  • telegram - очень быстрый и мало жрет ресурсов. Снимаю шляпу.
  • skype - однозначно 64х битный.
  • onlyoffice - однозначно 64х битный
  • wps office (https://www.wps.com/) - есть 32х битный, работает шустро. Для запуска через “Выполнить” можно использовать следующие команды:  wps - Writer / et - Электронные таблицы / wpp - презентации

Выводы по приложениям:

Куча современных приложений ориентированы на 64х битную архитектуру. И 32х битную просто не рассматривают в качестве зоны интереса. Кому надо старье поддерживать…

Теперь про настройку IceWM.

1) Настройка панели IceWM

Для настройки панели редактируем ~/.icewm/preferences

Там можно включить например, монитор сетей, памяти, процессора и т.д. (Фактически информация дублирует Gonky, но всегда на виду)

Там же можно переместить панель наверх (например).

Некоторые параметры:

TitleFontNameXft="monospace,Droid Sans Mono:size=12:bold" #Название шрифта панели заголовка.
MenuFontNameXft="Droid Sans:size=14" #Название шрифта меню.
StatusFontNameXft="Droid Sans:size=14"#Название шрифта отображения статуса.
QuickSwitchFontNameXft="Droid Sans:size=14"#Название шрифта для окна Alt+Tab переключателя.
NormalTaskBarFontNameXft="Droid Sans:size=14"#Название шрифта для нормального элемента панели задач.
ActiveTaskBarFontNameXft="Droid Sans:size=14"#Название шрифта для активного элемента панели задач.
ListBoxFontNameXft="Droid Sans:size=14"#Название шрифта списка окон.
ToolTipFontNameXft="Droid Sans:size=14"#Название шрифта для подсказок.
ClockFontNameXft="Droid Sans:size=14"#Название шрифта для часов на панели задач.

TaskBarDoubleHeight=1#таскбар в "две строки" - очень удобно в некоторых случаях

Дальше, сделал переключение разрешения по кнопке (http://wiki.crystaltask.ru/doku.php?id=linux:xrandr-change-res&s[]=xrandr)

Для работы на большом разрешении помогает настройка масштаба шрифтов: AntiX Control Center - увеличил размер шрифтов до 1,25 - на конском разрешении (1600x768) - очень помогает.

Далее.

~/.icewm/toolbar

очень удобно добавлять быстрые кнопки.

Например:

prog "Офис" /usr/share/icons/Bluecurve/16x16/ooo/stock_insert_endnote.png /usr/bin/soffice

и перезапустить icewm. (я так хотел прописать WPS офис, пример с Интернета)

Другие конфиг-файлы:

  • preferences содержит параметры управления поведением IceWM.
  • menu содержит пункты и структуру главного меню.
  • keys содержит дополнительные комбинации клавиш пользователя.
  • toolbar содержит кнопки запуска приложений на панели задач.
  • winoptions содержит параметры отвечающие за поведение отдельных приложений, описанных пользователем.
  • theme содержит название текущей темы оформления.
  • startup исполняемый файл, запускающийся во время первоначальной загрузки оконного менеджера.
  • shutdown исполняемый файл, запускающийся во время завершения работы оконного менеджера.

Что не получилось:

1) Ограничить размер области для окон, как, например, в OpenBox - нет такой настройки

2) Вывести индикатор сетевого соединения в трей (нет такой фичи и всё тут)

Теперь о печальном.

Я не успел донастроить antiX - сдох SSD. А так как он распаян на плате, то ноут превратился просто в игрушку… включается, говорит что нет диска. Грузится с флешки, но и всё.

Что не успел сделать:

1) Значки запуска

2) Вписать WPS офис в меню

3) ctrl-alt-L настроить (и вообще лок экрана)

Общий вывод:

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

Дополнение от коллеги (Леша Кречетов, спасибо!)

http://slax.org, из плюсов:
1. deb-based
2. дистр весит 256 Мб, поддерживает модульность - ПО, драйвера можно скачать как с офсайта, так и через apt. В 256 Мб входят иксы, файловый менеджер, браузер (правда Chrominium, который порядком выедает оперативку, так что твои изыскания в плане Palemoon оказались очень кстати), notepad, calculator.
3. после загрузки оперативки съедает 100 Мб
4. поддерживает работу с флэшки (с возможностью сохранения произведенных настроек системы)
5. поддерживает 32х и 64х битную архитектуру процессоров

Про LXLE, LXQt и вообще немного про LX

Просмотров: 16624Комментарии: 0
Linux

Случайно наткнулся на описание дистрибутива Linux на базе ubuntu - LXLE. Суть - в том, что это та же самая Lubuntu, только с поддержкой старого железа. Кстати, LXLE переводится как Lubuntu Extra Life Extension. Дистрибутив весит в итоге 1,5 Гб (я так подозреваю, туда запилены драйверы для старого всего).

Стало интересно - поставил на виртуалку. В общем, работает, стартует. Ставил “по-скромному” (512 Мб памяти и 20% процессора). После установки “голая” система ест у меня 85 Мб, что по-моему неплохо. Из коробки, на мой вкус - идет много разных приложений. Слишком много. Подозреваю, что это частично бэкпорты, но не разбирался.

Официальный сайт: http://lxle.net/

Кстати, на сайте требований по железу я так и не нашел, что мне кажется странным - если дистрибутив легкий, то обычно пишут “от какой точки” начинается эта самая легкость…

Ссылка на прямое скачивание версии 16.04.1: https://sourceforge.net/projects/lxle/files/Final/OS/16.04.1-32/lxle-eclectica-16.04.1.iso/download

Ну и “чтобы 2 раза не вставать”, раз уж речь зашла о lx… я какое-то время назад узнал о форке - развитии lxde, под названием lxqt (та же lxde - но под Qt). Тогда - в конце 2014 пациент был “скорее жив”. Сейчас же - пациент жив вполне уверенно. С удивлением отметил, что под этим вполне можно работать, выглядит симпатично (на мой вкус). Многое “утащено” из LXDE, ну и привнесены мелкие приятные фишки (например, группировка окон “а-ла windows”). В общем, как бы альтернатива LXDE, как ни крути. Правда, вопрос сколько памяти кушает, а также  производительность и стабильность на текущий момент - они немного за бортом…

Оф.сайт: http://lxqt.org/

Скриншот для примера с моего ноутбука:

Про i3wm

Просмотров: 8094Комментарии: 0
Linux

Вот не дает мне покоя идея использования тайлинговых менеджеров в повседневной работе. Я писал про dwm и awesome, но по факту они были признаны негодными для использования. Первый - потому что конфигурируется через правки исходников, второй - потому что конфиг на lua и требует слишком много бубнов. (Мне любопытно, сколько времени на настройку потратили те, кто сидят под этими wm).

i3 - по слухам, требует сильно меньше усилий для настройки. Ну, чтоже ...посмотрим.

Ставим i3, а также дополнительные пакеты:

$ sudo apt-get install i3 i3status i3lock dmenu

После логинимся под i3 … вуаля. При первом запуске i3 задаст несколько вопросов (где хранить конфиг и что считать mod-клавишей, то есть клавишей - модификатором. Я назначил win-клавишу, это, кстати, предлагается по умолчанию).

Основные сочетания клавиш:

  • Mod + Enter — открыть новый терминал;
  • Mod + D — запустить любую программу через dmenu;
  • Mod + 0..9 — переключение между workspace’ами (их, кстати, 10. Номер текущего высвечивается в левом нижнем углу);
  • Mod + Shift + 0..9 — перемещение окон в заданный workspace;
  • Mod + Shift + Q — закрыть текущее окно;
  • Mod + Стрелочки — перемещение между окнами, вместо стрелочек также могут быть использованы клавиши «J» (влево), «K» (вниз), «L» (вверх) и «;» (вправо);
  • Mod + Shift + Стрелочки — перемещение окон в пределах workspace’а, вместо стрелочек также могут быть использованы буквненные клавиши и точка с запятой;
  • Mod + V — использовать вертикальное разбиение;
  • Mod + H — использовать горизонтальное разбиение (отмечу, что можно запросто комбинировать вертикальное и горизонтальное разбиение, благодаря чему можно достичь интресных эфектов);
  • Mod + E — размещение окон по-умолчанию (default layout);
  • Mod + S — стековое размещение (stacking layout);
  • Mod + W — размещение с табами (tabbed layout);
  • Mod + F — раскрыть окно во весь экран или свернуть его обратно;
  • Mod + Shift + Пробел — разрешить свободное перемещение окна (floating mode) или вернуть его в мозаику;
  • Mod + Shift + R — рестарт i3 (например, после обновления конфига);
  • Mod + Shift + E — выйти из i3;
Настраивается i3 через простые конфиг-файлы: ~/.i3/config и ~/.i3status.conf (ура! никакого lua и пересборки исходников!!!)

Кстати, ~/.i3/config - получаем путем копирования из /etc/i3.. по умолчанию ~/.i3/config отсутствует.

$ cp /etc/i3status.conf ~/.i3/i2status.conf

Далее - правим ~/.i3/i2status.conf

Ставим xxkb и загоняем его в автостарт (exec в ~/.i3/config):

exec xxkb &

Также ставим и вписываем на автозапуск необходимые апплеты:

exec nm-applet &
exec blueman-applet &

Затем - клавиши управления звуком:

# Volume settings
bindsym XF86AudioRaiseVolume exec amixer -q sset Master 3%+
bindsym XF86AudioLowerVolume exec amixer -q sset Master 3%-
bindsym XF86AudioMute exec amixer -q set Master toggle

Там в общем - всё понятно. Вообще, i3 отличается редкой юзабельностью и понятностью конфигов.

Но и это, как говорится, “еще не всё”. Конфиги хорошо документированы. Достаточно посмотреть на http://i3wm.org/i3status/manpage.html (для затравки: там описано, например, как использовать dzen2 с i3) и  http://i3wm.org/docs/userguide.html , чтобы понять - документировано всё, достаточно хорошо. Да, и всё, что описано в документации - работает!

Выводы:

  • Если хочется попробовать тайлинговый менеджер, то имеет смысл посмотреть на i3 - он, на данный момент, по моему скромному мнению, наиболее прост с точки зрения настройки
  • Придется чуть “перестроить голову”. Тайлинговый менеджер - это другой способ организации взаимодействия ПК - человек, хотим мы этого или нет. Просто - другой. Больше клавиатуры, минимум мыши. На рабочий стол файл не положить (да и сам рабочий стол так… весьма относителен).
  • Тем не менее, жить можно, и достаточно комфортно. Хотя по первости кажется - ну его нафиг! Но если это пережить (до состояния “пальцы помнят”), то становится достаточно удобно.

Лично я поработал под i3 около недели, вернулся назад (openbox и панели xfce), но вот серьезно подумыаю, что на нетбуке (стареньком 8" sony, широкоформатном до безобразия) i3 пропишется основным менеджером... причем, видимо, надолго.

Ну и скриншоты:

Про awesome: настройка и использование

Просмотров: 4227Комментарии: 0
Linux

В общем, я посмотрел на DWM, мне стало печально (ну не дело "настраивать" любое ПО через правки исходных кодов... не дело), стал смотреть в сторону альтернатив. Нашел awesome. Это вроде как  тот же DWM, только более гибкий и настраиваемый. Правда, не без странностей: конфиги его написаны на малораспространенном языке программирования lua. Зато - их великое множество. Хорошая документация, и (о чудо после dwm'a) - для конфигурирования не надо лезть в исходный код и перекомпилировать приложение!

Ну, что же... проверим.

Ставим awesone:

alexander@alexander-VPCP11S1R:~$ sudo apt-get intall awesome awesome-extra

Далее - делаем автозуск. По умолчанию, его как бы нет, но лечится довольно легко.

Создаем папку настроек:

alexander@alexander-VPCP11S1R:~$ mkdir ~/.config/awesome
alexander@alexander-VPCP11S1R:~$ ls ~/.config/ | grep awesome
awesome

Копируем в нее файл автостарта openbox (он уже есть - чего по новой-то городить?)

alexander@alexander-VPCP11S1R:~$ cp ~/.config/openbox/autostart ~/.config/awesome/autostart

Смотрим, что в нем:

alexander@alexander-VPCP11S1R:~$ cat ~/.config/awesome/autostart
/home/alexander/My-Scripts/xrandr.sh
if which tint2 >/dev/null 2>&1; then
  (sleep 1 && xcompmgr) &
  (sleep 2 && tint2) &
  (sleep 5 && xxkb) &
  (sleep 5 && volumeicon ) &
fi
pcmanfm --desktop &
(sleep 2 && setxkbmap -layout "us,ru" -option "grp:alt_shift_toggle") &

Малость редактируем:

alexander@alexander-VPCP11S1R:~$ gedit ~/.config/awesome/autostart

Привоим к виду:

/home/alexander/My-Scripts/xrandr.sh
xxkb
setxkbmap -layout "us,ru" -option "grp:alt_shift_toggle"
volumeicon

Смотрим, что у нас в xrandr.sh (это только для sony vaio):

alexander@alexander-VPCP11S1R:~$ cat ~/My-Scripts/xrandr.sh 
#!/bin/bash
xrandr --newmode "1280x600_60.00"   61.00  1280 1328 1456 1632  600 603 613 624 -hsync +vsync
xrandr --newmode "1600x768_60.00"  100.25  1600 1688 1848 2096  768 771 781 798 -hsync +vsync
xrandr --addmode LVDS-0 1280x600_60.00
xrandr --addmode LVDS-0 1600x768_60.00
xrandr --output LVDS-0 --mode 1280x600_60.00

Во всех руководствах по awesome пишут, что работать надо с локальным конфигом, так что делаем его:

alexander@alexander-VPCP11S1R:~$ cp /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.lua

Теперь можно приступать непосрественно к автостарту

В начало rc.lua вписываем:

-------------------------------------------------------------------------------
--    Формируем список автозапуска
-------------------------------------------------------------------------------
local autostart_list = {}
-- Открываем файл списка для чтения
local f = io.open("/home/alexander/.config/awesome/autostart", "r")
-- Число прочитанных команд
local num_cmd = 0
-- Читаем команды в список и считаем их
for line in f:lines() do
  autostart_list[num_cmd] = line
  num_cmd = num_cmd + 1
end
-------------------------------------------------------------------------------
-- Конец списка автозапуска
-------------------------------------------------------------------------------

И в конец rc.lua

------------------------------------------------------------------------------
--    Автозапуск (этот код ставим в конце rc.lua)
------------------------------------------------------------------------------
-- Перебираем список автозапуска и стратуем всё с паузой в три секунды
for i = 0, num_cmd - 1 do
  awful.util.spawn_with_shell(autostart_list[i] .. " && sleep 3")
end
------------------------------------------------------------------------------
--    Конец: Автозапуск (этот код ставим в конце rc.lua)
------------------------------------------------------------------------------

(решение отсюда: http://archlinux.org.ru/forum/topic/11748/?page=4)

Вообще много способов описано тут: https://awesome.naquadah.org/wiki/Autostart/ru - я взял самый удобный мне, чтобы все приложения автозапуска были бы в отдельном файле.

Раз уж мы работаем с rc.lua, то заодно и обои поправим.

Копируем к себе файл темы:

alexander@alexander-VPCP11S1R:~$ cp /usr/share/awesome/themes/default/theme.lua ~/.config/awesome/theme.lua

Открываем его

Ищем строку

theme.wallpaper_cmd = { "awsetbg /usr/share/awesome/themes/default/background.png" }

Закомментируем ее:

--theme.wallpaper_cmd = { "awsetbg /usr/share/awesome/themes/default/background.png" }

И вместо нее пишем:

theme.wallpaper_cmd = { "awsetbg /home/alexander/Изображения/Wallpapers/1372644-wp-1253020795739.jpg" }

Затем в rc.lua нахоим и меняем строчку темы:

beautiful.init("/usr/share/awesome/themes/default/theme.lua")

на

beautiful.init("/home/alexander/.config/awesome/theme.lua")

Еще немного украшательств: календарь при наведении на часы

В ~/.config/awesome кладем calendar2.lua со следующим содержанием:

    -- original code made by Bzed and published on <a href="http://awesome.naquadah.org/wiki/Calendar_widget" target="_blank" >http://awesome.naquadah.org/wiki/Calendar_widget</a>
    -- modified by Marc Dequ?nes (Duck) <Duck@DuckCorp.org> (2009-12-29), under the same licence,
    -- and with the following changes:
    --   + transformed to module
    --   + the current day formating is customizable
     
    local string = string
    --local print = print
    local tostring = tostring
    local os = os
    local capi = {
        mouse = mouse,
        screen = screen
    }
    local awful = require("awful")
    local naughty = require("naughty")
    module("calendar2")
     
    local calendar = {}
    local current_day_format = "<u>%s</u>"
     
    function displayMonth(month,year,weekStart)
            local t,wkSt=os.time{year=year, month=month+1, day=0},weekStart or 1
            local d=os.date("*t",t)
            local mthDays,stDay=d.day,(d.wday-d.day-wkSt+1)%7
     
            --print(mthDays .."\n" .. stDay)
            local lines = "  " --интервал перед днями неделями
            os.setlocale("ru_RU.utf8")
            for x=0,6 do
                    lines = lines .. os.date("%a ",os.time{year=2006,month=1,day=x+wkSt})
            end
           lines = lines .. "\n"-- .. os.date(" %V",os.time{year=year,month=month,day=1}) --Убираем номер недели
     
            local writeLine = 1
            while writeLine < (stDay + 1) do
                    lines = lines .. "    " --интервал перед первым числом, если оно не в начале недели
                    writeLine = writeLine + 1
            end
     
            for d=1,mthDays do
                    local x = d
                    local t = os.time{year=year,month=month,day=d}
                    if writeLine == 8 then
                            writeLine = 1
                            lines = lines .. "\n"-- .. os.date(" %V",t) --убираем номер недели
                    end
                    if os.date("%Y-%m-%d") == os.date("%Y-%m-%d", t) then
                            x = string.format(current_day_format, d)
                    end
                    if (#(tostring(d)) == 1) then
                            x = " " .. x --выравнивание между одно и двухзначными цифрами
                    end
                    lines = lines .. "  " .. x --интервал между числами
                    writeLine = writeLine + 1
            end
            local header = os.date("%B %Y\n",os.time{year=year,month=month,day=1})
            header = "          " .. header --выравниваем месяц и год по центру
            return header .. "\n" .. lines
    end
     
    function switchNaughtyMonth(switchMonths)
            if (#calendar < 3) then return end
            local swMonths = switchMonths or 1
            calendar[1] = calendar[1] + swMonths
            calendar[3].box.widgets[2].text = string.format('<span font_desc="%s">%s</span>', "monospace", displayMonth(calendar[1], calendar[2], 2))
    end
     
    function switchNaughtyGoToToday()
            if (#calendar < 3) then return end
            local swMonths = switchMonths or 1
            calendar[1] = os.date("*t").month
            calendar[2] = os.date("*t").year
           switchNaughtyMonth(0)
    end
     
    function addCalendarToWidget(mywidget, custom_current_day_format)
      if custom_current_day_format then current_day_format = custom_current_day_format end
     
      mywidget:add_signal('mouse::enter', function ()
            local month, year = os.date('%m'), os.date('%Y')
            calendar = { month, year,
            naughty.notify({
                    text = string.format('<span font_desc="%s">%s</span>', "monospace", displayMonth(month, year, 2)),
                    timeout = 0,
                    hover_timeout = 0.5,
                    screen = capi.mouse.screen
            })
      }
      end)
      mywidget:add_signal('mouse::leave', function () naughty.destroy(calendar[3]) end)
     
      mywidget:buttons(awful.util.table.join(
        awful.button({ }, 1, function()
            switchNaughtyMonth(-1)
        end),
        awful.button({ }, 2, switchNaughtyGoToToday),
        awful.button({ }, 3, function()
            switchNaughtyMonth(1)
        end),
        awful.button({ }, 4, function()
            switchNaughtyMonth(-1)
        end),
        awful.button({ }, 5, function()
            switchNaughtyMonth(1)
        end),
        awful.button({ 'Shift' }, 1, function()
            switchNaughtyMonth(-12)
        end),
        awful.button({ 'Shift' }, 3, function()
            switchNaughtyMonth(12)
        end),
        awful.button({ 'Shift' }, 4, function()
            switchNaughtyMonth(-12)
        end),
        awful.button({ 'Shift' }, 5, function()
            switchNaughtyMonth(12)
        end)
      ))
    end

Далее, в верх rc.lua добавляем

require("calendar2")

И после строки

mytextclock = awful.widget.textclock({ align = "right" })

вставялем

calendar2.addCalendarToWidget(mytextclock, "<span color='green'>%s</span>")

проверяем, всё работает!

Проблема: некоторые процессы запускаются по несколько раз.

Нашел функцию (http://www.linux.org.ru/forum/general/8424382)

-- {{{ Autoruns
function run_once(prg)
    if not prg then
        do return nil end
    end
    awful.util.spawn_with_shell('ps ux | grep -v grep | grep -F ' .. prg .. ' || ' .. prg .. ' &')
end

Еще одна очень интересная возможность awesome - теги.

Во-первых, их можно переименовать "под себя". Достаточно найти tags { names - и там исправить имена тегов.

Например:

 tags[s] = awful.tag({ "Main", "WWW", "IM", "Ed", "CMD", 6, 7, 8, 9 }, s, layouts[1])

Во-вторых, можно запускать приложения в тегах, для этого надо внести корректировки в секцию awful.rules.rules.

Например, чтобы firefox запускался во втором теге, надо написать:

  { rule = { class = "Firefox" },  properties = {tag = tags[1][2]}},

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

теперь очень важная на sony vaio функция: переключение разрешения. Для этого ищем globalkeys, и вносим туда:

awful.key({}, "#146", function () awful.util.spawn("~/My-Scripts/xrandr-change.sh") end)

проверяем. Работает!

Продолжение видимо следует...)))

Осваиваем DWM: проблемы и решения (настройка трея, запуск dwm через систему альтернатив)

Просмотров: 5835Комментарии: 0
Linux

Ссылка на аепрый пост, посвященный DWM: клиц

Итак, как мы помним, в DWM нет плагинов, но есть патчи. Таким образом, чтобы эХсперементировать над DWM с патчами, не трогая основной DWM из пакета, появляется задача: скомпилировать чистый DWM в папке пользователя и настроить его запуск, не трогая dwm из пакета.

Решение:

Скачиваем исходные коды по ссылке http://dl.suckless.org/dwm/

Распаковываем в ~/dwm, переходим в него, делаем make, получаем ошибку:

alexander@alexander-ThinkPad-X201 ~ $ cd ~/dwm
alexander@alexander-ThinkPad-X201 ~/dwm $ make
dwm build options:
CFLAGS   = -std=c99 -pedantic -Wall -Wno-deprecated-declarations -Os -I/usr/X11R6/include -I/usr/X11R6/include/freetype2 -D_BSD_SOURCE -D_POSIX_C_SOURCE=2 -DVERSION="6.1" -DXINERAMA
LDFLAGS  = -s -L/usr/X11R6/lib -lX11 -lXinerama -lfontconfig -lXft
CC       = cc
CC drw.c
drw.c:5:22: fatal error: X11/Xlib.h: Нет такого файла или каталога
 #include <x11 xlib.h="">
                      ^
compilation terminated.
make: *** [drw.o] Ошибка 1

Лечим:

sudo apt-get install libx11-dev

Опять получаем ошибку, но уже другую:

drw.c:6:25: fatal error: X11/Xft/Xft.h: Нет такого файла или каталога

лечим:

sudo apt-get install libxft-dev

получаем:

/usr/include/X11/Xft/Xft.h:39:22: fatal error: ft2build.h: Нет такого файла или 
каталога

пробуем: make

получаем:

/usr/include/X11/Xft/Xft.h:39:22: fatal error: ft2build.h: Нет такого файла или каталога

лечим:

sudo apt-get install libfreetype6-dev

Этот файл лежит в /usr/include/freetype2

Правим config.mk

Находим строчку: INCS = -I${X11INC} -I${FREETYPEINC}

Правим: INCS = -I${X11INC} -I${FREETYPEINC} -I/usr/include/freetype2

Пробуем make

получаем:

X11/extensions/Xinerama.h: Нет такого файла или каталога

Но в config.mk говорится, что Xinerama, comment if you don't want it - так что ищем строки

# Xinerama, comment if you don't want it
XINERAMALIBS  = -lXinerama
XINERAMAFLAGS = -DXINERAMA

и комментируем их

пробуем: make

Ура! Все скомпилировалось :)

Теперь патч,который выводит системный трей

Скачиваем его: http://dwm.suckless.org/patches/dwm-6.1-systray.diff (для версии 6.1)

Патчим:

patch < dwm-6.1-systray.diff

Получаем ошибку:

1 out of 33 hunks FAILED -- saving rejects to file dwm.c.rej

Ручками правим в пропатченном dwm.c строку 663: с XMoveResizeWindow(dpy, m->barwin, m->wx, m->by, m->ww, bh); на resizebarwin(m);

Компилируем: make

Все ок.

Теперь задача номер два: запустить наш DWM при входе. Для этого нам поможет

встроенная в ubuntu система альтернатив

.

Добавляем в систему альтернативу. Смотрим, где располагается текущий dwm:

alexander@alexander-ThinkPad-X201 ~ $ which dwm

/usr/bin/dwm

Добавляем альтернативу при помощи ключа --install утилиты update-alternatives (для памяти:   --install <ссылка> <имя> <путь> <приоритет>)

alexander@alexander-ThinkPad-X201 ~ $ sudo update-alternatives --install /usr/bin/dwm dwm /home/alexander/dwm/dwm 1065
[sudo] password for alexander: 
update-alternatives: используется /home/alexander/dwm/dwm для предоставления /usr/bin/dwm (dwm) в автоматический режим

Собственно, смотрим, что получилось... (выходим из текущего WM, и запускаем DWM)

Трей есть!

Далее, если надо вдруг удалить альтернативу, то используем ключ   --remove

  --remove <имя> <путь>

В данном случае:

alexander@alexander-ThinkPad-X201 ~ $ sudo update-alternatives --remove dwm /home/alexander/dwm/dwm
[sudo] password for alexander: 
update-alternatives: используется /usr/bin/dwm.default для предоставления /usr/bin/dwm (dwm) в автоматический режим

Для истории:

--config - настраивает альтернативу. Например, sudo update-alternatives --config x-www-browser - может сменить браузер по умолчанию.

ls -al /etc/alternatives/ - посмотреть список файлов-ссылок на альтернативы

Основные ссылки:

editor — редактор текста (типа nano, vi, vim, emacs)

ftp — ftp-клиент

x-cursor-theme — тема курсора

x-session-manager — графическая сессия (kde, gnome, openbox)

x-terminal-emulator — эмулятор терминала

x-window-manager — оконный менеджер (kwin, metacity, openbox)

x-www-browser — веб-браузер

Ну и напоследок, так сказать - выводы про dwm.

А выводы немного неутешительны. Несмотря на то, что эксперимент достаточно удачен, рано или поздно - патчи войдут в конфликт друг с другом, и будет "весело" - в том смысле, что разгребать вручную кучу diff-файлов удовольствие, с моей точки зрения ниже среднего. Так что посмотрим в сторону других тайлинговых альтернатив dwm...

Осваиваем DWM: проблемы и решения (как выйти из сеанса пользователя через консоль, автозапуск в DWM и т.д.)

Просмотров: 4439Комментарии: 0
Linux

Меня что-то торкнуло в сторону тайлинговых WM (windows manager, менеджер окон). Идея понравилась :) особенно на широкоформатном дисплее ноутбука... правда, есть одно "но": как правило, настройке эти DM подвергаются достаточно сложно. Начать "смотреть" решил с "самого простого" - DWM.

Оказалось, правда, что он самый сложный. Потому что настройка его сводится к измнению заголовочного C-файла, и перекомпиляции. Афигеть! Но "just for fun" попробовать стоит.

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

Итак, первое. Вы установили DWM (ставится из репозиториев Убунты) и зашли в него. Посмотрели. Захотели что-нибудь запустить... а как - непонятно: меню нет, значков нет, ничего нет! Мышка есть - но зачем она, непонятно.

Да, DWM управляется с клавиатуры. И самое первое, что надо запомнить - это Shift-Alt-Enter. Запуск терминала. Кроме того, DWM поддерживает Dmenu - удобная вещь для запуска разных приложений. Вызывается через Alt-P. Alt-Num - переходы по "тегам" (9 областей). Alt-Shift-c - закрыть активное окно.

Второе. Вы захотели выйти из DWM.

Решается двумя путями:

1) Alt-Shift-q - закрыть dwm (штатная возможность DWM, ни за что бы не догадался).

2) Воспользоваться странным, но универсальным способом: killall -u `whoami` (я вообще себе в .bashrc прописал alias logoff='killall -u `whoami`' и использую logoff из консоли).

Пояснение: для Linux Mint (и подозреваю Убунты) - эта команда закрывает все процессы текущего пользователя, то есть выкидывает в окно логина. Потенциально это опасно, т.к. может быть фоном что-то запущено... и не отработано... в общем, на свой страх и риск. Тем не менее - это хороший работающий способ выйти из сеанса пользователя из консоли, для WM, которые этого не поддерждивают явно.

Третье. Обоев тоже нет, а среда графическая.

Ну, тут вроде должно быть просто: есть feh, есть nitrogen (я лично предпочитаю его)... но вот засада: нет в DWM startup скриптов. Никаких. Вообще!

Что в таком случае делают тру-линуксодиды? Правильно, используют .xinitrc (лично я давно не использовал этот как мне казалось - рудимнет, на чём и погорел, но об этом ниже). Так вот, раньше как было: в папке пользователя создаешь .xinitrc - пишешь туда, что нужно, и вуаля, оп! всё работает! Но, как выяснилось .xinitrc - "не работает". Теперь автостарт при старте иксов подхватывает ~/.xsessionrc - беда не велика, будем работать с ним.

Дальше - больше и интереснее. Если просто прописать в .xsessionrc - nitrogen --restore, то обои "из нитрогена" будут "переписывать" обои используемых WM. Для обоев может и не критично, а вот разнести запуск каких-то специфических для WM вещей хотелось бы... В итоге родилось такое вот извращенское решение:

(sleep 5

if [ `ps -aux | grep '0:00 dwm' | wc -l` -eq 2 ] ;

then

  nitrogen --restore

fi;) &

Тут, кстати, надо сделать пару пояснений. Идея в том, чтобы после того, как загрузится DWM (или другой WM) - убедиться что загружен именно DWM, и, если это так - провести нужные нам запуски (в данном примере - только нитроген). Задержка в 5 секунд нужна, чтобы DWM загрузился (на самом деле, это очень быстрая и легкая среда - грузится намного быстрее, секунды за 3. Остальные 2 - страховка).

Ну и для памяти: ps -aux | grep xfce-session - позволяет узнать, запущен ли xfce в данный момент (может, кому пригодится).

Продолжение наверное следует :)