| Linux | Mac |
|---|---|
O NCHAT é um cliente de bate-papo baseado em terminal para Linux e MacOS com suporte para Telegram e WhatsApp.

Uso:
nchat [OPTION]
Opções da linha de comando:
-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
Comandos interativos:
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
Comandos interativos para mensagem selecionada:
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
Comandos interativos para entrada de texto:
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
O NCHAT é desenvolvido e testado em Linux e MacOS. A versão atual foi testada em:
Construa / instale a liberação estável usando a cerveja Brew
brew tap d99kris/nchat
brew install nchat
Opcionalmente, pode-se desativar protocolos usando --without-whatsapp e --without-telegram , por exemplo:
brew install nchat --without-telegram
Construa / instale o último git
yay -S nchat-git
Construir / instalar liberação estável
yay -S nchat
O NCHAT consiste em uma grande base de código (principalmente a biblioteca do Telegram TDLIB), portanto, esteja preparado para um tempo de construção relativamente longo.
Obtenha fonte
git clone https://github.com/d99kris/nchat && cd nchat
Se estiver usando macOS, alpino, arco, fedora, gentoo, raspbian, ubuntu ou vazio, pode -se usar o script make.sh fornecido.
Dependências
./make.sh deps
Construir / instalar
./make.sh build && ./make.sh install
Dependências
macos
brew install gperf cmake openssl ncurses ccache readline help2man sqlite libmagic go
Arco
sudo pacman -S ccache cmake file go gperf help2man ncurses openssl readline sqlite zlib base-devel
Baseado em Debian (Ubuntu, Raspbian, etc)
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
Vazio
sudo xbps-install base-devel go ccache cmake gperf help2man libmagick-devel readline-devel sqlite-devel file-devel openssl-devel
Construir
mkdir -p build && cd build && cmake .. && make -s
Instalar
sudo make install
Por padrão, o NCHAT requer ~ 3,5 GB de RAM para construir usando G ++ e ~ 1,5 GB de RAM com CLANG ++, mas é possível reduzir a memória necessária, consulte a construção em sistemas de baixa memória.
Todos os recursos do NCHAT são ativados por padrão, mas é possível controlar a inclusão de alguns recursos usando sinalizadores CMake, consulte os sinalizadores de recursos.
Para configurar / configurar uma conta, é preciso executar o NCHAT no modo de configuração:
nchat --setup
O modo de configuração solicita o número de telefone, que deve ser inserido com o código do país. Exemplo:
$ 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
Se não tiver certeza de qual número de telefone inserir, abra o aplicativo Telegram no telefone e pressione o botão Menu e use o número exibido lá (omitindo espaços, portanto, para a tela abaixo, o número a entrar é +651111111111).

Depois que o processo de configuração for concluído, a interface do usuário principal do NCHAT será carregada.
Para configurar vários protocolos/perfis, saia do NCHAT e execute a etapa de configuração novamente.
Consulte a depuração para obter detalhes.
Um grupo de telegrama https://t.me/nchatusers está disponível para os usuários discutirem o uso do NCHAT e os tópicos relacionados.
Os dados do usuário são armazenados localmente em ~/.config/nchat . As permissões de arquivo padrão permitem apenas acesso ao usuário, mas qualquer pessoa que possa obter acesso aos arquivos privados de um usuário também pode acessar os dados do telegrama pessoal do usuário. Para proteger contra os vetores de ataque mais simples, pode ser adequado usar a criptografia de disco e garantir que ~/.config/nchat não seja backup não criptografado.
Os seguintes arquivos de configuração (listados com valores padrão atuais) podem ser usados para configurar o NCHAT.
Este arquivo de configuração contém configurações gerais de aplicativos. Conteúdo padrão:
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
Especifica se deve detectar o tipo de arquivo (áudio, vídeo, imagem, documento) e enviar anexos como esses tipos, em vez de enviar todos os anexos como tipo de documento (que normalmente sai do conteúdo original do arquivo intacto).
Especifica o nível de pré -busca de anexo:
0 = no prefetch (download upon open/save)
1 = selected (download upon message selection) <- default
2 = all (download when message is received)
Especifica se deve habilitar a funcionalidade do cache.
Especifica se deve habilitar os dumps principais na falha do aplicativo.
Especifica um caminho de diretório de downloads personalizado para salvar anexos. Se não for especificado, o diretor padrão é ~/Downloads se existe, caso contrário ~ .
Especifica se a caixa de diálogo Emoji deve listar todos os emojis, de outra forma é restrito a listar emojis que se renderiza adequadamente em terminais comuns.
Especifica se deve ativar a visualização para links em mensagens enviadas (somente telegrama).
Especifica se deve despejar mensagens de aviso e log de erros para Stdout após a saída.
Detalhes do servidor de proxy do SOCKS5. Para ativar o uso de proxy, são necessários o host e port dos parâmetros, enquanto user e pass são opcionais (dependendo do servidor de meias). NOTA: Para usar um proxy ao configurar o NCHAT pela primeira vez, é recomendável que o NCHAT primeiro execute o NCHAT sem argumentos ( nchat ) para que seu diretor de configuração seja criado e, em seguida, edite as configurações de proxy em ~/.config/nchat/app.conf conforme necessário, antes de executar nchat -s para configurar uma conta.
Especifica se o uso de registros de data e hora do estilo ISO ( YYYY-MM-DD HH:MM ) na interface do usuário e na exportação de histórico de bate-papo. Por padrão, o NCHAT usa um formato dinâmico "amigável ao ser humano":
HH:MM para registro de data e hora na mesma data de hoje, por exemplo, 19:00DAY HH:MM para registro de data e hora na última semana, por exemplo, Mon 19:00DD MMM HH:MM para timestamps no ano atual, por exemplo, 14 Nov 19:00DD MMM YYYY HH:MM para registro de data e hora em ano não circundante, por exemplo, 14 Nov 2022 19:00DD MMM YYYY HH:MM para timestamps durante a exportação, por exemplo, 14 Nov 2022 19:00 Este arquivo de configuração contém configurações gerais de interface do usuário. Conteúdo padrão:
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
Especifica o texto para prefixar nomes de arquivos de anexo na visualização da mensagem.
Especifica um comando personalizado a ser usado para abrir/visualizar anexos. O comando deve incluir %1 , que será substituído pelo nome do arquivo para abrir. Se não for especificado, os seguintes comandos padrão são usados:
Linux: xdg-open >/dev/null 2>&1 '%1' &
MacOS: open '%1' &
NOTA: Omita os comandos à direita & para os comandos que assumem o terminal, por exemplo w3m -o confirm_qq=false '%1' e see '%1' .
Especifica se deve indicar o status fora da barra superior enquanto compartilha o status com outros usuários. Ou seja, o status será Away em vez de Online quando o terminal estiver inativo (assumindo online_status_share=1 e online_status_dynamic=1 ).
Especifica um comando personalizado a ser usado para iniciar uma chamada usando uma ferramenta externa. O comando deve incluir %1 , que será substituído pelo número de telefone do contato. Se não for especificado, os seguintes comandos padrão são usados:
Linux: xdg-open >/dev/null 2>&1 'tel://%1' &
MacOS: open 'tel://%1' &
Especifica se a caixa de diálogo de seleção de bate -papo (usada ao encaminhar a mensagem) deve ser classificada em ordem alfabética. Caso contrário, seu pedido segue a ordem principal da lista de bate -papo.
Especifica se deve solicitar ao usuário confirmar ao excluir uma mensagem ou um bate -papo.
Especifica se a nova mensagem deve acionar a notificação da área de trabalho quando a janela do terminal NCHAT estiver ativa.
Especifica um comando personalizado a ser usado para notificações de desktop. O comando pode incluir %1 (será substituído pelo sender name ou group name - sender name ) e %2 (será substituído pelo message text ), fechado em cotações únicas (para impedir a injeção de shell). Comando padrão usado, se não especificado:
Linux: notify-send 'nchat' '%1: %2'
MacOS: osascript -e 'display notification "%1: %2" with title "nchat"'
Especifica se a nova mensagem deve acionar a notificação da área de trabalho quando a janela do terminal NCHAT estiver inativa.
Especifica o texto para os nomes de arquivos de anexo do sufixo na visualização da mensagem para anexos ainda não baixados. Isso é mostrado apenas para attachment_prefetch <2.
Especifica se deve exibir emojis. Controlado por Ctrl-y em tempo de execução.
Especifica a altura da área de entrada de texto.
Especifica o texto para o sufixo Nomes de arquivos de anexo na visualização da mensagem para downloads com falha.
Especifica um comando a ser usado para seleção de arquivos, no lugar da caixa de diálogo de seleção de arquivos interna usada ao enviar arquivos. O comando deve incluir %1 (um caminho de arquivo temporário) ao qual o comando deve escrever seu resultado. Exemplos:
nnn: nnn -p '%1'
Ranger: ranger --choosefiles='%1'
Especifica se a caixa de diálogo de seleção de arquivos deve persistir o diretório do último arquivo selecionado.
Especifica se a barra de ajuda deve exibir. Controlado pelo CTRL-G em tempo de execução.
Especifica se o botão home deve buscar repetidamente todo o histórico de bate -papo.
Especifica se a tecla enter a tecla Press deve ser lida como LineFeed (LF 12 ). Caso contrário, leia como retorno do carro (Cr 15 ). Essa configuração é relevante apenas se key.conf usar o valor da chave numérica para ENTER (LF 12 , Cr 15 ). O nome -chave KEY_RETURN sempre mapeia o em uso.
Especifica um comando personalizado a ser usado para abrir/visualizar links. O comando deve incluir %1 que será substituído pelo URL para abrir. Se não for especificado, os seguintes comandos padrão são usados:
Linux: xdg-open >/dev/null 2>&1 '%1' &
MacOS: open '%1' &
NOTA: Omita os comandos à direita & para os comandos que assumem o terminal, por exemplo w3m -o confirm_qq=false '%1' e see '%1' .
Especifica se deve exibir a lista de bate -papo. Controlado pelo CTRL-L em tempo de execução.
Especifica a largura da lista de bate -papo.
Especifica se as caixas de diálogo de lista devem exibir a entrada do filtro de pesquisa pelo usuário.
Especifica se o NCHAT deve enviar recibos de leitura da mensagem após a visualização. Se o False NCHAT marcar apenas as mensagens lidas em next_page (Page para baixo), end (final) ou ao enviar uma mensagem/arquivo no bate -papo.
Controla se o NCHAT marca as mensagens no bate -papo atual como leitura enquanto o terminal está inativo.
Especifica um comando personalizado a ser usado para compor editor externo. Se não for especificado, o NCHAT usará a variável de ambiente EDITOR se definido ou usará nano .
Especifica um comando personalizado a ser usado para abrir/visualizar a peça de texto da mensagem. Se não for especificado, o NCHAT usará a variável de ambiente PAGER se definida ou de outra forma usar less .
Especifica se a lista de bate -papo deve indicar status não lido * para bate -papos suaves. Isso também determina se esses bate -papos estão incluídos no Jump to Unle.
Especifica se deve notificar (Terminal Bell) novas mensagens não lidas em bate -papos suaves.
Especifica se a posição da lista de bate -papo dos bate -papos suaves deve refletir o tempo de sua última mensagem recebida/enviada. Caso contrário, os bate -papos suaves estão listados por último.
Compartilhe o status online com outros usuários. Nota: Desativando isso interrompe as atualizações sobre outros usuários online/status de digitação para o WhatsApp.
Atualize dinamicamente o status online com base no estado ativo do terminal. NOTA: Ativar isso interrompe as atualizações sobre outros usuários online/status de digitação para o WhatsApp quando o terminal não estiver ativo.
Especifica o texto da barra de status para indicar o número de telefone do bate -papo atual disponível. Este campo pode conter %1 , que será substituído pelo número de telefone real do contato. Outros exemplos:
Especifica o texto da barra superior para indicar que o proxy está ativado.
Especifica o texto para indicar que uma mensagem foi lida pelo receptor.
Especifica se deve exibir reações.
Especifica um comando personalizado a ser usado para verificação de ortografia mensagens compostas. Se não for especificado, o NCHAT verifica se aspell ou ispell está disponível no sistema (nessa ordem) e usa o primeiro encontrado.
Especifica (WhatsApp) Atualizações de status Nível de visibilidade de bate -papo:
0 = hidden
1 = visible and muted <- default
2 = visible
Especifica o texto para o sufixo Nomes de arquivos de anexo na visualização da mensagem para downloads em andamento.
Especifica se a nova mensagem deve acionar Bell Terminal quando a janela do terminal NCHAT estiver ativa.
Especifica se a nova mensagem deve acionar Bell Terminal quando a janela do terminal NCHAT estiver inativa.
Especifica o título do terminal personalizado, ex: terminal_title=nchat - telegram .
Especifica se deseja exibir a barra superior. Controlado pelo CTRL-P em tempo de execução.
Especifica se deve exibir a versão NCHAT na barra superior.
Especifica se o texto inserido deve ser enviado como legenda ao transferir um arquivo.
Especifica se você deve compartilhar o status de digitação com outros usuários na conversa.
Este arquivo de configuração mantém as ligações da chave da interface do usuário. Conteúdo padrão:
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
As principais ligações podem ser especificadas nos seguintes formatos:
KEY_CTRLK )0x22e )