| 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由一個大型代碼庫(主要是Telegram庫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
依賴性
macos
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
總部位於Debian(Ubuntu,Raspbian等)
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
Gentoo
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需要使用g ++和〜1.5GB RAM構建的〜3.5GB RAM,但使用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
如果不確定要輸入哪個電話號碼,請在電話上打開電報應用程序,然後按菜單按鈕並使用其中顯示的號碼(省略空間,因此,對於下面的屏幕截圖,要輸入的號碼為+65111111111111111111)。

設置過程完成後,將加載NCHAT的主UI。
為了設置多個協議/配置文件,請退出NCHAT並再次執行設置步驟。
有關詳細信息,請參閱調試。
電報組https://t.me/nchatusers可以供用戶討論NCHAT使用和相關主題。
用戶數據本地存儲在~/.config/nchat中。默認文件權限僅允許用戶訪問,但是任何可以訪問用戶私有文件的人也可以訪問用戶的個人電報數據。為了防止最簡單的攻擊向量,可能適合使用磁盤加密並確保~/.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如果存在,則否則~ 。
指定表情符號對話框是否應列出所有表情符號,否則僅限於列出在通用終端中正確的表情符號。
指定是否啟用已發送消息中鏈接的預覽(僅電報)。
指定是否要在退出時傾倒警告和錯誤日誌消息以確認。
Socks5代理服務器詳細信息。要啟用代理使用情況,需要參數host和port ,而user和pass是可選的(取決於襪子服務器)。注意:為了在第一次設置NCHAT時使用代理,建議在需要創建其config Dir的情況下首次運行NCHAT,以創建其config Dir,然後在需要的情況下按~/.config/nchat/app.conf編輯代理設置,然後運行nchat nchat -s來設置帳戶。
指定在UI中使用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 ,該%1將由文件名代替要打開。如果未指定,則使用以下默認命令:
Linux: xdg-open >/dev/null 2>&1 '%1' &
MacOS: 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' &
MacOS: open 'tel://%1' &
指定是否應按字母順序對聊天選擇對話框(轉發消息時使用)。如果不是,則訂單遵循主聊天列表訂單。
指定在刪除消息或聊天時是否提示用戶確認。
指定NCHAT終端窗口處於活動狀態時,新消息是否應觸發桌面通知。
指定用於桌面通知的自定義命令。該命令可能包括%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終端窗口不活動時,新消息是否應觸發桌面通知。
在尚未下載的附件的消息視圖中指定後綴附件文件名的文本。這僅顯示為attachment_prefetch <2。
指定是否顯示表情符號。由Ctrl-Y在運行時控制。
指定文本輸入區域的高度。
在消息視圖中指定後綴附件文件名的文本,以獲取失敗的下載。
指定用於文件選擇的命令,代替發送文件時使用的內部文件選擇對話框。命令應包括%1 (臨時文件路徑),命令應將其結果寫入。示例:
nnn: nnn -p '%1'
遊俠: ranger --choosefiles='%1'
指定文件選擇對話框是否應持續上次選定文件的目錄。
指定是否顯示幫助欄。由CTRL-G在運行時控制。
指定home按鈕是否應反复獲取所有聊天歷史記錄。
指定是否應將Enter按鍵按讀為lineFeed(LF 12 )。否則將其讀為托架返回(CR 15 )。僅當key.conf使用ENTER(LF 12 ,CR 15 )的數值鍵值時,此設置才相關。密鑰名稱KEY_RETURN始終映射到使用中的一個。
指定用於打開/查看鏈接的自定義命令。命令應包括%1 ,該%1將被URL替換以打開。如果未指定,則使用以下默認命令:
Linux: xdg-open >/dev/null 2>&1 '%1' &
MacOS: open '%1' &
注意:省略接管終端的尾聲&命令,例如w3m -o confirm_qq=false '%1' ,並see '%1' 。
指定是否顯示聊天列表。由CTRL-L在運行時控制。
指定聊天列表的寬度。
指定列表對話框是否應通過用戶顯示搜索過濾器輸入。
指定NCHAT是否應在查看時發送消息讀取收據。如果False NCHAT僅在next_page (頁面end )或在聊天中發送消息/文件時標記讀取的消息。
控制NCHAT是否將當前聊天中的消息標記為終端不活動時的讀取。
指定用於外部編輯器組成的自定義命令。如果未指定,則NCHAT將使用EDITOR環境變量,或者以其他方式使用nano 。
指定用於打開/查看消息文本部分的自定義命令。如果未指定,則NCHAT將使用PAGER Environment變量,或者以其他方式使用less使用。
指定聊天列表是否應表示靜音聊天的未讀狀態* 。這還確定了此類聊天是否包含在跳轉到未讀。
指定是否要通知(終端鈴)中靜音聊天中的新未讀消息。
指定聊天聊天的聊天列表是否應反映其上次收到/發送消息的時間。否則,最後列出了混亂的聊天。
與其他用戶共享在線狀態。注意:禁用WhatsApp的其他用戶/打字狀態對其他用戶的停止更新。
基於終端活動狀態動態更新在線狀態。注意:當終端不活動時,啟用此停止其他用戶/在線/打字狀態的更新。
指定狀態欄文本以指示可用的當前聊天電話號碼。該字段可能包含%1 ,將替換為聯繫的實際電話號碼。其他示例:
指定頂級文本以指示啟用代理。
指定文本表示消息已由接收器讀取。
指定是否顯示反應。
指定一個自定義命令用於拼寫檢查組成的消息。如果未指定,則NCHAT檢查系統上是否有aspell或ispell (按該順序)可用,並使用第一個找到的。
指定(whatsapp)狀態更新可見度的聊天級別:
0 = hidden
1 = visible and muted <- default
2 = visible
在消息視圖中指定後綴附件文件名的文本以進行下載。
指定NCHAT終端窗口處於活動狀態時,新消息是否應觸發終端鈴。
指定當NCHAT終端窗口不活動時,新消息是否應觸發終端鈴。
指定自定義終端標題,例如: terminal_title=nchat - telegram 。
指定是否顯示頂部欄。由CTRL-P在運行時控制。
指定是否在頂欄中顯示NCHAT版本。
指定是否輸入文本在傳輸文件時應作為標題發送。
指定是否在對話中與其他用戶共享鍵入狀態。
此配置文件保留用戶界面鍵綁定。默認內容:
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 )