dmenu یکی از ابزارهای پروژهی 1 Suckless هست که در نگاه عمومی ازش به عنوان یک منوی اجرا کنندهی برنامهها در لینوکس یاد میشه. dmenu مثل بقیهی نرمافزهایی که توسط suckless تولید شده سرعت بالایی داره و مهمتر اینکه کار سادهای که برای انجامش ساخته شده رو به بهترین نحو انجام میده.
طبق تعریف suckless، کار این برنامه ساخت واستفادهی بهینه از منوهای تعریف شده توسط کاربر هست. به این صورت که کاربر میتونه آیتمهایی رو در قالب یک لیست بهش بده و dmenu اون لیست رو نمایش میده و بر اساس آیتمی که توسط کاربر از لیست انتخاب میشه، واکنش نشون میده.
کل ایدهی dmenu توی همین یک کارِ ساده خلاصه میشه. با همین روش یه لیست از کل برنامههای نصب شده روی سیستم میگیره و لیست رو روی صفحه به کاربر نشون میده و برنامهای که کاربر از لیست انتخاب میکنه رو اجرا میکنه. با بهترین و سریعترین و کمهزینهترین کدی که تیم سازندش میتونسته تولید کنه.
پس بر خلاف نگاه عمومی، توانایی این برنامه خیلی فراتر از یک "اجراکنندهی برنامه"ی ساده هست.
روش نصب
- نصب در آرچ:
طبق توضیحات ویکی آرچ میتونید dmenu رو از مخازن اصلی آرچ در dmenu یا از مخازن کاربران آرچ (aur) در dmenu-git با دستورهای زیر نصب کنید:
$ sudo pacman -S dmenu
$ yay -Syy dmenu-git
- نصب در اوبونتو:
$ sudo apt install dmenu
- نصب از سورس کد:
سورس رو دانلود و از حالت فشرده خارج کنید.
از طریق خط فرمان به دایرکتوری سورس کد cd و دستور زیر رو اجرا کنید:
$ sudo make install
و نصب انجام شده میتونیم با اجرای دستور dmenu_run برنامه رو اجرا کنیم.
یک مثال ساده
گفتیم که آیتمهایی رو میتونیم به dmenu پاس بدیم و dmenu اونها رو در قالب یک منو به ما نمایش میده. این آیتمها رو به روشهای مختلفی میتونیم به خورد dmenu بدیم. dmenu هم مثل خیلی از برنامههای یونیکس/گنو/لینوکس از قابلیت پایپینگ (لولهکشی، piping) بهره میبره. یعنی مثلا میتونیم یک متن شامل سه خط رو به عنوان یک لیست سه آیتمی به شکل زیر بهش بدیم:
$ echo -e "first\nsecond\nthird" | dmenu
که به صورت زیر نمایش داده میشه و با انتخاب هر کدوم از گزینهها، گزینهی انتخابی رو توی خروجی ترمینال چاپ میکنه.
البته احتمالا نوع و سایز فونت برای شما متفاوت باشه ک در ادامه نحوهی تغییر دادنش رو خواهم گفت.
تغییر فونت
$ dmenu_run -fn 'NotoMonoRegular:bold:pixelsize=30'
نمایش به صورت لیست عمودی
$ dmenu_run -l 10
که عدد ۱۰ طول لیست رو مشخص میکنه.
خروجی دستور تغییر فونت و نمایش عمودی رو میتونید در این تصویر ببینید.
1 : هدف پروژهی Suckless همونجوری که در شعار صفحهی اول وبسایتشون نوشته شده، تولید نرمافزارهایی هست که کمتر بد باشن (software that sucks less). تمرکزشون رو روی سادگی و بهینگی کدهاشون گذاشتن و شدیدا در این مورد سختگیرن.