#!/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
если работает просто из консоли - засуньте в автостарт. Возможно нужно константы на ваши раскладки сменить.
проверяйте свою запись скрипта - после xval не должно быть пробела, сразу должен быть знак ‘=’, иначе присваивание переменной xval превращается в вызов несуществующей команды xval (как в вашем случае)!
Если посмотрищь найденый поиском ответ на аналогичный вопрос, то там предлагается несколько путей, где может находиться “cursor-theme”.
у меня работает gsettings get org.gnome.desktop.interface cursor-theme
о приметиф учившый уроки граомте обученый и толку только сваю ватную линию гнуть на лоре про корабли чо бараздят просторы, ага все понятно, я тебя услышал будут еще пожелания пешы не стисняйся, интересно узнать чо вы еще не перевелись
когда я тыкаю на поле ввода то обычно курсор перед глазами и мне показалось что так удобнее выйдет если есть возможность такая видеть какая раскладка по цвету курсора
Вам надо искать способ и команду в вашем DE которая меняет тему курсора на лету. Предложенная команда подходит лишь для гнома.
И рассмотрите однозначное переключение раскладки tapper например, тогда индикатор не нужен вообще
#!/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
это да но если я не ощутю это на собственной шкуре так сказать я не смогу это осознать мосгом и меня все время станет вести в эту сторону а это немного отвлекает, но спасибо за комментарий я его вспомню потом и сделаю выводы о его ценности однако в данный момент я застрял на том что
xset -q | grep -A 0 'LED' | cut -c59-67
дает мне одно и тоже значение не зависимо от раскладки
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):
это наверное из за snap приложений, если я меняю раскладку когда их использую то значения xset меняются на 00000001 и 00001001 и теперь скрипт пару раз сработал и показал лог
STARTING WITH: 'DMZ-White'
CHANGING TO: 'DMZ-Black'
CHANGING TO: 'DMZ-White'
CHANGING TO: 'DMZ-Black'
но я не понял как это получилось, но курсор поменялся
переключение не работает если я в эмуляторе терминала, который не snap, но если я переключаю в snap приложении например браузер и потом смотрю то значения меняются
я для определения текущей кодировки (и программного переключения кодировки в скриптах) использую утилиту xkb-switch - https://github.com/grwlf/xkb-switch
наверное ее еще нет в репозиториях ubuntu, я пользуюсь только тем что там есть, потому что не умею код читать хорошо и я понимаю что у тебя 5 звезд и ты вызываешь доверие и спасибо за этот комментарий однако я хочу понять этот вопрос, вроде бы все обязано работать но почему xset не реагирует на индикатор и это хорошая мысль использовать альтернативную утилиту, но обязательно чтобы эта утилита оказалась мне доступна из https://mirrors.kernel.org/
у вас переключение не через xkb потому и не реагирует, вы можете напрямую считывать состояние светодиода из /sys/class/leds * brightness
например у меня состояние numlock cat '/sys/class/leds/input2::numlock/brightness' 1 горит 0 не горит
смотрите нужный вам в /sys/class/leds и считывайте его состояние в скрипте
#!/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
это сработало, спасибо, но для вступления изменений в силу требуется движение курсора, а в остальном все круто, теперь только поменять значки состояния курсора для поля ввода наверное и вертикальную полоску заменить на флаг например и станет совсем прикольно
отличная ценность, пришло время вспомнить, это гораздо прикольнее чем индикатор, пользуюсь несколько минут и ощущаю всю мощь этого действа
мышиный курсор прячется
у меня не прячется а в данный момент находится в поле в виде буквы I, вот как придумать как эту букву на что то более различимое поменять это вопрос, наверное картинки в директории заменить, потому что действительно черный I от белого в теме DMZ почти не отличаются
Кончай ерундой страдать. Ты можешь как угодно менять курсор мыши (кстати, он может располагаться очень далеко от поля ввода), или текстовый курсор, или цвет поля ввода — ничего не поможет. 24 года назад дядька Джеф Раскин разжевал (в книге The Humane Interface), что проблема не в индикаторе раскладки, а в переключателе (англ. toggle). Убери саму проблему — переключатель — и индикатор тебе не понадобится. В случае с раскладкой клавиатуры достаточно заменить переключатель включателями: одна клавиша включает латиницу, вторая клавиша включает кирилицу. Всё.
Не я. Я всего лишь «на своей шкуре» убедился, что включатели раскладок заруливают переключатели.
займусь на днях
Здесь большое значение имеют клавиши. Некоторые пользуют Caps Lock и Shift+Caps Lock и довольны, но лично я рекомендую использовать контролы (левый контрол включает латинскую раскладку, правый — русскую) или шифты.
Это способствует быстрой выработке привычки нажимать соответствующий контрол перед набором на соответствующем языке. У меня нет обоснования для этого, но что-то в этом есть: одно и то же действие (нажатие на контрол), выполняемое разными руками (левой и правой).
Элементарно, куда вписать смену курсора, думаю, разберешься. Ну и и с порядком языков тоже.
#!/bin/bash
dbus-monitor --session --monitor "type=signal,interface=org.kde.KeyboardLayouts,member=layoutChanged,path=/modules/keyboard" |
while read -r line; do
if [ "$line" = "uint32 0" ]; then
echo "ENG";
fi
if [ "$line" = "uint32 1" ]; then
echo "RUS";
fi
done
кстати бро, может ты помнишь (если об этом есть в книге) какие клавиши используются для случая двух раскладок
В штатных конфигах xkb есть такие варианты:
Caps Lock (to first layout), Shift+Caps Lock (to last layout)
Ctrl+Left Win to first layout, Ctrl+Menu to second layout
Есть и такой вариант:
Left Ctrl (to first layout), Right Ctrl (to last layout)
Но очень много шансов что при его выборе у тебя перестанут работать все комбинации с контролом.
Чтобы иметь возможность включать раскладки одной клавишей-модификатором (контрол или шифт), штатных средств xkb недостаточно. Используй таппер. Правда, пакеты давно не обновлялись, придётся собирать самому.
я кроме caps ничего придумать не могу, и на лаптопе не очень много кнопок
Да, клавиатуры лаптопов обычно ущербные, на многих только один контрол. Используй шифты.