Hi, I'm so excited to have found Zettlr as I was using Sublime/Atom and others to write papers and keep notes, but Zettlr has all the features I need without most of the ones I don't need!
One of the features I really appreciate from these editors is the ability to split the main window into two panes and also have multiple tabs open. Is there a possibility to introduce something like that in the future? (I looked and couldn't find any existing feature requests or instructions for how to do that).
Thanks!
Anna
Yeah, it's something I currently hate with Zettlr as well, but it's a lot of work. So I'm not sure when, but I'll see into it.
These features would, for sure, be really nice. Maybe multiple windows would be easier(?) to implement, and sort of serve the same purpose?
Multiple windows would be horribly difficult, unfortunately :D
For tabs and split-panes there are already builtin CodeMirror function, while having multiple windows open would mean to synchronise the state across all of them, which might work, _but_ would require a refactoring on a scale I can't bear at the moment. I'm rewriting parts of the application towards that goal, but it'll take years I guess to achieve.
The main problem why it has come to this point is that Zettlr originally was not conceived to contain that crazy amount of functionality it already includes, so it's rather difficult to scale … totally my fault, but now I can't alter it :(
Ah! The infamous feature creep. 😁
The app is really good regardless. Keep up the good work!
Is there a point in trying to help out?
If so: Is it the development branch I should follow?
Yes, most stuff happens on develop, and before each release, the master gets updated from which I run the build cycle. If you're interested in helping (I could REALLY need some help!), please feel free to drop me a few lines with how you'd like to help (styles, Vue-dev, templating, core-dev, something like that) :)
As tabs are now finally a part of Zettlr, I'm happy to be able to finally close this issue :)
Hi, could you quickly explain how to use tabs?
I did not find it in the documentation.
Thank you :)
Hi, could you quickly explain how to use tabs? I did not find it in the documentation. Thank you :)
Coming in 1.7. Currently Beta.
Hurrah for the new beta with new electron!
I would like to ask - is there a possibility to have split-screen with new fsal without much effort for you @nathanlesage ? Even rudimentary (max 2 windows) it would help with working with zettels (for example having master zettel for some topic pinned in one half of the screen and then editing smaller zettels in another part of the screen?
Sorry, having pinned tab should be another issue, but I don't want to make too much of them now ;P
I would like to ask - is there a possibility to have split-screen with new fsal without much effort for you @nathanlesage
:D The same question was posed by someone on twitter yesterday!
The thing is: I actually don't really know what it would include. But before I do that we need to rewrite the whole editor thing to a) not be a God class anymore and b) to be modular and pluggable. This would also enable a much needed rework of QuickLook windows (including already-rendered-elements) plus several editor instances.
However, I am not sure whether or not that would open up a rabbit hole … currently it's like this:
One CodeMirror instance (e.g. the main editor) can have x documents assigned to it, which are swapped when you switch the tabs. Currently, a lot of the new functionality relies upon these documents being accessible by only one CodeMirror instance; and for split-view we need two (or more) instances running at the same time. So it's certainly possible, but it would require some form of editor managing class which keeps track of opened documents and provides an interface to the rest of the GUI.
And, while we're at this … I'd rather like to redo the whole renderer beforehand :/
Thanks for the in-depth explanation!
(So actually this could be a motivation for me to learn JS :P )
(So actually this could be a motivation for me to learn JS :P )
Feel free — more devs mean more features in shorter time :D
I gave the tabs a try in 1.7 Beta and they work great! However, for me, their application still seem a bit limited as long as I cannot arrange them side-by-side.
Multiple windows would be horribly difficult, unfortunately :D
Why is that the case? I wouldn't expect zettlr to synchronize anything (If I have two instances of vim open it's also my responsibility to not screw things up by writing to the same file). Would such a "use-at-own-risk" multi-window mode be more easily possible?
Would such a "use-at-own-risk" multi-window mode be more easily possible?
Everything without safeguards is easier to implement, but this would be horrible from a UX perspective. As a user, I expect from my software to not screw things up, and therefore, we'll need to approach the multiple-editor-instances-problem with a sane mind!
Is it possible to add that as an undocumented feature (zettlr --allow-multiple-windows) with minimal effort as a temporary workaround until split-panes become available (I can understand if you don't want undocumented features)? Or could you pinpoint me to the section of the code that checks if there's already a zettlr instance running so that I could try to compile a custom version myself?
Or would it already be more complex to achieve that?
Or would it already be more complex to achieve that?
Unfortunately, this. Personally, I don't have that much of a problem with undocumented behaviour for experimentation purposes, but overall, the current codebase is heavily biased by the software not having any second windows, therefore launching several versions will lead to data corruption fairly quickly. Furthermore: Multiple windows is not what we want, but multiple editor instances within the main window. For multiple windows we have Quicklooks, which'll also get a makeover in the future.
ok, thanks for clarifying!
Keep up the great work, I really enjoy using zettlr so far :)
I managed to work around it by running zettlr as two different users. It even synchronizes reasonably well between the same file:
https://gist.github.com/grst/34a6d7e60ec179406245565923565a0b
EDIT: I can observe the first drawbacks, for instance the ID database is not updated. But since I mainly use this for viewing it's not too bad.

Uh, looks interesting :D
I managed to work around it by running zettlr as two different users.
Albeit for this I'd suggest to just modify the main.js-file and simply remove the singleInstance-lock code :D
just modify the main.js-file and simply remove the singleInstance-lock code :D
Actually, that was what I meant when mentioning the undocumented feature :smile:
Most helpful comment
Coming in 1.7. Currently Beta.