تبلیغات
لینوکس و من - مطالب ترفند
لینوکس و من

ویلند(wayland)

نویسنده : علیرضا احسانی | تاریخ: 1396/08/23





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

نویسنده : امین | تاریخ: 1396/07/27

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

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

نویسنده : امین | تاریخ: 1396/07/25

لپتاپ هایی هستن که در اثر یک سری تنظیماتی که به ناچار باید در خط کرنل لینوکس در گراب انجام بشه، دکمه های تنظیم نور صفحه مانیتور دیگه کار نمیکنند. لپ‌تاپ های 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

نویسنده : امین | تاریخ: 1396/07/18

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

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

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

نویسنده : امین | تاریخ: 1396/07/5

در سیستم های مبتنی بر آرچ، مثل مانجارو، 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



لینک‌های مرتبط

توزیع اوبونتو

نویسنده : علیرضا احسانی | تاریخ: 1396/06/9




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

نویسنده : محمدرضا عبداله‌زاده | تاریخ: 1396/05/7

یکی از وظایف اصلی هسته سیستم عامل، مدیریت دستگاه‌های ورودی و خروجی سیستم یا به اصطلاح 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"

لینک‌های مرتبط

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

نویسنده : علیرضا احسانی | تاریخ: 1396/05/1

شاید موقع نوشتن اسکریپت,نیاز داشته باشین بخشی از خروجی اسکریپتتون رو با یه رنگ دیگه نمایش بدین.(مثلا ارور ها یا وارنینگ ها)
برای این کار شما میتونین از برنامه tput استفاده کنین.به این صورت:

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

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

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

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

نویسنده : علیرضا احسانی | تاریخ: 1396/04/16


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

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

نویسنده : امین | تاریخ: 1396/04/2

با آپدیت ۳.۲۴ گنوم تم 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 رو بذارید. این کد رنگ سبز و آبی این تم ها است که با هم متفاوته.

1 2 3 4 5 6 7 ...