LINUX.ORG.RU

Awesome с двумя мониторами

 ,


1

1

Из коробки Awesome неплохо поддерживает многодисплейную конфигурацию. Чего мне не хватало, так это удобства работы в случае когда мониторы часто отключаешь, подключаешь новые и т.д. За последних два дня я основательно перелопатил свой конфиг и реализовал поддержку таких действий с помощью нескольких модулей.

  • модуль rulez является динамической оберткой вокруг awful.rules. Позволяет не редактируя конфиг «прибивать» приложения к определенным тегам путем нажатия Mod+Q. Меня всегда напрягало вручную вписывать правила чтобы клиенты автоматически перемещались на свои теги, теперь делать это стало значительно удобнее.
  • модуль vista позволяет задавать правила для дисплеев, наподобие тех же awful.rules. Например, я иногда подключаю к ноуту вертикальный или неширокоформатный мониторы, поэтому создал правило: если ratio дисплея (width ÷ height) меньше 1.25, то рисовать панель сверху а не справа. Vista также имеет концепцию «первичного» и «вторичного» монитора, которые тоже можно определить правилами. В дальнейшем роль монитора можно использовать в rulez, например назначить Transmission на шестой тег вторичного дисплея. Если в текущий момент дисплей только один, то primary = secondary = 1, и все продолжает нормально работать.
  • Переписанные topjets теперь используют разделение view и model. Таким образом, можно создать сколько угодно виджетов для множества дисплеев, но логика и получение данных будут выполняться единожды.
  • Модуль layout является тонкой оберткой вокруг wibox.layout.*, позволяющий задавать конфигурацию виджетов в более декларативном стиле, а-ля DOM или Android XML.

Как обычно, все конфиги находятся в https://github.com/alexander-yakushev/awesomerc. Теоретически можно использовать as-is, должно заработать сразу. Нужны установленные иконки awoken.

>>> Просмотр (1366x1792, 1925 Kb)

★★★

Проверено: JB ()
Последнее исправление: JB (всего исправлений: 2)

Странно всё это как-то выглядит. Не знаю почему. Может это из-за слишком толстой панели.

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

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

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

У тебя прогрессбар виджета плейера кликабельный/драггабельный?

Осом не жрёт раму, не подвисает (для проверки открой по два-три клиента на таг, и попереключай таги в любом порядке (рандомно) где-то минуту)?

Зачем тебе дублирующие виджеты на втором мониторе?

Горизонтальная панель смотрится ужасно в таком виде. Сделай её тоньше (Придётся пожертвовать своими тагами? Их размер фиксированный?).

Визуально немного поменялось

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

там дифф на 1000 строк

Это немного.

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

да/нет. Смысла нету его тягать.

Ничего не подвисает уже несколько лет, не знаю о чем ты.

Виджеты на втором экране это proof of concept, хотя если учитывать что второй экран основной когда он подключен - то там я на них в основном и смотрю.

По поводу ужасно я не согласен, в оффтопике с толстой панелью люди нормально живут. Возможно есть смысл ее вниз переместить. А если попробовать уменьшить, то юнитибар надо перепродумать и переписать.

Детали не на скриншоте а в описании, там много работы.

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

Как ты решал проблему с логикой расположения виджетов на панели, если она идет сплошняком? Вернее, две панели в панорамном режиме.

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

Смысла нету его тягать.

У doraneko есть репо с кое-каким добром, в том числе там есть ползунок. Посмотри, если не в курсе существования этого дела.

Ничего не подвисает уже несколько лет

В таком случае делись секретом!

По поводу ужасно я не согласен

Это было моё мнение.

там много работы

Я знаю, что там немало работы. Но это не значит, что при этом должно быть много кода.

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

У doraneko есть репо с кое-каким добром, в том числе там есть ползунок. Посмотри, если не в курсе существования этого дела.

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

В таком случае делись секретом!

Все обращения к системе/интернету идут через asyncshell, поэтому подвисаний нету. В отношении памяти не знаю в чем секрет, видимо ничего не протекает.

Я знаю, что там немало работы. Но это не значит, что при этом должно быть много кода.

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

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

Кеды кедами

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

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

Посмотри сюда. Во-первых, сами виджеты погоды и сети поддерживают вертикальный и горизонтальный режимы (тыц). А потом в статусбаре я их двоих засовываю либо в fixed layout для вертикальной панели, либо в flex для горизонтальной чтобы они по чесному поделили место.

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

Я не о том. Представь, что на каждом мониторе сверху по панели. Стиль одинаковый. А теперь расположи виджеты, чтобы оно смотрелось на панели, и хорошо смотрелось. Решение проблемы панорамы, короче говоря.

DeadEye ★★★★★
()

Приятные шрифты в галерее? Как так?

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

С таким сетапом я еще не работал на этом конфиге, и вообще я горизонтальную панель делал под вертикальный монитор — два таких рядом я врядли поставлю. Но виджетов все равно можно накидать одинаковых и туда, и туда — панель задач то нужна на обоих экранах, а пустое место тогда нет смысла экономить.

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

Модуль layout является тонкой оберткой вокруг wibox.layout.*, позволяющий задавать конфигурацию виджетов в более декларативном стиле, а-ля DOM или Android XML.

та же фигня и у меня в конфиге, как думаешь, может, патч в апстрим заслать?

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

а еще кеды даже на ssd и достаточно быстром проце визуально подтормаживают понемногу в разных местах

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

та же фигня и у меня в конфиге, как думаешь, может, патч в апстрим заслать?

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

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

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

Ну ты слоу! xD Ладно, шучу.

не понимаю о чем мы спорим

Не спорим мы ни о чём.

В отношении памяти не знаю в чем секрет, видимо ничего не протекает.

У вас в арчике ванильный осом (даже из master?), у нас в генте оно иногда не собирается без некоторых патчей.

Все обращения к системе/интернету идут через asyncshell, поэтому подвисаний нету.

А разве эта прослойка сама по себе не костыль? (=

r3lgar ★★★★★
()

я использую вот такую настройку для раскидывания окон в плавающем режиме по углам (или сторонам) экрана:

local wa = screen[mouse.screen].workarea
local ph = 22
local ww = wa.width
local wh = wa.height

awful.key({ modkey }, "KP_Left",  function (c) c:geometry( { width = ww / 2, height = wh, x = 0, y = ph } ) end),
awful.key({ modkey }, "KP_Right", function (c) c:geometry( { width = ww / 2, height = wh, x = ww / 2, y = ph } ) end),
awful.key({ modkey }, "KP_Up",    function (c) c:geometry( { width = ww, height = wh / 2, x = 0, y = ph } ) end),
awful.key({ modkey }, "KP_Down",  function (c) c:geometry( { width = ww, height = wh / 2, x = 0, y = wh / 2 + ph } ) end),
awful.key({ modkey }, "KP_Prior", function (c) c:geometry( { width = ww / 2, height = wh / 2, x = ww / 2, y = ph } ) end),
awful.key({ modkey }, "KP_Next",  function (c) c:geometry( { width = ww / 2, height = wh / 2, x = ww / 2, y = wh / 2 + ph } ) end),
awful.key({ modkey }, "KP_Home",  function (c) c:geometry( { width = ww / 2, height = wh / 2, x = 0, y = ph } ) end),
awful.key({ modkey }, "KP_End",   function (c) c:geometry( { width = ww / 2, height = wh / 2, x = 0, y = wh / 2 + ph } ) end),
awful.key({ modkey }, "KP_Begin", function (c) c:geometry( { width = ww, height = wh, x = 0, y = ph } ) end),
соотв. левый верхний угол, правый нижний, нижняя часть экрана, верхняя, центр, правая половина и т.п.

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

Ты не используешь что-то подобное? Имхо крайне удобно для плавающего режима.

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

ну так главное саму идею донести до сообщества, а дальше, чуть что, в комментах к PR посоветуют как лучше сделать

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

А разве эта прослойка сама по себе не костыль? (=

Костыль, но все равно лучше чем дергать напрямую и терпеть подвисания.

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

Мерзкое 3D — нафиг, нафиг.

Если тебе так мерзок Awoken, то посоветуй альтернативный настолько же полный набор иконок, чтобы была вся погода, индикаторы загрузки CPU, и что-то для памяти (я использую иконки записи диска brasero).

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

Я такое не использую, у меня все окна большую часть времени фулскрин.

В твоем случае, нужно получить screen[mouse.screen].geometry, в этой таблице есть поля x и y - это координаты дисплея относительно общего экранного пространства. Прибавляй эти координаты к своим иксам и игрекам чтобы окно осталось на том же экране.

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

Я не перевариваю ирку — это раз. Я сам в состоянии написать ебилд, тут скорее дело в версии Lua и прочей разности генты с арчем. А ещё манера моего общения помешает мне получить желаемое.

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

Мне не нравятся существующие реализации asyncshell, а написать лучше я не смогу.

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

Я про обои вообще-то. Музыка правильная, а обои — нет.

А, тебе трехмерный мир мерзок. Да уж, не повезло.

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

Значит пофиксили? Иначе я не смогу забыть.

Бага с неработающими хоткеями в русской раскладке у меня никогда не проявлялось. Есть баг, что клики мыши не обрабатываются в русской раскладке, это баг в XKB и «фиксится» путем удаления строчек с AltGr из /usr/share/X11/xkb/compat/basic. Но это надо делать после каждого обновления иксов, к сожалению.

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

Большинство времени она прячется за эмаксом.

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

Значит пофиксили?

Баг не в awesome, а в xkb. Впрочем, ТС уже рассказал.

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

Значит это чисто баг только в Ubuntu. Про баг в XKB я давно знаю и как его фиксить тоже.

peregrine ★★★★★
()

Чей-то эти awoken не подхватываются. Кроме как распаковать три папки от темы awoken в /usr/share/icons еще что-то требуется?

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

Там надо не три папки, там надо по FreeDesktop'ному стандарту чтобы в каталоге папки иконок (например, /user/share/icons/awoken) сразу шли папки с размерами - 128х128, 64х64 и т д. В авокене они кажется в папке clear/.

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

Ага,спасибо. Получилось. Запихнул в /home/user/.icons и подправил пути в iconic.lua.

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

Ага, автору еще спасибо. На ТВ 50" смотрится просто афигенно. И вообще, это же сколько же труда вбухать по всему остальному, ..да.

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

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

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

С размерами начудил, но так-то на вид приятно.

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