LINUX.ORG.RU


#!/bin/bash

current=$(gsettings get org.mate.peripherals-mouse cursor-theme)
echo "STARTING WITH: $current"

while [ "true" ]; do

    xval=$(xset -q | grep -A 0 'LED' | cut -c59-67)

    if [ "$xval" == "00000002" ]; then

        if [ "$current" != "'DMZ-Black'" ]; then

            current="'DMZ-Black'"
            echo "CHANGING TO: $current"
            gsettings set org.mate.peripherals-mouse cursor-theme $current

        fi

    elif [ "$xval" == "00001002" ]; then

        if [ "$current" != "'DMZ-White'" ]; then

            current="'DMZ-White'"
            echo "CHANGING TO: $current"
            gsettings set org.mate.peripherals-mouse cursor-theme $current

        fi

    fi

    sleep 1 # one-second interval between each re-check

done

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

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

Command ‘xval’ not found

проверяйте свою запись скрипта - после xval не должно быть пробела, сразу должен быть знак ‘=’, иначе присваивание переменной xval превращается в вызов несуществующей команды xval (как в вашем случае)!

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

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

я немного не могу понять о каких константах ты сказал тут

Возможно нужно константы на ваши раскладки сменить.

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

для обоих макетов только 00001001

не понятно, ранее вы писали, что у вас

XKBOPTIONS=«grp:caps_toggle,grp_led:caps»

что означает - при переключении раскладок меняется состояние светодиода Caps. Именно это ловится при вызове команды xset -q

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

это ловится, я понял я определил значения это 00000000 и 00000001 однако при выполнении этого

gsettings set org.gnome.desktop.peripherals.mouse cursor-theme DMZ-White

в эмуляторе терминала пишет

No such key “cursor-theme”
adeptubuntovec
() автор топика
Ответ на: комментарий от adeptubuntovec

часто перекрывается рукой на буке

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

лично я нажимаю букву С и сразу становится понятно какая раскладка.

TPPPbIHDELj
()
Ответ на: комментарий от adeptubuntovec

No such key “cursor-theme”

Если посмотрищь найденый поиском ответ на аналогичный вопрос, то там предлагается несколько путей, где может находиться “cursor-theme”.
у меня работает gsettings get org.gnome.desktop.interface cursor-theme

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

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

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

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

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

Вам надо искать способ и команду в вашем DE которая меняет тему курсора на лету. Предложенная команда подходит лишь для гнома. И рассмотрите однозначное переключение раскладки tapper например, тогда индикатор не нужен вообще

anonymous
()
Ответ на: комментарий от anonymous
#!/bin/bash

current=$(gsettings get org.gnome.desktop.interface cursor-theme)
echo "STARTING WITH: $current"

while [ "true" ]; do

    xval=$(xset -q | grep -A 0 'LED' | cut -c59-67)

    if [ "$xval" == "00000000" ]; then

        if [ "$current" != "'DMZ-Black'" ]; then

            current="'DMZ-Black'"
            echo "CHANGING TO: $current"
            gsettings set org.gnome.desktop.interface cursor-theme $current

        fi

    elif [ "$xval" == "00000001" ]; then

        if [ "$current" != "'DMZ-White'" ]; then

            current="'DMZ-White'"
            echo "CHANGING TO: $current"
            gsettings set org.gnome.desktop.interface cursor-theme $current

        fi

    fi

    sleep 1 # one-second interval between each re-check

done
adeptubuntovec
() автор топика
Ответ на: комментарий от aol

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

xset -q | grep -A 0 'LED' | cut -c59-67

дает мне одно и тоже значение не зависимо от раскладки

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

этот реагирует в этом то и странность, а

xset -q

вообще не реагирует, стабильно

Keyboard Control:
  auto repeat:  on    key click percent:  0    LED mask:  00000000
  XKB indicators:
    00: Caps Lock:   off    01: Num Lock:    off    02: Scroll Lock: off
    03: Compose:     off    04: Kana:        off    05: Sleep:       off
    06: Suspend:     off    07: Mute:        off    08: Misc:        off
    09: Mail:        off    10: Charging:    off    11: Shift Lock:  off
    12: Group 2:     off    13: Mouse Keys:  off
  auto repeat delay:  500    repeat rate:  33
  auto repeating keys:  00ffffffdffffbbf
                        fadfffefffedffff
                        9fffffffffffffff
                        fff7ffffffffffff
  bell percent:  50    bell pitch:  400    bell duration:  100
Pointer Control:
  acceleration:  2/1    threshold:  4
Screen Saver:
  prefer blanking:  yes    allow exposures:  yes
  timeout:  0    cycle:  0
Colors:
  default colormap:  0x3f    BlackPixel:  0x0    WhitePixel:  0xffffff
Font Path:
  built-ins
DPMS (Display Power Management Signaling):

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

это наверное из за snap приложений, если я меняю раскладку когда их использую то значения xset меняются на 00000001 и 00001001 и теперь скрипт пару раз сработал и показал лог

STARTING WITH: 'DMZ-White'
CHANGING TO: 'DMZ-Black'
CHANGING TO: 'DMZ-White'
CHANGING TO: 'DMZ-Black'

но я не понял как это получилось, но курсор поменялся

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

переключение не работает если я в эмуляторе терминала, который не snap, но если я переключаю в snap приложении например браузер и потом смотрю то значения меняются

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

наверное ее еще нет в репозиториях ubuntu, я пользуюсь только тем что там есть, потому что не умею код читать хорошо и я понимаю что у тебя 5 звезд и ты вызываешь доверие и спасибо за этот комментарий однако я хочу понять этот вопрос, вроде бы все обязано работать но почему xset не реагирует на индикатор и это хорошая мысль использовать альтернативную утилиту, но обязательно чтобы эта утилита оказалась мне доступна из https://mirrors.kernel.org/

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

у вас переключение не через xkb потому и не реагирует, вы можете напрямую считывать состояние светодиода из /sys/class/leds * brightness например у меня состояние numlock cat '/sys/class/leds/input2::numlock/brightness' 1 горит 0 не горит смотрите нужный вам в /sys/class/leds и считывайте его состояние в скрипте

anonymous
()
Ответ на: комментарий от anonymous
#!/bin/bash

current=$(gsettings get org.gnome.desktop.interface cursor-theme)
echo "STARTING WITH: $current"

while [ "true" ]; do

    xval= cat /sys/class/leds/input4\:\:capslock/brightness

    if [ "$xval" == "1" ]; then

        if [ "$current" != "'DMZ-Black'" ]; then

            current="'DMZ-Black'"
            echo "CHANGING TO: $current"
            gsettings set org.gnome.desktop.interface cursor-theme $current

        fi

    elif [ "$xval" == "0" ]; then

        if [ "$current" != "'DMZ-White'" ]; then

            current="'DMZ-White'"
            echo "CHANGING TO: $current"
            gsettings set org.gnome.desktop.interface cursor-theme $current

        fi

    fi

    sleep 1 # one-second interval between each re-check

done

лог скрипта меняется хорошо

STARTING WITH: 'DMZ-White'
0
0
0
0
1
1
0
0
1

но курсор не меняется

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

xval=$(cat /sys/class/leds/input4::capslock/brightness)

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

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

отличная ценность, пришло время вспомнить, это гораздо прикольнее чем индикатор, пользуюсь несколько минут и ощущаю всю мощь этого действа

мышиный курсор прячется

у меня не прячется а в данный момент находится в поле в виде буквы I, вот как придумать как эту букву на что то более различимое поменять это вопрос, наверное картинки в директории заменить, потому что действительно черный I от белого в теме DMZ почти не отличаются

adeptubuntovec
() автор топика

Кончай ерундой страдать. Ты можешь как угодно менять курсор мыши (кстати, он может располагаться очень далеко от поля ввода), или текстовый курсор, или цвет поля ввода — ничего не поможет. 24 года назад дядька Джеф Раскин разжевал (в книге The Humane Interface), что проблема не в индикаторе раскладки, а в переключателе (англ. toggle). Убери саму проблему — переключатель — и индикатор тебе не понадобится. В случае с раскладкой клавиатуры достаточно заменить переключатель включателями: одна клавиша включает латиницу, вторая клавиша включает кирилицу. Всё.

debugger ★★★★★
()