| 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 )