-
-
Notifications
You must be signed in to change notification settings - Fork 680
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FEATURE] windows support #316
Comments
Termion is a unix-only library. I think zellij devs might need to shift to crossterm to become cross platform. |
Moving to crossterm would definitely be the first step. We only use termion for input parsing, so crossterm could probably do the trick for us. |
That sounds great! Zellij just might become the first ever terminal multiplexer to have native Windows support 😅 |
I took a quick look at this today. This is a non-exhaustive list of obstacles I ran into:
With a bit of conditional If I were to try again I'd build |
Unfortunately, I'm not so sure that |
@blm768 - the only thing we use termion for right now is parsing STDIN. The rest we do "in house", so I think on that front if we can switch that to crossterm (which as you say I think can handle that bit?) we should be good. |
We seem to pass raw ANSI sequences from |
@blm768 - I see what you're saying now, right. If crossterm can't do that then we can totally offload this to an external library. I'm not sure I understand what trouble you're referring to with the plugin API though... we parse input from stdin and then send it ourselves to plugins... or am I misunderstanding you? |
The problem with parsing plugin output is that we currently do it with Looking at how terminals encode typical key sequences, it doesn't seem like it should be hard to translate from Zellij's key event types to ANSI sequences, so at least that part shouldn't be too bad. Parsing basic key sequences probably isn't too hard, either, so perhaps this stuff won't be as bad as I was initially thinking. |
I'm still unsure what you're referring to in the plugins, tbh. Could you link to the part of the code you mean? |
Aha! I see. I actually wasn't fully aware we were doing that :D We should probably be able to get away with just sending the events directly to the plugins and bypassing termion in this case altogether. I mean, we parse them to events, interpret them, then serialize them (because that's what the terminals want) and parse them again (because that's what the plugins want). We can change the relevant instructions to include both the serialized and parsed versions, I think |
Could |
Probably worth looking into, at least. The |
I wonder if |
They might be willing to expose support for raw ANSI sequence parsing. There are references in the
That doesn't sound like quite the same issue, although it's at least tangentially related. They seem to be looking for raw keyboard scan codes rather than raw ANSI sequences. |
Looking into this right now. An additional unix-only crate is |
Yeah, definitely. Both for |
Might take me some time to write the Windows equivalents for the |
Any chance for a revival? |
Adding windows support to the project is a significant undertaking. More so now as the project evolved since this thread was last active. It will likely require a few weeks of work on my part, as well as access to a windows machine. If this is of interest to anyone, I invite you to look into the "large project" tier of my Github Sponsors. |
Is there any chance this can be broken up into smaller, manageable chunks for external contributors to work on? I don't think many people can shell out 5000usd for a terminal multiplexer... EDIT: I can also place a bounty on this issue, but not to the scale of multiple thousand dollars. |
That's the value of the work. As you can see, while I happily give away my work for free - that gives me the freedom to choose what I work on. Even if someone magically comes about and implements this "perfectly"*, this being OSS - I have no way of knowing they would stick around. Then the maintenance work - for years to come - falls on me. Maintenance work that might become critical and even block other features. *If there is such a thing... |
Windows needs this like yesterday, hoping to see zellij on windows. |
It's such a shame Windows is not supported. I had to move to Windows, due to reasons on my job, and had a bad surprise that I wouldn't be able to use my fav term multiplexer. |
Would love to see it on windows too. We need it. |
I am starting to investigate things that have to be changed for zellij to build on windows. One thing that needs fixing is the ipc (Inter Process communication). At the moment it is not possible for windows to clone a session stream ipc.rs since this uses an unsafe workaround with unix file descriptors. (Unsafe as in unsafe block, not as in will likely crash). This unfortunately has no windows equivalent as far as I could tell, but a try_clone feature is in the works on the ipc crate. This being said, IPC is only one of the components that needs reworking to be cross platform compatible and I will try to set up a tracking issue with the components I can find that need reworking for windows to compile and maybe can be worked on independently. |
I very much appreciate your investigation and willingness to help and contribute @iXialumy - I'm sure many others who watch this thread do as well. As I mentioned above though - the main chunk of work that will be needed for windows is to adjust our pty handling to work with the windows To say it differently: the work needs to start from the technology/ecosystem side and then adjusted as needed from the dependency side. I'm saying this because I don't want you or anyone else to waste time working on stuff that have a high likelihood of not being needed for this issue (eg. for ipc we might be able to switch to a different library). Again - thanks for your willingness. |
Thanks for the quick reply @imsnif . Can we maybe create a separate issue for that where we outline what work has to be done there andmaybe reference that here. I would also have no problem working on that, but at the moment I lack a sense of direction. I would be open to chat if that would be too big of a topic for a single issue in the beginning. Let me know how I can help :) |
Honestly, I don't know how to proceed forward with accepting contributions for this in a way that won't waste anyone's time and cause frustrations. Here is how it usually happens for me:
So... I don't know what to tell you other than pointing to my last comment for a way forward on this. That's something I haven't tried yet in the OSS world and am totally willing to give a try. This model described above is something I tried very often and it almost always happens in the way I described. It sucks, I know - but I just can't ignore my many experiences here. |
Yes I totally understand that and I very much appreciate you voicing this concern. That would make it easier to work on this myself without much feedback needed from you and I could keep silent until I may have come up with a solution that may need some help to merge at that point. Or in case a big decision is needed. That would keep you out of the loop mostly and hopefully reduce frustration to a minimum if I don't succeed with this feature, but still gives yourself or someone else an outline of what this should look like in case this gets picked up later again. Is that something that you could see working? |
Honestly @iXialumy - this sounds like the same process I described. I have been burnt by this too many times. I'm sorry, but I'm spending my full time on this project burning through my savings. My time is very calculated and critical for me. As much as I'd like to see windows support, I cannot risk it for a stranger from the Internet - kind and friendly as they may be. If you want to start working on this without my input and come to me with a working and compiling version and a list of decisions that need to be made - sure. Otherwise the way forward with this is either a funding campaign as I mentioned in the comment above, or waiting until I get to it myself (which I fully plan to, but cannot yet provide an ETA for - I'm honestly doing what I think is best for the project at the order I feel is right). |
Yes I fully understand. I guess I will do my best to get as far as I can with this and document what I have done and the Problems I'm facing, so this may provide value even if I can't finish the work. |
I am going to continue writing on this in a draft PR, because it does not seem useful to post technical updates here. |
I try this with WSL. I like this idea. But on my system "paste" doesn't work. To copy it I can define copy_command "clip.exe" . |
It would be nice if Zellij was cross-platform as other tools like Helix, Alacritty, Nushell... |
windows users are waiting |
Dear windows user, This is an OSS project run by volunteers. As indicated above you in this thread (which I assume you read before you decided to make this useful comment), said volunteers do not have the capacity or funds to develop this feature at the moment. As I am sure you have also read here, others from the community want this feature so badly they have decided to start developing it on their own - at great effort and with decidedly not enough appreciation for their hard work. While I appreciate that you want this feature very bad and am sure you did not mean it this way, comments such as yours mostly serve to demoralize and frustrate people doing the actual work on the feature you want. So not only are they not helping, they also serve to actively deter the efforts of people who're working on the feature. If you'd like to learn more, allow me to recommend this great blog post: Entitlement in Open Source. Until then - I encourage you and others to be patient and show your appreciation for the very hard work that is being done in the sister PR of this issue. No need to further comment (here or in the PR) if you don't have anything useful to add, you can use the various reactions kindly provided by GitHub. All the best to you. |
After reading this thread I still tried to run
I've been meaning to learn some rust, I'll try and dig in and see what the issue is. See if I can help fix it. Any pointers would be great. |
@arunk That error originates from a crate ( a rust libary ) named Furthermore And sorry for explaining everything like if you where an idiot regarding Rust, I just have no way of knowing how informed you are. Also, if you want to find out the details of a crate (or browse through all aviable crates) take a look at crates.io Lastly I'd try to avoid to discuss this here, since for every message 19 people are getting an email. |
I ran Cargo Tree
|
@LifeWorks Please have this as spoilers, or some block that doesn't take the whole screen for this discussion! |
So why does Zellij not support Windows? Does it have to do with that some of the crates are Unix only or there are internal code that makes it hard to support Windows? |
@ritchielrez see #316 (comment). There are some other platform-specific concerns in this thread as well. |
Thanks for the advice, I didn't know about spoilers. Now it has been fixed. |
currently under windows 10
return lot of errors during compile termion
The text was updated successfully, but these errors were encountered: