Skip to content

retrozinndev/colorshell

Repository files navigation

colorshell

Note

My personal dotfiles are now on retrozinndev/Hyprland-Dots

This is the repository for the colorshell desktop shell, made for Hyprland with TypeScript, GTK4, AGS, Gnim, and some of the Astal libraries.

It really took me a lot of time to make this, so please star the repo if you like it! ⭐

🌄 Screenshots

desktop Runner Control Center & Center Window Kitty

more screenshots on repo/shots

🎨 Colors

All the shell colors are dynamically generated from your wallpaper!

This is possible by using pywal16, a fork of the archived pywal project. It's a cli tool to generate color schemes from an image.

🖼️ Wallpapers

These are not included in the shell anymore, because the repository was getting too big in size. So you'll have to add it in your own.

You can add more wallpapers either by adding your custom images to ~/wallpapers or by defining WALLPAPERS in your hypr/user/environment, pointing to the custom location.

Also, you can select any of the images inside ~/wallpapers by pressing SUPER + W or by accessing the Control Center and clicking in the image icon on top.

✨ Features

  • Pretty Top-Bar
    • Apps(basically the "start menu", opens the full-screen app launcher)
    • Workspaces indicator
    • Focused Client(window) information(title, class and icon)
    • Clock(with date)
    • Media
      • Change current player by scrolling on top of the widget or by opening the Center Window and scrolling the player
      • Only available when there's media playing
    • Tray(Applications running in the background)
    • Status (volume information, bluetooth, network and notification status)
  • Control Center
    • Sliders
      • Speaker volume
      • Microphone sensitivity
      • Brightness amount
    • Pages(the thing that shows up when you click the arrow on a tile)
      • Bluetooth devices
      • Network devices
      • Night Light controls
      • Brightness options
    • Tiles
      • Screen Recording
      • Bluetooth
      • Night Light
      • Network(wifi needs work, i don't have wifi in my machine)
      • Don't Disturb(disables notification popups)
  • Center Window(clock, calendar + media management)
  • OSD (On-screen Display)
    • Brightness(when changed)
    • Volume(when changed)
  • Notifications with support for application actions + Notification History
  • Localization(see 🌐 Internationalization for available languages)
  • Application Runner with support for plugins (anyrun-like)
    • Shell(!): Run shell commands with the user shell
    • Clipboard(>): Search through your clipboard history
    • Wallpapers(#): Search and select to change wallpaper
    • Media(:): Control playing media
    • Search(?): Search something on the internet with your default browser
  • Support for your multiple monitors
  • Dynamic support for UWSM(apps will use uwsm if current session is using it)

⌨️ Binds

You can see default bindings and usage information on the Wiki/Usage page!

🌐 Internationalization

Colorshell supports i18n! The shell automatically matches the shell language with the system's, if available.
Currently, there's support for the following languages:

  • English (English, United States), maintained by @retrozinndev
  • Português (Portuguese, Brazil), maintained by @retrozinndev
  • Русский (Russian), maintained by @NotMephisto
  • Français (French, France & Belgium), maintained by @Elgemp4

Don't see your language here? You can contribute and make translations too!
You can do so by forking this repository, translating the shell in your fork and then opening a pull request to this repository, simple as that! (I'll create a more detailed guide for that soon)

⚙️ Installation

See the Installation Guide on Wiki/Installation.

⬇️ Updating

You can run the following command to update an existing colorshell installation in your system(this won't work on Nix):

bash -c "bash <(curl -s https://raw.githubusercontent.com/retrozinndev/colorshell/refs/heads/ryo/update.sh)"

Updating on Nix

You need to update the profile that contains the flake:

nix profile upgrade

🛠️ Development

This project uses pnpm to manage packages and running scripts. To build the shell, run a development build or make a release build, you can use the project's integrated scripts.
The most complicated ones have a help flag, so you can learn from there.

Dependencies

These are development-only dependencies(by package name on AUR):

  • aylurs-gtk-shell-git

Plus, you also need the packages listed in Wiki/Dependencies!

Building

In a common build, the shell's gresource(icons and sass) will be targeted to the build output directory by default. If you want to ship it, you likely want to use the pnpm build:release command.

pnpm build -d # remove the -d flag if you don't want a development build

If you want to ship the build(or install it on your local machine), you'll likely prefer a release build: (the build:release command targets the gresource to $XDG_DATA_HOME/colorshell/resources.gresource by default)

pnpm build:release

Don't forget to install the gresource to the actual target directory! Or else it'll not find the resource file and will fail to load custom assets.
Also, the environment variables are only actually used at runtime! It's passed as a literal string in the bash variable format, then when the shell runs, it understands that it's an environment variable and replaces it with it's value.

Testing/Running the project

pnpm dev

or if you actually only want to run the current build instead of building again:

pnpm start

❗ Issues

Having issues? Please create a new Issue here, I'll be happy to help you out!

📜 License

This repo is licensed under the BSD 3-clause license, project is made and maintained by retrozinndev.

🌠 Stargazers

Star History Chart

Thanks to everyone who starred my project! 💖