aboutsummaryrefslogtreecommitdiff
path: root/segments/xkb_layout.sh
blob: c8f38c1a3d187d1020eb52366ba7c4c7faa2a716 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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
}