| Linux | Mac |
|---|---|
NChat adalah klien obrolan berbasis terminal untuk Linux dan MacOS dengan dukungan untuk Telegram dan WhatsApp.

Penggunaan:
nchat [OPTION]
Opsi baris perintah:
-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
Perintah interaktif:
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
Perintah interaktif untuk pesan yang dipilih:
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
Perintah interaktif untuk input teks:
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 dikembangkan dan diuji pada Linux dan MacOS. Versi saat ini telah diuji pada:
Bangun / Pasang Rilis Stabil Menggunakan BREW
brew tap d99kris/nchat
brew install nchat
Secara opsional seseorang dapat menonaktifkan protokol menggunakan --without-whatsapp dan --without-telegram , misalnya:
brew install nchat --without-telegram
Bangun / instal git terbaru
yay -S nchat-git
Bangun / Pasang Rilis Stabil
yay -S nchat
NChat terdiri dari basis kode besar (terutama perpustakaan telegram TDLIB), jadi bersiaplah untuk waktu pembangunan pertama yang relatif lama.
Mendapatkan sumber
git clone https://github.com/d99kris/nchat && cd nchat
Jika menggunakan MacOS, Alpine, Arch, Fedora, Gentoo, Raspbian, Ubuntu atau Void, seseorang dapat menggunakan skrip make.sh yang disediakan.
Dependensi
./make.sh deps
Bangun / instal
./make.sh build && ./make.sh install
Dependensi
MacOS
brew install gperf cmake openssl ncurses ccache readline help2man sqlite libmagic go
Lengkungan
sudo pacman -S ccache cmake file go gperf help2man ncurses openssl readline sqlite zlib base-devel
Berbasis debian (ubuntu, raspbian, dll)
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
Fedora
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
Ruang kosong
sudo xbps-install base-devel go ccache cmake gperf help2man libmagick-devel readline-devel sqlite-devel file-devel openssl-devel
Membangun
mkdir -p build && cd build && cmake .. && make -s
Memasang
sudo make install
Secara default, NChat membutuhkan ~ 3.5GB RAM untuk membangun menggunakan RAM G ++ dan ~ 1.5GB dengan klang ++, tetapi dimungkinkan untuk mengurangi memori yang dibutuhkan, lihat membangun sistem memori rendah.
Semua fitur NChat diaktifkan secara default, tetapi dimungkinkan untuk mengontrol inklusi beberapa fitur menggunakan bendera CMake, lihat bendera fitur.
Untuk mengonfigurasi / mengatur akun, seseorang perlu menjalankan NChat dalam mode pengaturan:
nchat --setup
Mode Pengaturan meminta nomor telepon, yang harus dimasukkan dengan kode negara. Contoh:
$ 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
Jika tidak yakin apa nomor telepon yang harus dimasukkan, buka aplikasi Telegram di telepon dan tekan tombol menu dan gunakan nomor yang ditampilkan di sana (menghilangkan spasi, jadi untuk tangkapan layar di bawah ini, nomor yang akan dimasukkan adalah +6511111111).

Setelah proses pengaturan selesai, UI utama NChat akan dimuat.
Untuk mengatur beberapa protokol/profil, keluar dari Nchat dan lakukan langkah pengaturan lagi.
Lihat debugging untuk detailnya.
Grup telegram https://t.me/nchatusers tersedia bagi pengguna untuk membahas penggunaan NChat dan topik terkait.
Data pengguna disimpan secara lokal di ~/.config/nchat . Izin file default hanya mengizinkan akses pengguna, tetapi siapa pun yang dapat memperoleh akses ke file pribadi pengguna juga dapat mengakses data telegram pribadi pengguna. Untuk melindungi terhadap vektor serangan paling sederhana, mungkin cocok untuk menggunakan enkripsi disk dan untuk memastikan ~/.config/nchat tidak dicadangkan tanpa terenkripsi.
File konfigurasi berikut (terdaftar dengan nilai default saat ini) dapat digunakan untuk mengonfigurasi NChat.
File konfigurasi ini memiliki pengaturan aplikasi umum. Konten default:
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
Menentukan apakah akan mendeteksi jenis file (audio, video, gambar, dokumen) dan mengirim lampiran sebagai jenis tersebut, alih -alih mengirim semua lampiran sebagai jenis dokumen (yang biasanya menyisakan konten file asli).
Menentukan tingkat prefetching lampiran:
0 = no prefetch (download upon open/save)
1 = selected (download upon message selection) <- default
2 = all (download when message is received)
Menentukan apakah akan mengaktifkan fungsionalitas cache.
Menentukan apakah akan mengaktifkan pembuangan inti pada crash aplikasi.
Menentukan jalur direktori unduhan khusus untuk menyimpan lampiran. Jika tidak ditentukan, dir default adalah ~/Downloads jika ada, jika tidak ~ .
Menentukan apakah dialog emoji harus mencantumkan semua emoji, sebaliknya terbatas pada daftar emoji yang diterjemahkan dengan benar di terminal umum.
Menentukan apakah akan mengaktifkan pratinjau untuk tautan dalam pesan yang dikirim (hanya telegram).
Menentukan apakah akan membuang pesan peringatan dan log kesalahan untuk stdout saat keluar.
Socks5 Proxy Server Detail. Untuk mengaktifkan penggunaan proxy, host dan port parameter diperlukan, sedangkan user dan pass adalah opsional (tergantung pada server Socks). Catatan: Untuk menggunakan proxy saat menyiapkan NChat pertama kali, disarankan untuk pertama kali menjalankan Nchat tanpa argumen ( nchat ) untuk konfigurasi direkriknya, dan kemudian mengedit pengaturan proksi di ~/.config/nchat/app.conf sesuai kebutuhan, sebelum menjalankan nchat -s untuk mengatur akun.
Menentukan apakah akan menggunakan cap waktu gaya iso ( YYYY-MM-DD HH:MM ) di UI dan pada ekspor riwayat obrolan. Secara default, NChat menggunakan format "ramah manusia" yang dinamis:
HH:MM untuk cap waktu pada tanggal yang sama seperti hari ini, misalnya 19:00DAY HH:MM untuk cap waktu dalam minggu lalu, misalnya Mon 19:00DD MMM HH:MM untuk cap waktu di tahun berjalan, misalnya 14 Nov 19:00DD MMM YYYY HH:MM untuk cap waktu di tahun yang tidak lancar, misalnya 14 Nov 2022 19:00DD MMM YYYY HH:MM untuk cap waktu selama ekspor, misalnya 14 Nov 2022 19:00 File konfigurasi ini memiliki pengaturan antarmuka pengguna umum. Konten default:
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
Menentukan Teks ke Prefix Lampiran Nama File dalam Tampilan Pesan.
Menentukan perintah khusus untuk digunakan untuk lampiran membuka/melihat. Perintah harus mencakup %1 yang akan diganti dengan nama file untuk dibuka. Jika tidak ditentukan, perintah default berikut digunakan:
Linux: xdg-open >/dev/null 2>&1 '%1' &
MacOS: open '%1' &
Catatan: Hilangkan trailing & untuk perintah yang mengambil alih terminal, misalnya w3m -o confirm_qq=false '%1' dan see '%1' .
Menentukan apakah akan menunjukkan status jauh di bilah atas sambil berbagi status dengan pengguna lain. Yaitu status akan Away alih -alih Online ketika terminal tidak aktif (dengan asumsi online_status_share=1 dan online_status_dynamic=1 ).
Menentukan perintah khusus untuk digunakan untuk memulai panggilan menggunakan alat eksternal. Perintah harus mencakup %1 yang akan diganti dengan nomor telepon kontak. Jika tidak ditentukan, perintah default berikut digunakan:
Linux: xdg-open >/dev/null 2>&1 'tel://%1' &
MacOS: open 'tel://%1' &
Menentukan apakah dialog pemilihan obrolan (digunakan saat meneruskan pesan) harus diurutkan secara abjad. Jika tidak, pesanannya mengikuti pesanan daftar obrolan utama.
Menentukan apakah akan meminta pengguna untuk konfirmasi saat menghapus pesan atau obrolan.
Menentukan apakah pesan baru akan memicu pemberitahuan desktop ketika jendela terminal NChat aktif.
Menentukan perintah khusus untuk digunakan untuk pemberitahuan desktop. Perintah dapat termasuk %1 (akan diganti dengan sender name atau group name - sender name ) dan %2 (akan diganti dengan message text ) terlampir dalam kutipan tunggal (untuk mencegah injeksi shell). Perintah default digunakan, jika tidak ditentukan:
Linux: notify-send 'nchat' '%1: %2'
MacOS: osascript -e 'display notification "%1: %2" with title "nchat"'
Menentukan apakah pesan baru akan memicu pemberitahuan desktop ketika jendela terminal NChat tidak aktif.
Menentukan teks file lampiran teks ke sufiks dalam tampilan pesan untuk lampiran yang belum diunduh. Ini hanya ditampilkan untuk attachment_prefetch <2.
Menentukan apakah akan menampilkan emoji. Dikendalikan oleh Ctrl-y dalam run-time.
Menentukan ketinggian area entri teks.
Menentukan teks file lampiran teks ke dalam tampilan pesan untuk unduhan yang gagal.
Menentukan perintah yang akan digunakan untuk pemilihan file, sebagai pengganti dialog pemilihan file internal yang digunakan saat mengirim file. Perintah harus mencakup %1 (jalur file sementara) yang harus ditulis oleh perintahnya. Contoh:
nnn: nnn -p '%1'
Ranger: ranger --choosefiles='%1'
Menentukan apakah dialog pemilihan file harus bertahan dengan direktori file yang dipilih terakhir.
Menentukan apakah akan menampilkan bilah bantuan. Dikontrol oleh Ctrl-G dalam run-time.
Menentukan apakah tombol home akan berulang kali mengambil semua riwayat obrolan.
Menentukan apakah tombol Enter, tekan harus dibaca sebagai lineFeed (lf 12 ). Jika tidak dibaca sebagai carriage return (cr 15 ). Pengaturan ini hanya relevan jika key.conf menggunakan nilai kunci numerik untuk ENTER (lf 12 , cr 15 ). Nama kunci KEY_RETURN selalu memetakan yang digunakan.
Menentukan perintah khusus untuk digunakan untuk membuka/melihat tautan. Perintah harus mencakup %1 yang akan digantikan oleh URL untuk dibuka. Jika tidak ditentukan, perintah default berikut digunakan:
Linux: xdg-open >/dev/null 2>&1 '%1' &
MacOS: open '%1' &
Catatan: Hilangkan trailing & untuk perintah yang mengambil alih terminal, misalnya w3m -o confirm_qq=false '%1' dan see '%1' .
Menentukan apakah akan menampilkan daftar obrolan. Dikontrol oleh Ctrl-L dalam run-time.
Menentukan lebar daftar obrolan.
Menentukan apakah dialog daftar harus menampilkan input filter pencarian oleh pengguna.
Menentukan apakah NChat harus mengirim pesan baca pesan saat dilihat. Jika false nchat hanya akan menandai pesan yang dibaca di next_page (halaman bawah), end (end) atau setelah mengirim pesan/file dalam obrolan.
Mengontrol apakah Nchat menandai pesan dalam obrolan saat ini saat dibaca saat terminal tidak aktif.
Menentukan perintah khusus untuk digunakan untuk editor eksternal. Jika tidak ditentukan, NChat akan menggunakan variabel lingkungan EDITOR jika diatur, atau menggunakan nano .
Menentukan perintah khusus untuk digunakan untuk membuka/melihat bagian teks pesan. Jika tidak ditentukan, NChat akan menggunakan variabel lingkungan PAGER jika diatur, atau menggunakan less .
Menentukan apakah daftar obrolan harus menunjukkan status yang belum dibaca * untuk obrolan yang diredam. Ini juga menentukan apakah obrolan tersebut termasuk dalam lompatan untuk belum dibaca.
Menentukan apakah akan memberi tahu (Terminal Bell) pesan baru yang belum dibaca dalam obrolan yang diredam.
Menentukan apakah posisi daftar obrolan dari obrolan yang diredam harus mencerminkan waktu pesan terakhir yang diterima/dikirim. Jika tidak, obrolan yang diredam terdaftar terakhir.
Bagikan status online dengan pengguna lain. Catatan: Menonaktifkan ini menghentikan pembaruan pada pengguna lain/status pengetikan untuk whatsapp.
Perbarui status online secara dinamis berdasarkan keadaan aktif terminal. Catatan: Mengaktifkan ini menghentikan pembaruan pada pengguna lain online/status pengetikan untuk whatsapp ketika terminal tidak aktif.
Menentukan teks bilah status untuk menunjukkan nomor telepon dari obrolan saat ini tersedia. Bidang ini dapat berisi %1 yang akan diganti dengan nomor telepon kontak yang sebenarnya. Contoh lainnya:
Menentukan teks batang atas untuk menunjukkan proxy diaktifkan.
Menentukan teks untuk menunjukkan pesan telah dibaca oleh penerima.
Menentukan apakah akan menampilkan reaksi.
Menentukan perintah khusus untuk digunakan untuk memeriksa pesan yang disusun ejaan. Jika tidak ditentukan, NChat memeriksa apakah aspell atau ispell tersedia pada sistem (dalam urutan itu), dan menggunakan yang pertama ditemukan.
Menentukan (whatsapp) pembaruan status tingkat obrolan visibilitas:
0 = hidden
1 = visible and muted <- default
2 = visible
Menentukan teks file lampiran sufiks dalam tampilan pesan untuk unduhan yang sedang berlangsung.
Menentukan apakah pesan baru akan memicu lonceng terminal ketika jendela terminal NChat aktif.
Menentukan apakah pesan baru akan memicu lonceng terminal ketika jendela terminal NChat tidak aktif.
Menentukan judul terminal khusus, mis: terminal_title=nchat - telegram .
Menentukan apakah akan menampilkan bilah atas. Dikontrol oleh Ctrl-P dalam run-time.
Menentukan apakah akan menampilkan versi nchat di bilah atas.
Menentukan apakah teks yang dimasukkan harus dikirim sebagai keterangan saat mentransfer file.
Menentukan apakah akan berbagi status pengetikan dengan pengguna lain dalam percakapan.
File konfigurasi ini menyimpan binding kunci antarmuka pengguna. Konten default:
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
Binding kunci dapat ditentukan dalam format berikut:
KEY_CTRLK )0x22e )