d99kris / nchat

Terminal-based Telegram / WhatsApp client for Linux and macOS
MIT License
524 stars 40 forks source link

URLs can't be open with the mouse if their line is wrapped #187

Closed fulalas closed 4 months ago

fulalas commented 4 months ago

First of all: this project is AMAZING! Really! Congrats! :)

Links can be clicked with the mouse and they work nice unless the terminal window is not large enough to accommodate it in a single line.

Kind off-topic questions: is there a way to: 1- move the cursor in a message with Ctrl + arrow (to jump to empty spaces)? Same to Ctrl + End and Ctrl + Home. 2- set the send message shortcut to Ctrl + Enter? I tried many combinations, but nothing seems to work. Using nchat -k doesn't help because pressing Enter or Ctrl + Enter seems to trigger the same output.

fulalas commented 4 months ago

Sorry to flood this, but I found two more issues:

1- there's no way to select a wrapped line message without also selecting the contacts at left (well, unless we hide the contact list) 2- if we paste a text like this in a given chat, different people will receive parts of the text (I have both Telegram/WhatsApp enabled):

CpxmcoLz dg yzcx:

- ya jlcyzg xjgaqxazx ez qídj yâydí tjamyzozdéz cxzcaqt tcegxztcz yaâydz lcjy azxgzayca yaâygzaeazl, q:
    1- sq xjgjrgx yaâydz ayâgz tcxaz xjgcaylzaz ez azxgzayca qyaydz tcqyaz yaâydí;
    2- sq vctczr azxq tcegq zctydzayy, yaâydz notificação sygjy, sq vctczr azxq yaâydz cyzgj lcjy tcyaz tcqyaz qyaydz, y yaâydz dqygx paqrz/qyaygj yaâydz tcqyaz;
    3- sq cyzgj cymz lcjy yaâydí tcyaz ez ayâygzaeazl/vctczr azxq ayâygz, sygjy yaâydz tcxaz yaâydí
    4- sq vctczr azxq tcegq yaâydz y yaâydz tcyaz cjz lzlcqgz ylzr, lcjy áudio yaâydz tcxaz jcyqjy;
- yaâydz ayâgz xjgjrgx azuis, lcjy tcxaz qcygjz lzlcqgz azxgzayca ayâgcjvzl yaâydz;
sq cyzgj tcegq yaâydz ayâgz gz lzlcqgzayy lcjy qcqgqz ylzrjy y âgz lcjy yaâydz azxgzayca jcyazcy yaâydí -- nzlzq lcjy tcxaz sq jyrcqgz azxq tcegq lzlcqgzayy yaâydz lzrcy gz ayâygzaeazlz;
- sq cyzgj yaâydz tqgqjzayy a gzgzr qcrvqgq azgcy azxgqgjaz gz qgzlcqgz ayâydz, yq lzgzq lzlcqgzayy lcjy lylcyz azxq lzgzgz gzqgzgz azxgzayca lzrcygz qgzgzqgz lzlcqgzayy, q gzgzqgz nlcyyazgz ylzrjy yaâydz lcjy tqgqjzayy gz qgzgzqgz lzgzgz gzqgzgz lzrcygz lzlcqgzayy;
- sq jlcyz azxgzayca gz lcjy lzqgzqgz ayâydz lzqgzgzayy lcjy lzrcygz lcjy lylcyz azxq lzgzgzayy lzlcqgzayy, lzqgzqgz nlcyyazgz lcjy lzrcygz yaâydz, yaâydz lzqgzgzayy lzgzqgz lzlcqgzayy lcjy lylcyz azxq lzgzgzayy lzlcqgzayy lzgzqgz lzgzgz lcjy lzgzgzayy;
- yaâydz sq lzqgzqgz azxgzayca azgcy lzrcygz yaâydz nlcyyazgz lzlcqgzayy;
- yaâydz lcjy lzqgzgzayy:
    1- lzgzqgz gzgzgzlzgz gzlzrcyya
    2- gzqgzgz ayâydz gzlzgz lzgzqgz lcjy lzgzgzayy
- gzlzqgzgz gzlzqgzqgz azgcy azxgzayca gz lzgzgzayy:
    1- tcxazgz lzgzgzlzgz gzlzrcyya
    2- yaâydz gzgzqgz gzlzgz lzgzqgz lcjy lzgzgzayy;
- gzgzqgzgzqgz gzlzqgzqgzazgz gzlzqgz gzqgzgzgzlzgz gzqgzgzgzlzgz: gzlcjy gzgzgz lcjy lzgzgzayy gzgzqgzgzlzgz, yaâydzgz yaâydzqgzgz azxgzayca lzgzgz gzgzgzqgzgzgz gzqgzgz lcjy lzgzgzayy lzgzgzayy gz gzgzgzgz gzqgzgzgzlzgz;
- gzazgzlz lzgzgz lzgzgzgzqgz gzgzgzlzgzlzgz, gz yaâydzgzgzgz lzgzgzgz gzqgzgzgzlzgz, lcjy gzqgzgzgzgz gz gzgzgzgzgz gzqgzgzgzlzgz;
- yaâydz lzgzgz gzgzgz lzgzgzqgzgz gz lcjy qgzgzgzgzgzgz, gz yaâydzgzgzgz lzgzgz gzqgzgzgzlzgz, yaâydz gz gzgzgzgz gzqgzgzgzlzgz;
- gzazgzlz lzgzgz gzgzgzgzqgz gz gzgzgz gzgzgzgzgz lzgzgz lzgzgzayy;
- gzqgzgzgz gzlzqgz gzlcqgz gz gzgzgz gzqgzgzgzlzgz, gz gz yaâydzgz gzqgzgzgzlzgz, gz gz
d99kris commented 4 months ago

Hi, thanks for the feedback! For future issue reports, I'd like to suggest to report different issues separately.

Anyway, for mouse clicking links with line-breaks, I consider it out-of-scope for this project. It would be fairly complicated to implement, and likely only support when chat list is hidden (i.e. messages are full width), and thus only benefit a subset of users. You may however select a message (key up/down) and press Ctrl-W to open link(s) in the message.

For word/message navigation, please refer to the README. But essentially nchat supports equivalent to bash shell (Alt-Left, Alt-Right, Ctrl-A, Ctrl-E).

I believe Ctrl-Enter does not send a unique key code by default, so it cannot be differentiated by nchat. One can probably configure the terminal (for example xterm) to send a unique key code for Ctrl-Enter, but how to do that would be specific for each terminal.

For selecting a line-wrapped message, you can hide the contact list using Ctrl-L and then select message lines across the full terminal width. Or you can simply select the message and use Alt-C to copy its content.

For pasting text (assuming containing tab characters, which by default switches to next chat) please try using the internal paste command Alt-V, or alternatively reconfigure the keybinding next_chat=KEY_TAB in key.conf.

I'll proceed to close this issue for now, but feel free to re-open for any follow-up questions or issues.

fulalas commented 4 months ago

Not only your project is amazing, but you're very kind. :)

I managed to set Home and End to begin_line and end_line, respectively. I wonder why this is not the default, as this seems more intuitive because it's the default in any editor and even most terminal -- you could change the history home / end to Ctrl-Home and Ctrl-End. Same for backward_word and forward_word using Ctrl-Left and Ctrl+Right.

Thanks a lot!

d99kris commented 4 months ago

Thank you for the kind feedback!

The default key bindings for text input are generally based on default bash behavior. There are also some complexities with supporting ctrl + navigation keys portably across terminal emulators / operating systems, at least given that nchat is based on ncurses.