LINUX.ORG.RU

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

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

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

хочу, чтобы, если окно послылает WMу моргание окном,

А это надо подумать. Надо подумать, как перехватить событие об установке urgency hint. Если штатных средств у WM нет (наверняка), то надо городить что-нибудь.

Тебе для какой-то конкретной программы или для всех вообще такое поведение нужно? Может, у программы этой есть какие-то средства?

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

Там на urgent хук вешается. А на этот хук, в принципе, что угодно можно зацепить. Точнее сказать не могу, под рукой кода нет.

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

А, ну, собственно, ты уже сам нашел.

Ага. Эти сигнальчики - полезная штучка. Хотя я сам на IceWM. Про Awesome ничего не знал совершенно. :)

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

Это, если я не ошибаюсь, не будет работать в иксах. Только в голой консоли. Или работает?

Проверил, работает в X. Зажигает. Надо только tty указать, на котором X сидит. Минус xset и setleds в том, что они дают только зажечь и погасить. Для постоянно мигания надо писать уже скриптик, который их постоянно запускает (особо не айс). И надо иметь возможность выключить мигание потом. Уж лучше через демоны blinkd (blink) или ledd (ledcontrol).

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

благодарю. почитаю.

по результатам костылестроения отпишусь интересующимся.

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

есть где об этом подробнее прочитать? под версию 3.4.15.

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

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

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define on  1
#define off 0


int pin_1_status=off;
int pin_2_status=off;
int pin_3_status=off;

#define num    1
#define caps   2
#define scroll 3


void pin_on(int number_pin, int on_off, unsigned long long int time)
{

    if(on_off!=on && on_off != off && number_pin<1 && number_pin>3)
    {
        printf("[ERROR] function pin_on_off(); use param off=0 or on=1! use pin 1 or 2 or 3\nQuit\n");
        exit(1);
    };


    switch(number_pin)
    {
    case num :
        if(on_off==on && pin_1_status==off)
        {

            system("setleds -L +num  < /dev/tty7;");
            pin_1_status=on;

            if(time!=0)
            {
                usleep(time);

                system("setleds -L -num  < /dev/tty7;");
                pin_1_status=off;

                time=0;
            };

        };

        if(on_off==off)
        {
            system("setleds -L -num  < /dev/tty7;");
            pin_1_status=off;

        };
        break;

    case caps :
        if(on_off==on && pin_2_status==off)
        {
            system("setleds -L +caps  < /dev/tty7;");
            pin_2_status=on;

            if(time!=0)
            {
                usleep(time);

                system("setleds -L -caps  < /dev/tty7;");
                pin_2_status=off;

                time=0;
            };

        };

        if(on_off==off)
        {
            system("setleds -L -caps  < /dev/tty7;");
            pin_2_status=off;

        };
        break;

    case scroll :
        if(on_off==on && pin_3_status==off)
        {
            system("setleds -L +scroll  < /dev/tty7;");
            pin_3_status=on;

            if(time!=0)
            {
                usleep(time);

                system("setleds -L -scroll  < /dev/tty7;");
                pin_3_status=off;

                time=0;
            };

        };

        if(on_off==off)
        {
            system("setleds -L -scroll  < /dev/tty7;");
            pin_3_status=off;
        };
        break;

    default :
        break;

    };


}





Ну и цветомузыка, ползунок :)

#define PERIOD  1000000 // 1 sec


int main()
{



   for(int i=60; i; i--)
   {
     pin_on(1, 1 , PERIOD);
     pin_on(2, 1 , PERIOD);
     pin_on(3, 1 , PERIOD);

   };

return 0;
};

Теперь надо как-то ловить событие «Мигания окна» и мигать как хочется клаводиодами.

Я вообще извращался, я к клаве подключал реле к scroll и у меня скрипт врубал аквариум утром и вырубал вечером по крону :)

Извращенность конечно :)

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

Я конечно понимаю, что твой бег на костылях самый лучший, но он остаётся бегом на костылях.

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

Раз уж ты на Си спустился, то можно было не извращаться с вызовом setleds, а открыть /dev/tty7, получив fd, то есть open(«/dev/tty7», O_WRONLY), а потом ioctl(fd, 0x4b32, 0/1) через паузу. Должно мигать.

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

Это было давно, а так да ты прав. Но я всё же не брезгую вызовами popen, system. Да и вообще активно использую «C» как скриптовый язык, не вижу в этом ничего плохого.

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

Я уже подзабыл, так как blink использую. Сейчас установил, кое что вспоминаю. Помню, что там заковырка одна была.

Значит так. При старте стартует ledd и создает pipe. По умолчанию /var/run/ledd-pipe (конфигурация в /etc/ledd.conf), через этот pipe клиентская программа ledcontrol или графическая gled может закидывать всякие разные команды. Команды смотри в документации. Проблема только одна - pipe создается с правами 660 для root:root. Это значит, что без sudo ничего происходить не будет. Вариантов выхода два:

1. Поменять права на pipe после создания. Демон, когда запускается, то запускает скрипт /usr/share/ledcontrol/startup.sh. В скрипт вписать в самое начало смену группы:

chgrp <твое имя пользователя> /var/run/ledd-pipe

2. Настроить sudo (лучше, на мой взгляд) следующим образом в /etc/sudoers:

<твой пользователь>   ALL = (root) NOPASSWD: /usr/bin/ledcontrol

Это позволит без пароля вызвать sudo ledcontrol как от root.

В blink этой траблы с правами нет вообще. Но в новом Debian blink не идет. Надо брать и пересобирать.

Когда сделаешь, то для примера запусти от пользователя своего:

sudo ledcontrol set s5 blink 900 500

Пароль попросить не должен, должен помигать Scroll Lock.

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

У меня sudo не стоит вообще. а пользовать ledd и ledcontrol юзер не может. придется искать другой вариант. на этот придется сьишком много костылей городить.

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

Скрипт startup.sh как раз и предназначен для каких-то действий при старте и для его редактирвоания. Я понимаю, что отсутсвие опции в ledd.conf, указывающей на то, с какими правами надо создать pipe, это плохо. Ну раз нет, то что делать? Можешь создать группу led, например, добавить в нее себя, и у /var/run/ledd-pipe сменить группу на led.

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

Ок, завтра поковыряю, а то уже из-под одеяла, с мобилки. благодарю за.

ОК. Я только что попробовал через подмахивание группы в startup.sh. У меня работает от пользователя.

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

Тоже хороший костыль. правда, до первого апгрейда/реинсталла.

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

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

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

Как вариант: можно дать всем пользователям доступ, сменив права на 666.

С разрабами, да, надо бы потереть. Потому что возникают неудобства. Как минимум можно сделать опцию для группы, а администратор компьютера решит, кому давать доступ к лампочкам. Либо доступ всем (тогда не надо при инсталляции создавать группу), но тогда любой сможет дойти до лампочки. :)

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

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

мне кажется, это самый верный вариант, а то,

доступ всем [...], но тогда любой сможет дойти до лампочки.

всякие онанимусы будут мне тут моргать.

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

https://github.com/nathan-osman/Webmail-Notifier-Linux-Driver

http://daniel-git.github.io/usblamp/

Еще есть питоновкая либа на гуглокоде, но сейчас чего-то не могу нагуглить. В любом случае под GNU\Linux с этой штукой работать гораздо удобнее, чем под оффтопом.

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

что там должно быть?

от рута тот же результат.

ledd запущен? Без него ничего не будет.

В /var/run должен быть создан ledd-pipe - он используется программой ledcontrol по умолчанию. На всякий случай - содержимое ledd.conf без комментариев:

tty /dev/console
fixtty /dev/tty[1-6]
daemon TRUE
log syslog
pipefile /var/run/ledd-pipe
startup /usr/share/ledcontrol/startup.sh
pidfile /var/run/ledd.pid

Из man ledcontrol

 ledcontrol  can  be used to set the LED states of ledd(8) from the com‐
       mand line or scripts. It searches the default (or given)  configuration
       file  for pipefile parameters and chooses a suitable pipe through which
       to give ledd the command.
Zubok ★★★★★
()
Ответ на: комментарий от alozovskoy

а есть что-нибудь похожее, только не столь громоздкое? а как мини-приемник от УСБ-мыши, к примеру, который еле видно из УСБ? Подумалось, что проще один раз вставить в ноутбук и забыть, а не вынимать при упаковке его (ноута) в сумку.

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

я это упустил. пардон.

ладно, блинк работает, но как его отключить правильно?

ledcontrol set c5 normal

так отключилось, но капс перед блинком был офф, а после команды выше вкл, пока капсом не перещёлкнул.

то ли я туплю, то ли...

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

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

BUGS
       Some  anomalies  may be encountered with the LEDs in X. Namely, setting
       the LEDs to a normal state does not change the LED state. This  can  be
       overcome  by  pressing  some Lock-key twice. Normally you don't want to
       set the LEDs back to their normal state, so this shouldn't be much of a
       problem.

Документированная бага - это фича. Я специально использовал лампочку (Scroll Lock), которую для других целей не использую, поэтому она у меня всегда выключена изначально. Уточняется, что проблема в X проявляется. Остается открытым вопрос, можно ли надежно исправить, не залезая в код. Надо подумать. Ну, это если это очень важно, конечно.

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

у меня все лампочки уже заняты.

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

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

капс — для капса, которым я тоже нередко пользуюсь,

Капсишь на форумах? :) Что за паттерн использования Caps Lock как Caps Lock в наши дни? :)

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

Капсишь на форумах?

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

Что за паттерн использования Caps Lock как Caps Lock в наши дни?

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

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

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

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

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

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