LINUX.ORG.RU
Ответ на: комментарий от bvn13

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

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

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

Понятно. Подумаю, что можно сделать. Но не сегодня уже, пожалуй.

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

спешка нужна только в постели у замужней (не своей) бабы. xD

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

Как-то так, наверное. Disclamer: У меня нет Awesome, если что, я его и в глаза не видел :)

c:add_signal("property::urgent", function(c)
    if c.urgent then
        вызываем ledcontrol на мигание
    else
        гасим мигание ledcontrol
    end
end)
Zubok ★★★★★
()
Ответ на: комментарий от funeralismatic

Хотя... Насколько я понимаю, ургентов может быть несколько. Надо проверить, сколько клиентов имеют ургенты. Когда станет 0, тогда выключать. А если там нет такого параметра, который считает число клиентов, которые выставили urgent hint, то считать самому в какой-нибудь переменной. нкрементировать и декрементировать. если станет 0 - выключать лампочку.

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

да, это-то как раз понятно всё, мне не понятно, как осом рулит вызовами, по каким событиям, и прочее. ибо у меня нифига не работает.

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

следовательно, вопрос в том, чтобы обыграть это глобально.

sudo cast unlog1c, может ты знаешь?

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

Тогда в секцию «new» добавить, не?

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

Ну Зубок тебе правильный сниппет написал (наверное). И правильный совет потом дал, что надо поцепить этот хук в new (или manage). Что-то навроде вот этого:

client.add_signal("manage", 
                  function(c)
                     c:add_signal("property::urgent", 
                                  function(c)
                                     -- Handler here
                                  end)
                  end)

Что значит - когда открывается новое окно (клиент), добавляем ему хук на сигнал urgent. Ну и внутрь уже пишешь что ты от него хочешь. Должно сработать.

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

ты прав, но убивать моргание тоже надо. иначе оно будет моргать беспрерывно, и ценности после первого ургента не имеет.

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

ты прав, но убивать моргание тоже надо. иначе оно будет моргать беспрерывно, и ценности после первого ургента не имеет.

А какие проблемы? Ведь хук вызывается, по-моему, не когда urgent устанаваливается, а когда *меняет* свое значение. Либо с true на false, либо с false на true. Проверкой c.urgent ты можешь установить, установился или сбросился urgent.

Заведи переменную, в которой будет считать число окон, установивших urgent. Если c.urgent - true, то инкрементируй и включай морание, если c.urgent - false, то декрементируй. Если после уменьшения стало 0, то выключай моргание.

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

Или же сам выясни такой момент: есть ли уже в awesome такая переменная, которая покажет, сколько окон выставило urgent. Вот смотри в API есть какие-то фнукции добавления в стек:

http://awesome.naquadah.org/doc/api/modules/awful.client.html

client.urgent.get ()  	Get the first client that got the urgent hint.
client.urgent.jumpto (merge) 	Jump to the client that received the urgent hint first.
client.urgent.add (c, prop) 	Adds client to urgent stack.
client.urgent.delete (c) 	Remove client from urgent stack.

Задача: выяснить, а можно ли узнать, что это за стек и если он действительно содержит все окна urgent, то можно ли выяснить его длину? Если можно, то тогда в хуке можно проверять: если длина стека не ноль, то есть хотя бы одно окно с ургентом после сигнала - значит, мигаем. Если после сигнала нет окон, то это значит, что последнее окно сняло urgent и больше окон нет - тогда снимаем мигание. Это было бы даже лучше, потому что способ с переменной имеет недостаток - надо отслеживать аварийное исчезновение окон. То есть окно мигает, а потом ты сделал xkill и оно исчезло. Что-то я сомневаюсь, что awesome вызовет все хуки с этим клиентом (но вполне может быть, что и вызовет - надо проверять).

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

на lua?! я в жизни не осилю такой сложный и запутанный квест.

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

обычно мне хватает всяких скриптов, чтобы научиться скриптовать, но js, lua и python вызывают у меня ступор, по крайней мере сейчас.

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

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

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

Пишу на lua впервые и вслепую, так что пардон. Это где-то в начале вставь вне всех функций (объявление глобальной переменной)

client_urgent_count = 0

Это в хук «property::urgent» вставь. Включение и выключение ledcontrol замени на запуск.

if c.urgent then
  client_urgent_count = client_urgent_count + 1
  <включить ledcontrol>
else
  client_urgent_count = client_urgent_count - 1
  if client_urgent_count = 0 then
    <выключить ledcontrol>
  end
end
Zubok ★★★★★
()
Ответ на: комментарий от funeralismatic

Чтобы не крушить awesome, https://awesome.naquadah.org/wiki/Using_Xephyr/ru тебе в помощь.

И по-моему, есть смысл разобраться в lua (времени займет час-два от силы), если планируешь не просто использовать awesome, а еще его и твикать.

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

Чтобы не крушить awesome, https://awesome.naquadah.org/wiki/Using_Xephyr/ru тебе в помощь.

ага, и пускать в нём всякий вакуум, для теста ургентов?

И по-моему, есть смысл разобраться в lua (времени займет час-два от силы), если планируешь не просто использовать awesome, а еще его и твикать.

смысл есть, но не стоит у меня на такое почему-то.

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

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

по пути допилил nocover. так как ниасилил awesompd, хочу запилить ещё фичи в свой плейер-виджет.

кстати, моргалки срабатывают, но почему-то рандомно.

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

у меня осом сыпется от awesompd, и, если он работает на 3.14 (а это так), значит я ниасилил. я вообще очень слабо осваиваю lua, что мне очень мешает настроить окружение.

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

а ниасилил только потому, что примеров юзания сего не_понял/не_осилил_код/не_дошло_как_применить_на_3.4.*.

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

кстати, моргалки срабатывают, но почему-то рандомно.

Мигают по urgent? Ты уже прицепил в конфиг код вызова мограния? Или у тебя при вызове из ткомандной строки то мигает, то не мигает? То есть сейчас речь о проблеме ledcontrol идет или о том, что вызов из awesome то работает, то не работает?

Если прицепил в rc.lua мигание, то покажи код. Глянуть.

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

Мигают по urgent?

иногда и без ургента мигает.

Ты уже прицепил в конфиг код вызова мограния? Или у тебя при вызове из ткомандной строки то мигает, то не мигает?

прицепил, и из-за этого у меня при рестарте awesome он падает.

То есть сейчас речь о проблеме ledcontrol идет или о том, что вызов из awesome то работает, то не работает?

второе. но он не «то работает, то не работает», а работает рандомно. то есть не по ургенту, а от смены погоды на марсе.

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

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

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

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

Ну а как запускаешь ledcontrol? Я вот не писал, как его запускать, поэтому мне интересно. :)

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

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

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

я слишком поздно увидел сообщение.

выглядело как-то так:

client.add_signal("manage", 
function(c)
c:add_signal("property::urgent", function(c)
    if c.urgent then
       function()
          awful.util.spawn("ledcontrol set c5 blink 150 150")
       end
    else
       function()
          awful.util.spawn("ledcontrol set c5 normal")
       end
    end
end)
end)
funeralismatic ★★★
() автор топика
Ответ на: комментарий от funeralismatic

function() зачем вообще?

Так попробуй.

client.add_signal("manage", 
function(c)
c:add_signal("property::urgent", function(c)
    if c.urgent then
          awful.util.spawn("ledcontrol set c5 blink 150 150")
    else
          awful.util.spawn("ledcontrol set c5 normal")
    end
end)
end)
Zubok ★★★★★
()
Ответ на: комментарий от funeralismatic

два чая тебе, добра и котяток.

Это что означает? Работает или ты еще не попробовал, но думаешь, что заработает? :)

И хочу напомнить, что этот код не годится. Тебе нужен примерно этот:

моргать индикаторами при ургентах (комментарий)

И не забыть про объявление глобальной переменной! И не забыть это исправление: моргать индикаторами при ургентах (комментарий)

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

Это что означает? Работает или ты еще не попробовал, но думаешь, что заработает? :)

Работает же. И работает таки хорошо.

И хочу напомнить, что этот код не годится.

Это почему? о_О

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

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

задачей было, чтобы дать мне знать, если экран залочен, есть ли ургенты.

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

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

Поэтому я тебе и дал второй код. Он считает число ургентов и не сбрасывает, пока остаются еще ургенты.

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

тут и с этим проблема. оно рандомно (без ургентов) моргает и скролл и капс локом.

Не совсем понятно. Где «тут»? А где нет такой проблемы? Так, давай я детально расспрошу:

1. С этим кодом проблемы нет со случайным включением?

моргать индикаторами при ургентах (комментарий)

2. А с этим кодом проблема есть?

моргать индикаторами при ургентах (комментарий)

Если да, то выкладывай опять код проблемный сюда и переменную покажи куда вписал. И не забываешь ли ты перегружать Awesome заново после изменений?

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

так работает ещё лучше.

оно иногда давать сбои (рандомное мигание рандомными индикаторами). но я подозреваю, что это таки проблемы ledcontrol, а не awesome.

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

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

перезапускать не забываю.

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

оно иногда давать сбои (рандомное мигание рандомными индикаторами). но я подозреваю, что это таки проблемы ledcontrol, а не awesome.

Очень может быть! И скорее всего. Похоже, что ledcontrol в файле startup.sh загружает какие-то тесты зачем-то и возможно даже какие-то функции вешает на мигания (типа активности сети, например). Там какие-то скриптики есть file.sh* load.sh* netload.sh* ping.sh* ppp.sh* size.sh* startup.sh*, которым он делает source. Надо разобраться с этим файлом. Может, просто там закомментировать ненужное.

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

оно иногда давать сбои (рандомное мигание рандомными индикаторами). но я подозреваю, что это таки проблемы ledcontrol, а не awesome.

Кажется, я понял. Он там какие-то действия ненужные в ledcontrol.conf инициирует. Закомментируй там все нафиг. И посмотри, исчезло ли случайное мигание.

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

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

благодарю за помощь.

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

Не, баш не трогай. В ledcontrol.conf закомментируй. А startup.sh - он читает этот ledcontrol.conf.

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

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

Ты можешь по-другому сделать. Создать свой скрипт. Минимальный. Скажем, pipe.sh. В этот скрипт поместить изменение прав на /var/run/ledd-pipe:

#!/bin/sh

chmod 666 /var/run/ledd-pipe

Затем сделать скрипт исполняемым

chmod 755 /usr/share/ledcontrol/pipe.sh

В конфиг ledd.conf вместо startup.sh прописать:

startup /usr/share/ledcontrol/pipe.sh

Перезапускаем ledd.

И с обновлениями никаких проблем не будет, так как pipe.sh в пакете отсутсвует. Скрипт, кстати, можно и в хомяк положить, так как путь к нему в ledd.conf указывается явно.

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

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

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