-
Notifications
You must be signed in to change notification settings - Fork 3.1k
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
Icon extensions #8843
Comments
We should definitely do this soon, since our initial use case for extensions is going to be adding support for custom languages. Do you want to propose a precise schema by which extensions could define file icons? |
Would it be reasonable to look for an |
I'd love to have material icons in zed :) Upvoted. |
Yeah, this seems like it'd be fine. |
@maxbrunsfeld I'm having a bit hard time with this.. any help would be appreciated! |
I would love support for seti color icons! If they were added I would switch to zed immediately! Upvoted! |
One of the top reason I'm struggling to switch to Zed! Please bring this asap 🙏 |
Everyone once in a while I'm checking if we can bring our own icons, not having colourful icons is the only reason I can't get used to Zed somehow. |
+1 for Material Icons! |
1 similar comment
+1 for Material Icons! |
+1 For icon extensions, it's painful to work with the filesystem. At this point, it's more motivating to use vim/neovim rather than Zed 🤷 |
Indeed, colored file icons is to the explorer what syntax highlighting is to the code editor. Once you're used to it, it's hard to come back to monochrome icons. Here is a side-by-side comparison between colored icons in VSCode and monochrome icons in Zed. One is clearly more visually appealing and it's easier to sort what is what. Note that I'm using an extension that also set special icons and colors to folders depending on their names. |
Is this still being worked on? I saw a couple of PR's but all of them were closed. I saw @maxdeviant saying that you are not using JSON schemas to validate extension files anymore and that the schema would be revisited. In what point exactly is this? I can work on this PR btw I just want to know what is the current vision for icon extensions |
After trying out Zed, this is one of my blockers for switching. Not having colored icons makes it tedious to find files, distinguish between file types (like PNGs vs SVGs) and get an overview of a project layout. It's not just a question of design preference, it's also a usability issue. Basically what I need is color-coding of file icons, and a better coverage of file types (like cjs and scss files). I think a built-in colored icon set variant would be fine for most people, if the developers are concerned about aesthetics. Another example: can you clearly and easily tell the difference between my utility files, and their test files? Maybe it would be good practice to have them in the same folder - but on Zed, I just couldn't tell them apart at all if I did. |
Yeah, uncolored icons can sometimes be really confusing especially with a great amount of files. |
I have a Branch working with colored Icons and error indicators for filenames, however I'm not very sure if I should make a PR with this, or put a whole extension system on top of it. Also I'm very new to Rust, so the code might not be top tier although I tried to make it as good as possible. Not quite sure how to go from here, but if anyone is interested feel free to HMU |
Please share, it would be awesome! |
Please share your work with us. 👍 |
Give me an hour or so, I'll make my fork public, one branch just with the enabled possibility to replace the existing svgs with colored ones, the other one with catpuccino icons just as POC. If this proves to be working, we could work on a solution of how to make them "installable" without having to rebuild zed. Edit: There is also a branch just called feat/colored-icons, it includes only the functionality but no icon pack, so the with zed shipped icons will just appear black. Also there is a branch called feat/colored-icons-refactor, which is pushing the icons to the limit, by refactoring the icon changes i made in the previous branches, and adding (colored!) icons to various places like: the tab panes and file finder (CMD+P), however this branch doesn't highlight diagbostic errors in files yet, overall this branch atleast is a pure playground for now (you could say that for the entire repo, its just proof of concept till I know how to proceed best). In both branches there is also an WIP commit which highlights files as red when the diagnostics detect something wrong in them, depends on the LSP how it handles that, rust scans full project for example while typescript only opened files. Feel free to test around, and maybe we can push this further with extension to make a good PR |
As the author of Material Theme for Vscode (over 7 million users), I would like to see this feature (and more theme/extension-related ones) so we can consider bringing Material Theme experience to Zed too. Of course we need API and doc to ship custom icons from our themes |
Cool to see this come a bit closer to fruition @Leftwitch! I'm assuming there should be a bigger change in how zed handles the folder and file icons under the hood, as well as a way to publish and install themes. Doesn't seen this as a top priority from the zed team ( although I'm sure extensions are high up on their lists! ) Can at least attest that this is the primary reason I'm not using zed day-to-day. Out of curiosity, how does VSCode handle this? If someone with more familiarity with the codebase could break down the tasks required I'd be interested in helping out a bit! |
VSCode icon themes are json made by a list of icon names, paths ad associations. {
"icons": {
"_file_css": "./icons/css.svg",
"_folder_node": "./icons/folder-node.svg"
}
} icon names can be extended with custom ones, so we can add for example "_file_custom" pointing to an icon. Then, in the same json, there is a list of icon associations. The final json is something like this: {
"icons": {
"_file_css": "./icons/css.svg",
"_file_custom": "./icons/custom.svg",
"_folder_node": "./icons/folder-node.svg"
},
"fileExtensions": {
"css": "_file_css"
},
"fileNames": {
"postcss.config.js": "_file_custom"
},
"folderNames": {
"node_modules": "_folder_node"
}
} |
Yeah as you said it looks like it needs deeper changes, I just went for it and started making custom file themes, however my rust is still very very early days, I'm able to get my stuff done, but not sure if it's clean Right now I need to be able to load themes outside of the bundle, Inlcuding their icons, and add some sort of selector eventually, it's still very early, but it's a good practice I guess ^^ If I have some concept to show I can ping you again, maybe to clean up my prototype and make a good pr ? Right now I'm just trying to get zed to a point where I enjoy using it, as long I feel I need to use vscode to edit zed, zed is not good enough, and one major point are surely the icons |
I know every user has their "one dealbreaker", but I just tried to make the switch, and the lack of icons was that one issue for me too |
To use chevron instead of folder icons just use
|
This comment was marked as spam.
This comment was marked as spam.
This comment was marked as spam.
This comment was marked as spam.
First of all, sorry for suggesting this here, but I didn't consider necessary to create a new issue since this topic seems to be related to some you already have in progress. I wanted to propose an idea to improve the icon system as a plugins. My proposal is that each language extension would provide a default icon and that there would be icon packs to replace these defaults. Zed would have a set of default icons that would act as a custom package, and the behavior would be as follows:
This would be an example of how an id = "cpp"
name = "C++"
version = "1.0.0"
[icons]
# custom icons by file type.
cpp = "icons/cpp.svg"
hpp = "icons/hpp.svg"
h = "icons/h.svg"
cxx = "icons/cxx.svg" The JSON file generated to optimize access to the icons could look like this: {
"h": "cpp/icons/h.svg",
"cpp": "cpp/icons/cpp.svg",
"hpp": "cpp/icons/hpp.svg",
"cxx": "cpp/icons/cxx.svg"
} In this way, the extension can manage its icons efficiently, without having to do too many unnecessary reads from the file system, improving performance. If you find this proposal useful and would like to explore it further, I would be happy to collaborate with a prototype PR to test the idea. Note This proposal aims to solve problems such as: What if I want to add a new language that does not come in the official Zed package? Will I have to wait for the Zed team to add the icon with its style? Where is the customisation? I mean I like flat icons, but someone else likes neon icons or more cartoon icons. I think this should be a bit more automatic and flexible, so my proposal goes that way. |
I'm trying Zed because it offers almost everything I need, it's minimal, yet strong. However I need icons with color it's not because it's "prettier" it's an accessibility thing that the actual monochrome style breaks me, and it's preventing me from switching to Zed strongly. Thanks to the Dev Team great job. |
Exactly the same for me. I may even say that VS Code is sometime over the top, but coloring and contrast is essential for me. Not everyone has that 20-year-old perfect eye sight, not me for sure, and trying to navigate the project panel as currently is has been a pain for me and I find myself going back to VSCode to rest my eyes. |
It looks like @Leftwitch has a working fork for this issue, and tons of people (myself included) are pretty eager to see this functionality. Wonder if @Leftwitch you can ready a PR or the Zed team could chime in on the steps towards merging that in? |
My problem is mostly that I couldn't quite figure out how to make this "universal" in terms of a new extension/plugin type, I know where to look but I didn't have the time to dig in so deep Into zeds code at least yet. |
This comment was marked as spam.
This comment was marked as spam.
This comment was marked as spam.
This comment was marked as spam.
This comment was marked as spam.
This comment was marked as spam.
This comment was marked as spam.
This comment was marked as spam.
This comment was marked as spam.
This comment was marked as spam.
I'm starting to work on a PR to make this feature merge-able. Could someone from the Zed team chime in on any existing thoughts on how this should be built out. Maybe @osiewicz or @mikayla-maki - I saw you both had recent contributions on the As requirements:
As non-requirements:
For implementation:
Let me know if that sounds right to you! |
I am still(obviously) very interested in seeing this come to the platform, it is one of the few things I feel are missing, sorry for not seeing this in my initial search for existing issues but my search was pretty centered around the word "color" so I guess that makes sense why I didn't see this |
Addition to non requirements: Icons based on theme contrast preferences, so light, dark and also a11y contrast. |
Check for existing issues
Describe the feature
This issue proposes the ability for extensions to provide custom file and folder icons in Zed.
If applicable, add mockups / screenshots to help present your vision of the feature
No response
The text was updated successfully, but these errors were encountered: