صفر و یک - برنامه نویسی - لینوکس

دست نوشته های شخصی من در مورد نرم افزار، سیستم عامل و برنامه نویسی لینوکس

صفر و یک - برنامه نویسی - لینوکس

دست نوشته های شخصی من در مورد نرم افزار، سیستم عامل و برنامه نویسی لینوکس

لیدورا یک وبلاگ تخصصی برنامه نویسی یا لینوکس نیست. بیشتر محلیه برای ثبت چیزهایی که قراره بیشتر از یه بار خونده بشن. اگه به درد شما هم خورد که زکات دانش ما پرداخت شده، شکر.

آخرین نظرات

  • ۱۰ بهمن ۹۵، ۰۲:۴۲ - Black Riders
    عالی

نویسندگان

قبلاً از i3-bar و i3-status حرف زدیم و دیدیم کلی ابزار جایگزین برای نمایش اطلاعات سیستم در i3bar وجود داره. یکی از اون ابزارها conky دوست داشتنیه که دستتون رو برای ساخت یه نوار اطلاعات کامل باز می‌گذاره.

این اسکرین‌شات رو ببینید:

برای استفاده از conky به جای i3status اول فایل کانفیگ i3 رو باز کنید و قسمت bar رو این طوری تغییر بدید:

bar {
        status_command ~/.i3/conky/conky-i3bar }
}

 

البته می‌تونید بعضی تنظیمات دیگه رو هم اضافه کنید:

bar {
        tray_output primary
        position top
        status_command ~/.i3/conky/conky-i3bar

        colors {
            background #24364F
            statusline #CCCCCC

            focused_workspace  #ffffff #f65314
            active_workspace   #cccccc #333333
            inactive_workspace #333333 #4c7093
            urgent_workspace   #ffffff #900000
        }
}

 

خب حالا پوشه‌ی conky رو در مسیر i3./~ بسازید و بعد داخلش یه فایل با نام conky-i3bar با محتوای زیر ایجاد کنید:

#!/bin/sh

# Send the header so that i3bar knows we want to use JSON:
echo '{ "version": 1 }'

# Begin the endless array.
echo '['

# We send an empty first array of blocks to make the loop simpler:
echo '[],'

# Now send blocks with information forever:
exec conky -c $HOME/.i3/conky/conky.conf

 

حالا فایل conky.conf رو بسازید:

### Conky configuration file
## Output is printed to the console -> i3bar

## No output to X <yes/no>
out_to_x no

## Create own window to draw <yes/no>
own_window no

## Print everything to console?
out_to_console yes

## Use double buffering (reduces flicker, not needed for console output)
double_buffer no

## Set to yes if you want Conky to be forked in the background
background no

## Update interval in seconds
update_interval 0.5

## This is the number of times Conky will update before quitting.
## Set to zero to run forever.
total_run_times 0

## Shortens units to a single character (kiB->k, GiB->G, etc.). Default is off.
short_units no

## How strict should if_up be when testing an interface for being up?
## The value is one of up, link or address, to check for the interface
## being solely up, being up and having link or being up, having link
## and an assigned IP address.
if_up_strictness address

## Add spaces to keep things from moving about?  This only affects certain objects.
## use_spacer should have an argument of left, right, or none
use_spacer none

## Force UTF8? note that UTF8 support required XFT
override_utf8_locale no

## number of cpu samples to average
## set to 1 to disable averaging
cpu_avg_samples 2

pad_percents 2

## Stuff after 'TEXT' will be formatted on screen
TEXT

# JSON for i3bar
[\
 {"full_text": ${if_mpd_playing} "MPD","color": "\#268BD2"},
  {"full_text": "${mpd_artist 20} - ${mpd_title 30}","color":"\#FFFF00"},
  $else""},$endif
  {"full_text": " CPU: [$cpubar]$acpitemp°C","color": "\#DC322F"},
  {"full_text": " MEM: [$membar] ", "color":"\#B58900"},
  ${if_up wlp68s0}{"full_text": " NET: ${wireless_essid wlp68s0} [${wireless_link_qual_perc wlp68s0}%] ","color":"\#33CC99"},
  $else${if_up ppp0}{"full_text": "  orange ","color":"\#33CC99"},
  $else${if_up enp4s0}{"full_text": "  enp4s0 ","color":"\#33CC99"},
  $else{"full_text": " ≈ no connection ","color":"\#33CC99"},$endif$endif$endif
  {"full_text": " BATT: [$battery_percent%] ","color":"\#9933CC"},
  {"full_text": " ${time %a %d %b} ${time %H:%M} "}
],

 

حالا خط به خط توضیح می‌دم چطور کار می‌کنه:

 {"full_text": ${if_mpd_playing} "MPD","color": "\#268BD2"},
  {"full_text": "${mpd_artist 20} - ${mpd_title 30}","color":"\#FFFF00"},
  $else""},$endif

این قسمت مربوط به اطلاعات موزیک در‌ حال پخشه که توی تصویر با رنگ زرد می‌بینیدش. من برای پخش موزیک از ncmpcpp استفاده می‌کنم که اینجا در موردش نوشتم.

 

{"full_text": " CPU: [$cpubar]$acpitemp°C","color": "\#DC322F"},

این خط هم مربوط به نمایش درصد استفاده از cpu و دمای اون می‌شه. من به جای عدد از یه بار استفاده می‌کنم:  [cpubar$] . برای نمایش عدد به جای بار هم می‌تونید از این دستور استفاده کنید:

[$cpu%]

دستور acpitemp$ هم دمای CPU رو نشون می‌ده.

 

  {"full_text": "  [$membar] ", "color":"\#B58900"},

این خط هم مربوط به استفاده حافظه سیستمه که باز برای نمایش اعداد به جای بار می‌تونید از این استفاده کنید:

[$mem%]

 

 ${if_up wlp68s0}{"full_text": " NET: ${wireless_essid wlp68s0} [${wireless_link_qual_perc wlp68s0}%] ","color":"\#33CC99"},
  $else${if_up ppp0}{"full_text": "  orange ","color":"\#33CC99"},
  $else${if_up enp4s0}{"full_text": "  enp4s0 ","color":"\#33CC99"},
  $else{"full_text": " ≈ no connection ","color":"\#33CC99"},$endif$endif$endif

چهار خط بالا مربوط به نمایش وضعیت اتصال به اینترنته. اگه از wireless استفاده می‌کنید اول با iwconfig اسم interface وایرلس خودتونو پیدا کنید و به جای wlp68s0 بنویسیدش.

 

  {"full_text": " BATT: [$battery_percent%] ","color":"\#9933CC"},

این خط اطلاعات باتری سیستم رو نمایش می‌ده.

 

  {"full_text": " ${time %a %d %b} ${time %H:%M} "}

و خط آخر هم مربوط به نمایش تاریخ و ساعته.

 

خب کارمون با این کانفیگ تموم شد. توی اینترنت دنبال conky بگردید تا بار خودتون رو با ابزارهای بیشتری بسازید. من از بار شلوغ خوشم نمیاد پس همینا برام کافیه. در ادامه چند تا نمونه کاربرد دیگه براتون می‌گذارم.

 

{ "full_text": "root: ${fs_free /}" },\
{ "full_text": "home: ${fs_free /home}" },\

نمایش فضای خالی پارتیشن‌های root و home

 

{ "full_text": "⚡: ${battery_percent}% - ${battery_time} (${exec cat /sys/class/power_supply/BAT0/status})", "color":\
${if_empty ${exec cat /sys/class/power_supply/BAT0/status | grep 'Discharging'}}"\#00FF00"\
${else}${if_match ${battery_percent}<20}"\#FF0000"\
${else}${if_match ${battery_percent}<50}"\#f4e71a"\
${else}"\#cccccc"${endif}${endif}${endif}},\

نمایش اطلاعات باتری با سه رنگ

 

{ "full_text": "temp:${exec sensors | grep 'Core 0' | cut -c16-19 | sed '/^$/d' }°C ", "color": ${if_match ${exec sensors | grep 'Core 0' | cut -c16-19 | sed '/^$/d'}>70}"\#FF0000"${else}"\#00CC00"${endif} },\

نمایش دمای CPU با سه رنگ

 

{ "full_text": " D: ${downspeed wlp68s0} U: ${upspeed wlp68s0} T: ${totaldown wlp68s0}" },

نمایش ترافیک مصرفی اینترنت

 

${if_match "${exec xset q | grep 'Caps Lock' | sed 's/.*Caps Lock:[ ]*\([^ ]*\).*/\1/'}"=="on"}
{ "full_text": "CapsLock", "color": "\#00CC00" },\
${endif}

نمایش روشن بودن Caps Lock

 

برای نمایش میزان صدای سیستم من از یه اسکریپت استفاده می‌کنم. اول یه فایل با نام volumelevel.sh بسازید بعد این خطوط رو توش بنویسید.

#!/bin/bash
vol=`amixer get Master | awk -F'[]%[]' '/%/ {if ($5 == "off") { print "Mute" } else { print $2"%" }}' | uniq | head -1`
echo "$vol"

حالا توی conky.conf این خطوط رو اضافه کنید:

{ "full_text": "♫: ${exec ~/.i3/conky/volumelevel.sh}", "color": ${if_empty ${exec ~/.i3/conky/volumelevel.sh | grep 'Mute'}}"\#cccccc"${else}"\#ffff00"${endif} },\

 

امیدوارم این مطلب به دردتون بخوره. شما هم اسکرین‌شات خودتون رو به اشتراک بگذارید.

 

این پست‌ها را هم ببینید:

روزی، روزگاری با i3 - پیکره‌بندی اولیه

از گنوم تا i3 : سقوط یا صعود؟

معرفی ۵ مدیر پنجره محبوب لینوکسی

تفاوت بین مدیر پنجره و محیط رومیزی

نظرات  (۷)

درود
واقعا بعد از اون راهنما این پست میچسبه . بعد از کلی کلنجار رفتن با اون کانفیگ ها که در جریانش هستی
بالاخره به مدد این پست تونستم تنظیمات چندتا از اون ها رو که کانکی داشتند اعمال کنم .
اما یه سوال : محیط i3 حالت ساده ای داره که وقتی مثلا ناتیلوس یا فایرفاکس و خیلی از برنامه های دیگه
رو توش اجرا میکنی ظاهرشون زخمت هست و با اون حالت minimalist جور در نمیان . آیا راهی هست قیافه
این برنامه ها رو عوض کنیم یا جایگزین ساده ای براشون توی i3 هست ؟

متشکرم
پاسخ:
زنده باشی فرهاد، دوست داریم :)
اگه روی سیستمت گنوم هم نصبه توی فایل config این خط رو اضافه کن:
exec gnome-settings-daemon

برای تغییر تم های gtk اینجا رو ببین.


برای جایگزین هم بهتره به جای nautilus از pcmanfm استفاده کنی. فایرفاکس رو من با dwb جایگزین کردم یه کم سرعت لودش پایینه اما کاملاً با کی‌بورد کنترل می‌شه، البته فکر نکنم باهاش حال کنی :) . برای ترمینال هم از terminator استفاده کن.
قرفونت ما بیشتر تر :دی
بله اوبونتو گنوم دارم . ممنون مطالعه میکنم .
در مورد جایگزین ناتیلوس که زدی تو خال امروز چند تا فایل منیجر سبک یافتم که gentoo و pcmanfm
خیلی به دلم نشستن و الان فقط از همین pcman استفاده میکنم فوق العادس .
ترمیناتور هم استفاده کردم فقط میمونه dwb رو تست بزنم .

پاسخ:
توی یه سری از برنامه‌ها مثل فایرفاکس هم با حذف منوها و تولبارها می‌شه به نتیجه‌ی دلخواه رسید. سعی می‌کنم به زودی با یکی دو مقاله‌ی دیگه بحث i3 رو تموم کنم و این مطالب رو بنویسم.
امید به خدا
درود / این ستاتوس بار راه اندازی نشد متاسفانه و مرتبا خطا میده / چیزی هم نیست ها نمی دونم چرا :)
اما خودم این رو پیدا کردم
https://github.com/gpix13/i3
ممنون میشم راه اندازی رو بذاری و یا کوچولو توضح بدی

پاسخ:
کاش خطاش رو نوشته بودی ببینیم چرا کار نمی‌کنه.

برای اجرای این اسکریپت هم dzen2 و اوی آیکنهایی رو که معرفی کرده رو نصب کنید.
سلام علیرضا جان.
چند روزیه که از اپن باکس مهاجرت کردم به i3.
تا اینجا تقریبا ۹۰ درصدش رو برای تک مانیتوره بودن، کانفیگ کردم.
فقط دوتا سوال؟
۰۱) چجوری میتونم کاری کنم که بین split ها (چه افقی چه عمودی) یه مقدار فاصله بوجود بیاد؟ مثل فاصله های بین ترمینال های awesome
۰۲) چجوری میتونم border رو حذف کنم به طوریکه اون پنجره ی بالای برنامه ها حذف نشه؟
عه شد سه تا :)
۰۳) ترمینالی سراغ داری که پروفایل داشته باشه (مثل گنوم ترمینال و کنسول و ...) ولی دیپندنسی های زیادی طلب نکنه؟ الان از lxterminal استفاده میکنم چون کلا یک بسته نصب میکنه :D ولی پروفایل نداره که بشه خوب کانفیگش کرد. دیدم i3 همش از اسم urxvt استفاده میکنه. ولی تو مخازن main دبیان نبود :D
پاسخ:
سلام رسول جان.
۱- i3gaps رو نصب کن برای همین کار طراحی شده.
2- خودت که یافتی :)
3- urxvt از همه بهتر کار میکنه اما terminator هم عالیه و به شدت قابل پیکره‌بندی
سلام دوباره :)
مشکل ۲ رو حل کردم.
با
new_window normal 0 px
و
new_float normal 0 px
ولی سوال اولم مهم تر هست :)
سلام دوباره.
یه سوال راجع به کانکی دارم.
فرض کنیم توی کانکی یه کلمه نوشته میشه به اسم Rasool. بعد فرضا یه کلمه دیگه‌ جای اون قراره نوشته بشه مثلا Alireza ولی اندازه‌ش به اندازه همون کاراکترهای Rasool بشه. یعنی بشه Alirez. یه جورایی تعیین بشه که فلان قسمت از کانکی کلا ۶ کاراکتره نه بیشتر. پس هرچی میخوای بنویسی تو همون ۶ کاراکتر فقط بنویس.
میشه همچین چیزی؟ حالا یا به صورت کاراکتر یا کلا پیکسل.
من یه کانکی دارم (همونی که عکسش رو ایمیل کردم) ولی مشکلش اینجاس که مثلا اگه ولوم رو از ۱۰۰ آوردم روی ۸۰، به خاطر همون ۱ کاراکتر که کم میشه، کانکی از سمت راست میاد به سمت داخل صفحه. یا اگه عددای سمت چپ کانکی زیاد بشن، کانکی به سمت راست حرکت میکنه و از صفحه میزنه بیرون. میخوام کاری کنم که هر بخش، یه جای ثابت قرار بگیرن و با جا به جا شدنشون، بقیه سر جاشون بمونن.
پاسخ:
اینجا رو ببینید :

https://bbs.archlinux.org/viewtopic.php?id=176142
سلام. ممنون. ولی توی dzen اینجوری قابل پیاده سازی نیست. با pa^ حلش کردم :)
ولی برای جاهای دیگه، به درد میخوره :)
یه سوال دیگه هم دارم. توی i3 من یه کانکی توی workspace 2 دارم که نمیخوام توی باقی workspace ها دیده بشه. اگه normal یا desktop رو انتخاب کنم، حل میشه ولی باعث میشه کانکی من تبدیل به یک پنجره بشه و این یعنی دیگه نمی تونم توی یه workspace چندتا کانکی داشته باشم. اگه بذارمش روی override میتونم چندتا کانکی داشته باشم ولی اینجوری کانکی ها رو توی تمام workspace ها نشون میده. به نظرتون چکار باید کرد؟ توی i3status و dzen و ... مشکلی نیست چون همیشه و همه جا باید باشن ولی توی دسکتاپ میخوام فقط مختص به workspace خاصی باشن :)
بازم ممنون.

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی