setxkbmap Wrapper

ორიგინალი გამოქვეყნებულია http://levglonti.site.ge/index.php/napertsklebi/artikleslinux/64-setxkbmap-wrapper მისამართზე 09 April 2010 21:56 თარიღში

მოგესალმებით კიდე ერთხელ :)
სამსახურის საქმეებს მეტ-ნაკლებად მოვრჩი და ცოტა თავისუფალი დროც გამიჩნდა. გადავწყვიტე ბოლომდე მიმეყვანა კაი ხნის წინ დაწყებული სკრიპტი, რომელიც მოახერხებდა კლავიატურის განლაგებების გადართვას ნებისმიერ სამუშაო გარემოში.
ზოგიერთ მკითხველს ალბათ გააოცებს ეს მიზანი - სამუშაო გარემოებს ხომ აქვთ პანელის აპლეტები, რომლებიც მაგ ამოცანას უპრობლემოდ ასრულებენო. მართალი ხარ, მკითხველო, მარა მთლად ბოლომდე არა - არის ისეთი სამუშაო გარემოები (მაგალითად, enlightenment) რომელსაც არააქვს ეგეთი ფიჩა, არადა,, დღევანდელ პირობებში კლავიატურის გადართვა კატასტროფულად აუცილებელია Laughing
უფრო გამოცდილი მკითხველები გაიფიქრებენ, ხომ შეიძლება xorg.conf -ში ჩავამატოთ კლავიატურის განლაგებები და გადართვის კომბინაციაო? კი ბატონო, შეიძლება, მარა აქაც არის რამდენიმე მომენტი:

1. Fedora 12-ზე ვერანაირად ვერ ავამუშავე ზემოხსენებული მეთოდი, გუგლმაც ვერაფერი მანახა სახეირო და forum.ge-ზეც ვერავინ მიხვდა რაში მდგომარეობს პრობლემა
2. დღეს HAL იმდენად განვითარდა, რომ ხშირ შემთხვევაში სულ არაა საჭირო xorg.conf ფაილის არსებობა - HAL-ი აგვარებს ვიდეოკარტის პარამეტრების გამართვის საკითხს.
3. თუ გამოვიყენებთ xorg.conf-ს, ვერ მივიღებთ ვიზუალურ შეტყობინებას კლავიატურის განლაგების შეცვლის შესახებ :) (ან მე არ ვიცი როგორ უნდა მივიღოთ)


მოკლედ, ზემოხსენებული წინაპირობებიდან გამომდინარე, გადავწყვიტე დამეწერა ჩემი სკრიპტი, რომელიც ყველა ზემოხსენებულ საკითხ გადაწყვეტდა. გთავაზობთ თქვენც, იქნებ რაიმეში გამოგადგეთ :)

#!/bin/bash
 
#        ეს სკრიპტი დაწეირილია თავისუფლების მხურვალე მხარდამჭერი გურულის
#        მიერ. შენ შეგიძლია გაავრცელო ეს სკრიპტი, თუ ჩათვლი, რომ ის შეიძლება
#        ვინმეს (მათ შორის შენ) გამოადგეს. ასევე შენ შეგიაძლია მიიღო
#        მატერიალური სარგებელი ამ სკრიპტის გავრცელებით, მარა ერთი პირობით
#        - ყველას უნდა აცნობო, რომ ამ სკრიპტის მიღება უფასოდაც შეუძლიათ.
#        სკრიპტი ვრცელდება "ისე, რაფერც არის" - ეს იმას ნიშნავს, რომ
#        კაციშვილი (ავტორიც კაციშვილია) პასუხისმგებელი არაა სკრიპტის
#        გამართულად მუშაობაზე
#        შენ ასევე შეგიძლია შეცვალო სკრიპტის შიგთავსი, მარა აქანეც არის
#        ერთი მარა - რაიმეს რომ შეცვლი, იქვე უნდა მიუთითო, რა შეცვალე
#        და ეს სკრიპტის შეცვლილი ვერსია თავისუფლად უნდა იყოს ხელმისაწვდომი
#        ყველა მსურველისთვის

#უნდა განვსაზღვროთ, საიდან ეშვება სკრიპტი
#სასიცოცხლოდ აუცილებელი არაა, მარა მერე დაგვჭირდება
#ვიზუალური შეტყობინებების ჩვენების დროს -
#notify-send -მა რატომღაც გააჯაზა გეზების გაგებაში :)
 
samushao_katalogi=/home/gc/Projects/setxkbmap-wrapper/
 
#უნდა გავარკვიოთ კლავიატურის მიმდინარე განლაგება
#განლაგება ჩაწერილია ფაილში ./setxlbmap-wrapper.state
 
ganlageba=$(cat $samushao_katalogi/setxkbmap-wrapper.state);
 
#გავარკვიოთ აქვს თუ არა მნიშვნელობა $ganlageba ცვლადს
#თუ არ აქვს, მაშინ მივანიჭოთ us
if [ $ganlageba = "" ]; then
echo "no key layout. defaulting to us";
ganlageba="us";
echo "Now ganlageba="$ganlageba;
fi;
 
#ვიწყებთ მორგებას განლაგებების შესაძლო ვარიანტებიდან
case $ganlageba in
"us")
#აქამდე იყო us განლაგება. ახლა ვაყენებთ ge-ს
ganlageba="ge";
drosha="$samushao_katalogi""დროშები/ge.jpg";
;;
"ge")
#აქამდე იყო ge განლაგება. ახლა ვაყენებთ ru-ს
ganlageba="ru";
drosha="$samushao_katalogi""დროშები/ru.jpg";
;;
"ru")
#აქამდე იყო  განლაგება ru. ახლა ვაყენებთ us-ს
ganlageba="us";
drosha="$samushao_katalogi""დროშები/us.jpg";
#დამთავრდა მორგება
esac;
 
#აააახლა დროა ჩავტვირთოთ კლავიატურის შესაბამისი განლაგება და ვაჩვენოთ შესაბამისი შეტყობინებაც
notify-send --urgency=normal  --icon=$drosha "კლავიატურის განლაგება შეიცვალა" "ახლა არჩეულია განლაგება: "$ganlageba;
setxkbmap $ganlageba;
#ახლა შევიტანოთ შესაბამისი ცვლილებები ./setxkbmap-wrapper.state ფაილში
echo $ganlageba > $samushao_katalogi/setxkbmap-wrapper.state;


გამზადებული ფაილების გადმოწერა შეგიძლიათ აქედან
ჩამოტვირთეთ ფაილი, ამოაარქივეთ და მოათავსეთ თქვენთვის სასურველ კატალოგში (მაგ. /usr/local/bin), შესაბამისად ჩაასწორეთ samushao_katalogi=/home/gc/Projects/setxkbmap-wrapper/ სტრიქონი, დააყენეთ გაშვების უფლება setxkbmap-wrapper.sh ფაილზე (chmod +x ./setxkbmap-wrapper.sh), და ეგაა :)
ალბათ მოგინდებათ რომელიმე კლავიატურის კომბინაციით რომ იცვლებოდეს კლავიატურის განლაგება, ხომ? :) ხო, ეს უკვე თქვენს სამუშაო გარემოზეა დამოკიდებული და ამ პრობლემის მოგვარებაზე ზრუნვა თავად მოგიწევთ :)

Comments

Popular posts from this blog

ოპერაციული სისტემების ჩატვირთვა ქსელიდან pxelinux-ის საშუალებით

MPD-ს ინტეგრაცია Audioscrobbler-თან

კონსპექტები