لینوکس و من

۲۱۶ مطلب با موضوع «ترفند» ثبت شده است

اجرای برنامه های گرافیکی تحت root در wayland

باز هم wayland! در این سیستم شما نمیتونید برنامه های گرافیکی (مثلا nautilus) رو با دستور sudo یا روش های مشابه اجرا کنید. برای حل این مشکل (که از دید توسعه دهنده ها این یه ویژگی است نه مشکل!) قبل از اجرای دستور مورد نظر، این دستور رو اجرا میکنیم:
xhost si:localuser:root
میتونیم اینو در startup بذاریم تا دیگه نیاز نباشه خودمون دستی اجراش کنیم.
البته گویا با این کار این ویژگی امنیتی wayland رو از کار میندازیم. ولی آخه برادر من... مگه تا حالا چه مشکلی ایجاد کرده بود.

تنظیم نور مانیتور در wayland

لپتاپ هایی هستن که در اثر یک سری تنظیماتی که به ناچار باید در خط کرنل لینوکس در گراب انجام بشه، دکمه های تنظیم نور صفحه مانیتور دیگه کار نمیکنند. لپ‌تاپ های ASUS این جوری اند. بنابراین باید با ابزارهای کمکی برای تنظیم نور مانیتور با استفاده از کیبورد، یه فکری میکردیم. در xorg این کار به خوبی با چیزی مثل xbacklight انجام میشه. اما در wayland اوضاع فرق میکنه و ابزارهای x دیگه کار نمیکنند.
 
اما میتونیم با استفاده از brightnessctl که در مخازن AUR آرچ وجود داره این مشکل رو برطرف کنیم. برای این کار اول باید اون رو نصب کنیم:
yaourt -S brightnessctl
و بعد باید عبارت زیر رو در فایلی در مسیر زیر ذخیره کنیم:
/etc/udev/rules.d/90-brightnessctl.rules
-----------------------------------------------------

ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="leds", RUN+="/bin/chgrp input /sys/class/leds/%k/brightness"
ACTION=="add", SUBSYSTEM=="leds", RUN+="/bin/chmod g+w /sys/class/leds/%k/brightness"
و بعد از نصب با دستوری مشابه دستور زیر میتونیم نور رو کم کنیم:
brightnessctl s 50-

یا نور رو زیاد کنیم:

brightnessctl s +50

اینها رو میتونید به عنوان یک شورتکات کیبورد در نظر بگیرید.

 

خاموش کردن مانیتور در گنوم با wayland

اگر xorg داشته باشید و بخواید با یک دستور در خط فرمان (یا شورتکات کیبورد) مانتیور رو خاموش کنید میتونید از این مطلب استفاده کنید. ربطی هم به دسکتاپی که استفاده میکنید نداره. اما در wayland این دستور کار نمیکنه، چون با ابزارهای مربوط به xorg نوشته شده.
اما در دسکتاپ گنوم که با wayland اجرا شده باشه اگر بخواید مانیتور رو خاموش کنید، این دستور میتونه به نوعی کمکتون کنه:
 busctl --user call org.gnome.Shell /org/gnome/ScreenSaver org.gnome.ScreenSaver SetActive b true
با اینکار Screen Shield گنوم ظاهر میشه و مانیتور هم خاموش میشه. میتونید این رو به یک شورتکات کیبورد هم بدید.

اگر شما راه دیگه ای بلد هستید خوشحال میشیم در قسمت نظرات با ما و بقیه دوستان به اشتراک بذارید.

خالی کردن هدفمند کش پکیج ها در pacman

در سیستم های مبتنی بر آرچ، مثل مانجارو، pacman مدیر بسته ها است. همون طور که میدونید در هر توزیع لینوکسی وقتی که آپدیت میکنیم بسته ها از اینترنت دانلود میشن و در یک فولدری که معمولا در دایرکتوری var/cache/ قرار داره نگهداری میشن. این کش خیلی خوبه، چون وقتی شما نیاز داشته باشید بسته ای رو که در ورژن جدید دچار اختلال شده downgrade کنید به ورژن قبلی راحت میتونید این کار رو بکنید.
اما به مرور زمان این بسته ها تعدادشون زیاد و زیادتر میشه و چندین گیگابایت فضای شما رو اشغال میکنن. من پیشنهاد میکنم دو نسخه از بسته هایی که الان نصب هستند در کش نگهداری بشن و قدیم تری ها از روی دیسک حذف بشن. یعنی مثلا اگر بسته های مربوط به ورژنهای ۵۵، ۵۴، ۵۳، ۵۲، ۵۱ فایرفاکس در کش وجود داشته باشن ورژن های ۵۵ و ۵۴ بمونن و بقیه پاک بشن.
برای این کار دستور زیر رو اجرا میکنیم:
sudo paccache -rk 2
در پاسخ میبینید که سیستم بهتون میگه چند بسته حذف شد و چند مگابایت فضا آزاد شد.
در قدم بعد میتونیم بسته هایی که الان در حال حاضر نصب نیستن رو هم از کش پاک کنیم. مثلا شما یه چیزی نصب کردید که بعدا پاکش کردید. حالا دیگه لزومی نداره بسته مربوطه توی کش مونده باشه!
sudo paccache -ruk 0

من ۸ گیگابایت کش داشتم که الان ۱.۳ شده.

حالا میتونیم این کار رو به خود پکمن بسپاریم و بهش بگیم که هر وقت آپدیت کردی یا چیزی نصب کردی یا پاک کردی، واسه من این تمیز کاری رو انجام بده. برای این کار فایل زیر رو با این محتویات میسازیم
1- sudo mkdir /etc/pacman.d/hooks
2- sudo nano /etc/pacman.d/hooks/clean_package_cache.hook
----------------------------------------------------------------------------
با این محتویات:

[Trigger]
Operation = Upgrade
Operation = Install
Operation = Remove
Type = Package
Target = *
[Action]
Description = Cleaning pacman cache...
When = PostTransaction
Exec = /usr/bin/paccache -rk 2



بهبود کارایی لینوکس با I/O scheduler جدید کرنل 4.12

یکی از وظایف اصلی هسته سیستم عامل، مدیریت دستگاه‌های ورودی و خروجی سیستم یا به اصطلاح I/O می‌باشد. برنامه‌های مختلفی که نیاز به دسترسی به دستگاه‌ها ورودی و خروجی دارند درخواست‌های خود را به هسته سیستم عامل ارسال می‌کنند و هسته سیستم عامل با توجه به تعداد درخواست‌هایی که برای دستگاه‌های مختلف وجود دارد، این درخواست‌ها را در صف قرار داده و برای انجام زمانبندی می‌کند. شیوه زمانبندی این درخواست‌ها تاثیر به سزایی در سرعت و پاسخگویی سیستم دارد. معمولا به دلیل کند بودن بعضی از دستگاه‌های ذخیره‌سازی همانند دیسک‌های سخت نسبت به سایر بخش‌های اصلی سیستم همچون CPU و RAM، عملیات I/O به عنوان یکی از دلایل اصلی کند بودن سیستم و پاسخگو (Responsive) نبودن برنامه‌ها می‌باشد.
روش‌ها و الگوریتم‌های مختلفی برای زمانبندی I/O وجود دارد. روش‌هایی که تاکنون در هسته لینوکس برای زمانبندی I/O استفاده می‌شد شامل CFQ، NOOP و Deadline بود. با ظهور دستگاه‌های ذخیره‌سازی جدید که قادر به انجام صدها و هزاران درخواست I/O در ثانیه می‌باشند، نیاز به روش‌های زمانبندی جدید که قادر به استفاده از این پتانسیل عظیم باشد بیش از پیش حس می‌شد. یکی از بهبودهایی که از کرنل نسخه 3.13 وارد هسته لینوکس شد multiqueue block layer بود که منجر به افزایش کارایی سیستم در استفاده از دستگاه‌های ذخیره سازی با کارایی بالا می‌شود. منتها این مکانیزم به خودی خود بدون وجود الگوریتم‌های زمانبندی که از این مکانیزم استفاده کنند فایده چندانی نداشت. ولی سرانجام در کرنل نسخه 4.12 دو زمانبند جدید که از این مکانیزم استفاده می‌کنند وارد هسته لینوکس شد. این الگوریتم‌ها به ترتیب BFQ و Kyber می‌باشند. زمانبند BFQ مکانیزمی است که بیشتر برای استفاده در دیسک‌های سخت HDD استفاده می‌شود که منجر به بهبود زمان تاخیر برنامه‌های تعاملی و بهبود کارایی سیستم می‌شود. الگوریتم Kyber هم بدلیل پیچیدگی کمتر نسبت به BFQ برای دیسک‌های SSD و سریعتر استفاده ‌می‌شود.
به تازگی کرنل 4.12 وارد مخازن آرچ شد و کاربران آرچ امکان استفاده از این مکانیزم‌های جدید رو پیدا کردند. این زمانبند‌ها در حالت عادی فعال نیستند و برای فعال شدن آنها باید کارهای زیر را انجام بدید. توصیه می‌کنم که اگر سیستم شما از HDD استفاده می‌کند از BFQ استفاده کنید و برای SSD ترجیحا از Kyber و یا از روش‌های فعلی موجود استفاده کنید.
در حالت عادی زمانبند CFQ در آرچ استفاده می‌شود که برای دیدن زمانبند مورد استفاده در دیسک مورد نظر خود از دستور زیر استفاده کنید در اینجا دیسک sda رو چک میکنیم:
$ cat /sys/block/sda/queue/scheduler
noop deadline [cfq]


برای استفاده از زمانبندهای چند صفی (multiqueue) ابتدا بایستی پارامترهای scsi_mod.use_blk_mq=1 dm_mod.use_blk_mq=1 را به پارامترهای بوت کرنل اضافه کنیم برای اینکار با فرض استفاده از GRUB به عنوان boot loader مورد استفاده اعمال زیر را انجام دهید:
ابتدا فایل etc/default/grub/ را با ویرایشگر مورد نظر خود باز کرده و پارامترهای گفته شده را به مقادیر موجود در جلوی گزینه GRUB_CMDLINE_LINUX_DEFAULT اضافه کنید یعنی به این صورت:
GRUB_CMDLINE_LINUX_DEFAULT="scsi_mod.use_blk_mq=1 dm_mod.use_blk_mq=1"

سپس با دستور زیر فایل تنظیمات گراب را بروزرسانی کنید:
$ sudo grub-mkconfig -o /boot/grub/grub.cfg

در مرحله بعد برای استفاده از زمانبند BFQ برای تمامی دیسک‌های سیستم یک rule جدید برای udev ایجاد می‌کنیم. به این منظور ابتدا دستور زیر را برای ایجاد rule جدید اجرا کنید:
$ sudo nano /etc/udev/rules.d/10-bfq.rules

سپس محتویات زیر را درون این فایل قرار دهید:
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="bfq"

در مرحله بعد سیستم خود را ریبوت کرده و بعد از بالا آمدن سیستم چک کنید که زمانبند BFQ برای دیسک شما مورد استفاده قرار گرفته باشد:
$ cat /sys/block/sda/queue/scheduler
mq-deadline kyber [bfq] none


همانطور که می‌بینید زمانبند bfq برای دیسک sda سیستم مورد استفاده قرار گرفته است. برای استفاده از Kyber هم به همین شیوه عمل می‌شود منتها در rule ایجاد شده برای udev به جای bfq گزینه kyber رو قرار بدید:
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="kyber"

تغییر دادن رنگ خروجی اسکریپت(بش)

شاید موقع نوشتن اسکریپت,نیاز داشته باشین بخشی از خروجی اسکریپتتون رو با یه رنگ دیگه نمایش بدین.(مثلا ارور ها یا وارنینگ ها)
برای این کار شما میتونین از برنامه tput استفاده کنین.به این صورت:
 tput setaf [0-7]
(بعد از setaf  با توجه به رنگ مورد نظرتون یه عدد بین  ۰ تا ۷ قرار بدین)
رنگ ها:
مشکی=۰
قرمز=۱
سبز=۲
زرد=۳
آبی=۴
ارغوانی=۵
آبی متمایل به سبز!!(cyan)=۶
سفید=۷

به دو روش میتونین ازش استفاده کنین.اول اینکه این دستور رو قبل از دستور echo بزارین  و روش دوم هم اینکه توی یه متغیر ذخیرش کنین و توی دستور echo  فراخوانیش کنین.
با دستور tput sgr0 هم رنگ ترمینال به رنگ پیشفرضش برمیگرده.

امیدوارم به دردتون بخوره:)

دستورات پر کاربرد vim


میشه گفت اینها پرکاربرد ترین دستورات ویم هستن.
امیدوارم به دردتون بخوره :)

اصلاح تم Arc در گنوم ۳.۲۴

با آپدیت ۳.۲۴ گنوم تم Arc و Arc-maia در قسمت نوتیفیکیشن ها دچار یه مشکل خفیفی شده بود. در ادامه مطلب، میگیم که چطوری این موارد برطرف شدند:
  • رنگ متن نوتیفیکیشن ها بسیار کمرنگ بودند
  • آب و هوا نسبت به ساعت عقب تر قرار گرفته بود و وقتی روش کلیک میکردی سیاه میشد
  • ساعت و آب و هوا که روی هم قرار دارند همخوانی نداشتند
  • رنگ دایره تاریخ امروز خاکستری بود
  • کلیک روی دکمه Clear All اون رو سیاه میکرد!
از اونجایی که این تم پر طرفداریه، در فروم مانجارو هم این مشکل مطرح شده بود، که بعد از این که این اصلاحات انجام شد قرار شد در نسخه های بعدی این تغییر صورت بگیره.
و اما روند کار این طوریه که ما اول باید اصطلاحا یک child theme درست کنیم. child theme یعنی یک تم که خصوصیاتش رو از تم اصلی یا مادر به ارث میبره!‌ و تغییراتی رو در اون اعمال میکنیم بدون اینکه به تم اصلی کاری داشته باشیم. این طوری فایلهای اصلی دست نخورده میمونن و بعد از هر آپدیت دیگه تغییرات ما از بین نمیرن.
برای اینکار باید فولدرهای مورد نظر رو بسازیم. اما به جای اینکه تک تک بیایم این کار رو بکنیم میتونیم با چنین دستوری این کار رو بکنیم:
install -D <(echo ) ~/.local/share/themes/Arc-maia-modified/gnome-shell/gnome-shell.css

بعد فایلی رو که ساختیم با ویرایشگر دلخواهمون باز میکنیم:
gedit ~/.local/share/themes/Arc-maia-modified/gnome-shell/gnome-shell.css

و متن زیر رو داخلش قرار میدیم و ذخیره میکنیم:
@import url("/usr/share/themes/Arc-Maia/gnome-shell/gnome-shell.css");

.search-provider-icon,
.list-search-result, .app-well-app .overview-icon,
.app-well-app.app-folder .overview-icon,
.grid-search-result .overview-icon {
  color: white;
  border-radius: 2px;
  padding: 6px;
  border: 1px solid transparent;
  transition-duration: 0ms;
  text-align: center;
    font-size:16px;
}

.message-title {
    color: #5c616c; }
.message-content {
    color: #5c616c; }

.weather-button:hover,
.weather-button:focus,
.events-section-title:hover,
.events-section-title:focus,
.world-clocks-button:hover,
.world-clocks-button:focus {
  background-color: #fafafa;
  border: none; }

.weather-button {
  padding: 7px 10px 7px 10px; }

.world-clocks-button {
  border: none; }

.button:hover, .notification-banner .notification-button:hover, .hotplug-notification-item:hover, .button:active, .notification-banner .notification-button:active, .hotplug-notification-item:active, .button:active:focus, .notification-banner .notification-button:active:focus, .hotplug-notification-item:active:focus,
.datemenu-today-button:active,
.world-clocks-button:active,
.weather-button:active,
.events-section-title:active {
  color: white;
  background-color: #16A085; }

.world-clocks-header,
.weather-header,
.events-section-title {
  color: black;
  font-weight: bold; }

.weather-box {
  spacing: 0.4em; }
.calendar-today {
background-color: #16A085;
color: #fff;
border-width: 0; }   
بعد باید یک بار گنوم رو ری استارت کنیم. کلید Alt+F2 رو میزنیم و تایپ میکنیم r و اینتر میزنیم (فقط در Xorg و نه در wayland)
حالا میتونیم تم Arc-maia-modified رو برای تم shell در Tweaks انتخاب کنیم.

اگر شما از تم Arc استفاده میکنید (نه Arc-maia) پس نام فولدرها رو هم درست کنید. و همچنین در کد بالا هر جایی که 16A085 هست باید 5c616c رو بذارید. این کد رنگ سبز و آبی این تم ها است که با هم متفاوته.

أموزش نصب DDE روی آرچ لینوکس



DDE یکی از زیبا ترین دسکتاپ های گنو/لینوکسیه.این دسکتاپ ,دسکتاپ پیشفرض توزیع دیپین هست.
Deepin desktop enviroment or DDE
تو این مطلب میخوام روش نصب این دسکتاپ روی آرچ لینوکس رو توضیح بدم.
***این کد هارو کپی پیست نکنید.ویکی آرچ رو بخونید و دقیقا درک کنید که چیکار دارید میکنید :)
اول از همه xorg و بسته های مرتبط به اون رو نصب کنید.
$sudo pacman -S xorg xorg-server xorg-xinit  xorg-server-utils
$ جزو دستور نیست.
حالا با توجه به کارت گرافیکتون,درایور مناسبش رو نصب کنین.
برای کارت گرافیک  اینتل:
$sudo pacman -S xf86-video-intel
برای کارت گرافیک  AMD:
 $sudo pacman -S xf86-video-ati
برای کارت گرافیک NVIDIA:
$sudo pacman -S  xf86-video-nouveau
پخش کدک های معمول صوتی:
 $sudo pacman -S gst-libav gst-plugins-bad gst-plugins-good gst-plugins-ugly gst-plugins-base gst-plugins-base-libs gstreamer
پلاگین pulseaudio:
 $sudo pacman -S pulseaudio
حالا بریم سراغ نصب میز کار.
میز کار رو با این دستور نصب کنید:
 $sudo pacman -S deepin
بعد از نصب اون,میتونین بسته ی deepin-extra رو هم نصب کنین.که شامل یه سری برنامست که خود دیپین داره توسعش میده.
برنامه های موجود در بسته ی  deepin-extra:
deepin music
deepin movie
deepin screenshot
deepin calendar
و اگر نمیخواین همشونو نصب کنین و فقط یکیشونو میخواین,میتونین با این دستور نصبش کنین.
 $sudo pacman -S deepin-*
جای * اسم نرم افزاری که میخواین رو بنویسین.
این میز  کار از lightDM به عنوان login-manager استفاده میکنه.هر چند میتونین هر لاگین منیجر دیگه ای روهم نصب کنین.لیست لاگین منیجر ها
حالا باید فایل کانفیگ lightDM رو دستکاری  کنیم.
 $vi /etc/lightdm/lightdm.conf
تو این فایل,دنبال عبارت زیر بگردین:
 #greeter-session=example-gtk-gnome
از حالت کامنت خارجش کنین(# اولشو حذف کنین) و به عبارت زیر تغیرش بدین:
 greeter-session=lightdm-deepin-greeter
حالا دستور زیر رو وارد کنین تا lightdm آماده کار بشه:
 $systemctl enable lightdm-service
و سیستم رو ریبوت کنین.یا با این دستور وارد محیط گرافیکی بشین:
 $systemctl start lightdm.service
تصاویری از محیط DDE

فایرفاکس خیلی دیر باز می شود

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

اگر شما هم چنین مشکلی دارید، بعد از اینکه افزونه های اضافی و قدیمی رو غیر فعال کردید و کش مرورگر رو خالی کردید و همچنان این مشکل پابرجا بود، بد نیست این راه رو یه امتحان بکنید. فایل زیر رو با ویرایشگر خودتون باز کنید:
/etc/hosts
و بعد خط زیر رو بهش اضافه کنید و به جای hostname اسم کامپیوتر خودتون رو بنویسید. این اسم با همین دستور hostname نمایش داده میشه.
127.0.0.1    hostname

و اگر localhost نوشته بود، اون رو به هاست‌نیم خودتون تغییر بدید.