aboutsummaryrefslogtreecommitdiff
path: root/segments/xkb_layout.sh
diff options
context:
space:
mode:
authorCody Hiar <chiar@hybridforge.com>2015-08-12 12:06:23 -0600
committerCody Hiar <chiar@hybridforge.com>2015-08-12 12:06:23 -0600
commit07fc2644a237187dd4c5680e88f4adadbf533603 (patch)
treebb6335e180df48c5a6f0b893312857d36ad470f7 /segments/xkb_layout.sh
Initial commit of the working files
Diffstat (limited to 'segments/xkb_layout.sh')
-rwxr-xr-xsegments/xkb_layout.sh32
1 files changed, 32 insertions, 0 deletions
diff --git a/segments/xkb_layout.sh b/segments/xkb_layout.sh
new file mode 100755
index 0000000..c8f38c1
--- /dev/null
+++ b/segments/xkb_layout.sh
@@ -0,0 +1,32 @@
+# Print the currently used keyboard layout
+# This depends on a specifically developed program which prints the group id of
+# the currently used layout.
+# I developed the simple program myself with some guidance as I was unable to
+# find anything already developed.
+# Some people might suggest:
+# $ setxkbmod -query -v | awk -F "+" '{print $2}'
+# this will only work if you have set up XKB with a single layout which is true
+# for some.
+
+# This script will print the correct layout even if layout is set per window.
+# Exit if platform is not linux as this script is dependant on X11
+
+run_segment() {
+ if ! shell_is_linux; then
+ return 1
+ fi
+
+ cd "$TMUX_POWERLINE_DIR_SEGMENTS"
+ if [ ! -x "xkb_layout" ]; then
+ make clean xkb_layout &>/dev/null
+ fi
+
+ if [ -x ./xkb_layout ]; then
+ cur_layout_nbr=$(($(./xkb_layout)+1));
+ cur_layout=$(setxkbmap -query | grep layout | sed 's/layout:\s\+//g' | \
+ awk -F ',' '{print $'$(echo "$cur_layout_nbr")'}')
+ echo "⌨ $cur_layout"
+ else
+ return 1
+ fi
+}