I3STATUS(1) راهنمای i3 I3STATUS(1)

i3status - تولید نوار وضعیت کارآمد برای i3bar، dzen2، xmobar یا lemonbar

i3status [-c فایل_پیکربندی] [-h] [-v] [--run-once]

-c --config

مسیر متناوب فایل پیکربندی را مشخص می‌کند. به‌طور پیش‌فرض، i3status فایل‌های پیکربندی را به ترتیب زیر جستجو می‌کند:
1.~/.config/i3status/config (یا $XDG_CONFIG_HOME/i3status/config در صورت تنظیم)
2./etc/xdg/i3status/config (یا $XDG_CONFIG_DIRS/i3status/config در صورت تنظیم)
3.~/.i3status.conf
4./etc/i3status.conf

-h --help

چاپ نسخه و نحوه استفاده مختصر.

-v --version

چاپ نسخه و هرگونه پیکربندی ساخت.

--run-once

اجرای تنها یک‌باره به‌جای تکرار در حلقه مداوم.

برنامه i3status یک برنامه کوچک برای تولید نوار وضعیت برای i3bar، dzen2، xmobar، lemonbar یا برنامه‌های مشابه است. این برنامه طوری طراحی شده است که با صدور تعداد بسیار اندکی از فراخوانی‌های سیستمی (system calls) بسیار کارآمد عمل کند، زیرا معمولاً فرد می‌خواهد چنین خط وضعیتی هر ثانیه به‌روزرسانی شود. این امر تضمین می‌کند که حتی تحت بار کاری سنگین سیستم، نوار وضعیت شما به‌درستی به‌روزرسانی شود. همچنین، با عدم اشغال پردازنده به اندازه‌ای که اجرای مکرر دستورات معادل شل مصرف می‌کرد، مقداری در مصرف انرژی صرفه‌جویی می‌کند.

ایده اصلی i3status این است که می‌توانید مشخص کنید کدام «ماژول‌ها» باید استفاده شوند (دستور order). سپس می‌توانید هر ماژول را در بخش اختصاصی خودش پیکربندی کنید. برای هر ماژول، می‌توانید قالب خروجی را تعیین نمایید. برای راهنمای کامل به ادامه مطلب مراجعه کنید.

نمونه پیکربندی.

general {
        output_format = "dzen2"
        colors = true
        interval = 5
}
order += "ipv6"
order += "disk /"
order += "run_watch DHCP"
order += "run_watch VPNC"
order += "path_exists VPN"
order += "wireless wlan0"
order += "ethernet eth0"
order += "battery 0"
order += "cpu_temperature 0"
order += "memory"
order += "load"
order += "tztime local"
order += "tztime berlin"
wireless wlan0 {
        format_up = "W: (%quality at %essid, %bitrate) %ip"
        format_down = "W: down"
}
ethernet eth0 {
        format_up = "E: %ip (%speed)"
        format_down = "E: down"
}
battery 0 {
        format = "%status %percentage %remaining %emptytime"
        format_down = "No battery"
        status_chr = "⚡ CHR"
        status_bat = "🔋 BAT"
        status_unk = "? UNK"
        status_full = "☻ FULL"
        status_idle = "☻ IDLE"
        path = "/sys/class/power_supply/BAT%d/uevent"
        low_threshold = 10
}
run_watch DHCP {
        pidfile = "/var/run/dhclient*.pid"
}
run_watch VPNC {
        # file containing the PID of a vpnc process
        pidfile = "/var/run/vpnc/pid"
}
path_exists VPN {
        # path exists when a VPN tunnel launched by nmcli/nm-applet is active
        path = "/proc/sys/net/ipv4/conf/tun0"
}
tztime local {
        format = "%Y-%m-%d %H:%M:%S"
        hide_if_equals_localtime = true
}
tztime berlin {
        format = "%Y-%m-%d %H:%M:%S %Z"
        timezone = "Europe/Berlin"
}
load {
        format = "%5min"
}
cpu_temperature 0 {
        format = "T: %degrees °C"
        path = "/sys/devices/platform/coretemp.0/temp1_input"
}
memory {
        format = "%used"
        threshold_degraded = "10%"
        format_degraded = "MEMORY: %free"
}
disk "/" {
        format = "%free"
}
read_file uptime {
        path = "/proc/uptime"
}

دستور colors در صورت تنظیم روی false تمام رنگ‌ها را غیرفعال می‌کند. همچنین می‌توانید با استفاده از دستورهای color_good، color_degraded یا color_bad به ترتیب رنگ‌هایی را که برای نمایش مقادیر «خوب»، «افت‌کرده» یا «بد» استفاده می‌شوند مشخص کنید. این دستورها تنها در صورتی اعمال می‌شوند که پشتیبانی از رنگ توسط دستور colors غیرفعال نشده باشد. قالب ورودی برای مقادیر رنگ، سه‌گانه هگزادسیمال RGB استاندارد است (بدون هیچ جداکننده‌ای میان رنگ‌ها) که پیشوند آن نویسه هش («#») است.

نمونه پیکربندی:

color_good = "#00FF00"

به همین ترتیب، می‌توانید از دستور color_separator برای تعیین رنگی که برای رسم نوار جداکننده استفاده می‌شود استفاده کنید. جداکننده همیشه رنگی چاپ می‌شود، حتی زمانی که رنگ‌ها توسط دستور colors غیرفعال شده باشند. این گزینه در صورتی که output_format روی i3bar یا none تنظیم شده باشد اثری ندارد.

دستور interval مدت زمان به ثانیه را مشخص می‌کند که i3status پیش از چاپ خط وضعیت بعدی متوقف (sleep) می‌شود.

با استفاده از output_format می‌توانید انتخاب کنید که i3status از کدام رشته‌های قالب‌بندی در خروجی خود استفاده کند. موارد موجود در حال حاضر عبارتند از:

i3bar

همراه با i3 ارائه می‌شود و نوار فضای کاری را فراهم می‌کند که در شرایط چندنمایشگره عملکرد درستی دارد. همچنین دارای پشتیبانی از سینی سیستم (tray) است و می‌تواند خروجی i3status را نمایش دهد. این نوع خروجی از JSON استفاده می‌کند تا بیشترین اطلاعات متاداده ممکن را به i3bar ارسال کند (مانند رنگ‌ها، اینکه کدام بلوک‌ها را می‌توان به چه شیوه‌ای کوتاه کرد و غیره).

dzen2

برنامه Dzen یک برنامه عمومی پیام‌رسانی، اعلان و منوسازی برای X11 است. این برنامه طوری طراحی شده است که در هر زبانی اسکریپت‌پذیر باشد و به‌خوبی با مدیران پنجره مانند dwm، wmii و xmonad یکپارچه شود، هرچند با هر مدیر پنجره دیگری نیز کار می‌کند.

xmobar

برنامه xmobar یک نوار وضعیت متنی و کمینه‌گرا است. این نوار برای کار با مدیر پنجره xmonad طراحی شده است.

lemonbar

برنامه lemonbar یک نوار سبک‌وزن است که تماماً بر پایه XCB ساخته شده است. این برنامه از UTF-8 پشتیبانی کامل دارد و با EWMH سازگار است.

term

از توالی‌های فرار ANSI برای تولید خروجی ترمینال تا حد ممکن نزدیک به خروجی‌های گرافیکی استفاده می‌کند. این ویژگی اشکال‌زدایی فایل پیکربندی شما را کمی آسان‌تر می‌کند زیرا خروجی ترمینال i3status بسیار خواناتر می‌شود، اما فقط باید برای نگاه‌های گذرا استفاده شود، زیرا تنها از قابلیت‌های خروجی بسیار پایه‌ای پشتیبانی می‌کند (برای نمونه تنها ۳ بیت عمق رنگ دریافت می‌کنید).

none

از هیچ کد رنگی استفاده نمی‌کند. به‌طور پیش‌فرض مقادیر را با نویسه پایپ جدا می‌کند. این حالت باید همراه با i3bar استفاده شود و می‌تواند برای اسکریپت‌های سفارشی به کار رود.

همچنین امکان استفاده از دستورهای color_good، color_degraded و color_bad برای تعریف رنگ‌های مشخص به ازای هر ماژول وجود دارد. اگر یکی از این دستورها در بخش یک ماژول تعریف شود، مقدار آن بر مقداری که در بخش general تعریف شده صرفاً برای همین ماژول تقدم خواهد داشت.

اگر جداکننده‌های عمودی پیش‌فرضی را که i3status/i3bar میان ماژول‌ها استفاده می‌کند نمی‌پسندید، می‌توانید از دستور separator برای پیکربندی نحوه جداسازی ماژول‌ها استفاده کنید. همچنین می‌توانید جداکننده پیش‌فرض را با تنظیم آن روی رشته خالی به‌طور کامل غیرفعال کنید. سپس می‌توانید جداسازی را به عنوان بخشی از رشته قالب‌بندی ماژول تعریف کنید. در صورت استفاده از قالب خروجی i3bar این تنها گزینه شماست، زیرا در غیر این صورت جداکننده مستقیماً توسط i3bar رسم می‌شود. برای سایر قالب‌های خروجی، رشته غیرخالی ارائه‌شده در صورت فعال بودن پشتیبانی از رنگ، به‌طور خودکار با بخش‌های رنگ‌آمیزی لازم احاطه می‌شود.

برنامه i3bar از نشانه‌گذاری Pango پشتیبانی می‌کند و به شما امکان می‌دهد در صورتی که دستور markup را روی "pango" تنظیم کنید، فونت، رنگ، اندازه و غیره را در رشته‌های قالب‌بندی خود مشخص نمایید. توجه داشته باشید که نویسه‌های امپرسند («&»)، کوچکتری («<»)، بزرگتری («>»)، علامت نقل‌قول تکی («'») و علامت نقل‌قول دوتایی («"») به ترتیب باید با «&amp;»، «&lt;»، «&gt;»، «&apos;» و «&quot;» جایگزین شوند. این کار برای محتوای تولیدشده (مانند ESSID شبکه بی‌سیم، زمان) به‌طور خودکار انجام می‌شود.

نمونه پیکربندی:

general {
    output_format = "xmobar"
    separator = "  "
}
order += "load"
order += "disk /"
load {
    format = "[ load: %1min, %5min, %15min ]"
}
disk "/" {
    format = "%avail"
}

این ماژول آدرس IPv6 مورد استفاده برای اتصالات خروجی (یعنی بهترین آدرس عمومی IPv6 در دسترس روی رایانه شما) و رابط شبکه‌ای را که به آن اختصاص یافته دریافت می‌کند.

نمونه format_up: %iface: %ip

نمونه format_down: no IPv6

مقدار بایت‌های مصرف‌شده، آزاد، در دسترس و کل را در سیستم‌فایل مانت‌شده مشخص‌شده دریافت می‌کند.

این مقادیر همچنین می‌توانند با قالب‌های percentage_used، percentage_free، percentage_avail و percentage_used_of_avail به صورت درصد بیان شوند.

اندازه‌های بایت با استفاده از مجموعه‌ای از پیشوندها که نوع آن‌ها را می‌توان از طریق گزینه "prefix_type" مشخص کرد، در قالبی خوانا برای انسان ارائه می‌شوند. سه مجموعه پیشوند در دسترس است:

binary

پیشوندهای IEC (شامل Ki، Mi، Gi، Ti) نمایانگر مضارب توان‌های ۱۰۲۴ هستند. این حالت پیش‌فرض است.

decimal

پیشوندهای SI (شامل k، M، G، T) نمایانگر مضارب توان‌های ۱۰۰۰ هستند.

custom

پیشوندهای سفارشی (شامل K، M، G، T) نمایانگر مضارب توان‌های ۱۰۲۴ هستند.

امکان تعریف یک low_threshold وجود دارد که باعث می‌شود متن دیسک با استفاده از color_bad نمایش داده شود. نوع low_threshold می‌تواند از نوع threshold_type با مقادیر "bytes_free"، "bytes_avail"، "percentage_free" یا "percentage_avail" باشد، که دو مورد اول می‌توانند با یک پیشوند عمومی (k, m, g, t) دارای prefix_type همراه شوند. بنابراین، اگر low_threshold را روی 2، threshold_type را روی "gbytes_avail" و prefix_type را روی "binary" تنظیم کنید، و فضای در دسترس باقی‌مانده دیسک زیر ۲ گیبی‌بایت باشد، به رنگ وضعیت بد نمایش داده خواهد شد. در صورت عدم تعیین، threshold_type برابر با "percentage_avail" و low_threshold برابر با 0 در نظر گرفته می‌شود که به معنای عدم رنگ‌آمیزی است. می‌توانید قالب خروجی را در شرایط پایین‌تر از low_threshold با استفاده از format_below_threshold سفارشی‌سازی کنید.

می‌توانید با گزینه "format_not_mounted" قالب متفاوتی را تعریف کنید که اگر مسیر وجود نداشته باشد یا یک نقطه مانت نباشد استفاده شود. مقدار پیش‌فرض برابر با "" است.

نمونه order: disk /mnt/usbstick

نمونه format: %free (%avail)/ %total

نمونه format: %percentage_used used, %percentage_free free, %percentage_avail avail

نمونه prefix_type: custom

نمونه low_threshold: 5

نمونه format_below_threshold: Warning: %percentage_avail

نمونه threshold_type: percentage_free

مسیر داده‌شده را به یک pidfile گسترش می‌دهد و بررسی می‌کند که آیا شناسه پردازش (PID) موجود در آن معتبر است یا خیر (یعنی آیا پردازش در حال اجراست). می‌توانید از این گزینه برای بررسی اجرای یک برنامه خاص، مانند کلاینت VPN یا کلاینت DHCP استفاده کنید. همچنین گزینه‌ای به نام format_down وجود دارد. با format_down="" می‌توانید خروجی را پنهان کنید.

نمونه order: run_watch DHCP

نمونه format: %title: %status

بررسی می‌کند که آیا مسیر داده‌شده در سیستم‌فایل وجود دارد یا خیر. می‌توانید از این ماژول برای بررسی فعال بودن چیزی استفاده کنید، مانند یک تونل VPN که توسط NetworkManager مدیریت می‌شود. همچنین گزینه‌ای به نام format_down وجود دارد. با format_down="" می‌توانید خروجی را پنهان کنید.

نمونه order: path_exists VPN

نمونه format: %title: %status

کیفیت پیوند، فرکانس و ESSID رابط شبکه بی‌سیم داده‌شده را دریافت می‌کند. می‌توانید رشته‌های قالب‌بندی متفاوتی را برای حالت متصل بودن یا متصل نبودن شبکه مشخص کنید. کیفیت پیوند به‌طور پیش‌فرض با صفرهای آغازین پر می‌شود؛ برای پر کردن با نویسه‌های دیگر از format_bitrate، format_noise، format_quality یا format_signal استفاده کنید.

نام رابط ویژه _first_ با نخستین رابط شبکه بی‌سیم یافت‌شده در سیستم (به‌جز دستگاه‌هایی که با "lo" شروع می‌شوند) جایگزین خواهد شد.

نمونه order: wireless wlan0

نمونه format_up: W: (%quality at %essid, %bitrate / %frequency) %ip

نمونه format_down: W: down

نمونه format_bitrate: "%g %cb/s"

نمونه format_noise: "%03d%s"

نمونه format_quality: "%03d%s"

نمونه format_signal: "%03d%s"

آدرس IP و (در صورت امکان) سرعت پیوند رابط اترنت داده‌شده را دریافت می‌کند. اگر آدرس IPv4 موجود نباشد ولی آدرس IPv6 موجود باشد، نمایش داده خواهد شد.

نام رابط ویژه _first_ با نخستین رابط شبکه غیر بی‌سیم یافت‌شده در سیستم (به‌جز دستگاه‌هایی که با "lo" شروع می‌شوند) جایگزین خواهد شد.

نمونه order: ethernet eth0

نمونه format_up: E: %ip (%speed)

نمونه format_down: E: down

وضعیت (شارژ شدن، دشارژ شدن، نامشخص، پر)، درصد، زمان باقی‌مانده و مصرف توان (به وات) باتری مشخص‌شده و زمان تخمینی خالی شدن آن را دریافت می‌کند. اگر می‌خواهید به‌جای ظرفیت اسمی طراحی از آخرین ظرفیت شارژ کامل استفاده کنید (هنگام استفاده از ظرفیت اسمی، ممکن است باتری شما به دلیل کهنگی در حالت شارژ کامل روی ۲۳٪ باشد؛ به‌طور کلی ترجیح این است که این‌گونه دیده شود زیرا میزان فرسودگی باتری را نشان می‌دهد)، کافی است last_full_capacity = true را مشخص کنید. با تنظیم hide_seconds = false می‌توانید ثانیه‌ها را در تخمین زمان باقی‌مانده و زمان خالی شدن نمایش دهید.

اگر می‌خواهید درصد باتری در قالب دیگری نمایش داده شود، از format_percentage استفاده کنید. گزینه integer_battery_capacity = true یک گزینه قدیمی برای format_percentage = "%.00f%s" است.

اگر باتری شما در مسیری غیر استاندارد در /sys قرار دارد، حتماً ویژگی path را متناسب با آن تغییر دهید، یعنی اشاره به فایل uevent در سیستم شما. اولین وقوع %d با شماره باتری جایگزین می‌شود، اما می‌توانید مسیر را به‌صورت ثابت نیز وارد کنید.

امکان تعریف یک low_threshold وجود دارد که باعث می‌شود متن باتری به رنگ color_bad درآید. نوع low_threshold می‌تواند از نوع threshold_type با مقدار "time" یا "percentage" باشد. بنابراین، اگر low_threshold را روی 10 و threshold_type را روی "time" تنظیم کنید و باتری شما ۹ دقیقه دیگر دوام بیاورد، با color_bad رنگ‌آمیزی خواهد شد.

برای نمایش مجموع تجمیعی تمام باتری‌های سیستم، از "all" به عنوان شماره استفاده کنید. در این حالت (برای لینوکس)، مسیر /sys باید حاوی توالی "%d" باشد. در غیر این صورت، این عدد نشان‌دهنده اندیس باتری طبق گزارش /sys است.

به صورت اختیاری می‌توان رشته‌های سفارشی شامل هرگونه نماد UTF-8 را برای حالت‌های مختلف باتری استفاده کرد. این قابلیت نمایش نمادهای مجزا برای هر حالت (شارژ، دشارژ، نامشخص، پر) را امکان‌پذیر می‌سازد. البته با فونت‌های آیکونی خاص مانند FontAwesome نیز کار خواهد کرد. اگر هر یک از این رشته‌های وضعیت ویژه حذف شوند، از مقادیر پیش‌فرض (CHR, BAT, UNK, FULL) استفاده می‌شود.

نمونه order (برای نخستین باتری): battery 0

نمونه order (مجموع تمام باتری‌ها): battery all

نمونه format: %status %remaining (%emptytime %consumption)

نمونه format_down: No battery

نمونه format_percentage: "%.02f%s"

نمونه status_chr: ⚡ CHR

نمونه status_bat: 🔋 BAT

نمونه status_unk: ? UNK

نمونه status_full: ☻ FULL

نمونه low_threshold: 30

نمونه threshold_type: time

نمونه path (جایگزینی %d با شماره عنوان): /sys/class/power_supply/CMB%d/uevent

نمونه path (بدون در نظر گرفتن شماره): /sys/class/power_supply/CMB1/uevent

دمای منطقه حرارتی (thermal zone) داده‌شده را دریافت می‌کند. امکان تعریف max_threshold وجود دارد که در صورت داغ شدن بیش از حد منطقه حرارتی مشخص‌شده، دما را به رنگ قرمز درمی‌آورد. مقدار پیش‌فرض ۷۵ درجه سانتی‌گراد است. قالب خروجی در شرایط بالاتر از max_threshold را می‌توان با format_above_threshold سفارشی کرد.

نمونه order: cpu_temperature 0

نمونه format: T: %degrees °C

نمونه max_threshold: 42

نمونه format_above_threshold: Warning T above threshold: %degrees °C

نمونه path: /sys/devices/platform/coretemp.0/temp1_input

درصد مصرف پردازنده را از /proc/stat (در لینوکس) یا sysctl(3) (در FreeBSD/OpenBSD) دریافت می‌کند.

امکان تعریف یک max_threshold وجود دارد که در صورتی که میانگین مصرف پردازنده در بازه زمانی گذشته از آستانه پیکربندی‌شده فراتر رود، مقدار بار را با color_bad رنگ‌آمیزی می‌کند. مقدار پیش‌فرض ۹۵ است. قالب خروجی در شرایط بالاتر از max_threshold با format_above_threshold قابل سفارشی‌سازی است.

امکان تعریف یک degraded_threshold وجود دارد که در صورتی که میانگین مصرف پردازنده در بازه زمانی گذشته از آستانه فراتر رود، مقدار بار را با color_degraded رنگ‌آمیزی می‌کند. مقدار پیش‌فرض ۹۰ است. قالب خروجی در شرایط بالاتر از degraded_threshold با format_above_degraded_threshold قابل سفارشی‌سازی است.

برای نمایش میزان مصرف Nامین پردازنده، می‌توانید از رشته قالب %cpu<N> شروع از %cpu0 استفاده کنید. این قابلیت در حال حاضر در FreeBSD پشتیبانی نمی‌شود.

نمونه order: cpu_usage

نمونه format: all: %usage CPU_0: %cpu0 CPU_1: %cpu1

نمونه max_threshold: 75

نمونه format_above_threshold: Warning above threshold: %usage

نمونه degraded_threshold: 25

نمونه format_above_degraded_threshold: Warning above degraded threshold: %usage

میزان مصرف حافظه سیستم را در سیستم‌های لینوکسی از /proc/meminfo دریافت می‌کند. سایر سیستم‌ها در حال حاضر پشتیبانی نمی‌شوند.

به عنوان متغیرهای جانگهدار قالب، گزینه‌های total، used، free، available و shared در دسترس هستند. این گزینه‌ها مقادیر خوانا برای انسان را چاپ می‌کنند. همچنین می‌توان پیشوند _percentage را به این متغیرها اضافه کرد تا مقدار به صورت درصد به دست آید.

امکان تعریف threshold_degraded و threshold_critical برای تغییر رنگ خروجی نوار وضعیت به color_degraded یا color_bad در صورتی که حافظه در دسترس به زیر آستانه مشخص‌شده برسد وجود دارد. مقادیر مجاز آستانه می‌توانند هر عدد صحیحی با پسوند نماد iec (مانند T, G, M, K) باشند. همچنین، عدد صحیح می‌تواند پسوند علامت درصد داشته باشد که در این صورت نسبت به کل حافظه سنجیده می‌شود.

اگر پارامتر format_degraded داده شود و یکی از آستانه‌های critical یا degraded برقرار باشد، format_degraded به عنوان رشته قالب استفاده خواهد شد. این گزینه عملکردی معادل format دارد.

همچنین امکان تعیین یکای اندازه‌گیری برای متغیرهای جانگهدار قالب وجود دارد. از آنجا که /proc/meminfo حافظه را بر حسب کیلوبایت (kB) برمی‌گرداند، مقادیر به یکای داده‌شده تبدیل می‌شوند. اگر هیچ یکایی داده نشود یا از گزینه auto استفاده شود، تبدیل به‌طور خودکار بیشترین یکای ممکن را انتخاب می‌کند.

از آنجا که جانگهدار قالب تبدیل‌شده یک عدد اعشاری خواهد بود، تعداد ارقام اعشار را می‌توان از طریق گزینه decimals پیکربندی کرد. در صورت عدم تعیین، مقدار تبدیل‌شده دارای یک رقم اعشار خواهد بود.

از آنجا که meminfo در لینوکس مقدار کل حافظه در حال استفاده را مستقیماً نشان نمی‌دهد، روش‌های متعددی برای تشخیص حافظه واقعاً مصرف‌شده وجود دارد.

نمونه memory_used_method: memavailable ("کل حافظه" - "MemAvailable"، منطبق با دستور free)

نمونه memory_used_method: classical ("کل حافظه" - "free" - "buffers" - "cache"، منطبق با مانیتور سیستم گنوم)

نمونه order: memory

نمونه format: %free %available (%used) / %total

نمونه format: %percentage_used used, %percentage_free free, %percentage_shared shared

نمونه unit: auto, Ki, Mi, Gi, Ti

نمونه decimals: 0, 1, 2, 3

نمونه threshold_degraded: 10%

نمونه threshold_critical: 5%

نمونه format_degraded: Memory LOW: %free

بار سیستم (تعداد پردازش‌های منتظر زمان پردازنده در ۱، ۵ و ۱۵ دقیقه گذشته) را دریافت می‌کند. امکان تعریف max_threshold وجود دارد که در صورتی که میانگین بار کاری در دقیقه گذشته از آستانه پیکربندی‌شده بیشتر شود، مقدار بار را به رنگ color_bad درمی‌آورد. مقدار پیش‌فرض ۵ است. قالب خروجی در شرایط بالاتر از max_threshold با format_above_threshold قابل سفارشی‌سازی است.

نمونه order: load

نمونه format: %1min %5min %15min

نمونه max_threshold: "0.1"

نمونه format_above_threshold: Warning: %1min %5min %15min

زمان جاری را در منطقه زمانی محلی خروجی می‌دهد. برای استفاده از منطقه زمانی دیگر، می‌توانید متغیر محیطی TZ را تنظیم کنید یا از ماژول tztime استفاده نمایید. برای جزئیات مربوط به رشته قالب به strftime(3) مراجعه کنید.

نمونه order: time

نمونه format: %Y-%m-%d %H:%M:%S

زمان جاری را در منطقه زمانی مشخص‌شده خروجی می‌دهد. اگر منطقه زمانی مشخص نشود، از زمان محلی استفاده می‌شود. برای جزئیات مربوط به رشته قالب به strftime(3) مراجعه کنید. پایگاه‌داده مناطق زمانی سیستم معمولاً در /usr/share/zoneinfo نصب است. فایل‌های زیر این مسیر رشته‌های معتبر منطقه زمانی را تشکیل می‌دهند، برای نمونه برای /usr/share/zoneinfo/Europe/Berlin می‌توانید timezone را در ماژول tztime روی Europe/Berlin تنظیم کنید. برای بازنویسی تنظیمات محلی (locale) محیط خود، گزینه locale را تنظیم کنید. برای نمایش زمان تنها زمانی که منطقه زمانی تنظیم‌شده زمانی متفاوت از زمان محلی دارد، hide_if_equals_localtime را روی true قرار دهید.

نمونه order: tztime berlin

نمونه format: %Y-%m-%d %H:%M:%S %Z

نمونه timezone: Europe/Berlin

نمونه locale: de_DE.UTF-8

اگر مایلید در این بخش از نشانه‌گذاری استفاده کنید، گزینه جداگانه format_time وجود دارد که کاراکترهای آن به‌طور خودکار اسکیپ می‌شوند. خروجی آن سپس جایگزین %time در رشته قالب می‌شود.

نمونه پیکربندی (نشانه‌گذاری):

tztime berlin {
        format = "<span foreground='#ffffff'>time:</span> %time"
        format_time = "%H:%M %Z"
        timezone = "Europe/Berlin"
        hide_if_equals_localtime = true
}

تاریخ دیسکوردین جاری را در قالب مشخص‌شده توسط کاربر خروجی می‌دهد. برای جزئیات رشته قالب به ddate(1) مراجعه کنید. توجه: هیچ‌یک از %. و %X هنوز پیاده‌سازی نشده‌اند.

نمونه order: ddate

نمونه format: %{%a, %b %d%}, %Y%N - %H

میزان صدای میکسر مشخص‌شده را روی دستگاه مشخص‌شده خروجی می‌دهد. از PulseAudio و ALSA (فقط لینوکس) پشتیبانی می‌شود. در صورت نبود PulseAudio، به دلیل عدم وجود ALSA در FreeBSD و OpenBSD می‌توان از یک پیکربندی ساده‌شده استفاده کرد و گزینه‌های device و mixer را در این سیستم‌ها نادیده گرفت. در این سیستم‌ها در صورتی که mixer_idx برابر با -1 باشد از API سیستم OSS برای پرس‌وجوی مستقیم /dev/mixer استفاده می‌شود، در غیر این صورت از /dev/mixer+mixer_idx+.

برای دریافت اطلاعات صدای PulseAudio، باید از قالب زیر در خط device استفاده کرد:

device = "pulse"

یا

device = "pulse:N"

که در آن N اندیس یا نام سینک در PulseAudio است. می‌توانید نام سینک را با دستور زیر به دست آورید:

$ pacmd list-sinks | grep name:
           name: <alsa_output.pci-0000_00_14.2.analog-stereo>

نام سینک همان چیزی است که داخل براکت‌های زاویه‌دار قرار دارد، بدون احتساب خود آن‌ها. اگر سینکی مشخص نشود از سینک پیش‌فرض استفاده می‌شود. اگر رشته device وجود نداشته باشد یا روی "default" تنظیم شده باشد، در صورت شناسایی PulseAudio تلاش برای استفاده از آن صورت می‌گیرد و در غیر این صورت به ALSA (در لینوکس) یا OSS (در FreeBSD/OpenBSD) بازگشت می‌کند.

نمونه order: volume master

نمونه format: ♪ (%devicename): %volume

نمونه format_muted: ♪ (%devicename): 0%%

نمونه پیکربندی:

volume master {
        format = "♪: %volume"
        format_muted = "♪: muted (%volume)"
        device = "default"
        mixer = "Master"
        mixer_idx = 0
}

نمونه پیکربندی (PulseAudio):

volume master {
        format = "♪: %volume"
        format_muted = "♪: muted (%volume)"
        device = "pulse:1"
}
volume master {
        format = "♪: %volume"
        format_muted = "♪: muted (%volume)"
        device = "pulse:alsa_output.pci-0000_00_14.2.analog-stereo"
}

محتوای فایل مشخص‌شده را خروجی می‌دهد. می‌توانید از این ماژول برای بررسی محتوای فایل‌ها در سیستم خود، مانند /proc/uptime استفاده کنید. به‌طور پیش‌فرض این تابع تنها ۲۵۴ کاراکتر اول فایل را می‌خواند؛ اگر می‌خواهید این مقدار را تغییر دهید گزینه Max_characters را تنظیم کنید. این تابع هرگز فراتر از ۴۰۹۵ کاراکتر اول را نخواهد خواند. اگر فایل پیدا نشود عبارت "no file" چاپ می‌شود و اگر فایل قابل خواندن نباشد "error read" چاپ خواهد شد.

نمونه order: read_file UPTIME

نمونه format: "%title: %content"

نمونه format_bad: "%title - %errno: %error"

نمونه path: "/proc/uptime"

نمونه Max_characters: 255

هنگام استفاده از قالب خروجی i3bar، چند گزینه اضافی وجود دارد که می‌توان با همه ماژول‌ها برای سفارشی‌سازی ظاهر آن‌ها استفاده کرد:

align

سیاست تراز کردن مورد استفاده هنگامی که حداقل عرض (در ادامه آمده) تامین نشده باشد. مقادیر مجاز عبارتند از center (پیش‌فرض)، right یا left.

min_width

حداقل عرض (به پیکسل) که ماژول باید اشغال کند. اگر ماژول فضای کمتری از اندازه مشخص‌شده بگیرد، بلوک با توجه به سیاست تراز تعریف‌شده از سمت چپ و/یا راست فاصله پرکننده (padding) می‌گیرد. این ویژگی زمانی مفید است که بخواهید از جابه‌جایی کل نوار وضعیت هنگام تغییر طول مقادیر میان هر تکرار جلوگیری کنید. این گزینه می‌تواند یک رشته نیز باشد. در این حالت، عرض متن ارائه‌شده حداقل عرض بلوک را تعیین می‌کند. این حالت زمانی مفید است که بخواهید بدون در نظر گرفتن اینکه از چه فونتی و با چه اندازه خاصی استفاده می‌کنید، یک حداقل عرض معقول تعیین نمایید. لطفاً توجه داشته باشید که یک عدد محصور در کوتیشن همچنان به عنوان یک عدد پردازش می‌شود.

separator

یک مقدار بولی که مشخص می‌کند آیا پس از این بلوک باید یک خط جداکننده رسم شود یا خیر. مقدار پیش‌فرض true است، به این معنی که خط جداکننده رسم خواهد شد. توجه داشته باشید که در صورت غیرفعال کردن خط جداکننده، همچنان یک فاصله پس از بلوک باقی خواهد ماند، مگر اینکه از separator_block_width نیز استفاده کنید.

separator_block_width

میزان فاصله خالی (به پیکسل) که باید پس از بلوک رها شود. در میانه این فاصله، در صورتی که separator غیرفعال نشده باشد یک نماد جداکننده رسم خواهد شد. به همین دلیل عرض مشخص‌شده باید فضای کافی برای نماد جداکننده باقی بگذارد.

نمونه پیکربندی:

disk "/" {
    format = "%avail"
    align = "left"
    min_width = 100
    separator = false
    separator_block_width = 1
}

پس از نصب dzen2، می‌توانید مستقیماً از آن به همراه i3status استفاده کنید. تنها اطمینان حاصل کنید که output_format روی dzen2 تنظیم شده باشد. توجه: گزینه min_width پشتیبانی نمی‌شود.

نمونه استفاده از i3status با dzen2:

i3status | dzen2 -fg white -ta r -w 1280 \
-fn "-misc-fixed-medium-r-normal--13-120-75-75-C-70-iso8859-1"

برای راه‌اندازی xmobar، ممکن است لازم باشد فایل پیکربندی پیش‌فرض را در ~/.xmobarrc کپی کنید. همچنین اطمینان حاصل کنید که گزینه output_format برای i3status روی xmobar تنظیم شده باشد. توجه: گزینه min_width پشتیبانی نمی‌شود.

نمونه استفاده از i3status با xmobar:

i3status | xmobar -o -t "%StdinReader%" -c "[Run StdinReader]"

ضمن بحث درباره موارد خاص، لطفاً این بخش را به عنوان توضیحی کلی درباره اینکه چرا اطلاعات مورد علاقه شما در i3status گنجانده نشده است در نظر بگیرید.

بیایید به‌طور مشخص درباره فرکانس پردازنده صحبت کنیم. بسیاری از افراد نحوه عملکرد دقیق مقیاس‌بندی فرکانس را درک نمی‌کنند. گاورنر فرکانس پردازنده که عموماً توصیه می‌شود ("ondemand")، فرکانس پردازنده را بسیار سریع‌تر از آنچه i3status بتواند آن را نمایش دهد تغییر می‌دهد. بنابراین عدد نمایش‌داده‌شده اغلب نادرست است و اطلاعات مفیدی نیز به شما ارائه نمی‌دهد.

به‌طور کلی، i3status مایل است مواردی را نمایش دهد که شما گهگاه به آن‌ها نگاه می‌کنید، مانند تاریخ/زمان جاری، اینکه آیا به شبکه وای‌فای متصل هستید یا خیر، و اینکه آیا فضای دیسک کافی برای دانلود آن فایل ۴.۳ گیبی‌بایتی دارید یا خیر.

با این حال، اگر نیاز دارید نوعی اطلاعات را بیش از هر از چند گاهی بررسی کنید، احتمالاً با اسکریپتی که آن کار را انجام داده و پنجره پاپ‌آپ باز کند وضعیت بهتری خواهید داشت. از این گذشته، هدف رایانه‌ها این نیست که با کارهای تکراری و خسته‌کننده مانند بررسی مداوم یک عدد، بار اضافی بر دوش شما بگذارند.

در i3status، ما نمی‌خواهیم مدیریت پردازش را دوباره پیاده‌سازی کنیم. از این رو، هیچ ماژولی برای اجرای اسکریپت‌ها یا دستورات دلخواه وجود ندارد. در عوض، باید از شل خود استفاده کنید، برای نمونه مانند این:

نمونه افزودن به ابتدای خروجی i3status:

#!/bin/sh
# shell script to prepend i3status with more stuff
i3status | while :
do
        read line
        echo "mystuff | $line" || exit 1
done

این کد را در یک اسکریپت، مثلاً .bin/my_i3status.sh قرار داده و آن را به‌جای i3status اجرا کنید.

توجه داشته باشید که اگر می‌خواهید از قالب خروجی JSON (همراه با رنگ‌ها در i3bar) استفاده کنید، باید از یک اسکریپت بسته‌بند (wrapper) کمی پیچیده‌تر استفاده نمایید. نمونه‌هایی در پوشه contrib/ وجود دارد، نشانی زیر را ببینید: https://github.com/i3/i3status/tree/master/contrib

هنگام دریافت SIGUSR1، فراخوانی nanosleep() برنامه i3status قطع خواهد شد و در نتیجه یک به‌روزرسانی اجباری رخ می‌دهد. برای مثال می‌توانید پس از تغییر میزان صدای سیستم، از killall -USR1 i3status برای اجبار به به‌روزرسانی استفاده کنید.

strftime(3), date(1), glob(3), dzen2(1), xmobar(1)

Michael Stapelberg and contributors

Thorsten Toepper

Baptiste Daroussin

Axel Wagner

Fernando Tarlá Cardoso Lemos

08/19/2024 i3status 2.15