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

rofi-actions - دستورات سفارشی در پی تعامل با منوهای rofi

rofi امکان تنظیم دستورات یا اسکریپت‌های سفارشی را فراهم می‌کند تا هنگام انجام برخی کنش‌ها در منو، مانند تغییر انتخاب، پذیرش یک ورودی یا لغو کردن، اجرا شوند.

این قابلیت به عنوان مثال پخش جلوه‌های صوتی یا خواندن گزینه‌های منو با صدای بلند هنگام انتخاب را امکان‌پذیر می‌سازد.

در ادامه فهرستی از گزینه‌های rofi برای تعیین دستورات یا اسکریپت‌های سفارشی جهت اجرا هنگام کنش‌های پشتیبانی‌شده آمده است:

دستور یا اسکریپتی که هنگام تغییر انتخاب جاری اجرا می‌شود. متن انتخاب‌شده با جایگزینی الگوی {entry} به دستور فرستاده می‌شود.
دستور یا اسکریپتی که هنگام پذیرش یک ورودی منو اجرا می‌شود. متن پذیرفته‌شده با جایگزینی الگوی {entry} به دستور فرستاده می‌شود.
دستور یا اسکریپتی که هنگام تغییر حالت منو (مانند drun,window,ssh...) اجرا می‌شود.
دستور یا اسکریپتی که هنگام لغو شدن منو اجرا می‌شود.
دستور یا اسکریپتی که هنگام نمایش منوی خطا اجرا می‌شود (مانند rofi -e "error message"). متن خطا با جایگزینی الگوی {error} به دستور فرستاده می‌شود.
دستور یا اسکریپتی که هنگام گرفتن تصویر صفحه از rofi اجرا می‌شود. مسیر تصویر گرفته‌شده با جایگزینی الگوی {path} به دستور فرستاده می‌شود.

خط فرمان rofi:

rofi -on-selection-changed "/path/to/select.sh {entry}" \
     -on-entry-accepted "/path/to/accept.sh {entry}" \
     -on-menu-canceled "/path/to/exit.sh" \
     -on-mode-changed "/path/to/change.sh" \
     -on-menu-error "/path/to/error.sh {error}" \
     -on-screenshot-taken "/path/to/camera.sh {path}" \
     -show drun

فایل پیکربندی rofi:

configuration {
    on-selection-changed: "/path/to/select.sh {entry}";
    on-entry-accepted: "/path/to/accept.sh {entry}";
    on-menu-canceled: "/path/to/exit.sh";
    on-mode-changed: "/path/to/change.sh";
    on-menu-error: "/path/to/error.sh {error}";
    on-screenshot-taken: "/path/to/camera.sh {path}";
}

در ادامه یک اسکریپت نمونه bash آمده است که هنگام تغییر انتخاب جاری، با استفاده از aplay یک جلوه صوتی پخش می‌کند:

#!/bin/bash
coproc aplay -q $HOME/Music/selecting_an_item.wav

استفاده از coproc برای پخش صداها پیشنهاد می‌شود، در غیر این صورت فرآیند rofi قبل از خروج، تا پایان پخش صدا منتظر خواهد ماند.

در ادامه یک اسکریپت نمونه bash آمده است که ورودی‌های انتخاب‌شده جاری را با استفاده از espeak با صدای بلند می‌خواند:

#!/bin/bash
killall espeak
echo "selected: $@" | espeak
rofi