پاسخ : نحوه اضافه کردن ایندیکیتور لایوت کیبرد به i3statusbar (حل شد)

ساخت وبلاگ
ممنون از همه دوستان که کمک کردن این مشکل حل بشه. برای دوستانی که دنبال راه حل هستن برای همچین مشکلی
اول یه این اسکریپت را یه جا ذخیره کنید.من داخل این ادرس ذخیره کردم. اسم اسکریپت i3-extender بگذارید.
/home/behrooz/.i3
#!/usr/bin/env python
"""Extend i3status with more stuff.
Each extra module is a function that retus a dictionary with keys 'name' and
'full_text', decorated with `@i3status_module`.
Usage:
    i3status | i3status-extender
"""

import json
import os
import re
import sys

extra_modules = []

def main():
    while True:
        line = sys.stdin.readline()
        m = re.search(r"^(,?)([.+])", line)
        if m:
            modules = json.loads(m.group(2))
            for old_module_name, new_module in extra_modules:
                modules.insert(position(old_module_name, modules), new_module())
            sys.stdout.write("%s%sn" % (m.group(1), json.dumps(modules)))
        else:
            sys.stdout.write(line)
        sys.stdout.flush()

def position(old_module_name, all_modules):
    retu next(
        i + 1 for i, f in enumerate(all_modules)
        if f["name"] == old_module_name) if old_module_name else 0

def i3status_module(after=None):
    def decorator(f):
        extra_modules.append((after, f))
        retu f
    retu decorator

@i3status_module(after="tztime")
def keyboard_layout():
    retu {
        "name": "kblayout",
        "full_text":
            re.search(r"layout:s+(w+)", os.popen("setxkbmap -query").read())
            .group(1).upper()}

if __name__ == "__main__":
    main()

حالا در فایل پیکره‌بندی i3 اینطور اضافه کنید.
status_command i3status | ~/.i3/i3-extender
حالا یه اسکریپت دیگه به نام xkblayout.sh ذخیره کنید با این محتویات
#!/usr/bin/env bash
# filename: xkblayout.sh

layout=$(setxkbmap -print | awk -F"+" '/xkb_symbols/ {print $2}')

if [ "$layout" = us ]; then
    setxkbmap ir
else
    setxkbmap us
fi

حالا موارد زیر را به فایل کانفیگ i3 اضافه کنید. ادرس فایل را مطابق با ادرس فایل خودتان تغییر دهید.
bindcode Shift+64   exec ~/.i3/xkblayout.sh # Shift+Alt
bindcode Mod1+50    exec ~/.i3/xkblayout.sh # Alt+Shift_L
bindcode Mod1+62    exec ~/.i3/xkblayout.sh # Alt+Shift_R
کار تمام شد الان باید بتونید با ترکیب الت+ شیفت زبان را تغییر دهید و ایندیکیتور هم زبان جاری را نمایش خواهد داد.

- - , .

اوبونتو...
ما را در سایت اوبونتو دنبال می کنید

برچسب : نویسنده : استخدام کار ubuntu بازدید : 33 تاريخ : دوشنبه 26 بهمن 1394 ساعت: 15:46