notionflux(1) General Commands Manual notionflux(1)

notionflux — کنترل از راه دور مبتنی بر Lua برای notion

notionflux [-R | -e lua-code | file]

notionflux ابزاری برای ارسال اسکریپت‌ها به موتور اسکریپت‌نویسی Lua درون مدیر پنجره‌ی notion(1) است. بدین ترتیب اسکریپت می‌تواند به API داخلی Lua در notion دسترسی پیدا کند.

دو حالت کاری وجود دارد: تعاملی و دسته‌ای (batch). حالت تعاملی با اجرای notionflux در حالتی که ورودی استاندارد آن به یک ترمینال متصل باشد و بدون ارسال هیچ پرچمی در خط فرمان فعال می‌شود.

در غیر این صورت، حالت دسته‌ای فعال می‌گردد:

اجبار به حالت دسته‌ای، حتی اگر stdin به یک ترمینال متصل باشد. کد Lua از stdin تا رسیدن به انتهای فایل (end-of-file) خوانده شده، برای پردازش به notion ارسال می‌شود و نتیجه خوانده شده و نمایش داده می‌شود.
code
تقریباً همانند مورد بالا، به جز اینکه به جای خواندن از stdin، پارامتر خط فرمان code برای پردازش ارسال می‌گردد.
file
محتوای فایل ارزیابی می‌شود.

این حالت مشابه اجرای یک پوسته تعاملی lua(1) است. قابلیت تکمیل خودکار با کلید Tab برای API زبان Lua در notion و همچنین ویرایش خط در دسترس است.

کد وارد شده به محض اینکه به یک عبارت کامل Lua تبدیل شود، توسط notion ارزیابی می‌گردد. نتیجه نمایش داده می‌شود و پس از آن می‌توان عبارت بعدی را وارد کرد.

متغیر محیطی DISPLAY باید روی یک X server که notion را اجرا می‌کند تنظیم شده باشد تا notionflux بتواند مسیر سوکت را به دست آورد.

notionflux از طریق یک Unix domain socket به notion(1) متصل می‌شود. این سوکت تنها با مجوزهای خواندن/نوشتن برای کاربری که notion را اجرا کرده است ایجاد می‌شود. مسیر سوکت را می‌توان با دستور زیر جویا شد:

$ xprop -root _NOTION_MOD_NOTIONFLUX_SOCKET
_NOTION_MOD_NOTIONFLUX_SOCKET(STRING) = "/tmp/fileuj6onu"

دستور

$ notionflux -e "return notioncore.current():name()"
"emacs: notionflux.1"

عنوان پنجره‌ای که در حال حاضر دارای فوکوس است را نمایش می‌دهد، در حالی که

$ notionflux -e "print(notioncore.current():name())"
"emacs: notionflux.1"
nil

پیام‌ها را جمع‌آوری کرده و پیش از بازگشت چاپ می‌کند. به منظور نوشتن در خروجی استاندارد notion (معمولاً ~/.xsession-errors) ، همان‌طور که print در نگارش‌های پیشین notionflux انجام می‌داد، لطفاً از دستور زیر استفاده کنید:

$ notionflux -e 'io.stdout:write("hello .xsession-errors!\n")'
nil

با استفاده از تغییر مسیر ورودی:

$ echo "return notioncore.current()" | notionflux
WClientWin: 0x9bb6b8

با استفاده از حالت تعاملی:

$ notionflux
lua> notioncore.current():rootwin_of()
WRootWin: 0x8c9688
lua> do
...>   local x = 42 -- Lua defaults to global scope, don't litter
...>   return x
...> end
42
lua> ^D

در هر پاسخ از طرف mod_notionflux، رشته‌ها به گونه‌ای در علامت نقل‌قول قرار می‌گیرند که بتوان آن‌ها را مستقیماً مجدداً در یک مفسر Lua قرار داد تا همان رشته بازتولید شود، در حالی که سایر نوع‌ها با استفاده از () به نمایش رشته‌ای خود تبدیل می‌شوند. به همین دلیل است که در مثال اول در اطراف پاسخ علامت‌های نقل‌قول وجود دارد اما nil (که مقدار بازگشتی بلاکی بدون عبارت return است) فاقد آن‌هاست.

صفحه خانگی notion

پیکربندی و توسعه Notion با Lua

دفترچه راهنمای مرجع Lua 5.4

/usr/share/doc/notion/

notion(1), X(7), lua(1), readline(3)

دستور ionflux حدود سال ۲۰۰۴ در ion3 معرفی شد. این دستور هنگامی که notion در سال ۲۰۱۰ از ion3 منشعب گردید، توسط تیم توسعه notion با آن تطبیق داده شد.

notionflux در سال ۲۰۱۹ توسط The Notion development team تحت مجوز GNU GPL با هدف افزودن حالت تعاملی بازنویسی شد.

در حال حاضر، اسکریپت باید ۴۰۹۵ بایت یا کمتر باشد. اگر به مقدار بیشتری نیاز دارید، ارسال یک نام فایل را مد نظر قرار دهید، که برای ارزیابی به notion منتقل می‌شود و در نتیجه این محدودیت را دور می‌زند.

June 20, 2019 notion