LINUX.ORG.RU

История изменений

Исправление flappyright, (текущая версия) :

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

Можешь предложить свой вариант. Буду благодарен.

Для переключения использую:

setxkbmap us,ru -option grp:caps_toggle

Итоговый вариант:

killall kbdd 2>/dev/null
kbdd >/dev/null || exit 1

N=$( dbus-send --print-reply=literal --dest=ru.gentoo.KbddService\
    /ru/gentoo/KbddService ru.gentoo.kbdd.getCurrentLayout 2>/dev/null |\
    sed -un 's/^.*uint32 //p' )
LAYOUT=$( dbus-send --print-reply=literal --dest=ru.gentoo.KbddService \
    /ru/gentoo/KbddService ru.gentoo.kbdd.getLayoutName uint32:$N )

if [[ $LAYOUT = "   English (US)" ]]; then
  echo "АНГ"
else
  echo "РУС"
fi
Нужен для вывода в i3blocks. Interval=once. К капсу привязан pkill -RTMIN+.

Ресурсы не жрет, но это лютый костыль, признаю.

Исходная версия flappyright, :

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

Можешь предложить свой вариант. Буду благодарен.

Для переключения использую:

setxkbmap us,ru -option grp:caps_toggle

Итоговый вариант:

killall kbdd 2>/dev/null
kbdd >/dev/null || exit 1

N=$( dbus-send --print-reply=literal --dest=ru.gentoo.KbddService\
    /ru/gentoo/KbddService ru.gentoo.kbdd.getCurrentLayout 2>/dev/null |\
    sed -un 's/^.*uint32 //p' )
LAYOUT=$( dbus-send --print-reply=literal --dest=ru.gentoo.KbddService \
    /ru/gentoo/KbddService ru.gentoo.kbdd.getLayoutName uint32:$N )

if [[ $LAYOUT = "   English (US)" ]]; then
  echo "АНГ"
else
  echo "РУС"
fi
Нужен для вывода в i3blocks. Interval=once. К капсу привязан pkill -RTMIN+.

Ресурсы не жрет, но это лютый костыль, признаю.