LINUX.ORG.RU

Red Flat Awesome

 ,


74

12

Примерно год назад решил попробовать awesome. Хотелось чего-то максимально кастомизируемого, но более монолитного и системонезависимого. Данный wm показался интересным в этом плане, так что вооружившись напильником попытался сделать на его основе годное, согласно своим представлениям, окружение.

Еще скриншоты: традиционный с окнами[1] и все остальные[2][3][4][5][6][7].

На панели можно увидеть

  • Модифицированный taglist на самописных виджетах.
  • Набор индикаторов: иконка меню и оповещалка об обновлениях в одном, раскладка клавиатуры, регулятор громкости, почта, кастомный layoutbox. На громкости висит простенький виджет для моего любимого exaile[2], layoutbox умеет меню выбора режима тайлинга[2].
  • Сильно перепиленный tasklist[4][5]. Приложения обозначаются трехбуквенными алиасами, окна одного класса группируются в один значок. При наведении подсказка с полным именем или списком группы, по правой кнопке менюшка управления окном.
  • Специальный виджет для минитрея, точками обозначено количество приложений в трее. По клику/хоткею является собственно сам минитрей.
  • Индикаторы ресурсов - выдрал код из vicious и прикрутил свои визуалы. Была задумка сделать нескучные всплывающие виджеты с системной инфой, как раньше было у меня в доке, но энтузиазм закончился уже на первом, показывающем топ процессов[3]. Даже его не допилил до конца, память отображает криво.
  • Часы.

Виджеты на рабочем столе - перенес свои луа скрипты от коньков на базу awesome. Тут нет готовых датчиков, но на помощь снова приходит vicious. В целом средствами осома такие штуки пилить даже удобнее, ибо тру модульность и интерактивность. Зависимые от сети вещи подключены через модификацию asyncshell. Может быть имело смысл все через него пускать, но поздновато осознал насколько это нужная и полезная штука, лень переделывать.

Для пущего уюта установил uselessgap тайлинг от Lain. Сделал активные грани экрана. Немного переписал awful.menu, добавив автоскрытие, возможность вставлять неиндексируемые элементы(заголовки, разделители), автоматическую расстановку хоткеев и еще по мелочи[2][4]. На базе menubar запилил запускалку приложений[3] в стиле synapse, очень нравится такой визуал. Сильно скучал по классическому альттабу, даже накостылял кое-что, но потом некто Joren Heit выкатил няшный Familiar Alt Tab. Скрестив его и свои наработки получил такую переключалку[5][6]. Адским костылем с помощью asyncshell и rsvg-convert прикрутил адекватное масштабирование векторных иконок, заодно добавив смену цвета на лету. Сделал подсказку по хоткеям[7], как сами знаете где, с интерактивной подсветкой (пока без модификаторов).

Многое еще нужно допиливать, но надежда завершить все это и нормально оформить изрядно подтаяла за прошедшее время, так что решил вбросить то что есть, в сыром виде. Все скрипты можно посмотреть здесь. Пользуясь случаем, хочу поблагодарить unlog1c за его конфиги, некоторые вещи откровенно позаимствовал оттуда.

Awesome 3.5.6, compton, тема gtk - Boje, иконки ACYL, шрифты play и prototype.

>>> Просмотр (1920x1080, 123 Kb)

★★★

Проверено: JB ()

Ответ на: комментарий от actionless

Поправил зависимости для appswitcher, теперь вроде работает с дефолтным конфигом

local redflat = require("redflat")
awful.key({ modkey,           }, "a", function () redflat.floatwid.appswitcher:show({ filter = redflat.widget.tasklist.filter.allscreen }) end),
Если нет, то таки дело в версии awesome.

Worron ★★★
() автор топика
Ответ на: комментарий от Mihahail

Цвета, надеюсь, можно менять?

Все цвета, в том числе для иконок, задаются в конфиге

Worron ★★★
() автор топика
Ответ на: комментарий от Debasher

Асимметрия не раздражает?

Да нормально. Хотеть именно эту обоину, хоть с ней симметрию особо не сделаешь.

Worron ★★★
() автор топика
Ответ на: комментарий от rogerw

что за асинкшел?

Если не ошибаюсь, первый раз упоминался в этой теме.

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

Оригинал.

Моя модификация.

Worron ★★★
() автор топика

Да, круто-круто... вопрос про Альт-таб: он для своей работы требует композитор или нет? Ты свою переключалку вместе со всем остальным на github выложил? И запускалка приложений там же?

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 1)

афигенно
но под мой ноут не идёт, надо синее, огоньки у меня синия

amorpher ★★★★★
()

Хорошая работа.

Dron ★★★★★
()
Ответ на: комментарий от crypt

Альт-таб: он для своей работы требует композитор или нет?

Не требует.

переключалку вместе со всем остальным на github выложил?

Да.

Worron ★★★
() автор топика

Смотрится шикарно. Один из лучших скриншотов, что я видел на ЛОРе. Но я бы в таком окружении работать не смог.

lucentcode ★★★★★
()

Красота нереальная. Еще и Спайк. Порадовал старика.

иконки ACYL

Как там с иконками погоды и прочего? Меня уже тошнит от этого Авокена после четырех лет подряд, но я не могу найти настолько же полный сет.

модификацию asyncshell

А что поменял? Вижу, есть таймер который подчищает просроченные реквесты (что это дает?) и стремный сед. Если это полезно, то я и себе заберу.

unlog1c ★★★
()

Смотрится - шикарно!

Юзабельно ли - вопрос...

l0stparadise ★★★★★
()
Ответ на: комментарий от unlog1c

А что поменял?

Основная фишка то, что оно сразу забрасывает выхлоп обратно в awesome, без сохранения в промежуточный файл (стремный сед там для экранирования). Таймер просто для порядка. Для asyncshell.demand как-то не нашел применения, поэтому не включен.

Как там с иконками погоды

Присутствуют. Вообще, один из самых полных сетов, что я встречал.

Worron ★★★
() автор топика
Ответ на: комментарий от Worron

Основная фишка то, что оно сразу забрасывает выхлоп обратно в awesome, без сохранения в промежуточный файл (стремный сед там для экранирования). Таймер просто для порядка. Для asyncshell.demand как-то не нашел применения, поэтому не включен.

Я понял. Помню, кажется actionless тоже менял чтобы было без промежуточных файлов, но мне что-то не понравилось тогда (то ли срабатывало через раз, то ли еще что). К тому же с промежуточными файлами удобнее дебажить, хотя какой-то вспомогательный вывод можно и к твоему присобачить. Попробую, в общем.

unlog1c ★★★
()

жаль, что меня устраивает на 200% третьегном, а то бы тоже занялся пилкой осома)))...автору скрина зачёт! Даже не представляю себе, сколько надо сделать телодвижений, чтобы унылый осом превратить в такую няшку...

Desmond_Hume ★★★★★
()

Красотища, особенно запускалка. Ты — просто талант. ACYL чудесен, но у него ведь все так же плохо с покрытием. Недостающие сам дорисовываешь?

t184256 ★★★★★
()
Ответ на: комментарий от unlog1c

кажется actionless тоже менял чтобы было без промежуточных файлов

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

Worron ★★★
() автор топика
Ответ на: комментарий от t184256

ACYL чудесен, но у него ведь все так же плохо с покрытием. Недостающие сам дорисовываешь?

Некомплект случаются у всех сетов, но для ACYL «дорисовывать» недостающие очень легко: трассировкой нужной иконки в inkscape. К тому же сам сет довольно большой, мне хватило десятка добавленных иконок, чтобы в меню и ланчере не было инородных элементов.

Worron ★★★
() автор топика

Я тоже очень поддерживаю концепцию разработки своего десктопа вместо нытья

vertexua ★★★★★
()

Реально абалденно. Покажи как браузер выглядит. У всех тёмых тем один недостаток - сайты в браузере вывигладно смотрятся.

dokihot
()
Ответ на: комментарий от Worron

Я awesome не использовал раньше. Чтобы запустить все, как у тебя, достаточно просто поставить awesome, какие-то (?) его модули-плагины и стянуть твои скрипты c github?

crypt ★★★★★
()
Ответ на: комментарий от crypt

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

...уволиться с работы и перестать смотреть онимэ. А потом, да, осом, какие-то доки, какие-то модули-плагины.

Автор молодец. Вышло годно. Вот ради *этого*, не грешно было бы и велосипе^Wдистрибутив пилить начать, а не то что эти ваши #!#++ #!!!--

vsh
()

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

jtootf ★★★★★
()
Ответ на: комментарий от dokihot

как браузер выглядит

Как говно с приходом australis.

У всех тёмых тем один недостаток - сайты в браузере вывигладно смотрятся

Есть такое. Использую stylish для часто посещаемых сайтов, и расширение Blank Your Monitor + Easy Reading совсем ночью. ЛОР с ним.

Worron ★★★
() автор топика
Ответ на: комментарий от crypt

Многие виджеты заточены на конкретную софтину, чтоб прям все также нужно иметь в системе набор приложений и утилит аналогичный моему: transmission, exaile, kbdd, pulseaudio, apt, hddtemp и т.д. Сразу будут работать (теоретически) базовые вещи типа таскбара, тегов, трея, меню приложений. Возможно придется подправить геометрию виджетов под другое разрешение, шрифты. Если решишь попробовать и будут вопросы, обращайся.

Worron ★★★
() автор топика
Ответ на: комментарий от jtootf

создать отдельный рабочий стол с удобной комбинацией на вызов

Как будто по дефолту у «рабочих столов» осома комбинации не удобные.

Worron ★★★
() автор топика

Годно и за Бибопа зачёт.

pento ★★★★★
()
Ответ на: комментарий от Worron

Как будто по дефолту у «рабочих столов» осома комбинации не удобные.

чем это поможет, если все они заняты?

jtootf ★★★★★
()

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

haku ★★★★★
()
Ответ на: комментарий от Worron

Ясно, спасибо. Виджеты - это действительно индивидуально. Волнует в первую очередь общее оформление, красивый альт-таб и пускалка приложений.

crypt ★★★★★
()

А как заставить apprunner запускаться в screen, на котором фокус находиться в данный момент?

Можно использовать mouse.screen, но не найду куда это вписать.

gBopHuk
()
Ответ на: комментарий от gBopHuk

Признаюсь, писал без оглядки на мультимониторную конфигурацию. Конкретно для apprunner можно поправить apprunner:show()

...
	self.wibox.visible = true
	redutil.placement.centered(self.wibox, nil, screen[mouse.screen].workarea)
	return awful.prompt.run(
...

Worron ★★★
() автор топика
Ответ на: комментарий от gBopHuk

Да, похоже стандартный awful.prompt.run не поддерживает.

Worron ★★★
() автор топика

Тоже сижу на awesome с недавнего времени.

Ваша работа вызвает уважение - выглядит просто прекрасно.

Gedweb
()
Ответ на: комментарий от vsh

...уволиться с работы и перестать смотреть онимэ.

The first stage done. Proceeding to the second stage. Похоже, WM для меня.)

crypt ★★★★★
()
Ответ на: комментарий от Worron

я взял твой alttab из git, прописал те настройки, что указаны там же в readme в $HOME/.config/awesome/rc.lua

awful.key({ modkey,           }, "a", function () redflat.floatwid.appswitcher:show({ filter = redflat.widget.tasklist.filter.allscreen }) end),

этой строки нет, не понятно, нужна она или нет.

Версия awesome - 3.5.6, lua 5.1. Посмотрел коменты: а что в awesome ломают совместимость настроек внутри минорных версий что ли?

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 3)
Ответ на: комментарий от crypt

Нужно установить весь модуль полностью (redflat и themes находиться быть в $HOME/.config/awesome). Можно сделать

git clone https://github.com/worron/awesome-config.git ~/.config/awesome
Крайне желательно установить librsvg2-bin.

Далее есть два варианта. Первый - взять из репы готовый конфиг rc-base.lua (это облегченный вариант окружения без специфичных виджетов), переименовать его или сделать ссылку $HOME/.config/awesome/rc.lua, попробовать запустить. Второй - добавлять отдельный элементы из моего модуля в дефолтный конфиг осома rc.lua. Например, для alltab инициализировать сам модуль

local redflat = require("redflat")
в начале файла где-нибудь после
local naughty = require("naughty")
local menubar = require("menubar")
и добавить команду вызова (именно вызова, хоткеи переключения настраиваются отдельно)
awful.key({ modkey,           }, "a", function () redflat.floatwid.appswitcher:show({ filter = redflat.widget.tasklist.filter.allscreen }) end),
в список хоткеев awesome, который
-- {{{ Key bindings
globalkeys = awful.util.table.join(
    awful.key({ modkey,           }, "Left",   awful.tag.viewprev       ),
    awful.key({ modkey,           }, "Right",  awful.tag.viewnext       ),
    awful.key({ modkey,           }, "Escape", awful.tag.history.restore),

Worron ★★★
() автор топика
Ответ на: комментарий от crypt

а что в awesome ломают совместимость настроек внутри минорных версий что ли?

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

Worron ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.