Сайт | Скачать | Видео | Wiki

Автор Тема: conky - таблица событий мыши - как отследить клик  (Прочитано 4846 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

Оффлайн Dobrov

  • Пользователь
  • **
  • Сообщений: 53
  • Репутация: +6/-0
  • Автор темы
Вопрос в названии темы, но расшифрую:
Для lua_mouse_hook коньки возвращают индекс таблицы событий мыши. В консоли можно видеть только меняющийся индекс таблицы при движении или кликах по окну Conky.
Посоветуйте, как прочитать из этой LUA-таблицы события мыши. (на форуме Арча ничем помочь не смогли…)  :(

конфиг, содержащий функцию перехвата событий мыши запускать так:
conky -c ~/conky/conkyTest.conky
Код
function conky_mouse(...)
io.write("MouseHook "..tostring({...}).."\n")
end

conky.config = {
update_interval = 1.0,
own_window_colour = '4A708C', template0 = '4A708C',
own_window = true, --1920x1080
alignment = 'top_right', gap_x = 2, gap_y = 400, maximum_width = 120, minimum_width = 120,
own_window_hints = 'undecorated,below,skip_taskbar',
default_outline_color = '404040',
draw_outline = true,
double_buffer = true,
use_xft = true,
font = ':pixelsize=10',
lua_load = '~/conky/conkyTest.conky', -- в скрипте: function conky_text(), в блоке [[ ${lua text} ]]
lua_mouse_hook = 'mouse'
}

conky.text = [[
${color PaleGreen}${if_match ${cpu cpu0}>1}${color LimeGreen}${endif}${if_match ${cpu cpu0}>20}${color DeepSkyBlue}${endif}${if_match ${cpu cpu0}>50}${color Yellow}${endif}${if_match ${cpu cpu0}>70}${color DarkOrange}${endif}${cpubar 4}
${voffset -4}${font :pixelsize=10,weight:bold}CPU ${if_match ${cpu cpu0}<10}0${endif}${cpu cpu0}${if_match ${cpu cpu0}<100}%${endif}$alignr ${font}${color LightSkyBlue}${freq_g}GHz${color}
${color plum}${if_match ${running_processes}>0}${color Orange}${endif}Задачи $running_processes$alignr в Фоне $processes${color}
${top name 1}$alignr ${top cpu 1}
${top name 2}$alignr ${top cpu 2}
${top name 3}$alignr ${top cpu 3}
${voffset -3}${outlinecolor ${template0}}${color gray}${hr}${color}${outlinecolor}
${top_mem name 1}$alignr ${top_mem mem_res 1}
${top_mem name 2}$alignr ${top_mem mem_res 2}
]]

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5395
  • Репутация: +143/-1
https://olgmen.blogspot.com/2012/03/conky.html
Интерактивные conky

upd. Как сделать окно Conky интерактивным ... предложение по коду #1038
Сразу не заметил, там юзер удалился/удалили с гитхаба.
« Последнее редактирование: 19 Октябрь 2023, 12:31:25 от krasnyh »

Оффлайн Dobrov

  • Пользователь
  • **
  • Сообщений: 53
  • Репутация: +6/-0
  • Автор темы
krasnyh - спасибо, но это всё я знал несколько лет назад.
Кроме того, собирал коньки, в которых клики поддерживались патчем, без сторонних утилит.
Но автор коньков дополнение кода не принял, а использование xdotool мне не подходит, т.к. это костыль со сторонней утилитой.

В итоге имеем штатную поддержку mouse_hook в конках, но не имеем возможности её использовать! © Кавказская пленница
так выпьем же Так что надеюсь, когда-нибудь найдется способ прочитать эту таблицу событий мыши…

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5395
  • Репутация: +143/-1
Цитата
Так что надеюсь, когда-нибудь найдется способ прочитать эту таблицу событий мыши…
А зачем это надо, вот это отслеживание? Чтобы потом сделать что?

Возможно кто-то еще задавался подобным вопросом и решение есть в сети. Главное составить правильный поисковой запрос.


upd. Всегда считал, что conky, как явление, остались где-то там, с первыми линуксоидами и первыми сборками Linux. Все же у большинства юзеров экран перекрыт полноразмерными окнами приложений в режиме 24/7. И нет альтернативы апплету "Графики мониторинга" в трее панели рабочего стола.

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5395
  • Репутация: +143/-1
lua_mouse_hook = 'mouse'
При проверке с conky-x86_64.AppImage пришлось исправить на lua_mouse_hook = conky_mouse.
commit

Только тода в выхлопе появилось:
Цитата
MouseHook table: 0x563371fede20
MouseHook table: 0x563371fee2c0
MouseHook table: 0x563371ff3160
MouseHook table: 0x563371ff2c20
MouseHook table: 0x563371ff2ad0
MouseHook table: 0x563371fea9c0
MouseHook table: 0x563371fe2da0

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5395
  • Репутация: +143/-1
Можно создать conky/issues на гитхабе. Возможно не будет прямого ответа, так хоть идей накидают.

Оффлайн Dobrov

  • Пользователь
  • **
  • Сообщений: 53
  • Репутация: +6/-0
  • Автор темы
пришлось исправить на lua_mouse_hook = conky_mouse. Только тода в выхлопе появилось:
MouseHook table: 0x563371fede20
Нестандартная сборка, «conky_» к именам функций добавлять нельзя, это запрещает мануал коньков.
Вот я и не понимаю, как вывести данные из этой table: 0x563371fede20 !

И нет альтернативы апплету "Графики мониторинга" в трее панели рабочего стола.
Обычные пользователи об апплетах не знают, а специалист раскритикует и скажет, что у него всё по-другому настроено единственно верным способом. :) От специалистов жду только решения вопросов, заданных в различных темах.

Гуру всех форумов агитируют за Линукс, НО переход на «импортозамещение» тысячекратно перекрыл достижения Linux-фанатов, добавив за несколько лет огромную массу неопытных пользователей. Например, многие дóма установили себе Астра Линукс, а мониторинг Росгвардии покажет, что более 95% ЭВМ в сети теперь на Linux.
Исходя из этих предпосылок, сейчас у бóльшей части Linux-юзеров есть Рабочий стол и меню Пуск, откуда они запускают ярлыки. Гуру сделают себе уникальные рабочие окружения, шокирующие неопытных пользователей, но большинство людей обычно закрывают браузер / другой софт после получения результата, поэтому Рабочий стол часто виден либо вообще перекрывается неполностью.


Cделал виджет, информирующий о нагрузке системы понятным способом. Шкалы/графики на проц/память разным разным цветом в зависимости от процента показывают прогресс нагрузки. (например, на Астра Linux часто наблюдал, как процесс cups отъедает пару гигабайт оперативки)
Использую Lua-скрипт, динамически меняющий вид виджета коньков в зависимости от различных условий.
Дополнительные строки (которых может и не быть) напишут мигающим или просто меняющимся цветом, что например место в хомяке заканчивается, нужный удалённый ресурс недоступен, сеть не работает или какой-либо сервис отключён и прочее…
По клику на conky-виджет в зависимости от условий можно показать всплывающую подсказку или запустить утилиту...
Условия прописаны в начале конфига, чтобы любой мог изменить данные «под себя».
« Последнее редактирование: 20 Октябрь 2023, 03:57:18 от Dobrov »

Оффлайн RoDoN

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 6307
  • Репутация: +141/-0
Условия прописаны в начале конфига
А этот конфиг коньков где можно посмотреть?
Lenovo G500 (i3-3110M, 8 Гб, Intel + Radeon HD 8570)
PRA 16.12 JWM, Runtu 22.04 x64 XFCE

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5395
  • Репутация: +143/-1
В шапке темы. Назвать conkyTest.conky, поместить в ~/conky/, запустить командой conky -c ~/conky/conkyTest.conky.

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

p.s. Если будет использоваться .AppImage, то править конфиг, как я писал выше.

Оффлайн Dobrov

  • Пользователь
  • **
  • Сообщений: 53
  • Репутация: +6/-0
  • Автор темы
А этот конфиг коньков где можно посмотреть?
Пока тестирую, уже почти получилось прикрутить обработку кликов мыши, запуская в LUA команду консоли:
Код
dd bs=1 count=3 if=/dev/input/mice 2>/dev/null | od -vAn -w3 -tx1

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5395
  • Репутация: +143/-1
Re: conky - таблица событий мыши - как отследить клик
« Ответ #10 : 20 Октябрь 2023, 10:46:12 »
Цитата
запуская в LUA команду консоли
Костылями? ) А я все же предложил бы создать вопрос на conky/issues. Может подсказали бы более красивое решение, которое опирается на возможности самого conky. Ну или разрабы подумали бы, что это круто и открывает новые возможности применения, и прикрутили бы в коде новую фичу. Имхо.
« Последнее редактирование: 20 Октябрь 2023, 10:50:13 от krasnyh »

Оффлайн Dobrov

  • Пользователь
  • **
  • Сообщений: 53
  • Репутация: +6/-0
  • Автор темы
Re: conky - таблица событий мыши - как отследить клик
« Ответ #11 : 20 Октябрь 2023, 12:03:17 »
Там с 2020 года эта тема поднималась и результата нет, так что не буду повторять, бесполезно…

Коньки штатно могут запускать команды консоли для мониторинга всяких параметров, так что не считаем это костылём.
Сделал перехват нажатий мыши на окне conky, реакция на нажатия не чаще, чем раз в 1 секунду.
На клик мыши на окне коньков можно повесить любую команду (если двигали мышь, клика не будет).
Преимущество по сравнению с методом xdotool в том, что реагируем на клик ТОЛЬКО на виджете коньков.

Тестируем, пишем отзывы… P.S. пользователь ДОЛЖЕН быть root или в группе input
Код
function conky_sh(c, def, h, o) -- для Астра Linux и Arch разная высота строк
c = c and c or "uname -v"
h = io.popen(c .. " 2>/dev/null")
o = h:read("*a"); h:close()
o = o and o or def
  return o
end
MS, Mtable = nil -- время и событие мыши
function conky_mouse(...)
local t = os.time()
MS = MS and MS or t --между двумя событиями
if Mtable ~= {...} and (t - MS) >= 1 then -- секунда и более между событиями
local s = math.abs(t - MS) -- секунд между двумя событиями мыши
Mtable = {...}; MS = os.time()
local Key = conky_sh("m=($(dd bs=1 count=3 if=/dev/input/mice 2>/dev/null | od -vAn -w3 -tx1)); [[ ${m[1]}${m[2]} == 0000 ]] || m=0; echo -n $m")
if Key == "0" then return end --мышь двигали
io.write(Key.." MClick, sec "..s.."\n")
end
end

conky.config = {
update_interval = 1.0,
own_window_colour = '4A708C', template0 = '4A708C',
own_window = true, --1920x1080
alignment = 'top_right', gap_x = 2, gap_y = 400, maximum_width = 120, minimum_width = 120,
own_window_hints = 'undecorated,below,skip_taskbar',
default_outline_color = '404040',
draw_outline = true,
double_buffer = true,
use_xft = true,
font = ':pixelsize=10',
lua_load = '~/conky/conkyTest.conky', -- в скрипте: function conky_text(), в блоке [[ ${lua text} ]]
lua_mouse_hook = 'mouse'
}

conky.text = [[
${color PaleGreen}${if_match ${cpu cpu0}>1}${color LimeGreen}${endif}${if_match ${cpu cpu0}>20}${color DeepSkyBlue}${endif}${if_match ${cpu cpu0}>50}${color Yellow}${endif}${if_match ${cpu cpu0}>70}${color DarkOrange}${endif}${cpubar 4}
${voffset -4}${font :pixelsize=10,weight:bold}CPU ${if_match ${cpu cpu0}<10}0${endif}${cpu cpu0}${if_match ${cpu cpu0}<100}%${endif}$alignr ${font}${color LightSkyBlue}${freq_g}GHz${color}
${color plum}${if_match ${running_processes}>0}${color Orange}${endif}Задачи $running_processes$alignr в Фоне $processes${color}
${top name 1}$alignr ${top cpu 1}
${top name 2}$alignr ${top cpu 2}
${top name 3}$alignr ${top cpu 3}
${voffset -3}${outlinecolor ${template0}}${color gray}${hr}${color}${outlinecolor}
${top_mem name 1}$alignr ${top_mem mem_res 1}
${top_mem name 2}$alignr ${top_mem mem_res 2}
]]
« Последнее редактирование: 20 Октябрь 2023, 12:06:47 от Dobrov »

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5395
  • Репутация: +143/-1
Re: conky - таблица событий мыши - как отследить клик
« Ответ #12 : 20 Октябрь 2023, 12:28:18 »
Нестандартная сборка, «conky_» к именам функций добавлять нельзя, это запрещает мануал коньков.
Изменения, убирающие добавление _conky, внесены уже с 1 марта 2023 в v1.18.2. Сейчас самая свежая это v1.19.6.

Я не пытаюсь быть занудным, :) но вышевыложенный конфиг не будет работать правильно на новых сборках conky.


Сразу предупрежу, что мое тестирование основывается на .AppImage, скачанного с https://github.com/brndnmtthws/conky/releases.

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5395
  • Репутация: +143/-1
Re: conky - таблица событий мыши - как отследить клик
« Ответ #13 : 20 Октябрь 2023, 13:31:04 »
для Астра Linux
Оффтоп. Выскажись по этой теме Astra Linux: тонкости лицензирования. Действительно ли, нельзя простому юзеру где-то бесплатно скачать свежую Астру, пользоваться ей длительное время и обновляться на свежие релизы? И вообще, сделать ее основной на домашнем компе?

Оффлайн imp

  • cat /dev/ass > /dev/head
  • Ветеран
  • *****
  • Сообщений: 1740
  • Репутация: +50/-1
  • /dev/hands < /dev/ass
Re: conky - таблица событий мыши - как отследить клик
« Ответ #14 : 20 Октябрь 2023, 13:52:53 »
Astra Linux: тонкости лицензирования
Смысл со всех этих сборок? Это, как "ubuntu" в переводе - "я не смог настроить debian"?
Мало того, что "импортозамещением" и не пахнет, так еще и купи. Слов для выражений не хватает.
"Нанотехнологии", блин!
Компьютер имеет то преимущество перед мозгом, что им пользуются.