LINUX.ORG.RU

awesome и функциональные клавиши

 ,


0

1

Понемногу осваиваю awesome wm. Начал настраивать Fn-клавиши написал вот такое

awful.key({ }, "#122", function () awful.spawn.with_shell("pulsemixer --change-volume -5") end)

Громкость не понижается, если вбить ручками команду то громкость уменшится. Пробовал подставлять и #122 и XF86AudioLowerVolume не работает (keycode 122 = XF86AudioLowerVolume NoSymbol XF86AudioLowerVolume ).

Еще написал вот такое

function mute_unmute()
   local audio_mixer = "pulsemixer "
   local command_to_check_mute = audio_mixer .. "--get-mute"
   local mute_status = nil
   awful.spawn.easy_async_with_shell(command_to_check_mute, function (out)
										mute_status = out
   end)
   if mute_status ~= nil then
	  if mute_status == "0" then
		 awful.spawn.with_shell(audio_mixer .. "--mute")
	  else
		 awful.spawn.with_shell(audio_mixer .. "--unmute")
	  end
   else
	  naughty.notify({title="Can not (un)mute", text="some error has occured"})
   end
   
end

awful.key({ }, "XF86AudioMute", function () mute_unmute() end)

И звук тоже не заглушается на сочетание на fn+f1.

Покажите что я делаю неправильно направьте на нужные ссылки

Что-то pulsemixer какая-то порнография, amixer вполне справляется:

awful.key({}, "#121", function () os.execute("amixer -q set Master toggle") end),
awful.key({}, "#122", function () os.execute("amixer -q set Master 2.5%-") end),
awful.key({}, "#123", function () os.execute("amixer -q set Master 2.5%+") end)

sehellion ★★★★★
()

easy_async_with_shell

Т.е. выполнение скрипта пойдёт дальше не ожидая завершения команды? Так работать и не должно.

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

Я смотрел на эту доку и я доверился одному из примеров перед которым написано

awful.spawn.easy_async is the most common as it is good enough for the general “I want to execute a command and do something with the output when it finishes”.

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

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

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

А, про это я и забыл. Спасибо исправлю.

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

Я решил пройтись по миксерам для пульсы. Попробовал еще ponymix и pamixer и ни один из них у меня не работает с хоткеев. Завтра продолжу экспериментировать.

Еще я добавил, для теста, awful.key({ }, "#123", function () naughty.notify({text="test"}) end) и уведомление не приходит. Видимо где то теряются нажатия…

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

os.execute это блокирующий вызов, не рекомендуется его использовать в awesome wm (читай подробное объяснение от одного из разработчиков): https://stackoverflow.com/a/52636847

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

если ты уверен по показаниям xev, что keycode правильный, то возможно xfce power manager или какой-нибудь tray-applet регулировки громкости съедает

опять же, это будет заметно по выводу xev

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

Прошу прощение за долгий ответ, только время появилось.

Я смотрел keycode и по xmodmap -pke и по xev, они показывают одно и тоже. По выводу xev, мне сложно что-то сказать, у меня недостаточно, но в выводе вроде ничего подозрительного нет:

KeyRelease event, serial 36, synthetic NO, window 0x2200001,
    root 0x1a1, subw 0x0, time 1434742, (654,-384), root:(656,549),
    state 0x0, keycode 122 (keysym 0x1008ff11, XF86AudioLowerVolume), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

Видимо и правда какая-то программа съедает регулировку громкости, но проблема в том, что и регулировку яркости монитора тоже что-то съедает. Еще проблема в том, что видимо я вообще делаю что-то не так потому что даже awful.key({"Shift"}, "q", function() naughty.notify({text="test"}) end) не работает, но при этом родные хоткеи awesome работают нормально

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

даже awful.key({«Shift»}, «q», function() naughty.notify({text=«test»}) end) не работает,

видимо, что-то еще в конфиге не так

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

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

actionless ★★★★★
()

Все, разобрался, случайно обнаружил переменную globalkeys и решил в нее добавить нужные мне сочетания и все заработало. В доке к awful.key про globalkeys ничего не было, поэтому и тупил. Оставлю тут ссылку на нужную доку, может кому понадобится https://awesomewm.org/doc/api/documentation/05-awesomerc.md.html#

@actionless большое спасибо!

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

Процесс затянулся, появилось много второстепенных дел. Как говорили многие в том треде, стоило взять godot. Сейчас только пересмыслеваю старый недописанный сценарий: надо переписать его заново. Саму игру делать пока не буду, потому что у меня нет художника, звукаря и мотивации это делать. В общем, отложил в долгий ящик.

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

Не получилось закончить.

Я начинал писать все на сишке+SDL2. Я разделил задачи и думал просто написать отдельные библиотеки (хотя тут наверно коректнее назвать это «модулями»), которые бы делали каждую свою работу и предоставляла некоторые абстракции: одна рисует персонажей, другая запускает музыку, другая дает удобные абстракции для рисования текста в нужных местах и т.д. И я даже написал пару этих модулей, но …

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

Кстати, @deep-purple, ты просил кастовать, если что-то будет по игре.

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

ну так бери годот и воплощай сценарий. поможем чем сможем.

deep-purple ★★★★★
()
Последнее исправление: deep-purple (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.