A collection of possible improvements
After a brief use of the overall great software, I have the following improvements in mind:
- A palette selection for background colour of the main editor pane, and the compiler output (apparently dark mode isn't detected for me, I think I saw you mention some Qt issue, but I'd rather not mess with that). So I'd be satisfied with having a choice of the background colour, independent of the text colour.
- An option to disable automatic autocomplete for parentheses and such. If possible, a toggle for each individual feature which does that.
- To new users, it might not seem obvious where to add, and which files to even add to the
hunspelldirectory. So, I recommend adding a "browse" button somewhere in the language selection menu which would default to that directory, as well as copying part of the README regarding this into that same menu. - An option to change where downloaded packages (Download Cache) are being stored (I downloaded the installer on bigger disk, but it still downloads the packages on the smaller one).
- I don't understand the setting "Allow preview packages" of Typst Universe. By the way, it would be nice to have the ability to agree to a package being downloaded.
- The option "Show Control Characters" is greyed out for me for some reason, no matter the font.
- The "Cursor movement style" tooltip could be more descriptive (the only difference I found is that one option doesn't let you go over multiple lines if you keep pressing the right arrow key).
- "Multiple line cursor selection", as well as "rectangular selection", and "virtual spaces" (see Geany for all mentioned). They're all sort of related I believe.
- The option to freeze preview, so to stop the constant recompilation (I'm aware that's one of Typst's traits, but it would benefit LaTeX users in adjusting to it). I assume the only other way to stop it is to close the entire preview pane?
- Faster way of enlarging the currently viewed part of the preview through a single button click, or with the possibility of making it a shortcut. So, toggling between it being fullscreen, and back to regular.
- It's possible to have off, left, both, but why not also line numbers on the right side only?
- Higher resolution icon (in the executable of Windows 10).
- I don't get the
IsolateandMarkoptions underEdit > Insert, because they don't do anything. - The use of
Ctrl WorCtrl Qto close the software. - The use of a shortcut to export as PDF (or a general export shortcut, from where I can choose what to export into). If a user has ImageMagick installed, it could also automatically convert to different formats, but I'm not sure if it's a reliable solution.
- Line wrap option for the Compiler Output, and the opposite for the main editor pane (I myself am a fan of default line wrap in the latter, I just wanted to put it out there).
- An unusual request, however I'd like to see some other "open-source Typst offline editors" listed if possible, because I don't think there's much Typst software like it yet. If you happen to have used one before, it would be useful to be aware of it.
- What is the lore behind the chosen name Katvan?
- I think either one of the screenshots could be shown with the panes switched around (main pane on the left, and other two on the right). I don't think people would currently realise that you can actually move those around, because they read "with a strong bias for Right-to-Left editing" first.
- More demanding:
- General shortcut customisation if more are added later on.
- A macro creation system (see Texmaker's
User Commands). They're used to run commands in Texmaker, but I see them more useful here as simply the ability to insert your own snippets of text with certain (predefined) keyboard shortcuts. - Implementation of a configuration file import/export. So that it's easy to move between different desktops.
- If you think of adding tabs, please consider them:
- Togglable through left-right
Ctrl Tab, and right-leftCtrl Shift Tab. - Individually closable through
Ctrl W.
- Togglable through left-right
Neat features:
- Responsive editor.
- Screenshots at the top of the README.
- Support of Fira Code's font ligatures.
- The search and replace functionality.
Page _ of _is shown in the preview menu.- The togglable dark mode option in the preview.
- The togglable option to track (continuously synchronise) between the main editor pane and the preview.
- Teleporting to the approximate line of code by control-right-clicking in the preview.
- Movable text selection in the editor by dragging with mouse.
- The shortcuts
Ctrl Z,Ctrl Shift Z, andCtrl Yall work. - Compiler Output is cleared upon each compilation, so it's rarely cluttered.
I'm aware over half of this won't ever make it into the editor, but possibly over time at least some do. I'm glad you acknowledged user suggestions, discussed in some of the previous issues.
If I may also ask in this same "issue", how do you go about storing the live preview? I don't think it really matters with the online Typst editor. But if I have a long file when offline, as is the case with this editor, do I have to worry about the preview filling up my RAM or wherever it's being (temporarily) stored?
Thank you so much for doing such an extensive evaluation, and taking the time to share your results! There is a lot to unpack here, so it will take a while for me to digest all of this.
The first thing I'd like to emphasize in relation to the list in general is that the "bias for Right-to-Left editing" bit in the project's tagline goes deep. Historically, preparing technical documents in languages that use a script written from right to left (Arabic, Hebrew, Syriac, etc) for typesetting in WYSIWYM systems is quite hard - or maybe frustrating is the more appropriate word. Katvan's whole raison d'être is to leverage and complement Typst's unique capabilities in this aspect to make the RTL editing experience as pleasant as it can be. This focus has guided all the technical design decisions I've made, and does involve various trade-offs. It means that Katvan will likely never be a great general code editor, as long as it can be great at the specific task of editing RTL Typst documents. It also means that features that don't benefit this goal (or at least don't detract from it) are explicitly out of scope for the project.
That's fine - if anyone's need is general code editing, or specifically composing Typst but in languages utilizing "regular" left to right scripts, they would be far better served by the VS Code + tinymist combo which I believe is the current gold standard for local Typst projects.
I think quite a few of the features you listed as unclear, or not seeming to actually do anything, are only meaningful when dealing with Bi-directional text, meaning in our context RTL content mixed with foreign terms, inline math, code, etc:
The "Cursor movement style" tooltip could be more descriptive (the only difference I found is that one option doesn't let you go over multiple lines if you keep pressing the right arrow key).
Try pasting the following line into the editor:
עברית English שוב עברית
And moving the editor cursor over it under both modes. The difference should now be obvious. And in general, for those who need this feature the difference between the cursor following character logical order and visual order is painfully known.
I don't get the Isolate and Mark options under Edit > Insert, because they don't do anything.
They insert the control characters used by the Unicode BiDi algorithm, and affect how characters with no or weak directionality are associated with directionality runs. Here is a nice introduction.
These are often important for Typst documents, since its' syntax uses many weakly directional symbols. Katvan tries to deal with as much as it can by itself (and the next version will have significant improvements in that front!) but still sometimes control characters need to be manually inserted to get a particular bit of text to look and behave right under editing.
Line wrap option for the Compiler Output, and the opposite for the main editor pane
When text is bidirectional, line wrapping is the only sane way to work with it. Being able to disable editor line wrap will never be implemented, and I'm not sure how well that is defined even if I wanted to (i.e. if some lines are right-aligned and some are left-aligned, where is even the zero position of the horizontal scrollbar?)
The option "Show Control Characters" is greyed out for me for some reason, no matter the font.
There is a tooltip that says that running with Qt 6.9 is required for that. It requires a patch that I upstreamed into Qt to make it possible to render characters that the Unicode standard defines as "Default Ignorables" (and all BiDi control characters are such). Qt 6.9 isn't fully released yet, and even then I won't raise the minimum required version to such a new release. The tooltip might indeed be a little easy to miss, I'll see if I can do something else.
It's possible to have off, left, both, but why not also line numbers on the right side only?
There is no "left" option. The third option is "On Primary Side" which is either left or right depending on the system locale. It is on the left for you, because you use an LTR interface language.
What is the lore behind the chosen name Katvan?
Katvan is a common way to transliterate כתבן, which is Hebrew for "typist" (as in the profession). It matches the overall theme of projects surrounding Typst. The word is derived from the semitic root K-T-B which is common in multiple semitic languages and is linked to the action of writing.
apparently dark mode isn't detected for me, I think I saw you mention some Qt issue, but I'd rather not mess with that
There aren't any issues with detecting system-wide dark mode left that I'm aware. Would you be so kind as to open a new issue with more details about your environment so I can investigate?
If I may also ask in this same "issue", how do you go about storing the live preview? I don't think it really matters with the online Typst editor. But if I have a long file when offline, as is the case with this editor, do I have to worry about the preview filling up my RAM or wherever it's being (temporarily) stored?
Katvan embeds the full Typst compiler. It maintains in RAM a parsed version of the document, the fully resolved laid out result in vectoric form and a cache of intermediate results that allows re-compilations to be so fast. Preview pages are rasterized on demand as you look at them. By the way - the online Typst editor is also keeping those in your browser's RAM, as it actually using a version of the compiler built as WebAssembly. Memory usage is around the same ballpark between typst.app and Katvan for the same document.
Thanks for the (near) complete response from your end too. I see now that it indeed is very RTL-centric design, and it's nice to see you took some time to take care of LTR as well. Also here's more on the issue of the dark mode not being detected.