senpai(5) File Formats Manual senpai(5)

senpai - قالب پرونده پیکربندی و تنظیمات

یک پرونده پیکربندی senpai یک پرونده با قالب scfg است. به https://git.sr.ht/~emersion/scfg مراجعه فرمایید.

برخی تنظیمات الزامی و بقیه اختیاری هستند.

address (الزامی)

نشانی (host[:port]) سرور IRC. برنامه senpai به طور پیش‌فرض از اتصالات TLS استفاده می‌کند مگر اینکه گزینه tls را روی false تنظیم کنید. اتصالات TLS به طور پیش‌فرض از درگاه 6697 و اتصالات متن آشکار از درگاه 6667 استفاده می‌کنند.

یک طرحواره (scheme) اختیاری می‌تواند مشخص شود (scheme://host[:port]):

  • irc:// پیش‌فرض ضمنی است، TLS با توجه به مقدار پیکربندی tls فعال یا غیرفعال می‌شود.
  • ircs:// پروتکل TLS را فعال می‌کند.
  • irc+insecure:// پروتکل TLS را غیرفعال می‌کند (IRC متن آشکار).
  • ircs+insecure:// پروتکل TLS را فعال می‌کند اما اعتبارسنجی گواهی TLS را نادیده می‌گیرد. این گزینه در برابر حملات غیرفعال MITM محافظت می‌کند اما در برابر حملات فعال MITM محافظتی ندارد.

nickname (الزامی)

نام مستعار شما، که با پیام IRC NICK ارسال می‌شود. این نام نباید شامل فاصله یا دونقطه (:) باشد.

realname

نام واقعی شما، یا در واقع فیلدی که برای دیگران در دسترس خواهد بود و ممکن است شامل فاصله و دونقطه باشد. با پیام IRC USER ارسال می‌شود. به طور پیش‌فرض، مقدار nick استفاده می‌شود.

username

نام کاربری شما، که با پیام IRC USER ارسال می‌شود و همچنین برای احراز هویت SASL استفاده می‌گردد. به طور پیش‌فرض، مقدار nick استفاده می‌شود.

password

گذرواژه شما، که برای احراز هویت SASL استفاده می‌شود. همچنین به password-cmd مراجعه فرمایید.

password-cmd دستور [آرگومان‌ها...]

به جای ارائه مستقیم گذرواژه احراز هویت SASL به صورت متن آشکار، می‌توانید دستوری را مشخص کنید که در زمان اجرا برای واکشی گذرواژه اجرا شود. این گزینه زمانی مفید است که گذرواژه‌های خود را در یک پرونده جداگانه (احتمالاً رمزنگاری‌شده) با استفاده از `gpg` یا یک مدیر گذرواژه خط فرمان مانند pass یا gopass ذخیره می‌کنید. اگر یک password-cmd ارائه شود، مقدار password نادیده گرفته شده و خط اول خروجی password-cmd برای ورود استفاده خواهد شد.

دستور و آرگومان‌ها از قبل توسط scfg نقل‌قول می‌شوند، بنابراین نیازی به نقل‌قول اضافی کل رشته دستور نیست. برای مثال:

password-cmd pass "Messaging/irc"

channel

فهرستی از نام‌های کانال جداشده با فاصله که senpai به طور خودکار در زمان راه‌اندازی و اتصال مجدد به سرور به آن‌ها ملحق می‌شود. این دستورالعمل می‌تواند چندین بار مشخص شود.

این دستورالعمل هنگام استفاده از bouncer نباید استفاده شود، زیرا bouncer از قبل کانال‌های ذخیره‌شده را به خاطر سپرده و senpai را به طور خودکار به آن‌ها ملحق می‌کند.

highlight

فهرستی از کلیدواژه‌های جداشده با فاصله که در صورت بیان شدن توسط دیگران، یک اعلان و یک نشانگر نمایشی را ایجاد می‌کنند. این دستورالعمل می‌تواند چندین بار مشخص شود.

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

on-highlight-beep

فعال کردن ارسال نویسه زنگ (BEL) هنگام هایلایت شدن شما. پیش‌فرض غیرفعال است.

pane-widths { ... }

پیکربندی عرض بخش‌های مختلف رابط کاربری.

عرض بخش‌ها به عنوان زیردستورالعمل‌های دستورالعمل اصلی pane-widths تنظیم می‌شوند:

pane-widths {
    nicknames 16
}
این دستورالعمل از زیردستورالعمل‌های زیر پشتیبانی می‌کند:

nicknames

تعداد سلول‌هایی که ستون نام‌های مستعار در تایم‌لاین اشغال می‌کند. به طور پیش‌فرض 14 است.

channels

تعداد سلول‌هایی که ستون کانال‌ها روی صفحه اشغال می‌کند. به طور پیش‌فرض 16 است. از مقدار ویژه 0 برای افقی کردن فهرست کانال‌ها استفاده کنید. اگر مقدار منفی باشد، فهرست کانال‌ها به طور پیش‌فرض افقی خواهد بود و هنگام تغییر وضعیت با F7، مقدار مثبت (معکوس) عرض را به خود می‌گیرد.

members

تعداد سلول‌هایی که ستون فهرست اعضای کانال روی صفحه اشغال می‌کند. به طور پیش‌فرض 16 است. از مقدار ویژه 0 برای غیرفعال کردن استفاده کنید. اگر مقدار منفی باشد، فهرست اعضا به طور پیش‌فرض غیرفعال خواهد بود و هنگام تغییر وضعیت با F8، مقدار مثبت (معکوس) عرض را به خود می‌گیرد.

text

حداکثر عرض خط متن پیام، بر حسب تعداد سلول‌ها. به طور پیش‌فرض، مقدار صفر است که به معنای نبود حداکثر می‌باشد. برای حفظ عرض خط خوانا در نمایشگرهای بزرگ مفید است.

tls

فعال کردن رمزنگاری TLS. پیش‌فرض true است.

typings

ارسال اعلان‌های تایپ که به دیگران اطلاع می‌دهد چه زمانی در حال تایپ پیام هستید. پیش‌فرض true است.

mouse

فعال یا غیرفعال کردن پشتیبانی از ماوس. پیش‌فرض true است.

spell-check

فعال کردن بررسی املا با استفاده از harper-ls. نیازمند نصب بودن harper-ls است. در حال حاضر فقط انگلیسی است. پیش‌فرض false است.

colors { ... }

تنظیمات رنگ‌های عناصر مختلف رابط کاربری.

رنگ‌ها را می‌توان با نام ("red")، با شماره (از 0 تا 255 برای 256 رنگ پیش‌فرض ترمینال؛ -1 به معنی پیش‌فرض)، یا با رنگ واقعی هگزادسیمال RGB (#rrggbb) تنظیم کرد.

رنگ‌ها به عنوان زیردستورالعمل‌های دستورالعمل اصلی colors تنظیم می‌شوند:

colors {
    prompt green
}
زیردستور توضیحات
prompt <color> رنگ برای پیش‌درآمد ">" که در حالت دستوری ظاهر می‌شود
unread <color> رنگ پیش‌زمینه برای نام بافرهای خوانده‌نشده در فهرست بافرها
status [...] رنگ پیش‌زمینه برای خطوط رویدادهای وضعیت (مانند ورود، خروج، تغییر نام مستعار) در بافرها، جدول زیر را ببینید
nicks [...] طرح رنگ برای نام‌های مستعار کاربران، جدول زیر را ببینید
زیردستور status توضیحات
status <color> نمایش رویدادهای وضعیت با رنگ مشخص‌شده
status disabled پنهان کردن رویدادهای وضعیت
زیردستور nicks توضیحات
nicks base نمایش نام‌های مستعار با 16 رنگ مختلف (پیش‌فرض)
nicks extended نمایش نام‌های مستعار با 256 رنگ مختلف
nicks fixed [<others>] نمایش نام‌های مستعار با رنگ ثابت، با امکان تعیین اختیاری رنگ‌ها برای سایر نام‌ها
nicks self <self> نمایش نام مستعار خود با رنگ ثابت مشخص‌شده (می‌تواند در کنار سایر دستورالعمل‌ها اضافه شود)

shortcuts { ... }

تنظیمات کلیدهای میانبر سفارشی صفحه کلید.

میانبرها با زیردستورالعمل‌های `<key> <action> [<params>...]` تعریف می‌شوند:

shortcuts {
    Alt+k cursor-delete-after
    Shift+Alt+Page_Up set-editor "/me slaps OP with a large trout"
}
کلیدها شامل تغییردهنده‌های اختیاری (Control/Shift/Alt/Super) و نام یک کلید هستند، که می‌تواند یک نویسه تحت‌اللفظی (مثلاً k) یا نامی برای آن کلید برگرفته از نام‌های کلید XKB باشد (در لینوکس، برای یافتن نام کلیدها به wev مراجعه کنید، مانند Page_Up، XF86AudioPlay).

یک میانبر سفارشی هر میانبر پیش‌فرضی را برای آن کلید بازنویسی خواهد کرد.

عملکرد (action) توضیحات
none میانبر را پاک می‌کند، بدون هیچ عملیاتی
quit ویرایشگر را پاک می‌کند، یا دستور `/quit` را تایپ می‌نماید
set-editor <text> ویرایشگر را در صورت خالی بودن روی متن ارائه‌شده تنظیم می‌کند
cursor-start مکان‌نما را به ابتدای ویرایشگر منتقل می‌کند
cursor-end مکان‌نما را به انتهای ویرایشگر منتقل می‌کند
redraw پنجره را بازطراحی و تازه‌سازی می‌کند
scroll-up پیمایش به سمت بالا در تایم‌لاین
scroll-down پیمایش به سمت پایین در تایم‌لاین
scroll-next-highlight رفتن به سمت پایین به هایلایت بعدی
scroll-previous-highlight رفتن به سمت بالا به هایلایت قبلی
buffer-next رفتن به بافر بعدی
buffer-previous رفتن به بافر قبلی
buffer-next-unread رفتن به بافر خوانده‌نشده بعدی
buffer-previous-unread رفتن به بافر خوانده‌نشده قبلی
cursor-right-word مکان‌نما را به کلمه بعدی منتقل می‌کند
cursor-left-word مکان‌نما را به کلمه قبلی منتقل می‌کند
cursor-right مکان‌نما را به نویسه بعدی منتقل می‌کند
cursor-left مکان‌نما را به نویسه قبلی منتقل می‌کند
cursor-up یک خط به عقب در ویرایشگر پیمایش می‌کند
cursor-down یک خط به جلو در ویرایشگر پیمایش می‌کند
cursor-delete-previous-word کلمه قبلی را در ویرایشگر حذف می‌کند
cursor-delete-next-word کلمه بعدی را در ویرایشگر حذف می‌کند
cursor-delete-previous نویسه قبلی را در ویرایشگر حذف می‌کند
cursor-delete-next نویسه بعدی را در ویرایشگر حذف می‌کند
cursor-delete-before از مکان‌نما تا ابتدای خط را حذف می‌کند
cursor-delete-after از مکان‌نما تا انتهای خط را حذف می‌کند
search-editor جستجوی معکوس در تاریخچه ویرایشگر
auto-complete کادر گفتگوی تکمیل خودکار را باز یا گزینه آن را انتخاب می‌کند
close-overlay هر بافر همپوشان باز (مانند نتایج جستجو) را می‌بندد
toggle-channel-list نمایش یا پنهان کردن فهرست عمودی کانال‌ها
toggle-member-list نمایش یا پنهان کردن فهرست عمودی اعضا
send محتویات ویرایشگر را ارسال می‌کند
buffer <number>|last رفتن به بافر شماره‌گذاری‌شده با شاخص شروع از صفر، یا آخرین بافر

debug

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

transient

پیشرفته. اجرای یک نمونه زودگذر و موقت بدون خواندن/نوشتن روی دیسک (به جز پیکربندی اولیه). می‌تواند برای نمونه‌های عمومی مفید باشد. پیش‌فرض false است.

local-integrations

پیشرفته. فعال کردن یکپارچه‌سازی با سیستم محلی (مانند اعلان‌ها از طریق DBus). غیرفعال کردن آن در سیستم‌هایی که قرار است از طریق SSH استفاده شوند می‌تواند مفید باشد. پیش‌فرض true است.

on-highlight-path

پیشرفته. برنامه senpai به طور پیش‌فرض بدون نیاز به اسکریپت هایلایت سفارشی به شما اطلاع‌رسانی می‌کند. مسیر جایگزین برای یک اسکریپت شل که هنگام هایلایت شدن شما اجرا شود. به طور پیش‌فرض، senpai به دنبال یک اسکریپت هایلایت شل در $XDG_CONFIG_HOME/senpai/highlight می‌گردد. اگر هیچ پرونده‌ای در آن مسیر یافت نشود و مسیر جایگزینی هم ارائه نشده باشد، اجرای دستور هایلایت غیرفعال می‌شود.

در صورت عدم تنظیم، $XDG_CONFIG_HOME به طور پیش‌فرض ~/.config/ است.

قبل از اجرای اسکریپت هایلایت، متغیرهای محیطی زیر مقداردهی می‌شوند:

اسکریپت‌های شل باید اطمینان حاصل کنند که متغیرها در پرونده اسکریپت در داخل نقل‌قول (QUOTED) قرار دارند، در غیر این صورت در معرض حملات تزریق شل (SHELL INJECTION ATTACKS) خواهید بود. اسکریپت‌های شل همچنین باید اطمینان حاصل کنند که نویسه‌هایی مانند '*' و '?' بسط داده نمی‌شوند.

متغیر محیطی توضیحات
BUFFER بافری که پیام در آن ظاهر شده است
HERE برابر 1 اگر BUFFER بافر جاری باشد، در غیر این صورت 0
MESSAGE محتوای پیام
SENDER نام مستعار فرستنده
نکته: هنگام ارسال این متغیرها به notify-send(1)، برخی از دیمن‌های اعلان از \ برای دنباله‌های گریز در بدنه استفاده می‌کنند که باعث می‌شود \ از پیام ناپدید شود یا اثرات جانبی ناخواسته‌ای (مانند خطوط جدید) ایجاد کند.

برای دور زدن این مشکل، می‌توانید با قطعه کد زیر بک‌اسلش را دو برابر کنید:

#!/bin/sh
escape() {
	printf "%s" "$1" | sed ´s#\\#\\\\#g´
}
notify-send "[$BUFFER] $SENDER" "$(escape "$MESSAGE")"

یک پرونده پیکربندی کمینه برای اتصال به Libera.Chat با عنوان "Guest123456":

address irc.libera.chat
nickname Guest123456

یک پرونده پیکربندی پیشرفته‌تر که گذرواژه را از یک برنامه خارجی واکشی می‌کند، عرض برخی بخش‌ها را تغییر می‌دهد و رنگ‌های بیشتری را برای نام‌های مستعار کاربران فعال می‌نماید:

address irc.libera.chat
nickname Guest123456
username senpai
realname "Guest von Lenon"
password-cmd gopass show irc/guest # use your favorite CLI password solution here
channel "#rahxephon"
pane-widths {
	nicknames 10
	channels 16
	members 16
}
colors {
	nicks extended
}
shortcuts {
    Alt+k cursor-delete-after
}

senpai(1)

2026-06-02