История изменений
Исправление
Im_not_a_robot,
(текущая версия)
:
То, что ты хочешь (я особо не вчитывался), можно реализовать своими скриптами (не знаю, можно ли в гноме назначить Капслок, у меня на Капслоке дополнительный Контрол), причем довольно простыми. На случай, если ты захочешь это делать, могу поделиться гномовской магией для получения текущей раскладки и переключения:
# получить номер текущей раскладки в виде "(true, '0')", где 0 -- номер раскладки
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().currentSource.index"
# установить раскладку с номером 0 или любой другой -- 1, 2, 3
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources[0].activate()"
Магия переключает штатными гномовскими средствами, поэтому без изменений работает хоть в иксах, хоть в вейланде. Например, у меня был скрипт, хотя почему был, он у меня и сейчас меняет раскладку в neovim и vscode-vim (если в Insert mode русский, например, при переключении в Normal mode чтобы был английский, а при переключении в Insert вернулся русский):
$ cat $(which gnome_keyboard_layout)
#!/bin/sh
# Returns the number of current keyboard layout if script is
# running without an argument.
#
# Sets the keyboard layout, if script is running with argument (number
# of keyboard layout).
HELP1="Returns the number of current keyboard layout if script is running without an argument."
HELP2="Sets the keyboard layout, if script is running with argument (number of keyboard layout)."
GET_KL=$(gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().currentSource.index")
if [ "$GET_KL" == "(true, '0')" ]; then
KL=0
elif [ "$GET_KL" == "(true, '1')" ]; then
KL=1
elif [ "$GET_KL" == "(true, '2')" ]; then
KL=2
fi
if [ "$1" == "-h" ]; then
echo $HELP1
echo $HELP2
elif [ "$1" == "0" ]; then
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources[0].activate()"
elif [ "$1" == "1" ]; then
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources[1].activate()"
elif [ "$1" == "2" ]; then
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources[2].activate()"
else
echo $KL
fi
Исправление
Im_not_a_robot,
:
То, что ты хочешь, можно реализовать своими скриптами (не знаю, можно ли в гноме назначить Капслок, у меня на Капслоке дополнительный Контрол), причем довольно простыми. На случай, если ты захочешь это делать, могу поделиться гномовской магией для получения текущей раскладки и переключения:
# получить номер текущей раскладки в виде "(true, '0')", где 0 -- номер раскладки
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().currentSource.index"
# установить раскладку с номером 0 или любой другой -- 1, 2, 3
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources[0].activate()"
Магия переключает штатными гномовскими средствами, поэтому без изменений работает хоть в иксах, хоть в вейланде. Например, у меня был скрипт, хотя почему был, он у меня и сейчас меняет раскладку в neovim и vscode-vim (если в Insert mode русский, например, при переключении в Normal mode чтобы был английский, а при переключении в Insert вернулся русский):
$ cat $(which gnome_keyboard_layout)
#!/bin/sh
# Returns the number of current keyboard layout if script is
# running without an argument.
#
# Sets the keyboard layout, if script is running with argument (number
# of keyboard layout).
HELP1="Returns the number of current keyboard layout if script is running without an argument."
HELP2="Sets the keyboard layout, if script is running with argument (number of keyboard layout)."
GET_KL=$(gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().currentSource.index")
if [ "$GET_KL" == "(true, '0')" ]; then
KL=0
elif [ "$GET_KL" == "(true, '1')" ]; then
KL=1
elif [ "$GET_KL" == "(true, '2')" ]; then
KL=2
fi
if [ "$1" == "-h" ]; then
echo $HELP1
echo $HELP2
elif [ "$1" == "0" ]; then
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources[0].activate()"
elif [ "$1" == "1" ]; then
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources[1].activate()"
elif [ "$1" == "2" ]; then
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources[2].activate()"
else
echo $KL
fi
Исходная версия
Im_not_a_robot,
:
То, что ты хочешь, можно реализовать своими скриптами (не знаю, можно ли в гноме назначить Капслок, а меня на Капслоке дополнительный Контрол), причем довольно простыми. На случай, если ты захочешь это делать, могу поделиться гномовской магией для получения текущей раскладки и переключения:
# получить номер текущей раскладки в виде "(true, '0')", где 0 -- номер раскладки
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().currentSource.index"
# установить раскладку с номером 0 или любой другой -- 1, 2, 3
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources[0].activate()"
Магия переключает штатными гномовскими средствами, поэтому без изменений работает хоть в иксах, хоть в вейланде. Например, у меня был скрипт, хотя почему был, он у меня и сейчас меняет раскладку в neovim и vscode-vim (если в Insert mode русский, например, при переключении в Normal mode чтобы был английский, а при переключении в Insert вернулся русский):
$ cat $(which gnome_keyboard_layout)
#!/bin/sh
# Returns the number of current keyboard layout if script is
# running without an argument.
#
# Sets the keyboard layout, if script is running with argument (number
# of keyboard layout).
HELP1="Returns the number of current keyboard layout if script is running without an argument."
HELP2="Sets the keyboard layout, if script is running with argument (number of keyboard layout)."
GET_KL=$(gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().currentSource.index")
if [ "$GET_KL" == "(true, '0')" ]; then
KL=0
elif [ "$GET_KL" == "(true, '1')" ]; then
KL=1
elif [ "$GET_KL" == "(true, '2')" ]; then
KL=2
fi
if [ "$1" == "-h" ]; then
echo $HELP1
echo $HELP2
elif [ "$1" == "0" ]; then
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources[0].activate()"
elif [ "$1" == "1" ]; then
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources[1].activate()"
elif [ "$1" == "2" ]; then
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources[2].activate()"
else
echo $KL
fi