Skip to content

Conversation

@retrozinndev
Copy link
Owner

@retrozinndev retrozinndev commented Jul 2, 2025

This PR merges a full-rewrite that migrates colorshell to GTK4 and the new AGS v3, containing some new features and improvements.
It's all done, I'm just waiting for AGS v3 to be an actual tagged-release in the repository, so I can start distributing as a stable build, together with the release of the new AGS version.

You can already use this version if you want to, it's working completely fine. But don't forget to be using the aylurs-gtk-shell-git package instead of the common one!

@retrozinndev retrozinndev linked an issue Jul 2, 2025 that may be closed by this pull request
@retrozinndev
Copy link
Owner Author

retrozinndev commented Jul 8, 2025

The shell has already been fully migrated to AGS v3 and GTK4, but I'm getting some errors with the new <With> and <For> components from AGS v3, so expect a little bit of delay.

I'm really sorry.

@retrozinndev
Copy link
Owner Author

My graphics card died 😭
The development will take longer than expected 😔

I'm sorry again.

@NotMephisto
Copy link
Contributor

My graphics card died 😭 The development will take longer than expected 😔

That's sucks :c

I'm sorry again.

This is unfortunate, but there is no update for me regarding the package on Fedora yet. Therefore, it will be some time before I encounter a new syntax. Meanwhile, I am working on an algorithm that will allow me to extract colors from an image without the need for libraries or binaries such as pywal or matugen. This will provide more flexibility in using the color functionality in the interface, similar to what is available in Android 12 and later versions. For example, the player can now be painted in the color of the cover, and the source color is obtained using color quantization.

@retrozinndev
Copy link
Owner Author

That's sucks :c

Yeah 😭
The repo will likely be inactive for two or more weeks, until I get a new GPU 😔

This is unfortunate, but there is no update for me regarding the package on Fedora yet. Therefore, it will be some time before I encounter a new syntax.

Good! The thing is that it's not a tagged release on AGS yet, so the only people affected are the ones who are using the git build(main branch).

Meanwhile, I am working on an algorithm that will allow me to extract colors from an image without the need for libraries or binaries such as pywal or matugen.

Wow! This is amazing 🤩

This will provide more flexibility in using the color functionality in the interface, similar to what is available in Android 12 and later versions. For example, the player can now be painted in the color of the cover, and the source color is obtained using color quantization.

Yay!! Loving it already!
Thanks for putting so much effort on making colorshell better! I'm really thankful 😊

@retrozinndev
Copy link
Owner Author

I'm back!! Just got a new graphics card 🤩

@NotMephisto
Copy link
Contributor

I'm back!! Just got a new graphics card 🤩

That's great!

it can be disabled within the colorshell's configuration file, under the `misc` section: misc:play_bell_on_volume_change: (true|false)
@NotMephisto
Copy link
Contributor

NotMephisto commented Jul 19, 2025

This is unfortunate, but there is no update for me regarding the package on Fedora yet. Therefore, it will be some time before I encounter a new syntax. Meanwhile, I am working on an algorithm that will allow me to extract colors from an image without the need for libraries or binaries such as pywal or matugen. This will provide more flexibility in using the color functionality in the interface, similar to what is available in Android 12 and later versions. For example, the player can now be painted in the color of the cover, and the source color is obtained using color quantization.

I have created a basic function to extract colors from an image. I decided to use Material-Color-Utilities for this task due to its extensive features and ease of use.
Initially, I attempted to write my own algorithm, but I was not satisfied with the results, so I opted for a pre-built solution. Why reinvent the wheel?
I am eagerly awaiting your successful transfer of the code to ags3.
I have already created a preliminary build in my fork of Kikuri. Feel free to experiment with it.
However, I have been contemplating how to implement the use of generated colors from the image in ags. I have come up with two approaches:

  • Rewrite the scss file with the colors and then recompile it.
  • Use the resulting colors directly in the code by utilizing the css=/$= syntax and assigning each element a color.

In the future, it will be possible to add a function to blend colors or adjust them.

…`, fix `omitObjectKeys()` changing the provided object instead of creating a new one
@retrozinndev
Copy link
Owner Author

retrozinndev commented Jul 19, 2025

I have created a basic function to extract colors from an image. I decided to use Material-Color-Utilities for this task due to its extensive features and ease of use.

Cool!! The Material palette is really amazing.

Why reinvent the wheel?

Makes sense!

I am eagerly awaiting your successful transfer of the code to ags3

I just got PopupWindow working alright, now it only needs some adjustments.
The migration will be likely finished under 4 days or less.

I have already created a preliminary build in my fork of Kikuri. Feel free to experiment with it.

That's nice!! I will take a look when I have time!

However, I have been contemplating how to implement the use of generated colors from the image in ags. I have come up with two approaches:

  • Rewrite the scss file with the colors and then recompile it.

  • Use the resulting colors directly in the code by utilizing the css=/$= syntax and assigning each element a color.

In the future, it will be possible to add a function to blend colors or adjust them.

Hmm, rewriting the SCSS and compiling it again seems to be the more convenient way of doing this. Otherwise, we would need to rewrite the whole stylesheet for every single widget, which is not a good way of doing this.

Why not create the colors stylesheet outside of the XDG_CONFIG_DIR/ags(the colorshell source path) and putting it in a separate directory from source? e.g.: since it's a temporary file from the shell's current state(it'll be created again if the user changes wallpaper), put the stylesheet with the colors inside XDG_STATE_HOME/colorshell/colors.scss. Then we compile it with the shell's own styles to make an output style.css that's applied to the shell.


Also, I was thinking of changing how colorshell is installed, by making it bundled in a single file, instead of copying the whole source to the ags dir.
Maybe also giving the user two options in the installation script: to install the bin(tagged release) or git(source, which is the current one) would be better.

Do you think this is great?

@NotMephisto
Copy link
Contributor

Hmm, rewriting the SCSS and compiling it again seems to be the more convenient way of doing this. Otherwise, we would need to rewrite the whole stylesheet for every single widget, which is not a good way of doing this.

Why not create the colors stylesheet outside of the XDG_CONFIG_DIR/ags(the colorshell source path) and putting it in a separate directory from source? e.g.: since it's a temporary file from the shell's current state(it'll be created again if the user changes wallpaper), put the stylesheet with the colors inside XDG_STATE_HOME/coloshell/colors.scss. Then we compile it with the shell's own styles to make an output style.css that's applied to the shell.

I was planning to make the ecosystem that I made with Matugen the same as here, so that all applications would also be repainted to match the color of the wallpaper. Therefore, you will most likely need to create a separate directory for templates (adw-gtk, steam, hyprland, etc.). If these are temporary files, it is better to throw them into the .cache directory, and the main colors.scss is better closer to the colorshell directory. An example of how to use a cache file

Then you can add a window with settings to change the color palette and other settings. An example from the ags2-shell repository from TheWolfStreet.

Also, I was thinking of changing how colorshell is installed, by making it bundled in a single file, instead of copying the whole source to the ags dir. Maybe also giving the user two options in the installation script: to install the bin(tagged release) or git(source, which is the current one) would be better.

Do you think this is great?

The more choices there are, the better for everyone. I think so :)

support for default bluetooth adapter, notification popup position in configuration, code improvements
plus, better code for bluetooth device pairing and connecting
`generalConfig` and `userData` are now stored under src/config.ts
- save night light filter data in `userData`
- better click detection in control center tiles
- continue development of the native polkit agent
- start night light module on shell init, drop hyprsunset scripts
use `startedAtSeconds`(the base seconds) instead of `seconds`(the second count that resets when it hits 60)
…ce secureBinding

secureBinding is used to bind to an object's property, just like in createBinding, but with the possibility of adding a default value, for when errors occur, it returns that value
the bluetooth module was trying to connect to the bluetooth service before it was ready
also started developing the universal compositor implementation again
the connect method doesn't exist in the dummy player, so errors were happening
@retrozinndev retrozinndev merged commit 9d1e91f into ryo Oct 23, 2025
@retrozinndev retrozinndev deleted the gtk4-ags3 branch October 23, 2025 10:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Errors in new AGS v3 (git)

3 participants