maisvendoo |
|
Темы:
68
Сообщения:
1142
Участник с: 10 октября 2012
|
Старо но актуально. Хоть и [РЕШЕНО] но все же в помощь другим Установка Arch Linux рядом с виндой
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
maisvendoo |
|
Темы:
68
Сообщения:
1142
Участник с: 10 октября 2012
|
serkhayПроще, хотелось поупражнятся с Lua и заставить среду выполнять то что я хочу :) Но первый пост переозаглавил.
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
maisvendoo |
|
Темы:
68
Сообщения:
1142
Участник с: 10 октября 2012
|
Awesome WM: разбор rc.lua "по косточкам" Переходя на awesome, я мотивировался возможностью воспользоваться преимуществами тайлинга, предоставляемого данным WM, при сохранении привычного функционала из Openbox. Под тайлингом (англ. tiling) подразумевается способность менеджера окон управлять ими так, что при открытии каждого окна, оно не перекрывает предыдущие и располагается "встык" с ранее открытыми окнами. Собственно ради этой возможности и был затеян мой переход на awesome. После установки данного WM из коробки доступен базовый функционал и несколько тем оформления. Большая часть настройки awesome осуществляется путем редактирования файла ~/.config/awesome/rc.lua. При открытии конфига, идущего искаропки, волосы становятся дыбом от обилия непонятного кода на Lua. Собственно этот код позволяет задать весь необходимый Вам функционал Вашей рабочей среды, и хочется того или нет, с ним лучше хорошенько разобраться. С этого начал и я, переписав конфиг заново, в той или иной степени разобрав каждую его часть и откомментил на русском языке. Результаты всего этого излагаю в данной статье. Awesome WM написан на C/C++, а вот его настройка выполняется с помощью скриптов на языке Lua, причем имеется Lua API, документация по которому есть на сайте разработчика, и честно говоря не блещет подробностью. Первое что надо сделать - скопировать содержимое каталога /usr/share/awesome/ в каталог ~/.config/awesome для того чтобы использовать идущие в комплекте скрипты тем, картинки иконок для последующей модификации. Мною для издевательств была выбрана тема Zeburn, от которой нам понадобится файл ~/.config/awesome/themes/zeburn/theme.lua 1. Начало Результат моих потуг изображен на скриншоте Разберу теперь детально какая часть конфига rc.lua за что тут отвечает Начинается всё с подключения необходимых библиотек
При первом запуске Awesome удивляют часы на английском языке, исправляем эту ситуацию
Задаем тему оформления, которую будем использовать
Задаем используемые по умолчанию приложения
Определяем главную клавишу-модификатор, от которой пляшут все клавиатурные комбинации. В стандартном конфиге в качестве такой клавиши выбрана Mod4, она же клавиша "Windows" нафиг не нужная в линуксе. Тем же путем пошел и я, хотя есть идея сменить её на Alt, из-за того что виртуальные машины под виндой отбирают клавишу Win на вызов своего меню :(. Собственно делаем это так
Сразу позаботимся о том, чтобы определить коды кнопок мыши, которые пригодятся нам для создания каждому элементу интерфейса обработчиков. Для этого используем команду $ xev | grep 'button' теперь жмем все кнопки мыши и смотрим их номер, выводимый в консоль. У меня получились в итоге глобальные определения для кнопок мыши
Аналогично определим и скан-коды клавиш. В стандартном конфиге используются буквы английского алфавита, но это делает невозможным отработку хоткея на кирилической раскладке, поэтому $ xev | grep 'keycode' жмем клавиши и заполняем глобальные определения для клавиатуры
2. Режимы тайлинга Теперь зададим layouts - макеты расположения окон на экране, которые собираемся использовать. Они задаются в виде массива-таблицы
Я выбрал только тайлинговые макеты, а те окна которые необходимо сделать плавающими настраиваются таковыми принудительно дальше. Кладем обои на рабочий стол
Переменная beautiful.wallpaper задается в конфиге темы, и являет собой путь к файлу с обоями ~/.config/awesome/themes/zeburn/theme.lua
3. Тэги - виртуальные рабочие столы и не только Дальше создаем массив тэгов - аналог виртуальных рабочих столов в любой другой DE, отличие тэгов от рабочих столов заключается в возножности одновременного отображения нескольких тегов
4. Главное меню Теперь создаем главное меню. В Openbox оно мне было в принципе без надобности, только затем чтобы добраться до перезагрузки/выключения/логаута. Ну а для кого-то наличие такого менб будет необходимо ещё для чего-нибудь Для начала создаем подменю. Они выполняются в виде Lua-таблицы, элементами которой являются таблицы, содержащие строки с названием пункта меню, команды, выполняемой при выборе этого пункта, и пути к иконке, отображаемой в данном пункте подменю
Теперь можно делать основное меню, содержащее обычные пункты и подменю
Очень кстати здесь пришлись безрутовые команды systemd по перезагрузке и выключению компа. Должно получится нечто похожее на это Пути к иконкам приложений, используемым в меню, необходимо прописать в теме ~/.config/awesome/themes/zeburn/theme.lua
В дальнейшем эти же иконки мы используем для создания кнопок быстрого запуска приложений. Теперь создаем кнопку-лаунчер, и вешаем на неё меню
Вместо стандартного авесомовского логотипа повесил патриотичный лого арча, предварительно прописав путь к изображению в теме ~/.config/awesome/themes/zeburn/theme.lua
5. Кнопки быстрого запуска приложений Наличие таковых оказалось принципиальным, в Openbox они реализовывались на tint2-svn, и я, и моя девушка к ним уже привыкли, и реализация таковой же функции в awesome стала одним из условий перехода. Кнопки приложений можно создать с помощью виджета button, например таким образом
6. Текстовые часы С этим всё ок, данный виджет является стандартным, и создается просто
При нормально настроенной локализации часы будут отображаться по-русски. 7. Список тэгов Список тегов - панель, отображающая значки тегов, и обеспечивающая возможность переключения между тэгами, перебрасывание клиентов с тега на тэг с помощью мыши. Создается она использованием виджета taglist
В приведенном коде декларируется таблица, содержащая список тэгов, а так же назначаются действия, выполняемые с тегами и клиентами по нажатию кнопок мыши. О создании экземпляров списка тэгов речь пока не идет, они будут созданы чуть позже. 8. Список задач Список задач - это набор прямоугольных кнопок на панели задач, обозначающих запущенные приложения (как-то так) Его тоже необходимо создать, вернее создать таблицу для хранения этого списка, а так же назначить действия при щелчках мышью на кнопках приложений
9. Собираем всё вместе Настал момент когда можно собрать то что будет выполнять в нашем WM роль панели задач. Стандартный конфиг подразумевает использование и нескольких мониторов, поэтому имеется цикл, перебирающий все экраны и выполняющий действия по созданию панельки на каждом из них
После добавления в конфиг данного кода панель появится на экране и будет функциональна. 10. Оживляем рабочую среду: программируем мышь и клавиатуру Необходимо определить назначения мыши для всей среды, горячие клавиши для всей среды, а так же назначения для клиентов - окон приложений Глобальных назначений мыши не так много оказалось в стандартном конфиге, их шерстить я не стал. Единственное что было добевлено - номера кнопок мыши поменялись на определенные выше глобальные переменные
А вот назначений клавиш гораздо больше. Каждая комбинация добавляется вызовом awful.key({ <клавиша-модификатор1>, <клавиша-модификатор2>, <функция-обработчик>) Таблица назначений клавиш формируется как результат выполнения функции <имя таблицы> = awful.util.table.join( комбинация 1, комбинация 2,..., комбинация n) Кроме того, для себя заменил обозначения буквенных клавиш со строк латиницы на сканкоды, глобально определив их в переменных в начале конфига. Так удобнее.
Аналогично определяем клавиатурные комбинации для клиентских окон
Кроме того, к глобальным назначениям добавляются комбинации Mod4 + <цифровая клавиша>, путем перебора в цикле сканкодов цифровых клавиш и добавления в таблицу globalkeys
Ну и наконец мышиные назначения для клиентских окон
Далее просто активируем глобальные клавиатурные комбинации
Чтобы активировать клиентские назначения необходимо.... 11. Назначение ролей приложениям Роли приложений определяют как каждое из них будет себя вести при запуске в awesome. В моем конфиге роли назначены так
У всех приложений должна быть одна быть прописана общая роль, определяющая поведение всех окон, и задающая клиентам назначения горячих клавиш и реакцию на мышь
После добавления этой роли среда оживает, окна открываются, реагируют на заданные нажатия клавиш и мышь. Однако возникает необходимость для конкретного приложения определить особое поведение, скажем ICQ-клиент не совсем удобно запускать в тайлинге, равно как и некоторые другие приложения. Для каких-то приложений может понадобится запуск только в одном или нескольких выбранных тегах. Все это делается настройкой ролей для каждого приложения одновременно. Для этого необходимо указать в роли класс приложения, который можно получить так $ xprop | grep 'CLASS' и далее щелкнув курсором мыши по нужному окну, в консольном выводе получим например такое
Вторая строка URxvt это и есть искомый класс окна, а первое - свойство под название instance (не помню что это, чесло... :( ) Теперь можно определить роль для терминалов быть только в 9м тэге
для ICQ-клиента быть плавающим окном с без максимизации окна
12. Сигналы Определив роли перейдем к последнему - сигналам, определяющим поведение окна например при переводе фокуса на него, или при перемещении на него курсора мыши, и т.д. Для начала я ограничился действиями при переводе фокуса на окно и уводе фокуса с него Когда окно в фокусе перекрашиваем рамку и добавляем полоску заголовка окна с кнопками управления
У окон не в фокусе - перекрашиваю рамку и убираю заголовок ЗаключениеВыполнив всё это можно получить вполне работоспособную среду Awesome а заодно разобраться с основными механизмами настройки. На этом затянувшийся разбор завершаю :)
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
maisvendoo |
|
Темы:
68
Сообщения:
1142
Участник с: 10 октября 2012
|
akoropvasekУ меня, наоборот, есть куча файлов, доступ к которым мне нужен то из Линукс, то из винды (обычно из VirtualBox, но иногда и "начисто", из-под реальной). Начал
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
maisvendoo |
|
Темы:
68
Сообщения:
1142
Участник с: 10 октября 2012
|
Сабж вырос отсюда. Думаю тема действительно интересна. Я решаю эту проблему так /etc/fstab # # /etc/fstab: static file system information # # <file system> <dir> <type> <options> <dump> <pass> tmpfs /tmp tmpfs nodev,nosuid 0 0 /dev/sda6 / ext4 defaults 0 1 /dev/sda8 /home ext4 defaults 0 1 /dev/sda7 swap swap defaults 0 0 /dev/sda5 /home/maisvendoo/win7-data ntfs-3g gid=users,fmask=113,dmask=002 0 0 То есть монтирую NTFS раздел в домашней папке. Если нужен доступ из VM то расшаривается домашняя папка для неё и вуаля :)
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
maisvendoo |
|
Темы:
68
Сообщения:
1142
Участник с: 10 октября 2012
|
vasek Из виртуальной машины с разделом ext4 в шареной папке. Я так тоже могу у себя отчебучить, легко Так что никакой вариант нельзя исключать ;)
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
maisvendoo |
|
Темы:
68
Сообщения:
1142
Участник с: 10 октября 2012
|
Поскольку заметок прибавилось, вперемешку с обсуждением их, решено навести порядок в блоге. Пост про автозагрузку перенесен вниз, вместо него добавлено ОГЛАВЛЕНИЕ 1. Awesome WM: разбор rc.lua "по косточкам" 2. Awesome WM: анимированный виджет на рабочем столе: аналоговые часы 3. Список автозагрузки средствами Awesome 4. Отображение браузерного видео в полноэкранном режиме 5. Создание всплывающего guake-like терминала (Haron_Prime) Так я думаю будет удобнее ориентироваться в блоге
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
maisvendoo |
|
Темы:
68
Сообщения:
1142
Участник с: 10 октября 2012
|
Присоединился
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
maisvendoo |
|
Темы:
68
Сообщения:
1142
Участник с: 10 октября 2012
|
Честно говоря разницы не увидел Было Стало ААААА!!!! Пардон, нет сообщений об ошибках :) Спасибо :)
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |
maisvendoo |
|
Темы:
68
Сообщения:
1142
Участник с: 10 октября 2012
|
переползаю на awesome
Да пребудет с нами Сила...!
CPU Intel Core i9 10900-KF/RAM DDR4 128 Gb/NVidia GForce GTX 1080 Ti Turbo 11Gb/SSD M2 512 Gb/HDD Seagate SATA3 2 Tb/HDD Toshiba 3Tb/HDD Toshiba 6Tb http://rusrailsim.org |