Xmobar - Keyboard layout

Από Κοινότητα Ελεύθερου Λογισμικού ΕΜΠ
Μετάβαση σε: πλοήγηση, αναζήτηση

Σε αυτό το άρθρο δείχνουμε δύο πολύ απλά shell script, τα οποία θα μας "δείχνουν" τη "γλώσσα" που έχουμε στο πληκτρολόγιο μας κάθε στιγμή, και πως περνάμε το αποτέλεσμα στο Xmobar ώστε να βλέπουμε ανα πάσα στιγμή σε τί keyboard layout είμαστε. Το πρώτο script θα ενσωματωθεί στο Xmobar τροποποιώντας το 'xmobarrc' και το δεύτερο στο Xmonad τροποποιώντας το ~/.xmonad/xmonad.hs


1ο script - show_keyboard_layout

Το παρακάτω script θα ενσωματωθεί στο ".xmobarrc". Xρησιμοποιεί την εντολή setxkbmap με παράμετρο -print για να μας δώσει τα στοιχεία της τρέχουσας διάταξης πληκτρολογίου (μαζί και με τη γλώσσα). Mε τη χρήση 'grep' και 'awk' απομονώνουμε μόνο τη γλώσσα γραφής. Έπειτα τσεκάρουμε σε ποιά γλώσσα είμαστε και διαμορφώνουμε κατάλληλα το αποτέλεσμα του script γιατί θα το χρησιμοποιήσουμε στη συνέχεια στο Xmobar.

Αποθηκεύουμε το παρακάτω script σε κάποια τοποθεσία (π.χ. /home/<user>/bin/show_keyboard_layout)

#! /bin/bash
 
current=$(setxkbmap -print | grep xkb_symbols | awk -F"+" '{print $2}')

if [[ $current = "us" ]]
then
echo ".:<fc=#ff0000> English </fc>:."
fi

if [[ $current = "gr" ]]
then
echo ".:<fc=#0000ff> Ελληνικά </fc>:."
fi

Φυσικά μπορούμε να αλλάξουμε τις λέξεις "English" και "Ελληνικά" με λέξεις της αρεσκείας μας, καθώς και τα χρώματα αλλάζοντας το html color code στο <fc> tag, ή και να μη βάλουμε καθόλου χρώμα (αφαιρώντας το tag τελείως) αφήνοντας στο xmobar να βάλει το γνώριμο default γκρι.

2ο script - switch_layout

Το script αυτό θα ενσωματοθεί στο "xmonad.hs" ως συντομευση για keybinding. Το μόνο που κάνει είναι όταν βλέπει τη διάταξη του πληκτρολογίου στα 'Αγγλικά' να την κάνει 'Ελληνικά' και το αντίστροφο. Αυτό γίνεται με ένα απλό if-else για τo bash και την εντολή setxkbmap.

Αποθηκεύουμε και αυτό το script σε μια τοποθεσία (καλύτερα στην ίδια με προηγουμένως), /home/<user>/bin/switch_layout

#!/bin/bash

if [ `setxkbmap -print | grep xkb_symbols | awk '{print $4}' | awk -F"+" '{print $2}'` = us ] 
then echo "EN"
    setxkbmap gr

else echo "GR"
    setxkbmap us
fi

Στη συνέχεια τροποποιούμε και κατάλληλα το ~/.xmonad/xmonad.hs ώστε στο κομμάτι με τα keybindings να προσθέσουμε την ακόλουθη γραμμή:


[((mod4Mask             , xK_f     ), spawn "firefox")
	, ((mod4Mask             , xK_x     ), spawn myTerminal)
----->	, ((mod1Mask             , xK_Shift_L     ), spawn "switch_layout")          <----------
	, ((mod4Mask             , xK_s     ), spawn "pidgin")

Επίσης δεν ξεχνάμε να κάνουμε εκτελέσιμα τα scritp-άκια μας τρέχοντας

# chmod +x /home/<user>/bin/show_keyboard_layout
# chmod +x /home/<user>/bin/switch_layout

Η ενσωμάτωση του 'show_keyboard_layout' στο Xmobar

Για να πάρει τα αποτελέσματα του παραπάνω script το Xmobar, πρέπει να κάνουμε τις εξής προσθήκες στο ~/.xmobarrc

Πρώτα πρέπει να προσθέσουμε στο κομμάτι commands την γραμμή:

, Run Com "/home/<user>/bin/show_keyboard_layout" [] "keyb" 10

και έπειτα να το προσθέσουμε στο template προσθέτοντας σε όποιο σημείο μας βολεύει το αναγνωριστικό που ορίσαμε πριν

%keyb%


Αποτέλεσμα

Αυτό ήταν! Την επόμενη φορά που θα φορτώσει το Xmobar θα έχουμε την ένδειξη για τη γλώσσα!

Παραθέτουμε και 2 screenshots με την αλλαγή της γλώσσας (το %keyb% έχει μπεί στο αριστερό μέρος του template)

Xmobar language change screenshots