Pdawg-bytes / GyroShell

A shell for Windows 11 (and maybe 10) that aims to allow for a much more customizable and streamlined shell experience. Fully written in C# WASDK.
BSD 3-Clause "New" or "Revised" License
225 stars 18 forks source link

[Feature Request] Plugin support #10

Open ItsProfessional opened 1 year ago

ItsProfessional commented 1 year ago

Is your feature request related to a problem? Please describe. At the moment, I have to either modify the source code and recompile it, or inject dlls into the shell in order to modify its behaviour.

Describe the solution you'd like A plugin system with a flexible API, for modifying the behaviour of the shell.

Describe alternatives you've considered I can hook into it, but that is a hack. Also recompiling is an option but pretty annoying, as you have to merge changes when new versions come out.

Additional context I do not expect this to be added for the moment, but I'd like for this to become a thing, at some point.

Pdawg-bytes commented 1 year ago

Okay, thanks! What type of plugins would you like (more specifically?) What types of behavior would you like the modify? Having plugins would need a ton of refactoring, so I need a more scoped list of changes to make. Widespread support for modifying any component would be really hard to do (since there's a lot in the backend that you don't really see in the frontend). I will create a task list to keep up with the features after this question is answered. Good idea though, thanks again!

ItsProfessional commented 1 year ago

I would just like some of the features of the pre-existing shell/taskbar tweaking programs that are made for the default shell (by hooking) to be rewritten as plugins for use with gyroshell. You can look up a list on your preferred search engine yourself, but some include: startallback, translucenttb, 7+ taskbar tweaker, taskbarx, roundedtb, tclock, etc.

Also, the plugin system should be designed such that plugins can be installed as simply as a drag and drop into a plugins folder, and a system restart (or maybe just a shell restart is enough). Having to recompile the program to add new plugins (made by someone on the internet, of self-made, for example) completely makes the system worthless because it does not change anything since you still have to recompile it to add new features via plugins.

Something similar is Windhawk, It has plugins that use dll injection (I'm pretty sure) to hook into the official shell (and other programs) for modifying behaviour. But the problem with it is that it hooks into the programs, however since GryoShell is community-made, it can have a plugin system, which eliminates the issue of having to hook into the shell.

Pdawg-bytes commented 1 year ago

Plugins

Pdawg-bytes commented 1 year ago

This is finally being worked on! I'm working on implementing the loader that loads the modules. Currently it's reflection based.