Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    Dmitry Sapozhnikov
    @o-sdn-o
    at the moment I am completely redesigning the terminal
    Paul G
    @paulie-g
    I get that this is a preview build, I'm just flagging it up since I have no way of knowing whether it's not-yet-implemented/a bug/expected behaviour
    понятно, сурцы будут или полностью закрыто? я не идеолог, просто интересно понимать
    Paul G
    @paulie-g
    а так большой удачи, например для индустриальных интерфейсов думаю очень подходит. другой вопрос поддерживают ли существующие терминалы direct color итд, но в СНГ старые терминалы думаю не очень распространены
    Dmitry Sapozhnikov
    @o-sdn-o

    понятно, сурцы будут или полностью закрыто? я не идеолог, просто интересно понимать

    Исходники VTM будут довольно скоро, но там будет видна лишь логика встроенного терминала. Основной пласт работы находится в "Desktopio TUI Engine" (Desktopio) на базе которого строится VTM. Туда входит практически всё - формы, события, рендеринг, мышь/клавиатура, пользовательские сеансы и т.д. Его исходники будут в отдельном проекте после того, как Desktopio заматереет. Под "заматереет" я имею ввиду момент, когда на его базе будет сделано несколько приложений: первым стал VTM (со встроенным терминалом), затем примитивный текстовый редактор, электронные таблицы, пасьянс типа косынки. Возможно, будет достаточно одного VTM с его встроенным терминалом.

    В долгосрочных планах - построить TUI экосистему внутри VTM, сделать удобным Windows Server Core (VTM хорошо себя чувствует в cmd.exe, вдобавок подходе Windows Terminal), сделать возможным совместную работу любого количества людей в терминале (сейчас VTM позволяет одновременно подключиться любому количеству человек и как-то там взаимодействовать). Когда исходники Desktopio будут доступны всем, я думаю народ много чего напридумывает на его базе. Не открываю исходники сейчас, потому что боюсь, что придумают что-то серьезное раньше, чем он будет доведен до ума, и тогда придется поддерживать обратную совместимость, которая не даст нормально сформироваться архитектуре.

    Paul G
    @paulie-g
    Спасибо за объяснение, вполне логично. Думаю, что просто предупредить о статусе было бы достаточно. Проектам, которые в открытом виде развиваются с начала типа Rust это не помешало - люди прочитали и понимают, что придётся переписывать и подстраиваться. Но это вам, как автору, решать. Не факт, что не потратите больше времени на отвечание на вопросы если сейчас открыть, чем сэкономите на какой-то помощи. Может так оно быстрее и/или проще.
    Мне лично была бы интересна на этой базе альтернатива к dvtm, который из-за ncurses не работает с directcolor. При наличии работающего терминала, добавить другой window manager с тайлингом было бы относительно просто. Tmux это конечно хорошо, но не очень удобно, а тут ещё и доп. фичи, и клиент. Можно и thin client сделать для ограниченных устройств, и даже с переносом сессий, как в SunView когда-то было.
    Очень интерестно посмотреть, как это всё сделано. Жду с нетерпением :)
    By the way, middle mouse button seems to work ok in kitty.
    Paul G
    @paulie-g
    If there's something you'd like to have tested, give me a shout - Ubuntu is not a good choice for this, since it doesn't track fast-developing projects like kitty, alacritty and so on anywhere near well enough. No waterfall release distro does.
    Dmitry Sapozhnikov
    @o-sdn-o

    middle mouse button seems to work ok in kitty.

    Thank you, I updated the issue [Demo] List of tested terminals #37

    Paul G
    @paulie-g
    :thumbsup:
    jayden@jmw
    @jayden-jmw:matrix.org
    [m]
    hiii
    Dmitry Sapozhnikov
    @o-sdn-o
    Hi!
    jayden@jmw
    @jayden-jmw:matrix.org
    [m]
    What's new!
    Dmitry Sapozhnikov
    @o-sdn-o
    New Year's theme - built-in terminal internals. 👌
    jayden@jmw
    @jayden-jmw:matrix.org
    [m]
    More support for more terminals?
    jayden@jmw
    @jayden-jmw:matrix.org
    [m]
    VTM has come a long way its tons more stable, and faster. The installation script written in powershell works great.
    There is one issue i've been having and its that sometimes middle click will close the window and sometimes middle click duplicates the window
    Dmitry Sapozhnikov
    @o-sdn-o

    More support for more terminals?

    I meant that on these holidays I am redesigning the internal structure of the terminal built into the VTM.

    At the moment, the structure of the internal buffer prevents many terminal applications such as less/bat/etc from working as expected.

    Designing the internal buffer of my terminal is complicated by the support of clusters of non-standard-size grapheme clusters (stretched over several cells) and their individual fragments (halves/quarters).

    Grapheme clusters should be able to be more than one cell in height/width, as well as it should be possible to process their individual fragments.

    Support for such graphemes by modern terminal emulators is a matter of time.

    Here is an example of how I want to do
    advanced-terminal-i23.gif
    Dmitry Sapozhnikov
    @o-sdn-o

    sometimes the middle click closes the window and sometimes the middle click duplicates the window

    The middle button has two functions:

    • One click to destroy the window
    • Click + drag to create a new window (the action is interpreted as dragging if the mouse cursor is moved at least one cell after pressing the button down)

    Perhaps the mouse cursor moves outside the current cell during the time between pressing and releasing the button, and this action is interpreted as dragging to create a new window.

    jayden@jmw
    @jayden-jmw:matrix.org
    [m]
    k
    JaydenMWSoftwareDevelopment
    @JaydenMWSoftwareDevelopment
    image.png
    The latest versions of VTM are working great.
    Even in Window's standard cmd.exe terminal it has a great experience.
    With the deja vu sans mono font applied to cmd.exe it works 100%
    JaydenMWSoftwareDevelopment
    @JaydenMWSoftwareDevelopment
    image.png
    I wrote a short one line launch script which launches vtm in cmd.exe
    Great work!
    Dmitry Sapozhnikov
    @o-sdn-o

    The latest versions of VTM are working great. Even in Window's standard cmd.exe terminal it has a great experience.

    It's nice to hear that, sometimes it seems to me that everything is convenient for me only because I got used to this interface during development.

    Paul G
    @paulie-g
    I wouldn't be so optimistic about support for such things in other terminal emulators. This came up when people requested support for DECDWL/DECDHL. The answer was that the cost of implementing it was not justified given lack of use in existing software and libraries (ncurses principally). Naturally, software isn't going to use something that isn't widely supported. This feature request was definitively closed as wont-fix by libvte (the Gnome terminal emulator library used by most cookie-cutter interface-focused terminal emulators). The GPU-accelerated ones like alacritty say they won't implement because of libvte.
    The only terminal emulator that supports it is Konsole (the KDE terminal emulator) and xterm+derivatives.
    С Новым Годом вас!
    Dmitry Sapozhnikov
    @o-sdn-o
    Merry Christmas, Счастливого Рождества, и с наступившим-таки Новым Годом! 🎉🎉🎉
    Dmitry Sapozhnikov
    @o-sdn-o

    I wouldn't be so optimistic about support for such things in other terminal emulators.

    Indeed, at first glance, this doesn't seem to be in demand. Moreover, it seems inappropriate in a terminal environment, as many terminal developers have spoken about repeatedly.

    I have several reasons to be optimistic about such things.

    This came up when people requested support for DECDWL/DECDHL.
    The answer was that the cost of implementing it was not justified given lack of use in existing software and libraries (ncurses principally).
    Naturally, software isn't going to use something that isn't widely supported.
    This feature request was definitively closed as wont-fix by libvte (the Gnome terminal emulator library used by most cookie-cutter interface-focused terminal emulators).
    The GPU-accelerated ones like alacritty say they won't implement because of libvte.

    Support for DECDWL/DECDHL is a special case of some big puzzle. You're right, DECDWL/DECDHL support only solves one specific problem, and it requires a lot of work to design and implement. Most likely for this reason it didn't fire.

    Reasons to be optimistic.
    Basically, we are interested in supporting the following text abstractions:

    • Emoji
      • For example, the sequence U+1F468 MAN, U+200D ZWJ, U+1F469 WOMAN, U+200D ZWJ, U+1F467 GIRL (👨‍👩‍👧) could be displayed as a single emoji depicting a family with a man, a woman, and a girl.
    • CJK characters
    • Orthographic and stylistic ligatures, e.g. fl, ft, ff, fi, f‌f‌i (ffi), and f‌f‌l (ffl)
    • Conjuncts in segmental writing systems like Devanagari, in which consonant-vowel sequences and any dependent combining characters should never be split
    • Mathematical operators and symbols
    • Halves/cuts of all of the above

    All modern terminals intend to display these objects. Nobody is going to give it up. For example, a ticket about support for Devanagari in VTE has not been closed for ten years, everyone hopes for some kind of solution.

    In fact, all these objects are a class of objects that can occupy any number of cells in the terminal. In this context, it seems strange to me that terminal developers are trying to solve the problem of displaying these primitives individually for each such object, without trying to generalize the problem.

    If we abstract from the clever names of these objects, then we see what they are in the general case:

    • String, grapheme cluster: a set of code points forming the final character, in general, for simplicity, you can operate with a set of bytes encoded in UTF-8
    • Width: number of occupied cells

    We can use the Unicode database to get the widths of characters and the rules for their clustering, but for a full-fledged correct display in terminals, this is not enough. The Unicode standard offers nothing about Emoji that are three or four cells wide. Also, the standard gives nothing about the width of conjuncts in segmental writing systems, and nothing about custom ligatures.

    Custom ligature sizing information can only be retrieved from the font used. Despite the fact that the size of common ligatures depends on the current locale, this does not help much.

    The size of the conjuncts in a segmental writing system depends solely on the font. It can range from one cell to five wide.

    About halves. Terminals have a well-known problem of partial displaying of wide characters, and all developers have unanimously decided that in order not to split wide characters, it must either be wrapped on a new line or not displayed at all. It is not clear what to do with Emoji/ligatures/conjuncts with a width of three or more cells.

    To solve the problems of displaying all the above text objects, terminals must at least be able to display clusters of graphemes and their fragments in an arbitrary set of cells, and be able to do this both from the terminal side and at the request of the terminal application.

    As an automatic bonus after solving the problem in the general case, a number of new opportunities appear both for the terminal and for applications, including support for DECDWL/DECDHL. For example, you can "construct" characters that are more than one cell high, and so on. I've outlined new features and use cases here.

    Dmitry Sapozhnikov
    @o-sdn-o

    New feature

    • Copying an arbitrary terminal area with the mouse, preserving all text attributes

    image

    Clipboard contains ANSI-art

                                      │-DIR│  3 23:
                                  et  │40969 23:
    �タ                          ...
    Dmitry Sapozhnikov
    @o-sdn-o
    • Scrollbars
    image
    jayden@jmw
    @jayden-jmw:matrix.org
    [m]
    I can't wait til VTM can be in 4k resolution
    Dmitry Sapozhnikov
    @o-sdn-o
    I am now implementing the mode with disabled text wrapping and the possibility of horizontal scrolling in the built-in terminal
    Dmitry Sapozhnikov
    @o-sdn-o
    many terminals do not want to support it, despite the fact that it is in great demand
    jayden@jmw
    @jayden-jmw:matrix.org
    [m]
    my software development team is having a rename and my website is getting a redesign :D
    Dmitry Sapozhnikov
    @o-sdn-o
    image👌
    jayden@jmw
    @jayden-jmw:matrix.org
    [m]
    Lol
    jayden@jmw
    @jayden-jmw:matrix.org
    [m]
    Maybe you should write your own multi-platform terminal emulator that supports all these things
    Dmitry Sapozhnikov
    @o-sdn-o
    I’m planning to make a graphical frontend for the built-in terminal
    Paul G
    @paulie-g
    That would be excellent.
    I get your arguments above, and don't disagree in general, but ligatures are already supported for the cases people care about, no one cares about emoji, and few people care about exotic writing systems