LINUX.ORG.RU

i3blocks и три раскладки

 , , ,


1

1

Использую три раскладки, которые переключаются нециклично. В данный момент использую следующий способ:

i3blocks.conf

[kbd]
interval=1
command=xset -q|grep LED| awk '{ if (substr ($10,5,1) == 1) print "РУС\nРУС"; else print "ENG\nENG"; }'

но так отображаются только две раскладки.
Как сюда добавить отображение третьей раскладки?

Если не циклично, то можно лишние индикаторы и не ставить, нах они, на loloswitcher 2 раскладки тупо по одному нажатию на шифты, третью модно на капслок.

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

Здорово! Работает! Спасибо! А возможно ли как то цветом разделить раскладки? Раньше я пользовался таким вариантом:

print "РУС\nРУС\n#cb4b16";else print "ENG\nENG\n#268bd2"

а вывод xkblayout-state можно разными цветами раскрасить?

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

Во-первых, substr тут лишний:

А типа grep тут не лишний, ага...

vodz ★★★★★
()

У меня раскладка отображается с помощью такого скрипта:

$ cat `which get_keyboard_layout`
#!/bin/sh

LAYOUT=$(xkblayout-state print "%s" | awk '{print toupper($0)}')

case $LAYOUT in
    "US")
        echo -n "<span foreground='#ECECEC' weight='bold' background='#285577'> "
        echo -n ${LAYOUT}
        echo -n " </span>"
    ;;
    "RU")
        echo -n "<span background='#ECECEC' weight='bold' foreground='#285577'> "
        echo -n ${LAYOUT}
        echo -n " </span>"
esac

В ~/.config/i3blocks/conf

[keyboard-layout]
command=get_keyboard_layout
markup=pango
interval=1
signal=11

В ~/.config/i3/config

exec setxkbmap -layout "us,ru" -option "ctrl:nocaps,grp_led:caps"
bindsym $mod+space exec xkblayout-state set +1; exec pkill -SIGRTMIN+11 i3blocks

Позволяет изменить цвет фона, сделать шрифт жирным и без задержки отображать переключение раскладки. Сюда нетрудно добавить третью раскладку.

Выглядит так: https://imgur.com/a/fGoyR3b

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

Вот это кайф! Мгновенно реагирует, красота! Спасибо! Для раздельного (нецикличного) переключения раскладки так: В ~/.config/i3/config

bindsym ISO_First_Group exec xkblayout-state set 0; exec pkill -SIGRTMIN+11 i3blocks
bindsym shift+ISO_Next_Group exec xkblayout-state set 1; exec pkill -SIGRTMIN+11 i3blocks
bindsym ISO_Prev_Group exec xkblayout-state set 2; exec pkill -SIGRTMIN+11 i3blocks

обращаю внимание, счёт раскладок начинается с нуля.

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

Мгновенно реагирует, красота!

То же самое можно сделать и с громкостью, если у тебя еще не сделано:

i3/config

bindsym $mod+KP_Up exec pamixer -i 5; exec pkill -SIGRTMIN+10 i3blocks
bindsym $mod+KP_Down exec pamixer -d 5; exec pkill -SIGRTMIN+10 i3blocks
bindsym $mod+KP_Home exec pamixer --toggle-mute; exec pkill -SIGRTMIN+10 i3blocks

i3blocks/config

[volume]
label=🔊
instance=Master
interval=1
signal=10
Im_not_a_robot ★★★★★
()
28 ноября 2019 г.
Ответ на: комментарий от Im_not_a_robot

Скажи, а сейчас у тебя этот скрипт работает?
Насколько я понял, в i3blocks что-то изменилось, и теперь этот скрипт отказывается работать. Не могу найти с чем это связано.
А ты разобрался?

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

В i3blocks действительно кое-что изменилось, скрипты с выводом без символа новой строки «\n» перестали работать. Нужно просто его добавить. Если говорить о моем скрипте выше, то сейчас он у меня выглядит так:

$ cat `which get_keyboard_layout_eol` 
#!/bin/sh

LAYOUT=$(xkblayout-state print "%s" | awk '{print toupper($0)}')

case $LAYOUT in
    "US")
        echo -n "<span foreground='#ECECEC' weight='bold' background='#285577'> "
        echo -n ${LAYOUT}
        echo " </span>"
    ;;
    "RU")
        echo -n "<span background='#ECECEC' weight='bold' foreground='#285577'> "
        echo -n ${LAYOUT}
        echo " </span>"
esac
Im_not_a_robot ★★★★★
()
Последнее исправление: Im_not_a_robot (всего исправлений: 1)
Ответ на: комментарий от Dreamdrawer

Рабочий вариант для трёх раскладок:

#!/bin/sh

LAYOUT=$(xkblayout-state print "%n" | awk '{print toupper($0)}')

case $LAYOUT in
    "LAT")
        echo -n "<span foreground='#268bd2' weight='bold' background='#00181F'> "
        echo -n ${LAYOUT}
        echo "</span>"
	;;
    "CYR")
        echo -n "<span foreground='#cb4b16' weight='bold' background='#00181F'> "
        echo -n ${LAYOUT}
        echo "</span>"
	;;
    "MOD")
        echo -n "<span foreground='#00181F' weight='bold' background='#859900'> "
        echo -n ${LAYOUT}
        echo "</span>"
esac
Dreamdrawer
() автор топика
Последнее исправление: Dreamdrawer (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.