rofi-thumbnails(5) راهنمای قالب‌های فایل rofi-thumbnails(5)

rofi-thumbnails - سامانه بندانگشتی‌های rofi

اکنون rofi قادر است برای تمامی انواع فایل‌هایی که یک ایجادکننده بندانگشتی سازگار با XDG برای آن‌ها در سیستم وجود دارد، تصویر بندانگشتی نمایش دهد.

این کار به‌طور پیش‌فرض در حالت‌های filebrowser و recursivebrowser، در صورتی که rofi با آرگومان -show-icons اجرا شده باشد، انجام می‌شود.

در یک اسکریپت سفارشی کاربر یا در حالت dmenu، می‌توان با افزودن پیشوند thumbnail:// به نام فایل مشخص‌شده پس از \0icon\x1f، نمادهای ورودی را با استفاده از ایجادکننده‌های بندانگشتی XDG تولید کرد؛ برای نمونه:

echo -en "EntryName\0icon\x1fthumbnail://path/to/file\n" | rofi -dmenu -show-icons

ایجادکننده‌های بندانگشتی XDG فایل‌هایی با پسوند “.thumbnailer” و ساختاری شبیه به فایل‌های “.desktop” برای راه‌اندازی برنامه‌ها هستند. آن‌ها در مسیرهای /usr/share/thumbnailers/ یا $HOME/.local/share/thumbnailers/ قرار می‌گیرند و شامل فهرستی از انواع رسانه (mimetypes) هستند که تولید تصویر بندانگشتی برای آن‌ها امکان‌پذیر است، به‌همراه رشته‌ای حاوی دستور لازم برای ایجاد تصویر مذکور. مثال زیر محتوای librsvg.thumbnailer را نشان می‌دهد که یک ایجادکننده بندانگشتی برای فایل‌های svg با استفاده از librsvg است:

[Thumbnailer Entry]
TryExec=/usr/bin/gdk-pixbuf-thumbnailer
Exec=/usr/bin/gdk-pixbuf-thumbnailer -s %s %u %o
MimeType=image/svg+xml;image/svg+xml-compressed;

تصاویر تولیدشده بر اساس چک‌جمع md5sum فایل‌های ورودی نام‌گذاری می‌شوند و بسته به اندازه‌شان در دایرکتوری‌های تصاویر بندانگشتی XDG قرار می‌گیرند: $HOME/.cache/thumbnails/{normal,large,x-large,xx-large}. سپس این تصاویر توسط rofi به‌عنوان نماد ورودی‌ها بارگذاری می‌شوند و مدیران فایل نظیر Thunar، Caja یا KDE Dolphin نیز می‌توانند برای نمایش بندانگشتی‌های خود از آن‌ها استفاده کنند. علاوه بر این، اگر تصویر بندانگشتی یک فایل از قبل در دایرکتوری‌های بندانگشتی موجود باشد (که پیش‌تر توسط rofi یا یک مدیر فایل ایجاد شده باشد)، rofi به‌جای فراخوانی ایجادکننده بندانگشتی، همان را بارگذاری خواهد کرد.

اگر ایجادکننده بندانگشتی مناسبی برای یک فایل مشخص پیدا نشود، rofi تلاش خواهد کرد تا از نماد متناظر با نوع رسانه (mimetype) موجود در پوسته نمادها (icon theme) استفاده کند.

می‌توان از یک دستور سفارشی برای تولید تصاویر بندانگشتی جهت نام‌های ورودی عمومی استفاده کرد؛ برای نمونه، اسکریپتی که با دریافت نشانی اینترنتی یک نماد، آن را بارگیری می‌کند یا بر اساس ورودی نمادهای متفاوتی را برمی‌گزیند. این کار با ارائه آرگومان -preview-cmd به‌همراه رشته‌ای حاوی دستور اجرایی با ساختار نگارشی زیر انجام‌پذیر است:

rofi ... -preview-cmd 'path/to/script_or_cmd "{input}" "{output}" "{size}"'

برنامه rofi اسکریپت یا دستور را با جایگزین کردن {input} با نام نماد ورودی (رشته پس از \0icon\x1fthumbnail://)، {output} با نام فایل خروجی بندانگشتی و {size} با اندازه درخواستی بندانگشتی فراخوانی می‌کند. اسکریپت یا دستور موظف است تصویر بندانگشتی را تولید کند (در صورت امکان با رعایت اندازه درخواستی) و آن را با نام فایل ارائه‌شده در {output} ذخیره نماید.

در توزیع‌های لینوکسی که از AppArmor استفاده می‌کنند (مانند اوبونتو و دبیان)، قواعد پیش‌فرض ارائه‌شده ممکن است باعث بروز مشکلاتی در تولید تصاویر بندانگشتی شوند. در صورت بروز چنین مشکلی، می‌توان AppArmor را با اجرای دستورات زیر غیرفعال کرد:

sudo systemctl stop apparmor
sudo systemctl disable apparmor

به‌عنوان روش جایگزین، می‌توان نمایه AppArmor زیر را در فایلی به نام /etc/apparmor.d/usr.bin.rofi قرار داد:

#vim:syntax=apparmor
# AppArmor policy for rofi
#include <tunables/global>
/usr/bin/rofi {
    #include <abstractions/base>
    # TCP/UDP network access for NFS
    network inet  stream,
    network inet6 stream,
    network inet  dgram,
    network inet6 dgram,
    /usr/bin/rofi mr,
    @{HOME}/ r,
    @{HOME}/** rw,
    owner @{HOME}/.cache/thumbnails/** rw,
}

سپس دستور زیر را اجرا کنید:

apparmor_parser  -r /etc/apparmor.d/usr.bin.rofi

تا قاعده دوباره بارگذاری و اعمال شود. این فرض بر این استوار است که فایل اجرایی باینری rofi در مسیر /usr/bin قرار دارد، که در یک نصب استاندارد بسته همین‌گونه است.

rofi