LINUX.ORG.RU

снова об оптимизации awesomeWM

 ,


0

1

Приглашаю в пост осомоводов, у которых есть немного свободного времени, для обсуждения одного вопроса, а именно:

В своём rc.lua я реализую концепцию «шесть десктоп-тегов - шесть наборов ярлыков рабочего стола» (да, я знаю, что это безобразие, но мне нравится тыцать по ярлыкам).

Соответственно, в своём rc.lua я формирую шесть layout для каждого тега, и потом, при клике по тегу, подсовываю осому соответствующий этому тегу layout.

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

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

осом у меня 3.5, вот rc.lua

Спасибо за внимание.

★★★★

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

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

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

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

осом у меня 3.5

awesome -v, или вдоль.

Соответственно, в своём rc.lua я формирую шесть layout для каждого тега, и потом, при клике по тегу, подсовываю осому соответствующий этому тегу layout.

Если хуками, то нормально, в противном случае у тебя будет течь со всех щелей.

// Кукарекальников-неосиляторов, которые советуют сменить софт, не слушай, делай что задумал.

r3lgar ★★★★★
()
Ответ на: комментарий от r3lgar
piyavking@koeuk:~$ awesome -v
awesome v3.5.6 (For Those About To Rock)
 • Build: Sep  1 2015 11:28:53 for x86_64 by gcc version 5.2.1 (buildd@lgw01-18)
 • Compiled against Lua 5.1.5 (running with Lua 5.1)
 • D-Bus support: ✔

Если хуками, то нормально

ээээ

я не знаю, что такое хуки, можно поподробнее?

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

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

2bwm. он написан на си

а awesome на чем по твоему написан, на луа? Нет, он скриптуется на луа, а написан тоже на си. Так что ты просто пукнул в воду, довольно неловкая ситуация вышла.

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

бери 2bwm

2bwm does not come with any bar or panel. 

ахаха, отличный юмор на выходных.

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

v3.5.6

Некромантия какая-то, чесслово. В мастере (да и в 3.5.9, ЕМНИП) уже давно есть асинхронные вызовы, хоть они и малость костыльны. Вот это тебе даст прироста ощутимо.

я не знаю, что такое хуки, можно поподробнее?

Зайдём с другой стороны. У осома есть сигналы (ты знаешь, где документация, верно?), отталкивайся от них: не проверяй соответствие условием, если его можно получить по сигналу, не старайся писать сложные конструкции, особенно, если они пересекаются с чтением извне (особенно из интернета или на жирных файлах), старайся парсинг писать на Lua, а не в выхлопе скрипта, так как во время обработки внешней команды у тебя осом "ждёт" ответа, и только потом начинает реагировать на пользователя (с асинхронными вызовами это дело решилось чуть больше, чем вполовину). Не старайся запихать в панель сразу всё, если у тебя нет опыта в программировании, то у тебя всё будет жрать ресурсы и люто тормозить; начни с простого, набирайся опыта, совершенствуй свои модули.

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

«Это ЛОР, детка!» © LOR
Тут половина клоуны, половина позеры, редко когда можно получить ответ по теме.

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

а какие у тебя есть доказательства, что wm жрет 10 кпу?

Походи по его тредам, в ОП одного из них есть стата с ps, я чуть чаем не подавился!

Кстати, на 3.5.0-3.5.6 с некоторыми конфигурациями и не такое можно было встретить, у самого такое с vicious было не раз, пока на мастер не сполз.

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

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

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

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

если бы я писал на сях свой конфиг осома, то ушло бы в 10 раз больше времени, а то и 20, и понимая это я бы не стал этого делать и пользовался бы дефолтом. Так что несомтря на то, что луа не лучший язык, осом годная, супергибкая вещь.

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

а какие у тебя есть доказательства, что wm жрет 10 кпу?

htop

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

я ничего не понял

У тебя обобщённый вопрос, потому и ответ получился обобщённый.

r3lgar ★★★★★
()

Второе, тебе дали полноценный скриптовый язык вместо описательного конфига, используй это.

Не делай так:


rowidget = wibox.widget.textbox()
rowidget:set_align("left")
rowidget:buttons( awful.util.table.join(awful.button({ }, 1, function () awful.util.spawn_with_shell('rss.sh o') end)))

rawidget = wibox.widget.textbox()
rawidget:set_align("left")
rawidget:buttons( awful.util.table.join(awful.button({ }, 1, function () awful.util.spawn_with_shell('rss.sh ov') end)))

rfwidget = wibox.widget.textbox()
rfwidget:set_align("left")
rfwidget:set_markup("rf ")
rfwidget:buttons( awful.util.table.join(awful.button({ }, 1, function () awful.util.spawn_with_shell('gvim ~/tmp/rss') end)))

local rpanel = wibox.layout.fixed.horizontal()
rpanel:add(rowidget)
rpanel:add(rawidget)
rpanel:add(rfwidget)
Делай примерно так:
local function build_rss_widget(command, markup)
    widg = wibox.widget.textbox()
    widg:set_align("left")
    if markup then widg:set_markup(markup) end
    widg:buttons(awful.util.table.join(awful.button({ }, 1, function () awful.util.spawn_with_shell(command) end)))
    return widg
end

local my_rss_widgets = {
    ro = build_rss_widget('rss.sh o'),
    ra = build_rss_widget('rss.sh ov'),
    rf = build_rss_widget('gvim ~/tmp/rss', "rf "),
}

local rpanel = wibox.layout.fixed.horizontal()
for _, w in pairs(my_rss_widgets) do rpanel:add(w) end

Worron ★★★
()

Третье, у тебя очень много обращений к внешним скриптам, с большой вероятностью асинхронные вызовы, хотя бы частично, улучшат производительность. Либо смотри пользовательские реализации asyncshell для 3.5.6 (можешь взять у меня), либо перекатывайся на мастер, там должно быть из коробки.

Worron ★★★
()

Четвертое, тот таймер что выставлен на одну секунду, не особо понимаю что там происходит, но кажется много лишнего. Все эти buttons, ты что каждую секунду кнопки там новые биндишь? Выкинь все кроме прям «жесть как нужно чтоб именно каждую секунду». Совсем выкинь или создай еще таймеры на 10, 30, 60, сколько реально необходимо.

Worron ★★★
()

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

tags[s][1]:connect_signal("property::selected",
    function(tag)
        if not tag.selected then return end
        current=1
        mywibox[s].visible = mwbv[current]
        mydeskwibox[s]:set_widget(wibox.layout.margin(mydeskwibox_1_layout, 10, 10, 30, 10 ))
        awful.util.spawn_with_shell('wallpaper.sh picture')
    end)
tags[s][2]:connect_signal("property::selected", 
    function(tag)
        if not tag.selected then return end
        current=2
        mywibox[s].visible = mwbv[current]
        mydeskwibox[s]:set_widget(wibox.layout.margin(mydeskwibox_2_layout, 10, 10, 30, 10 ))
        awful.util.spawn_with_shell('wallpaper.sh picture')
    end)
Здесь есть пример как лучше.

Worron ★★★
()

Шестое, оптимизаторов советующий сменить wm шли лесом. Тормозят в первую очередь кривые руки, внешние утилиты, и если не в последнюю очередь, то сильно около того, тормозит lua.

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

Отличные, внятные рекомендации. Большое спасибо!

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

Все эти buttons, ты что каждую секунду кнопки там новые биндишь?

Вообще-то да, именно так. Каждую секунду проверяются определённые параметры, и, в зависимости от них, кнопкам назначаются те или иные функции, а также те или иные метки (цвет шрифта)

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