| CHA-CONFIG(5) | File Formats Manual | CHA-CONFIG(5) |
نام (NAME)
cha-config - راهنمای فایل پیکربندی مرورگر وب Chawan
توضیحات (DESCRIPTION)
مرورگر Chawan از پیکربندی گزینههای مختلفی مانند کلیدهای میانبر، شیوهنامههای کاربر (user stylesheets)، ترجیحات اختصاصی سایت و غیره پشتیبانی میکند. قالب پیکربندی مشابه toml است، با استثناهای زیر:
- جدولهای معمولی ([table]) و جدولهای درونخطی (table = {}) معناشناسی متفاوتی دارند. اولی افزایشی (additive) است، به این معنی که مقادیر پیشفرض حذف نمیشوند. دومی مخرب (destructive) است و تمام تعاریف پیشفرض را در جدول مشخصشده پاک میکند.
- عبارت [[table-array]] یک ساختار سادهنویسی برای [table-array.n] است، که در آن n تعداد آرایههای جدول اعلامشده است. به عنوان مثال، میتوانید پیکربندیهای اختصاصی سایت (siteconf) بینام را با نحو [[siteconf]] تعریف کنید.
مسیر استاندارد فایل پیکربندی ~/.chawan/config.toml است، اما مسیر جستجو با دایرکتوریهای پایه XDG نیز سازگار است:
- 1.
- فایل پیکربندی مشخصشده با سوئیچ -C -> از آن استفاده میشود
- 2.
- متغیر $CHA_DIR تنظیم شده باشد -> از $CHA_DIR/config.toml استفاده میشود
- 3.
- مسیر ${XDG_CONFIG_HOME:-~/.config}/chawan/config.toml وجود داشته باشد -> از آن استفاده میشود
- 4.
- مسیر ~/.chawan/config.toml وجود داشته باشد -> از آن استفاده میشود
برای جزئیات درباره نحوه دسترسی به دایرکتوری پیکربندی، بخش پردازش مسیرها (Path handling) را ببینید.
برای دریافت یک الگوی پیکربندی نمونه، فایل bonus/config.toml را در توزیع سورسکد برنامه مشاهده کنید.
راهاندازی (Start)
گزینههای راهاندازی باید در بخش [start] قرار گیرند.
در ادامه فهرستی از گزینههای راهاندازی آمده است:
- startup-script = “”
- کد JavaScript
- headless = false
- boolean / “dump”
- console-buffer = true
- boolean
بافر (Buffer)
گزینههای بافر باید در بخش [buffer] قرار گیرند.
این گزینهها برای تمام بافرها سراسری هستند. برای فیلتر کردن دقیقتر و تفکیکشده، از [[siteconf]] استفاده کنید.
مثال:
-
[buffer] # نمایش تصاویر در تمام وبسایتها images = true # غیرفعالسازی CSS وبسایتها styling = false # مشخص کردن استایلهای کاربر user-style = ''' /* میتوانید استایلهای خارجی UA را اینگونه وارد کنید: */ @import 'user.css'; /* یا استایل را به صورت درونخطی درج کنید. */ /* اعمال خط زیر پیوندها به صورت پیشفرض */ a[href] { text-decoration: revert !important } @media (monochrome) { /* فقط در حالت رنگی "monochrome" (یا -M) */ /* غیرفعال کردن قلم برجسته در استایل UA */ a[href]:hover { font-weight: initial } /* ...و مورب کردن قلم هنگام نگه داشتن ماوس */ a[href]:hover { font-style: italic !important } } ''' # میتوانید scripting را روی true بگذارید، اما پیشنهاد میشود # از [[siteconf]] برای فعالسازی به ازای هر سایت استفاده کنید.
در ادامه فهرستی از گزینههای بافر آمده است:
- styling = true
- boolean
- scripting = false
- boolean / “app”
- images = false
- boolean
- boolean / “save”
- referer-from = false
- boolean
- autofocus = false
- boolean
- meta-refresh = “ask”
- “never” / “always” / “ask”
- history = true
- boolean
- mark-links = false
- boolean
- user-style = “”
- CSS stylesheet
جستجو (Search)
گزینههای جستجو باید در بخش [search] قرار گیرند.
در ادامه فهرستی از گزینههای جستجو آمده است:
- wrap = true
- boolean
- ignore-case = “auto”
- “auto” / boolean
کدگذاری (Encoding)
گزینههای کدگذاری باید در بخش [encoding] قرار گیرند.
در ادامه فهرستی از گزینههای کدگذاری آمده است:
- document-charset = [“utf-8”, “sjis”, “euc-jp”, “latin2”]
- آرایهای از رشتههای برچسب مجموعه نویسه
- display-charset = “auto”
- رشته برچسب مجموعه نویسه / “auto”
برنامهها و مسیرهای خارجی (External)
گزینههای خارجی باید در بخش [external] قرار گیرند.
در ادامه فهرستی از گزینههای خارجی آمده است:
- editor = “${VISUAL:-${EDITOR:-vi}}”
- دستور پوسته
- mailcap = [“~/.mailcap”, “/etc/mailcap”, “/usr/etc/mailcap”, “/usr/local/etc/mailcap”]
- آرایهای از مسیرها
- mime-types = [“~/.mime.types”, “/etc/mime.types”, “/usr/etc/mime.types”, “/usr/local/etc/mime.types”]
- آرایهای از مسیرها
- cgi-dir = [“$CHA_DIR/cgi-bin”, “$CHA_LIBEXEC_DIR/cgi-bin”]
- آرایهای از مسیرها
- w3m-cgi-compat = false
- boolean
- show-download-panel = true
- boolean
- copy-cmd = “xsel -bi”
- دستور پوسته
- paste-cmd = “xsel -bo”
- دستور پوسته
- history-size = 100
- number
- مسیر
ورودی (Input)
گزینههای ورودی باید در بخش [input] قرار گیرند.
- vi-numeric-prefix = true
- boolean
- use-mouse = “auto”
- boolean / “auto”
- osc52-copy = “auto”
- boolean / “auto”
- osc52-primary = “auto”
- boolean / “auto”
- bracketed-paste = “auto”
- boolean / “auto”
- wheel-scroll = 5
- number
- side-wheel-scroll = 5
- number
مثالها:
-
[input] vi-numeric-prefix = true [page] # در اینجا، تابع پیکانی در صورت ورود پیشوند عددی vi با آن مقدار، # و در غیر این صورت بدون آرگومان فراخوانی میشود. # پیشوند عددی هرگز نمیتواند صفر باشد، بنابراین بررسی تعریفنشده بودن با عملگر سهتایی ایمن است. G = 'n => n ? pager.gotoLine(n) : pager.cursorLastLine()'
شبکه (Network)
گزینههای شبکه باید در بخش [network] قرار گیرند.
- max-redirect = 10
- number
- max-net-connections = 12
- number
- prepend-scheme = “https://”
- string
- proxy = “”
- URL
- allow-http-from-file = false
- boolean
نمایش (Display)
گزینههای نمایش باید در بخش [display] قرار گیرند.
در ادامه فهرستی از گزینههای نمایش آمده است:
- color-mode = “auto”
- “monochrome” / “ansi” / “eight-bit” / “true-color” / “auto”
- format-mode = “auto”
- “auto” / [“bold”, “italic”, “underline”, “reverse”, “strike”, “overline”, “blink”]
- no-format-mode = [“overline”]
- [“bold”, “italic”, “underline”, “reverse”, “strike”, “overline”, “blink”]
- image-mode = “auto”
- “auto” / “none” / “sixel” / “kitty”
- sixel-colors = “auto”
- “auto” / 2..65535
- alt-screen = “auto”
- “auto” / boolean
- highlight-marks = true
- boolean
- double-width-ambiguous = false
- boolean
- minimum-contrast = 100
- 0..235
- set-title = true
- boolean
- default-background-color = “auto”
- “auto” / RGB color
- default-foreground-color = “auto”
- “auto” / RGB color
نوار وضعیت (Status)
گزینههای مربوط به نوار وضعیت (آخرین خط روی صفحه) باید در بخش [status] قرار گیرند.
در ادامه فهرستی از گزینههای نوار وضعیت آمده است:
- show-cursor-position = true
- boolean
- show-hover-link = true
- boolean
- format-mode = “reverse”
- {بخش [display] را ببینید}
قوانین Omnibar (Omnirule)
نوار جامع یا omni-bar (که به طور پیشفرض با C-l باز میشود) میتواند برای انجام جستجوها با استفاده از omni-rules استفاده شود. این موارد باید به عنوان زیرکلیدهایی در جدول [omnirule] مشخص شوند. (خود زیرکلید نادیده گرفته میشود؛ تا زمانی که با کلیدهای دیگر تداخل نداشته باشد، میتوانید از هر نامی استفاده کنید.)
مثالها:
-
# جستجو با استفاده از DuckDuckGo Lite. # (این قانون در پیکربندی پیشفرض گنجانده شده است، اگرچه C-k جستجوی Brave را فراخوانی میکند.) [omnirule.ddg] match = '^ddg:' substitute-url = '(x) => "https://lite.duckduckgo.com/lite/?kp=-1&kd=-1&q=" + encodeURIComponent(x.split(":").slice(1).join(":"))' # برای استفاده از قانون فوق، نوار URL را با C-k باز کنید، آن را با C-u پاک کرده و ddg:keyword را تایپ کنید. # همچنین میتوانید C-k را اینگونه بازتعریف کنید: [page] 'C-k' = '() => pager.load("ddg:")' # جستجو در ویکیپدیا، به سبک فایرفاکس. # ساختار [[omnirule]] یک قانون omnirule بینام تعریف میکند؛ این ساختار معادل حالت نامگذاریشده است. [[omnirule]] match = '^@wikipedia' substitute-url = '(x) => "https://en.wikipedia.org/wiki/Special:Search?search=" + encodeURIComponent(x.replace(/@wikipedia/, ""))'
همانطور که در بالا ذکر شد، پیکربندی پیشفرض شامل برخی قوانین توکار است که بر اساس ترجیح نگهدارنده و این معیار حداقلی که باید بدون کوکی و JavaScript کار کنند، انتخاب شدهاند. در حال حاضر، این موارد عبارتند از:
- ddg: - DuckDuckGo Lite.
- br: - جستجوی Brave.
- wk: - ویکیپدیای انگلیسی.
- wd: - ویکیواژه انگلیسی (English Wiktionary).
- mo: - Mojeek.
گزینههای Omnirule:
- match
- regex
- substitute-url
- تابع JavaScript
پیکربندی اختصاصی سایت (Siteconf)
گزینههای پیکربندی را میتوان برای سایتهای مجزا مشخص کرد. مدخلها باید به عنوان زیرکلیدهایی در جدول [siteconf] مشخص شوند. (خود زیرکلید نادیده گرفته میشود؛ تا زمانی که با کلیدهای دیگر تداخل نداشته باشد، میتوانید از هر نامی استفاده کنید.)
بیشتر گزینههای siteconf را میتوان به صورت سراسری نیز مشخص کرد؛ فیلد “overrides” را ببینید.
مثالها:
-
# فعالسازی کوکیها در وبسایت نارنجی (Hacker News) برای ورود به حساب. [siteconf.hn] url = 'https://news\.ycombinator\.com/.*' cookie = true # تغییر مسیر npr.org به text.npr.org. [siteconf.npr] host = '(www\.)?npr\.org' rewrite-url = ''' (x) => { x.host = "text.npr.org"; const s = x.pathname.split('/'); x.pathname = s.at(s.length > 2 ? -2 : 1); /* نیازی به بازگرداندن مقدار نیست؛ اشیاء URL با ارجاع ارسال میشوند. */ } ''' # مجاز کردن اشتراکگذاری کوکی در دامنههای *sr.ht. [siteconf.sr-ht] host = '(.*\.)?sr\.ht' # هم 'something.sr.ht' و هم 'sr.ht' cookie = true # فعالسازی کوکیها (فقطخواندنی؛ از "save" برای ذخیره دائم استفاده کنید) share-cookie-jar = 'sr.ht' # استفاده از مخزن کوکی 'sr.ht' برای تمام میزبانهای منطبق # استفاده از پوسته "vector" در ویکیپدیا. # ساختار [[siteconf]] یک siteconf بینام تعریف میکند؛ این معادل موارد بالا است. [[siteconf]] url = '^https?://[a-z]+\.wikipedia\.org/wiki/(?!.*useskin=.*)' rewrite-url = 'x => x.searchParams.append("useskin", "vector")' # وادار کردن imgur به ارسال تصاویر. [siteconf.imgur] host = '(i\.)?imgur\.com' default-headers = { User-Agent = "Mozilla/5.0 chawan", Accept = "*/*", Accept-Encoding = "gzip, deflate", Accept-Language = "en;q=1.0", Pragma = "no-cache", Cache-Control = "no-cache" }
گزینههای Siteconf:
- url
- regex
- host
- regex
- rewrite-url
- تابع JavaScript
- boolean / “save”
- رشته میزبان (host)
- scripting = buffer.scripting
- boolean / “app”
- styling = buffer.styling
- boolean
- images = buffer.images
- boolean
- document-charset = encoding.document-charset
- رشته برچسب مجموعه نویسه
- proxy = network.proxy
- رشته URL
- insecure-ssl-no-verify = false
- boolean
- autofocus = buffer.autofocus
- boolean
- meta-refresh = buffer.meta-refresh
- “never” / “always” / “ask”
- history = buffer.history
- boolean
- mark-links = buffer.mark-links
- boolean
کلیدهای میانبر (Keybindings)
کلیدهای میانبر باید در این بخشها قرار گیرند:
- برای تعامل با صفحهبند (pager): [page]
- برای ویرایش خط: [line]
کلیدهای میانبر با استفاده از نحو زیر پیکربندی میشوند:
-
'<keybinding>' = '<action>'
که در آن <keybinding> ترکیبی از نویسههای یونیکد با استفاده از نحو شرح داده شده در زیر است.
عبارت <action> یا دستوری است که در بخش [cmd] تعریف شده است، یا یک عبارت JavaScript است. این سند تنها عملیاتهای از پیش تعریفشده در پیکربندی پیشفرض را شرح میدهد؛ برای شرح API، به cha-api(7) مراجعه کنید.
مثالها:
-
# نمایش تغییر URL هنگام فشردن Control، Escape و j 'C-M-j' = 'load' # رفتن به اولین خط صفحه با دو بار فشردن g بدون پیشوند عددی، # یا رفتن به خط مربوطه در صورت وارد کردن عدد پیشوند. 'g g' = 'gotoLineOrStart' # توابع و عبارات JS نیز پذیرفته میشوند. کد زیر موتور جستجوی پیشفرض # را با DuckDuckGo Lite جایگزین میکند. # (برای مشاهده فهرست توابع موجود به api.md مراجعه کنید.) 'C-k' = '() => pager.load("ddg:")'
قالب کلیدهای میانبر (Keybinding format)
یک کلید میانبر فهرستی از کلیدها است که با فاصله جدا شدهاند و به صورت اختیاری با اصلاحکنندههای S- (shift)، C- (control) یا M- (meta) پیشوندگذاری میشوند.
به طور کلی، کلیدهای ASCII/Unicode را میتوان همانطور که هستند نوشت. استثنا کلید فاصله است که به صورت SPC نوشته میشود.
سایر کلیدهای نامگذاریشده پشتیبانیشده عبارتند از: TAB، ESC، RET (کلید return)، LF (کلید enter/line feed)، Left، Up، Down، Right (کلیدهای جهتنما)، PageUp، PageDown (صفحه بالا/پایین)، Home، End و کلیدهای تابع F1 تا F20.
برای سازگاری با گذشته، فاصلهها را میتوان از توالی کلیدهایی که با یک حرف بزرگ شروع نمیشوند حذف کرد. به عنوان مثال، 'gg' و 'g g' معادل هستند. با این حال، مؤلفههایی که با یک حرف بزرگ شروع میشوند (مانند 'Gg') برای نامهای کلید رزرو شدهاند، بنابراین برای جلوگیری از تجزیه مبهم، باید با فاصله جدا شوند (مانند 'G g').
همچنین برای سازگاری با گذشته، فاصلههای ابتدا/انتهای کلید میانبر به SPC ترجمه میشوند.
عملیاتهای صفحهبندی (Pager actions)
کلیدهای میانبر پیشفرض به صورت برجسته (bold) نمایش داده شدهاند.
- quit
- q
- suspend
- C-z
- load
- C-l
- loadCursor
- M-l
- dupeBuffer
- M-u
- lineInfo
- C-g
- saveScreen
- s s
- saveSource
- s S
- editScreen
- s e
- editSource
- s E
- discardBufferPrev, discardBufferNext
- d ,, d .
- discardTree
- M-d
- enterCommand
- M-c
- searchForward, searchBackward
- جستجوی یک رشته در بافر فعلی، به سمت جلو یا عقب.
- isearchForward, searchBackward
- /, ?
- peek
- نمایش پیامی حاوی URL بافر فعلی در خط وضعیت.
- peekCursor
- u
- showFullAlert
- s u
- copyURL
- M-y
- copyCursorLink
- y u
- copyCursorImage
- y I
- gotoClipboardURL
- M-p
- openBookmarks
- M-b
- addBookmark
- M-a
- toggleLinkHintsAutoClick
- مشابه toggleLinkHints، با این تفاوت که روی پیوند انتخابشده نیز کلیک میکند.
عملیاتهای بافر (Buffer actions)
عبارت n به عددی اشاره دارد که پیش از عملیات وارد میشود. برای مثال در 10gg مقدار n برابر ۱۰ است. اگر هیچ عددی وارد نشود، نامشخص در نظر گرفته میشود.
کلیدهای میانبر پیشفرض به صورت برجسته (bold) نمایش داده شدهاند.
- cursorUp, cursorDown
- j/C-p/Up, k/C-n/Down
- cursorLeft, cursorRight
- h/Left, l/Right
- cursorLineBegin
- 0/Home
- cursorLineEnd
- $/End
- cursorPrevWord, cursorPrevViWord, cursorPrevBigWord
- حرکت مکاننما به انتهای n-امین کلمه قبلی.
- cursorWordEnd, cursorViWordEnd, cursorBigWordEnd
- e, E
- cursorRevNthLink
- حرکت مکاننما به n-امین پیوند سند، با شمارش معکوس از آخرین خط سند.
- cursorNthLink
- حرکت مکاننما به n-امین پیوند سند.
- pageUp, pageDown, pageLeft, pageRight
- C-b/PageUp, C-f/PageDown, z H, z L
- scrollUp, scrollDown, scrollLeft, scrollRight
- K/C-y, J/C-e, z h, z l
- click
- RET/LF
- reshape
- R
- redraw
- r
- cursorFirstLine, cursorLastLine
- حرکت به ابتدا/انتهای بافر.
- cursorTop, cursorMiddle, cursorBottom
- H, M, L
- raisePage, raisePageBegin, centerLine, centerLineBegin, lowerPage, lowerPageBegin
- z t, z RET, z z, z ., z b, z -
- دستور raisePage به سمت پایین پیمایش میکند تا مکاننما در بالاترین خط صفحه قرار گیرد. (در vi دستور z RET، در vim دستور z t.)
- دستور centerLine صفحه را جابجا میکند تا مکاننما در وسط صفحه قرار گیرد. (در vi دستور z .، در vim دستور z z.)
- دستور lowerPage به سمت بالا پیمایش میکند تا مکاننما در پایینترین خط صفحه قرار گیرد. (در vi دستور z -، در vim دستور z b.) حالتهای دارای پسوند -Begin همچنین مکاننما را مانند کلیدهای اصلی در vi به اولین نویسه غیرفاصلهای خط منتقل میکنند.
- nextPageBegin
- z +
- cursorLeftEdge, cursorMiddleColumn, cursorRightEdge
- g 0, g c, g $
- centerColumn
- وسطچین کردن صفحه حول ستون فعلی. (در w3m کلید Z.)
- gotoLineOrStart, gotoLineOrEnd
- g g, G
- mark
- m
- gotoMark, gotoMarkY
- `, ’
- markURL
- :
- saveLink
- s RET
- saveSource
- s S
- saveImage
- s I
- toggleImages
- M-i
- toggleScripting
- M-j
- toggleCookie
- M-k
- cursorSearchWordForward
- C-a, *
عملیاتهای ویرایش خط (Line-editing actions)
- line.submit
- RET, LF
- line.cancel
- C-g
- line.backspace, line.delete
- C-h, C-d
- line.clear, line.kill
- C-u/C-x C-?, C-k
- line.openEditor
- C-x C-e
- line.clearWord, line.killWord
- C-w, M-d
- line.backward, line.forward
- C-b, C-f
- line.prevWord, line.nextWord
- M-b, M-f
- line.begin, line.end
- C-a/Home, C-e/End
- line.escape
- C-v
- line.prevHist, line.nextHist
- C-p, C-n
نکته: برای تسهیل ویرایش URL، ویرایشگر خط تعریف متفاوتی از کلمه نسبت به صفحهبند دارد. برای ویرایشگر خط، یک کلمه یا دنبالهای از نویسههای حرفیعددی است یا هر تکنویسه غیر حرفیعددی. (این بدان معناست که برای مثال https:// از چهار کلمه تشکیل شده است: https، :، / و /.)
-
# کلید Control+A مکاننما را به ابتدای خط منتقل میکند. 'C-a' = 'line.begin' # کلید Escape+D تمام محتوای بعد از مکاننما را تا رسیدن به نویسه فاصلهانداز حذف میکند. 'M-d' = 'line.killWord'
ضمیمه (Appendix)
پردازش عبارات باقاعده (Regex handling)
عبارات باقاعده در حال حاضر با استفاده از کتابخانه libregexp از QuickJS پردازش میشوند. این بدان معناست که تمام عبارات باقاعده مانند JavaScript کار میکنند.
دو حالت مختلف برای پیشپردازش عبارات باقاعده در Chawan وجود دارد: حالت “جستجو” (search) و حالت “تطبیق” (match). حالت تطبیق برای پیکربندیها استفاده میشود (یعنی در تمام مقادیری که در این سند به عنوان “regex” توصیف شدهاند). حالت جستجو برای قابلیت جستجوی درون صفحه استفاده میشود (با استفاده از searchForward/isearchForward و غیره).
حالت تطبیق (Match mode)
عبارات باقاعده به عنوان تطبیق دقیق در نظر گرفته میشوند، مگر اینکه با علامت توان (^) شروع شوند یا با علامت دلار بدون گریز ($) پایان یابند.
به عبارت دیگر، تبدیلات زیر رخ میدهد:
-
^abcd -> ^abcd (بدون تغییر، فقط ابتدا تطبیق داده میشود) efgh$ -> efgh$ (بدون تغییر، فقط انتها تطبیق داده میشود) ^ijkl$ -> ^ijkl$ (بدون تغییر، کل خط تطبیق داده میشود) mnop -> ^mnop$ (تغییر به تطبیق دقیق، کل خط تطبیق داده میشود)
حالت match mode راهی برای فعال/غیرفعال کردن پرچمهای regex جاوااسکریپت مانند i ندارد.
حالت جستجو (Search mode)
برای جستجوی درون صفحه، تبدیلات فوق اعمال نمیشوند؛ جستجوی /abcd به دنبال رشته abcd درون تمام خطوط میگردد.
حالت جستجو همچنین دارای برخی تبدیلات تسهیلکننده دیگر است (این موارد در حالت match mode کار نمیکنند):
- رشته \c (بکاسلش + حرف c کوچک) درون regex حالت جستجو، تطبیق غیرحساس به بزرگی و کوچکی حروف را فعال میکند.
- برعکس، \C (بکاسلش + حرف C بزرگ) تطبیق غیرحساس به بزرگی و کوچکی حروف را غیرفعال میکند. (زمانی مفید است که گزینه ignore-case را روی true تنظیم کرده باشید که حالت پیشفرض است.)
- توالیهای \< و \> به \b تبدیل میشوند (مانند vi، grep و غیره).
مانند حالت تطبیق، حالت جستجو روی تکتک خطوط عمل میکند. این بدان معناست که الگوهای جستجو با متنی که در چندین خط شکسته شده است (wrapped) تطبیق داده نمیشوند.
پردازش مسیرها (Path handling)
قوانین پردازش مسیر مشابه نحوه برخورد پوسته با رشتهها است.
- از بسط مدک (tilde-expansion) برای تعیین دایرکتوری خانگی کاربر استفاده میشود؛ بنابراین مثلاً ~/whatever کار میکند.
- متغیرهای محیطی را میتوان مانند $ENV_VAR استفاده کرد.
- مسیرهای نسبی، نسبت به دایرکتوری پیکربندی Chawan هستند (یعنی $CHA_DIR).
برخی از متغیرهای محیطی نیز توسط Chawan صادر (export) میشوند:
- $CHA_BIN_DIR: دایرکتوری که فایل اجرایی cha در آن قرار دارد. پیوندهای نمادین برای تعیین این مسیر به طور خودکار حل میشوند.
- $CHA_LIBEXEC_DIR: دایرکتوری تمام فایلهای اجرایی که Chawan برای عملکرد خود استفاده میکند. به طور پیشفرض این مقدار $CHA_BIN_DIR/../libexec/chawan است.
- $CHA_DIR: دایرکتوری پیکربندی. (این مورد توسط کاربر نیز قابل تنظیم است؛ برای جزئیات بخش بالای سند را ببینید.)
- $CHA_DATA_DIR: اگر فایل پیکربندی از دایرکتوریهای پایه XDG استفاده کند، این مقدار برابر با ${XDG_DATA_HOME:-$HOME/.local/share}/chawan است. در غیر این صورت، همانند $CHA_DIR خواهد بود.
- •
- استثنا: اگر $CHA_DIR پیش از فراخوانی cha تنظیم شده باشد، $CHA_DATA_DIR نیز خوانده میشود. این برای تضمین کارکرد فراخوانیهای تودرتو در پیکربندیهای دارای دایرکتوریهای پایه XDG است.
انواع کلمه (Word types)
دستورهای صفحهبند مبتنی بر کلمه میتوانند بر اساس تعاریف مختلفی از کلمات کار کنند. در حال حاضر این تعاریف عبارتند از:
- کلمات w3m
- کلمات vi
- کلمات بزرگ (Big words)
کلمه w3m
یک کلمه w3m دنبالهای از نویسههای حرفیعددی است. با نمادها دقیقاً مانند نویسههای فاصله (whitespace) برخورد میشود.
کلمه vi
یک کلمه vi دنبالهای از نویسهها در یک دسته نویسه یکسان است. در حال حاضر دستههای نویسه عبارتند از: نویسههای حرفیعددی، نمادها، حروف han، هیراگانا، کاتاکانا و هانگول.
کلمات vi ممکن است با فاصله از هم جدا شوند؛ با این حال، کلمات vi متعلق به دستههای جداگانه نیازی به جداسازی با فاصله ندارند. برای مثال دنباله نویسه زیر شامل دو کلمه است:
-
hello[]+{}@`!
کلمه بزرگ (Big word)
یک کلمه بزرگ دنبالهای از نویسههای غیرفاصلهای است.
این نوع در واقع همانند یک کلمه w3m است، اما نمادها به عنوان غیرفاصله در نظر گرفته میشوند.