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
Post a Comment