-
Notifications
You must be signed in to change notification settings - Fork 3.2k
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
Linux Roadmap #7015
Comments
Window decorations on Linux are a mess.
EDIT: Just read the task list again. GTK 4 will not let you create a simple window with a fullscreen Vulkan context as you might want. |
+1 to please officially support both Flatpak and AppImage formats. |
@mikayla-maki could you expand on this? I've had a good experience with tokio and am unaware of the downsides. |
You might want to look at the reasoning of @mitchellh for not providing Linux binary builds, but working with package maintainers: |
@julianbraha we provide our own executor that integrates with the macOS runtime and would prefer to not be running multiple independent executors if we can help it. Tokio is awesome and I love the project, it’s just not in our particular niche :) |
I see, so it would be easier to port this executor to other platforms, than to replace Zed's executor with Tokio? |
Exactly! |
Flatpak is good for something you want on multiple linux distros with least amount of effort. However remember that flatpak has some security systems in place, so for example reading header files from Having a tarball that distro packages can just make installable (or people can just drop it in Look and feel wise, i hope you go for a solution that works on most platforms: KDE Plasma uses QT, GNOME uses GTK and so on. GTK is likely the most flexible across multiple desktop environments (or bare WM's), because Plasma can "modify" GTK themes to fit in (albeit it's never really perfect fit). Decorations, and well everything-else wise: Just use Edit: To add, avoid targeting X11. It is on it's way out of many desktop environments. Wayland is the preferred target. |
I made three pull requests to get the ball rolling. The next step is to implement a Wgpu or Vulkano backend. I have seen the Windows implementation here, but not sure if it is sustainable to duplicate the work for each operating system instead of using a cross-platform abstraction. Originally posted by @aminya in https://github.com/zed-industries/zed/issues/6868#issuecomment-1913485159 |
This comment was marked as off-topic.
This comment was marked as off-topic.
Both can be done. It's not unusual for projects based in rust to provide static builds and many folks who come to the github project will not care so long as they can download it. On the same note, I've seen more than a few projects keep a table of known distro builds that others contribute, plus it's not unlikely to see distros pick up a popular editor. And lastly - flatpak is certainly another option (and distribute through flathub.org). Between static builds plus flatpak it pretty much covers all bases. |
@aminya
I've been working on the Blade port of GPUI in here - https://github.com/kvark/zed/tree/blade. It should be able to replace the existing Metal backend of GPUI once we see promise on Linux/Windows. |
@mikayla-maki Could you elaborate on your criteria for evaluating a runtime? I think the approach should be to write cross-platform code with maximum maintainability rather than reinventing all the wheels. That would just delay shipping features, and it would make it harder to maintain and develop later. In the open-source community, it is important to work together and reuse where possible |
@mikayla-maki, as far as I see, live kit only provides client side sdk for rust and not the server side one. Is the plan to write the server side SDK ourselves? |
The server (see our |
snap would be fine too, since it is better for accessing the terminal (out of the box, without any configuration) than flatpak. |
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
wgpu requires some CPU overhead to provide features we don’t need. If we choose to switch off of blade, it’ll be to wgpu-hal or Vulkan directly. These kinds of long term technical commitments are not up for debate but we appreciate folks trying to help out :) |
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
please stop spamming this issue, people (like me) are subscribed to this issue and get notifications on every comment. |
Regarding packaging, if a Fedora package is desired I can help produce or coordinate this as a member of Fedora packaging. Please do contact me if you'd like help with that. |
Wanted to note progress on input handling (only on x11 so far) is being made with #7811 |
This comment was marked as off-topic.
This comment was marked as off-topic.
@teohhanhui On the contrary: that that PR is written by someone from the community rather than Zed staff, so I'd say the community's input is being very much put to good use. (Although I personally do agree on Wayland being the more interesting target. Alas I don't currently have much time to help advance that implementation so I'll just have to wait for someone else to do so.) If you have objections to the approach taken in some PR, voicing them in the comments of said PR would seem more useful than here. This is a progress tracking issue after all, not an RFC. |
file dialogs: #7852 |
Is there any reason most of the discussion seems to be about using gtk as a toolkit instead of QT? Additionally, I don't think it makes sense to do client-side decorations just because one DE (gnome), says they like them. For most other DEs, like KDE Plasma and xfce, this is not the norm. At the very least If one does add support for some sort of fancy client side decorations, It should be an option in my opinion. |
I thought Xfce switched to CSD as well? https://www.omgubuntu.co.uk/2020/01/xfce-4-16-client-side-decoration |
But what, when that one DE is used by most distros? |
This discussion seems a bit pointless, considering you have to implement client side decorations for gnome anyway. You can then make this configurable, for example how vscode gives you the option between |
Not to mention that Zed already chooses to unconditionally do CSD on macOS, as a style choice. For GPUI in general it's a more open-ended question, but I think that warrants opening a separate issue just for sorting that part out. |
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
Regarding fsevents becoming cross platform, for linux there are inotify bindings for rust (https://docs.rs/inotify/latest/inotify/), however there seems to be a bit of wrangling needed to get this to work with the current framework eg the file flags coming directly from ffi: is this something that you'd prefer to have done in-house at zed due to how opinionated this may be? |
This comment was marked as off-topic.
This comment was marked as off-topic.
I think we've got enough off-topic comments at this point, locking the entire conversation to avoid spamming peoples' emails. Consider opening a PR with related changes or using Zed Discord as a platform for discussions. |
Small update: the web site is being transitioned gradually towards multiple platforms: https://zed.dev/download and seems that Linux build is quite usable at this point, so we hope to have "alpha" Linux builds will soon be published regularly. |
This is Zed's official roadmap and progress tracker for porting Zed to Linux.
Contributor Guide
There's a lot of surface area to cover and we would love contributions for anything from fixing a small
todo(linux)
, to adding a large feature. That said, it'd probably be good to check in with us or our community in the #linux-port channel of our official Discord. Once you have a project underway, please open a draft PR with a description and small checklist of what you expect should be done, like so, so we can follow along, make suggestions, etc. If you have code that is stubbed out or out of scope, please mark it with a comment containingtodo(linux)
, so we can search for it later.To setup your machine to build and run Zed, run or reference the script in
script/linux
.TODO
The text was updated successfully, but these errors were encountered: