اسکریپتی برای کار با pacman

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

هدف این اسکریپت اینه که یک سری عملکردهای رایج و به درد بخور پکمن رو که بعضا دستورات بلندی میشن و نمیشه به یاد سپرد، به دستورات کوتاه تبدیل کنیم.

Screenshot from 2024-06-18 12-13-14.png 

ویژگی ها و کارهایی که این اسکریپت میکنه:

  • استفاده از یک AUR Helper به دلخواه خودتون (پیشفرض: yay)
  • استفاده از sudo یا doas به دلخواه خودتون (پیشفرض: sudo)
  • جست و جوی پکیج ها در مخازن رسمی و AUR
  • نصب پکیج (ها) چه از مخازن چه از فایل، با یک دستور ثابت
  • پیدا کردن بسته ای که صاحب یک فایل خاصی است
  • نمایش اطلاعات یک بسته
  • حذف بسته ها با/بدون حذف بسته های وابسته
  • حذف بسته های orphan
  • آپدیت کل سیستم با کمک AUR Helper 
  • یافتن سریعترین میرورها (با reflector)
  • نمایش دپندنسی های یک بسته
  • نمایش بسته هایی که به یک بسته وابسته هستند.
  • نمایش محتوای یک فایل درون فایل فشرده یک بسته tar
  • نمایش لیستی از بسته ها با این ویژگیها:
    • تمامی پکیج ها (نصب شده یا نشده)
    • بسته های نصب شده
    • بسته های orphan
    • بسته هایی که خارج از پکیج منیجر نصب کردیم
    • بسته هایی که هیچ بسته دیگه ای به اونها وابستگی نداره
    • بسته هایی که قابل بروزرسانی هستن
    • قابلیت جست و جوی بسته ها درون این لیست ها
  • ذخیره یک فایل در پوشه کاربر حاوی لیست تمامی پکیج های نصب شده
  • پاک‌سازی کش پکمن
  • آنلاک کردن دیتبایس با حذف فایل db.lck

ادامه مطلب

تغییر بکلایت متناسب با حالت باتری

با یک udev rule ساده میتونیم به سیستم بگیم وقتی شارژر قطع شد، بکلایت (نور صفحه) رو کم کنه و وقتی شارژر وصل شد نور صفحه رو زیاد کنه. 

فایل زیر رو ایجاد کنید و به جای دستوری که من نوشتم، دستور مورد نظر خودتون رو وارد کنید. راه های متعددی برای تغییر بکلایت وجود داره. یکی از اونها brightnessctl هست.

/etc/udev/rules.d/99-backlight-ac-battery.rules
## ACTION TO DO WHEN ON BATTERY SUBSYSTEM=="power_supply", ATTR{online}=="0", ENV{POWER}="off", RUN+="/usr/bin/brightnessctl set 30%" ## ACTION TO DO WHEN ON CHARGER SUBSYSTEM=="power_supply", ATTR{online}=="1", ENV{POWER}="on", RUN+="/usr/bin/brightnessctl set 70%"

و بعد یک بار دستور زیر رو اجرا کنید تا این rule توسط سیستم شناسایی بشه

$ sudo udevadm control --reload-rules

bind در mount

همون طور که میدونید در لینوکس برای دسترسی به درایوها باید اونها رو در یک فولدر mount کرد. ولی جالبه که بدونید میتونیم هر یک از محتویات یک درایو ماونت شده رو هم در جاهای دیگه ماونت کرد! به این کار میگن bind (بخوانید بایند) دو تا فولدر به هم.

یک چیزی شبیه به ایجاد کردن لینک که با دستور ln انجام میدیم. منتها با یک سری تفاوت های کوچک...

  • در لینک کردن با ln ما یک شورتکات از مقصد میسازیم. درواقع فولدر واقعی وجود نداره. اما در bind ما یک فولدر میسازیم و محتویات یک فولدر دیگه رو داخلش ماونت میکنیم.
  • انجام bind توسط mount نیاز به دسترسی root داره. البته میشه با پکیج bindfs هم bind کرد که نیاز به دسترسی root نداره، ولی خب برای نصب پکیج باید دسترسی root داشته باشید!
  • در bind کردن دو فولدر به هم، دیگه اون شورتکات فِلِش در گوشه آیکن وجود نخواهد داشت.

من در هاردم، چند تا فولدر دارم به نام های Documents, Downloads, Pictures, Videos, Music. یعنی همون هایی که در فولدر home کاربری هم داریم. تا الان با ln یک شورتکات از هر کدوم این ها در فولدر home داشتم. ولی حالا فولدرهای روی هارد رو با فولدرهای متناظرشون در فولدر home کاربر bind کردم. ظاهر قضیه بهتر شده. یعنی دیگه خبری از فلش روی آیکن نیست و انگار واقعا همه چیز در home قرار داره.

توجه: بعد از نوشتن این مطلب متوجه شدم فعلا امکان Trash کردن فایلها در مسیرهای bind شده دست‌کم در دسکتاپ‌ها وجود نداره. ولی در cli با trash-cli میشه اینکار رو کرد. اما بعدا متوجه شدم که با bindfs میشه! پایین تر توضیح دادم.

برای اینکه بدونید چطوری، ادامه مطلب رو ببینید...

ادامه مطلب

Cover Image

جلوگیری از نمایش Thumbnail در گنوم

فایل منیجر پیش فرض گنوم یعنی Files یا با اسم قدیمیش Nautilus برای فایلهای مختلف، تصاویر thumbnail نشون میده. مثلا برای فیلم‌ها، تصاویر، اسناد و ...

این تصاویر در فولدر ~/.cache/thumbnails برای هر یوزر ذخیره میشن. این اتفاق خوبی ها و بدی هایی داره. خوبی تصاویر thumbnail اینه که شما بدون باز کردن اون فایل میتونین تا درصدی حدس بزنید محتواش چی هست. و همچنین جلوه بصری هم به فایل‌ها میده.

اما بدی این تصاویر اینه که موقع لود شدن هم زمان میبره و هم مدام هارد درگیر تولید و بازخوانی این تصاویر هست. ما میتونیم تولید این تصاویر رو کلا غیر فعال کنیم یا فقط برای برخی از انواع فایلها غیر فعال کنیم.

غیر فعال کردن کلی Thumbnails

در دسکتاپ Gnome میتونید با این دستور تولید این تصاویر رو کلا غیر فعال کنید:

$ gsettings set org.gnome.desktop.thumbnailers disable-all 'true'

غیر فعال کردن Thumbnails برای یک نوع فایل

اگر مثلا نیاز به تصاویر بندانگشتی برای فایلهای pdf ندارید، میتونید با این روش این کار رو بکنید:

$ gsettings set org.gnome.desktop.thumbnailers disable "['application/pdf']"

لیست کاملی از انواع پسوند فایلها رو میتونید در این لینک پیدا کنید.

حذف تصاویر تولید شده قبلی

در نهایت یک بار هم تصاویر تولید شده قبلی رو حذف کنید تا با تنظیمات جدید تصاویر دوباره تولید بشوند/نشوند:

rm -r ~/.cache/thumbnails

Cover Image

تغییر آیکن فایلها و پوشه ها در Nautilus

اگر از icon theme های استاندارد استفاده میکنید و قصد دارید آیکن یک فایل یا فولدری رو توی فایل منیجر گنوم یعنی Nautilus تغییر بدید دو راه وجود داره. یک راه اینکه در Properties اون فایل روی آیکنش کلیک کنید و مسیر آیکنی رو که مد نظرتون هست انتخاب کنید.

اما این کار باعث میشه وقتی میزان زوم رو تغییر میدید، آیکن شما بزرگ و کوچک نشه. حتی اگه از فرمت svg هم انتخاب کردید ممکنه به اندازه سایر آیکن ها کوچک نشه موقع zoom out.

یک راه ساده و سریعتری هم از ترمینال هست. به این صورت که شما باید نام آیکن مورد نظرتون رو از فولدر icon theme (مثلا در مسیر /usr/share/icons/Papirus/apps) که الان تم آیکنِ انتخاب شده ی شما است، پیدا کنید و مشابه الگوی زیر، آیکن فایل یا پوشه خودتون رو تغییر بدید. با این کار مشکل زوم رو هم نخواهیم داشت. مثلا:

$ gio set -t string ~/.bashrc metadata::custom-icon-name org.xfce.terminal-settings

در این مثال ما آیکنی به نام org.xfce.terminal-settings رو برای فایل ~/.bashrc انتخاب کردیم. توجه کنید که این نام آیکن باید در تم آیکنی که در حال حاضر فعال هست وجود داشته باشه.

چطور بفهمیم یک فایل متعلق به چه بسته ای است؟!

موارد زیادی ممکنه پیش بیاد که لازم داشته باشیم بفهمیم یک فایل مربوط به چه بسته ای است. مثلا در باز کردن یک برنامه خطایی دریافت میکنیم مبنی بر اینکه مثلا cannot load shared object file libvoikko.so.1. یعنی این فایل رو پیدا نکرده...

برای اینکه بفهمیم فایل مورد نظر متعلق به چه بسته ای است که ما نداریمش، در توزیع های مبتنی بر Arch دو راه داریم. یکی استفاده از pacman و یکی استفاده از pkgfile. البته قبلش باید یک بار دیتابیس فایلها رو داشته باشیم. برای بروز رسانی دیتابیس:

$ sudo pacman -Fy

استفاده از pkgfile

$ pkgfile libvoikko.so.1

استفاده از pacman

$ pacman -F libvoikko.so.1

اما اگر بخوایم بفهمیم یک فایل مشخصی در یک مسیر، مربوط به کدوم یک از بسته های نصب شده است، از سوییچ -Qo استفاده میکنیم. مثلا:

$ pacman -Qo /usr/share/dbus-1/services/org.gnome.Nautilus.service




حاصل سر و کله زدن های من با لینوکس