diff --git a/dot_local/bin/executable_dotool b/dot_local/bin/executable_dotool index 94a94b7..f629a24 100644 --- a/dot_local/bin/executable_dotool +++ b/dot_local/bin/executable_dotool @@ -1,7 +1,8 @@ #!/bin/sh -current_layer=$(timeout 0.1s keyd listen | grep -m 1 '^/' | sed 's/^\///') -if [ "$current_layer" = "qwerty" ]; then - current_layer="basic" -fi +current_layer=$(get_plasma_keyboard_layout) +#current_layer=$(timeout 0.1s keyd listen | grep -m 1 '^/' | sed 's/^\///') +#if [ "$current_layer" = "qwerty" ]; then +# current_layer="basic" +#fi DOTOOL_XKB_LAYOUT=us DOTOOL_XKB_VARIANT=$current_layer /usr/bin/dotool "$@" diff --git a/dot_local/bin/executable_get_plasma_keyboard_layout b/dot_local/bin/executable_get_plasma_keyboard_layout new file mode 100644 index 0000000..da402b8 --- /dev/null +++ b/dot_local/bin/executable_get_plasma_keyboard_layout @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 + +import dbus + +def get_keyboard_info(): + bus = dbus.SessionBus() + keyboard = bus.get_object('org.kde.keyboard', '/Layouts') + keyboard_interface = dbus.Interface(keyboard, dbus_interface='org.kde.KeyboardLayouts') + + layouts_list = keyboard_interface.getLayoutsList() + current_layout_index = keyboard_interface.getLayout() + + return layouts_list, current_layout_index + +def set_keyboard_layout_env(layouts_list, current_layout_index): + current_layout = layouts_list[current_layout_index] + _, _, name = current_layout + + if "Dvorak" in name: + keyboard_layout = "dvorak" + elif "US" in name: + keyboard_layout = "basic" + else: + keyboard_layout = "unknown" + + return keyboard_layout + +if __name__ == "__main__": + layouts_list, current_layout_index = get_keyboard_info() + keyboard_layout = set_keyboard_layout_env(layouts_list, current_layout_index) + print(keyboard_layout)