Battle Forum

Battle Forum (http://battlefox.rooty.ru/index.php)
-   Программная - Linux (http://battlefox.rooty.ru/forumdisplay.php?f=80)
-   -   Вопросы по Linux (http://battlefox.rooty.ru/showthread.php?t=1179)

SoaT 24.06.2011 12:40

Помогите с bash, в нём полный ноль
Настроил мультим-клавиши громкости на клаве ноута в xmonad. Но вот загвоздка, хочу чтобы на клавишу Mute не только выключался звук, но и при повторном нажатии включался обратно.
Выключить: amixer -c 0 -q set Master mute
Включить: amixer -c 0 -q set Master unmute
Надо сваять if-проверку, как полагаю можно сделать это при помощи команды: amixer get Master | grep "off" -c Она выводит 0 при включеной звуке, и 2 при выключенном.
Задача вроде не сложная, но мои познания в bash на вышеуказанных командах стопяться ): Помогите plz

zhekas 24.06.2011 20:06

Код:

if [ $(amixer get Master | grep "off" -c) == 0 ]; then amixer -c 0 -q set Master mute; else amixer -c 0 -q set Master unmute; fi

SoaT 25.06.2011 00:41

zhekas, чего-то через xmonad.hs не попёрло, хотя перед кавычками косую черту поставил - ошибки пропали, откомпилилось, но не работает
Код:

additionalKeysP`
    [ ("<XF86AudioLowerVolume>",    spawn "amixer -c 0 -q set Master 3%- unmute")
    , ("<XF86AudioRaiseVolume>",    spawn "amixer -c 0 -q set Master 3%+ unmute")
    , ("<XF86AudioMute>",          spawn "if [ $(amixer get Master | grep \"off\" -c) == 0 ]; then amixer -c 0 -q set Master mute; else amixer -c 0 -q set Master unmute; fi")
    ]

Заработало через отдельный файл:
Код:

    , ("<XF86AudioMute>",          spawn "bash /home/soat/.xmonad/xmmute.sh")
А почему без файла не запустилось? zhekas, спасибо большое за if)

zhekas 25.06.2011 11:31

Цитата:

Сообщение от SoaT (Сообщение 484335)
zhekas, чего-то через xmonad.hs не попёрло, хотя перед кавычками косую черту поставил - ошибки пропали, откомпилилось, но не работает
Код:

additionalKeysP`
    [ ("<XF86AudioLowerVolume>",    spawn "amixer -c 0 -q set Master 3%- unmute")
    , ("<XF86AudioRaiseVolume>",    spawn "amixer -c 0 -q set Master 3%+ unmute")
    , ("<XF86AudioMute>",          spawn "if [ $(amixer get Master | grep \"off\" -c) == 0 ]; then amixer -c 0 -q set Master mute; else amixer -c 0 -q set Master unmute; fi")
    ]

Заработало через отдельный файл:
Код:

    , ("<XF86AudioMute>",          spawn "bash /home/soat/.xmonad/xmmute.sh")
А почему без файла не запустилось? zhekas, спасибо большое за if)

он не знает язык, на котором это написано

Добавлено через 10 часов 46 минут
Сейчас посмотрел как у меня организовано
Код:

amixer sset Master,0 1+
amixer sset Master,0 1-
amixer sset Master,0 toggle


SoaT 25.06.2011 17:03

zhekas, точняк так проще и без кастыля) Только у себя ещё на прибавление\убавление unmute оставил. Спасиб, тебе)

SoaT 18.07.2011 12:04

Решил забиндить ещё выскакивание сидюка. По xev - клавиша имеется XF86Eject
Бинд:
Код:

`additionalKeysP`
    [ ("<XF86AudioLowerVolume>",    spawn "amixer sset Master,0 1- unmute")
    , ("<XF86AudioRaiseVolume>",    spawn "amixer sset Master,0 1+ unmute")
    , ("<XF86AudioMute>",          spawn "amixer sset Master,0 toggle")
    , ("<XF86Eject>",              spawn "/usr/bin/eject")
    , ("M-f",                      spawn "~/prog/firefox/firefox")
    ]

Громкость срабатывает, Огнелис тоже, а Eject не хотит. А через консоль по команде eject - выскакивает

zhekas 18.07.2011 12:30

в консоли от обычного пользователя срабатывает?

SoaT 18.07.2011 12:35

Цитата:

Сообщение от zhekas (Сообщение 486031)
в консоли от обычного пользователя срабатывает?

Ага. Идеально)

Компилиться без запиночек, рестатрую - фигу, не хочет хоткей пахать

Добавлено через 2 минуты
xev:
Код:

KeyRelease event, serial 25, synthetic NO, window 0x2000001,
    root 0xac, subw 0x0, time 2330336, (839,592), root:(839,606),
    state 0x10, keycode 170 (keysym 0x1008ff2c, XF86Eject), same_screen YES,
    XKeysymToKeycode returns keycode: 169
    XLookupString gives 0 bytes:
    XFilterEvent returns: False


zhekas 18.07.2011 12:40

А если попробовать забиндить на другую комбинацию клавиш? Например M-e

SoaT 19.07.2011 00:11

Цитата:

Сообщение от zhekas (Сообщение 486035)
А если попробовать забиндить на другую комбинацию клавиш? Например M-e

Блин, а на M-e сработало

zhekas 19.07.2011 00:46

попробуй ипользовать keysum 0x1008ff2c напрямую

SoaT 19.07.2011 02:09

Напрямую, это как? Пробовал повсякому:
Код:

    , ("0x1008ff2c",                          spawn "/usr/bin/eject")
    , ("<0x1008ff2c>",                      spawn "/usr/bin/eject")
    , ("keysum 0x1008ff2c",                spawn "/usr/bin/eject")
    , ("<keysum 0x1008ff2c>",            spawn "/usr/bin/eject")

Не работает ):

zhekas 19.07.2011 09:23

А просто шестнадцатеричное число без кавычек?

SoaT 19.07.2011 15:01

Не, ошибки выдаёт - и с угловыми скобками, и без них.

zhekas 19.07.2011 18:29

Сейчас попробовал вот так
Код:

    , ((0                , 0x1008ff12    ), spawn "amixer sset Master,0 toggle")
всё работает. Правда у меня конфиг без доп. модуля EZConfig

Добавлено через 2 часа 44 минуты
Можно тогда попробовать сделать так

после закрытия квадратной скобки в mykeys добавить
Код:

myKeys1 conf@(XConfig {XMonad.modMask = modm}) = M.fromList $

[ ((0                , 0x1008ff2c    ), spawn "pawn "/usr/bin/eject")]

А затем в в конце фала, в параметре keys добавить
Код:

keys = myKeys <+> myKeys1,
P.S.: Вывеси свой конфиг на посмотреть Например сюда http://pastebin.com/

SoaT 19.07.2011 22:10

zhekas, надо ещё понять что ты мне тут написал ))
http://pastebin.com/Sp1qNUT5

zhekas 19.07.2011 22:16

После того как заканчивается `additionalKeysP` (после ])

добавь две строки
Код:

`additionalKeys`
[ ((0                , 0x1008ff2c    ), spawn "/usr/bin/eject")]

Ну и убери старую строку с eject

SoaT 19.07.2011 22:36

Цитата:

Сообщение от zhekas (Сообщение 486191)
После того как заканчивается `additionalKeysP` (после ])
добавь две строки
Код:
Ну и убери старую строку с eject

Не пропёрло, всё равно

zhekas 19.07.2011 22:39

что-нибудь пишет?

SoaT 19.07.2011 22:56

Не, ничего не пишет. Компилится нормально) А может плагин надо добавить то?

Добавлено через 3 минуты
А, для `additionalKeysP` и `additionalKeys` (без P) один и тот же =)


Текущее время: 15:10. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot