| Linux | ماك |
|---|---|
NCHAT هو عميل دردشة قائم على المحطة في Linux و MacOS مع دعم Telegram و WhatsApp.

الاستخدام:
nchat [OPTION]
خيارات سطر الأوامر:
-d, --confdir <DIR> use a different directory than ~/.config/nchat
-e, --verbose enable verbose logging
-ee, --extra-verbose enable extra verbose logging
-h, --help display this help and exit
-k, --keydump key code dump mode
-m, --devmode developer mode
-r, --remove remove chat protocol account
-s, --setup set up chat protocol account
-v, --version output version information and exit
-x, --export <DIR> export message cache to specified dir
الأوامر التفاعلية:
PageDn history next page
PageUp history previous page
Tab next chat
Sh-Tab previous chat
Ctrl-f jump to unread chat
Ctrl-g toggle show help bar
Ctrl-l toggle show contact list
Ctrl-n search contacts
Ctrl-p toggle show top bar
Ctrl-q quit
Ctrl-s insert emoji
Ctrl-t send file
Ctrl-x send message
Ctrl-y toggle show emojis
KeyUp select message
Alt-d delete/leave current chat
Alt-e external editor compose
Alt-n goto chat
Alt-t external telephone call
Alt-/ find in chat
Alt-? find next in chat
Alt-$ external spell check
Alt-, decrease contact list width
Alt-. increase contact list width
أوامر تفاعلية للرسالة المحددة:
Ctrl-d delete selected message
Ctrl-r download attached file
Ctrl-v open/view attached file
Ctrl-w open link
Ctrl-x send reply to selected message
Ctrl-z edit selected message
Alt-c copy selected message to clipboard
Alt-q jump to quoted/replied message
Alt-r forward selected message
Alt-s add/remove reaction on selected message
Alt-w external message viewer
أوامر تفاعلية لإدخال النص:
Ctrl-a move cursor to start of line
Ctrl-c clear input buffer
Ctrl-e move cursor to end of line
Ctrl-k delete from cursor to end of line
Ctrl-u delete from cursor to start of line
Alt-Left move cursor backward one word
Alt-Right move cursor forward one word
Alt-Backsp delete previous word
Alt-Delete delete next word
Alt-c copy input buffer to clipboard (if no message selected)
Alt-v paste into input buffer from clipboard
Alt-x cut input buffer to clipboard
تم تطوير NCHAT واختباره على Linux و MacOS. تم اختبار الإصدار الحالي في:
بناء / تثبيت إصدار مستقر باستخدام المشروب
brew tap d99kris/nchat
brew install nchat
اختياريًا ، يمكن للمرء تعطيل البروتوكولات باستخدام --without-whatsapp و --without-telegram ، على سبيل المثال:
brew install nchat --without-telegram
بناء / تثبيت أحدث git
yay -S nchat-git
بناء / تثبيت إصدار مستقر
yay -S nchat
يتكون NCHAT من قاعدة كود كبيرة (خاصة مكتبة TELERRARAM TDLIB) ، لذلك كن مستعدًا لوقت البناء الأول نسبيًا.
الحصول على المصدر
git clone https://github.com/d99kris/nchat && cd nchat
إذا كنت تستخدم MacOS أو Alpine أو Arch أو Fedora أو Gentoo أو Raspbian أو Ubuntu أو void ، فيمكن للمرء استخدام البرنامج النصي make.sh
التبعيات
./make.sh deps
بناء / تثبيت
./make.sh build && ./make.sh install
التبعيات
ماكوس
brew install gperf cmake openssl ncurses ccache readline help2man sqlite libmagic go
قوس
sudo pacman -S ccache cmake file go gperf help2man ncurses openssl readline sqlite zlib base-devel
مقرها ديبيان (أوبونتو ، راسبيان ، إلخ)
sudo apt install ccache cmake build-essential gperf help2man libreadline-dev libssl-dev libncurses-dev libncursesw5-dev ncurses-doc zlib1g-dev libsqlite3-dev libmagic-dev golang
فيدورا
sudo dnf install git cmake clang golang ccache file-devel file-libs gperf readline-devel openssl-devel ncurses-devel sqlite-devel zlib-devel
جنتو
sudo emerge -n dev-util/cmake dev-util/ccache dev-util/gperf sys-apps/help2man sys-libs/readline dev-libs/openssl sys-libs/ncurses sys-libs/zlib dev-db/sqlite sys-apps/file dev-lang/go
فارغ
sudo xbps-install base-devel go ccache cmake gperf help2man libmagick-devel readline-devel sqlite-devel file-devel openssl-devel
يبني
mkdir -p build && cd build && cmake .. && make -s
ثَبَّتَ
sudo make install
بشكل افتراضي ، يتطلب NCHAT ~ 3.5 جيجابايت من ذاكرة الوصول العشوائي باستخدام RAM G ++ و ~ 1.5 جيجابايت مع Clang ++ ، ولكن من الممكن تقليل الذاكرة المطلوبة ، راجع البناء على أنظمة الذاكرة المنخفضة.
يتم تمكين جميع ميزات NCHAT افتراضيًا ، ولكن من الممكن التحكم في إدراج بعض الميزات باستخدام أعلام CMake ، انظر أعلام الميزات.
من أجل تكوين / إعداد حساب يحتاج المرء لتشغيل NCHAT في وضع الإعداد:
nchat --setup
يطالب وضع الإعداد برقم الهاتف ، والذي يجب إدخاله برمز البلد. مثال:
$ nchat --setup
Protocols:
0. Dummy
1. Telegram
2. WhatsAppMd
3. Exit setup
Select protocol (3): 1
Enter phone number (ex. +6511111111): +6511111111
Enter authentication code: xxxxx
Succesfully set up profile Telegram_+6511111111
إذا لم يكن متأكدًا من رقم الهاتف للدخول ، افتح تطبيق Telegram على الهاتف واضغط على زر القائمة واستخدم الرقم المعروض هناك (حذف المسافات ، لذلك بالنسبة لقطة الشاشة أدناه ، فإن الرقم المراد إدخاله هو +65111111).

بمجرد اكتمال عملية الإعداد ، سيتم تحميل واجهة المستخدم الرئيسية لـ NCHAT.
من أجل إعداد بروتوكولات/ملفات تعريف متعددة ، والخروج من NCHAT وتنفيذ خطوة الإعداد مرة أخرى.
الرجوع إلى التصحيح للحصول على التفاصيل.
تتوفر مجموعة Telegram https://t.me/nchatusers للمستخدمين لمناقشة استخدام NCHAT والمواضيع ذات الصلة.
يتم تخزين بيانات المستخدم محليا في ~/.config/nchat . تسمح أذونات الملف الافتراضية فقط بوصول المستخدم ، ولكن يمكن لأي شخص يمكنه الوصول إلى الملفات الخاصة للمستخدم الوصول أيضًا إلى بيانات Telegram الشخصية للمستخدم. للحماية من أو أبسط ناقلات الهجوم ، قد يكون من المناسب استخدام تشفير القرص ولضمان ~/.config/nchat غير مشفرة.
يمكن استخدام ملفات التكوين التالية (المدرجة مع القيم الافتراضية الحالية) لتكوين NCHAT.
يحتوي ملف التكوين هذا على إعدادات التطبيق العامة. المحتوى الافتراضي:
attachment_prefetch=1
attachment_send_type=1
cache_enabled=1
coredump_enabled=0
downloads_dir=
emoji_list_all=0
link_send_preview=1
logdump_enabled=0
proxy_host=
proxy_pass=
proxy_port=
proxy_user=
timestamp_iso=0
يحدد ما إذا كنت تريد اكتشاف نوع الملف (الصوت ، الفيديو ، الصورة ، المستند) وإرسال المرفقات كتلك الأنواع ، بدلاً من إرسال جميع المرفقات كنوع مستند (والذي يترك عادة محتوى الملف الأصلي سليما).
يحدد مستوى الإصدار المسبق المرفق:
0 = no prefetch (download upon open/save)
1 = selected (download upon message selection) <- default
2 = all (download when message is received)
يحدد ما إذا كان لتمكين وظيفة ذاكرة التخزين المؤقت.
يحدد ما إذا كان سيتم تمكين القمامة الأساسية على تعطل التطبيق.
يحدد مسار دليل التنزيلات المخصصة لحفظ المرفقات إليه. إذا لم يتم تحديدها ، فإن DIR الافتراضي هو ~/Downloads إذا كان موجودًا ، وإلا ~ .
يحدد ما إذا كان يجب أن يسرد مربع حوار الرموز التعبيرية جميع الرموز التعبيرية ، ويقصر خلاف ذلك على إدراج الرموز التعبيرية التي تجعل المحطات المشتركة بشكل صحيح.
يحدد ما إذا كان سيتم تمكين المعاينة للروابط في الرسائل المرسلة (Telegram فقط).
يحدد ما إذا كان سيتم تفريغ رسائل التحذير ورسائل الخطأ إلى stdout عند الخروج.
تفاصيل خادم الوكيل Socks5. لتمكين استخدام الوكيل ، يلزم وجود معلمات host port ، بينما يكون user pass اختياريين (اعتمادًا على خادم Socks). ملاحظة: من أجل استخدام الوكيل أثناء إعداد NCHAT في المرة الأولى ، يوصى بتشغيل NCHAT أولاً بدون وسيطات ( nchat ) لإنشاء تكوينه ، ثم تحرير إعدادات الوكيل في ~/.config/nchat/app.conf حسب الحاجة ، قبل تشغيل nchat -s لإعداد حساب.
يحدد ما إذا كنت تريد استخدام الطوابع الزمنية على طراز ISO ( YYYY-MM-DD HH:MM ) في واجهة المستخدم وفي تصدير تاريخ الدردشة. بشكل افتراضي ، يستخدم NCHAT تنسيقًا ديناميكيًا "صديقًا للبشر":
HH:MM للطابع الزمني في نفس تاريخ اليوم ، على سبيل المثال 19:00DAY HH:MM للوقود الزمني في الأسبوع الماضي ، على سبيل المثال Mon 19:00DD MMM HH:MM للطوابع الزمنية في العام الحالي ، على سبيل المثال 14 Nov 19:00DD MMM YYYY HH:MM للوقود الزمنية في السنة غير الحالية ، على سبيل المثال 14 Nov 2022 19:00DD MMM YYYY HH:MM للوقود الزمني أثناء التصدير ، على سبيل المثال 14 Nov 2022 19:00 يحتوي ملف التكوين هذا على إعدادات واجهة المستخدم العامة. المحتوى الافتراضي:
attachment_indicator=?
attachment_open_command=
away_status_indication=0
call_command=
chat_picker_sorted_alphabetically=0
confirm_deletion=1
desktop_notify_active=0
desktop_notify_command=
desktop_notify_inactive=0
downloadable_indicator=+
emoji_enabled=1
entry_height=4
failed_indicator=✗
file_picker_command=
file_picker_persist_dir=1
help_enabled=1
home_fetch_all=0
linefeed_on_enter=1
link_open_command=
list_enabled=1
list_width=14
listdialog_show_filter=1
mark_read_on_view=1
mark_read_when_inactive=0
message_edit_command=
message_open_command=
muted_indicate_unread=1
muted_notify_unread=0
muted_position_by_timestamp=1
online_status_share=1
online_status_dynamic=1
phone_number_indicator=
proxy_indicator=
read_indicator=✓
reactions_enabled=1
spell_check_command=
status_broadcast=1
syncing_indicator=⇄
terminal_bell_active=0
terminal_bell_inactive=1
terminal_title=
top_enabled=1
top_show_version=0
transfer_send_caption=1
typing_status_share=1
يحدد النص إلى أسماء ملفات مرفق البادئة في عرض الرسالة.
يحدد أمر مخصص لاستخدامه لفتح/عرض المرفقات. يجب أن يتضمن الأمر %1 والذي سيتم استبداله باسم الملف لفتحه. إذا لم يتم تحديدها ، يتم استخدام الأوامر الافتراضية التالية:
Linux: xdg-open >/dev/null 2>&1 '%1' &
ماكوس: open '%1' &
ملاحظة: حذف الأوامر المتأخرة & على المحطة ، على سبيل المثال w3m -o confirm_qq=false '%1' see '%1' .
يحدد ما إذا كان يجب الإشارة إلى حالة بعيدا في الشريط العلوي أثناء مشاركة الحالة بعيدًا مع المستخدمين الآخرين. أي أن الحالة ستُقرأ Away بدلاً من Online عندما تكون المحطة غير نشطة (على افتراض online_status_share=1 و online_status_dynamic=1 ).
يحدد الأمر المخصص لاستخدامه لبدء مكالمة باستخدام أداة خارجية. يجب أن يتضمن الأمر %1 والذي سيتم استبداله برقم هاتف جهة الاتصال. إذا لم يتم تحديدها ، يتم استخدام الأوامر الافتراضية التالية:
Linux: xdg-open >/dev/null 2>&1 'tel://%1' &
ماكوس: open 'tel://%1' &
يحدد ما إذا كان ينبغي فرز مربع حوار اختيار الدردشة (المستخدم عند إعادة التوجيه) أبجديًا. إذا لم يكن الأمر كذلك ، يتبع طلبه ترتيب قائمة الدردشة الرئيسية.
يحدد ما إذا كان يجب مطالبة المستخدم بالتأكيد عند حذف رسالة أو دردشة.
يحدد ما إذا كانت رسالة جديدة يجب أن تؤدي إلى إشعار سطح المكتب عندما تكون نافذة NCHAT Terminal نشطة.
يحدد الأمر المخصص لاستخدامه في إخطارات سطح المكتب. قد يتضمن الأمر %1 (سيتم استبداله sender name أو group name - sender name ) و %2 (سيتم استبداله message text ) المرفقة في علامات اقتباس مفردة (لمنع حقن الصدفة). الأمر الافتراضي المستخدم ، إن لم يكن محددًا:
Linux: notify-send 'nchat' '%1: %2'
MacOS: osascript -e 'display notification "%1: %2" with title "nchat"'
يحدد ما إذا كانت رسالة جديدة يجب أن تؤدي إلى إشعار سطح المكتب عندما تكون نافذة NCHAT Terminal غير نشطة.
يحدد النص إلى أسماء ملفات مرفقات اللاحقة في عرض الرسائل للمرفقات التي لم يتم تنزيلها بعد. يظهر هذا فقط لـ attachment_prefetch <2.
يحدد ما إذا كنت تريد عرض الرموز التعبيرية. تسيطر عليها Ctrl-Y في وقت التشغيل.
يحدد ارتفاع منطقة إدخال النص.
يحدد النص إلى أسماء ملفات مرفق اللاحقة في عرض الرسائل للتنزيلات الفاشلة.
يحدد الأمر لاستخدامه في تحديد الملف ، بدلاً من مربع حوار تحديد الملفات الداخلية المستخدمة عند إرسال الملفات. يجب أن يتضمن الأمر %1 (مسار ملف مؤقت) والذي يجب أن يكتب الأمر نتيجة له. أمثلة:
nnn: nnn -p '%1'
الحارس: ranger --choosefiles='%1'
يحدد ما إذا كان يجب أن يستمر مربع حوار تحديد الملف في دليل الملف المحدد الأخير.
يحدد ما إذا كنت تريد عرض شريط المساعدة. تسيطر عليها CTRL-G في وقت التشغيل.
يحدد ما إذا كان زر home يجب أن يجلب مرارًا وتكرارًا جميع سجل الدردشة.
يحدد ما إذا كان يجب قراءة Key Press على أنه LineFeed (Lf 12 ). بخلاف ذلك ، اقرأ كرجوع النقل (cr 15 ). هذا الإعداد مناسب فقط إذا كان key.conf يستخدم قيمة المفتاح العددي للإدخال (lf 12 ، cr 15 ). اسم المفتاح KEY_RETURN دائمًا ما يقوم بتعيين واحد قيد الاستخدام.
يحدد الأمر المخصص لاستخدامه لفتح/عرض روابط. يجب أن يتضمن الأمر %1 والذي سيتم استبداله بعنوان URL لفتحه. إذا لم يتم تحديدها ، يتم استخدام الأوامر الافتراضية التالية:
Linux: xdg-open >/dev/null 2>&1 '%1' &
ماكوس: open '%1' &
ملاحظة: حذف الأوامر المتأخرة & على المحطة ، على سبيل المثال w3m -o confirm_qq=false '%1' see '%1' .
يحدد ما إذا كنت تريد عرض قائمة الدردشة. تسيطر عليها Ctrl-L في وقت التشغيل.
يحدد عرض قائمة الدردشة.
يحدد ما إذا كان يجب على مربعات حوار قائمة عرض إدخال مرشح البحث بواسطة المستخدم.
يحدد ما إذا كان يجب على NCHAT إرسال إيصالات قراءة الرسائل عند العرض. إذا كانت NCHAT الخاطئة ستبحث فقط الرسائل التي تقرأ على next_page (الصفحة لأسفل) ، أو end (نهاية) أو عند إرسال رسالة/ملف في الدردشة.
يتحكم في ما إذا كان NCHAT يمثل رسائل في الدردشة الحالية كما هو الحال في الوقت الذي تكون فيه المحطة غير نشطة.
يحدد الأمر المخصص لاستخدامه لمحرر خارجي. إذا لم يتم تحديدها ، فسيستخدم NCHAT متغير بيئة EDITOR إذا تم تعيينه أو nano بطريقة أخرى.
يحدد أمر مخصص لاستخدامه لفتح/عرض جزء نص الرسالة. إذا لم يتم تحديدها ، فسيستخدم NCHAT متغير بيئة PAGER إذا تم تعيينه ، أو استخدم less .
يحدد ما إذا كان يجب أن تشير قائمة الدردشة إلى حالة غير مقروءة * للدردشات الصامتة. هذا يحدد أيضًا ما إذا كانت هذه الدردشات مدرجة في القفز إلى غير المقروءة.
يحدد ما إذا كان سيتم إخطار (جرس الطرفي) رسائل جديدة غير مقروءة في الدردشات الصامتة.
يحدد ما إذا كان موقف قائمة الدردشة من الدردشات الصامتة يجب أن يعكس وقت آخر رسالة تم استلامها/إرسالها. وإلا يتم سرد الدردشات الصامتة أخيرًا.
شارك حالة الإنترنت مع المستخدمين الآخرين. ملاحظة: يؤدي تعطيل هذا إلى إيقاف التحديثات على مستخدمين آخرين عبر الإنترنت/حالة الكتابة لـ WhatsApp.
تحديث حالة الإنترنت بشكل ديناميكي بناءً على الحالة النشطة الطرفية. ملاحظة: يؤدي تمكين هذا إلى إيقاف التحديثات على مستخدمين آخرين عبر الإنترنت/حالة الكتابة لـ WhatsApp عندما تكون المحطة غير نشطة.
يحدد نص شريط الحالة للإشارة إلى رقم هاتف الدردشة الحالية. قد يحتوي هذا الحقل على %1 والذي سيتم استبداله برقم الهاتف الفعلي لجهة الاتصال. أمثلة أخرى:
يحدد نص الشريط العلوي للإشارة إلى تمكين الوكيل.
يحدد النص للإشارة إلى رسالة قد قرأها المتلقي.
يحدد ما إذا كنت تريد عرض ردود الفعل.
يحدد أمر مخصص لاستخدامه في التحقق من الرسائل المؤلف. إذا لم يتم تحديدها ، يتحقق NCHAT إذا كان aspell أو ispell متاحًا على النظام (بهذا الترتيب) ، ويستخدم الأول الموجود.
يحدد تحديثات الحالة (WhatsApp) تحديثات الدردشة من الرؤية:
0 = hidden
1 = visible and muted <- default
2 = visible
يحدد النص إلى أسماء ملفات مرفق اللاحقة في عرض الرسائل للتنزيلات قيد التقدم.
يحدد ما إذا كانت رسالة جديدة يجب أن تؤدي إلى جرس الطرفي عندما تكون نافذة NCHAT Terminal نشطة.
يحدد ما إذا كانت رسالة جديدة يجب أن تؤدي إلى جرس الطرفي عندما تكون نافذة NCHAT الطرفية غير نشطة.
يحدد عنوان المحطة الطرفية المخصصة ، على سبيل المثال: terminal_title=nchat - telegram .
يحدد ما إذا كنت تريد عرض الشريط العلوي. تسيطر عليها CTRL-P في وقت التشغيل.
يحدد ما إذا كنت تريد عرض إصدار NCHAT في Top Bar.
يحدد ما إذا كان يجب إرسال النص الذي تم إدخاله كتعليق عند نقل ملف.
يحدد ما إذا كان يجب مشاركة حالة الكتابة مع المستخدمين (المستخدمين) الآخرين في المحادثة.
يحتفظ ملف التكوين هذا بربط مفاتيح واجهة المستخدم. المحتوى الافتراضي:
backspace=KEY_BACKSPACE
backspace_alt=KEY_ALT_BACKSPACE
backward_kill_word=33177
backward_word=
begin_line=KEY_CTRLA
cancel=KEY_CTRLC
clear=KEY_CTRLC
copy=33143
cut=33170
decrease_list_width=3354
delete=KEY_DC
delete_chat=33144
delete_line_after_cursor=KEY_CTRLK
delete_line_before_cursor=KEY_CTRLU
delete_msg=KEY_CTRLD
down=KEY_DOWN
edit_msg=KEY_CTRLZ
end=KEY_END
end_line=KEY_CTRLE
ext_call=33164
ext_edit=33145
find=3357
find_next=3377
forward_msg=33162
forward_word=
goto_chat=33156
home=KEY_HOME
increase_list_width=3356
jump_quoted=33161
kill_word=
left=KEY_LEFT
linebreak=KEY_RETURN
next_chat=KEY_TAB
next_page=KEY_NPAGE
ok=KEY_RETURN
open=KEY_CTRLV
open_link=KEY_CTRLW
open_msg=33167
other_commands_help=KEY_CTRLO
paste=33166
prev_chat=KEY_BTAB
prev_page=KEY_PPAGE
quit=KEY_CTRLQ
react=33163
right=KEY_RIGHT
save=KEY_CTRLR
select_contact=KEY_CTRLN
select_emoji=KEY_CTRLS
send_msg=KEY_CTRLX
spell=3344
terminal_focus_in=KEY_FOCUS_IN
terminal_focus_out=KEY_FOCUS_OUT
terminal_resize=KEY_RESIZE
toggle_emoji=KEY_CTRLY
toggle_help=KEY_CTRLG
toggle_list=KEY_CTRLL
toggle_top=KEY_CTRLP
transfer=KEY_CTRLT
unread_chat=KEY_CTRLF
up=KEY_UP
يمكن تحديد روابط المفاتيح في التنسيقات التالية:
KEY_CTRLK )0x22e )