Compare commits
124 Commits
v-0.2.7
...
v1.0.0-alp
Author | SHA1 | Date | |
---|---|---|---|
|
7f05c31d3e | ||
|
bc140eefe4 | ||
|
043ff54ad0 | ||
|
e18e098571 | ||
|
ab13e83374 | ||
|
aa86808ac7 | ||
|
f31af15412 | ||
|
1585bdacf7 | ||
|
41858b3d68 | ||
|
c935fdec51 | ||
|
2eca1a605f | ||
|
3501174789 | ||
|
2becf63d9c | ||
|
6323311752 | ||
|
0c3e8817da | ||
|
baecd17698 | ||
|
877e75568c | ||
|
b353190bef | ||
|
558953cdd2 | ||
|
9e82be620c | ||
|
662a18a2d6 | ||
|
9da440ced6 | ||
|
42abad4561 | ||
|
edef76faba | ||
|
e7314059e2 | ||
|
355e12387f | ||
|
5b6c477850 | ||
|
4f4501f83b | ||
|
7000de38a1 | ||
|
8d9803f089 | ||
|
26b0d12b1b | ||
|
5b043b61c6 | ||
|
3b802c6b03 | ||
|
939386a30a | ||
|
e279ceffca | ||
|
c577226e9c | ||
|
76cccfa215 | ||
|
9082969c1c | ||
|
f3faf6d9da | ||
|
761a075ca9 | ||
|
9849cea54f | ||
|
0f516404fd | ||
|
23a48d8b81 | ||
|
03376d1003 | ||
|
5255501faf | ||
|
1897b09f23 | ||
|
eb7ed7ab2c | ||
|
831a06c672 | ||
|
f13a2b2e08 | ||
|
a40e058320 | ||
|
d6d1e951e4 | ||
|
59a26aa3cd | ||
|
dbcaeb738f | ||
|
50203b06bb | ||
|
329e522c08 | ||
|
3fc72208de | ||
|
b75165df4d | ||
|
1a5f20809a | ||
|
5c05af916a | ||
|
19d4e9cd5b | ||
|
d5f542f484 | ||
|
0997e92071 | ||
|
d11e6465bd | ||
|
6c350cc3eb | ||
|
7c470654a7 | ||
|
50e9e0120b | ||
|
f2b5321c23 | ||
|
ade94e3bd6 | ||
|
a9cbb4cf93 | ||
|
9e75eac1e5 | ||
|
01ea28f3a3 | ||
|
538067923b | ||
|
a53263bad2 | ||
|
45df79e72c | ||
|
ed3abe04f8 | ||
|
e907775723 | ||
|
c79e453e62 | ||
|
68167565f7 | ||
|
7e40f9c9ab | ||
|
41d54ae759 | ||
|
382e960588 | ||
|
8702e3c5ae | ||
|
8a1f11a408 | ||
|
0b7ee02c92 | ||
|
19727f8a6c | ||
|
7e06524be9 | ||
|
d8b4681809 | ||
|
f3a1ad61f4 | ||
|
7806c32e67 | ||
|
81535cae4f | ||
|
9ec907ae78 | ||
|
1d0546569b | ||
|
6267569781 | ||
|
44aec3060b | ||
|
2045263fdb | ||
|
35ae75716d | ||
|
276a29ece9 | ||
|
bdf5c33ef4 | ||
|
20291d1423 | ||
|
2f7fe319f3 | ||
|
5de6830cdb | ||
|
fd36189601 | ||
|
f523cb1881 | ||
|
35597b98d7 | ||
|
17aaa5b36c | ||
|
34ac795d4e | ||
|
498d5ec118 | ||
|
3bd1013faf | ||
|
b0e49b42a6 | ||
|
ddf996b0a4 | ||
|
daec77ea08 | ||
|
a72fecbf21 | ||
|
1133a6742a | ||
|
7f9b3c9c74 | ||
|
8d796e1a9e | ||
|
60fad0b58e | ||
|
445ccb76b4 | ||
|
64fa9c9241 | ||
|
34a3225259 | ||
|
6c08cce899 | ||
|
386f2ea47e | ||
|
96b24a19dc | ||
|
ac513b975a | ||
|
fc336313a8 |
@@ -4,17 +4,31 @@
|
||||
|
||||
root = true
|
||||
|
||||
|
||||
[*]
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
indent_size = 2
|
||||
indent_style = space
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
indent_style = tabs
|
||||
indent_size = 4
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.txt]
|
||||
# go
|
||||
[*.go]
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
|
||||
[*.{diff,md}]
|
||||
# python
|
||||
[*.{ini,py,py.tpl,rst}]
|
||||
indent_size = 4
|
||||
|
||||
# rust
|
||||
[*.rs]
|
||||
indent_size = 4
|
||||
|
||||
# documentation, utils
|
||||
[*.{md,mdx,diff}]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
# windows shell scripts
|
||||
[*.{cmd,bat,ps1}]
|
||||
end_of_line = crlf
|
||||
|
53
.github/ISSUE_TEMPLATE/bug.yml
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
name: Bug Report
|
||||
description: Report your bugs with the theme here!
|
||||
labels: [bug]
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Is there an existing issue outlining your problem?
|
||||
description: Please search to see if an issue already exists for your problem.
|
||||
options:
|
||||
- label: I have searched the existing issues and they do not solve my problem.
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe the bug.
|
||||
description: Also tell us, what do you expect to see?
|
||||
placeholder: The tabs are darker than they should be...
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Attach screenshots.
|
||||
description: If applicable, attach screenshots which clearly highlight the bug.
|
||||
- type: dropdown
|
||||
id: installation_method
|
||||
attributes:
|
||||
label: How did you install the theme?
|
||||
options:
|
||||
- GitHub Release
|
||||
- AUR Package
|
||||
- catppuccin/nix
|
||||
- Nixpkgs
|
||||
- Flatpak
|
||||
- From source (Python script)
|
||||
validations:
|
||||
required: true
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: If using GTK4, have you symlinked the "gtk-4.0" folder?
|
||||
description: "The instructions for symlinking are described in the [README](https://github.com/catppuccin/gtk/tree/877e75568c9bb0d57c7ddda85b246fa17af45e57?tab=readme-ov-file#for-gtk-4-users)."
|
||||
options:
|
||||
- label: I have symlinked the `gtk-4.0` folder.
|
||||
required: false
|
||||
- type: input
|
||||
attributes:
|
||||
label: What GNOME version are you seeing the bug on?
|
||||
description: "Follow [GNOME's instructions](https://help.gnome.org/users/gnome-help/stable/gnome-version.html.en) to find out what version you are running."
|
||||
placeholder: "GNOME Version 42.9"
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Any additional comments?
|
||||
description: Add any information that hasn't been covered in the previous sections!
|
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Community Discord
|
||||
url: https://discord.com/servers/catppuccin-907385605422448742
|
||||
about: Chat to other community members!
|
18
.github/ISSUE_TEMPLATE/enhancement.yml
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
name: Enhancement Issue
|
||||
description: Request improvements to the theme here!
|
||||
labels: [enhancement]
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Is there an existing issue outlining your improvement?
|
||||
description: Please search to see if your improvement has already been raised as an issue.
|
||||
options:
|
||||
- label: I have searched the existing issues and my improvement has not been raised yet.
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: What would you like to see added and/or changed?
|
||||
description: Make sure to mention why you think this is an improvement!
|
||||
placeholder: I'd like to have an extra configuration option for...
|
||||
validations:
|
||||
required: true
|
18
.github/ISSUE_TEMPLATE/meta.yml
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
name: Meta Issue
|
||||
description: Raise any issue regarding the repository here!
|
||||
labels: [meta]
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Is there an existing issue outlining your problem?
|
||||
description: Please search to see if an issue already exists for your problem.
|
||||
options:
|
||||
- label: I have searched the existing issues and they do not solve my problem.
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe the issue.
|
||||
description: Bugs should be raised under a [Bug Report](https://github.com/catppuccin/gtk/issues/new?assignees=&labels=bug&template=bug.yml).
|
||||
placeholder: The README is missing crucial information such as...
|
||||
validations:
|
||||
required: true
|
32
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
name: "Release"
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "v*"
|
||||
jobs:
|
||||
release:
|
||||
strategy:
|
||||
matrix:
|
||||
flavor: [mocha, macchiato, latte, frappe]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.11"
|
||||
cache: "pip"
|
||||
- name: Install dependencies
|
||||
run: pip install -r requirements.txt
|
||||
- name: Install colloid specific dependencies
|
||||
run: sudo apt update && sudo apt install -y sassc inkscape optipng
|
||||
- name: Generate themes
|
||||
run: python ./build.py ${{ matrix.flavor }} -a all --zip -d $PWD/releases
|
||||
- name: Add zips to release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
draft: true
|
||||
files: ./releases/*.zip
|
12
.gitignore
vendored
@@ -1,2 +1,14 @@
|
||||
pkgs/
|
||||
*-temp.scss
|
||||
__pycache__
|
||||
venv/
|
||||
.venv
|
||||
bin/
|
||||
lib*/
|
||||
*.cfg
|
||||
.direnv
|
||||
build/
|
||||
|
||||
# Releases folder
|
||||
releases
|
||||
chrome
|
||||
|
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
[submodule "colloid"]
|
||||
path = colloid
|
||||
url = https://github.com/vinceliuice/Colloid-gtk-theme.git
|
205
README.md
@@ -12,7 +12,7 @@
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img src="https://raw.githubusercontent.com/catppuccin/gtk/main/assets/demo2.png"/>
|
||||
<img src="assets/res.webp"/>
|
||||
</p>
|
||||
|
||||
# About
|
||||
@@ -23,27 +23,212 @@ This GTK theme is based on the [Colloid](https://github.com/vinceliuice/Colloid-
|
||||
|
||||
### Requirements
|
||||
|
||||
- GTK `>=3.20`
|
||||
- `gnome-themes-extra` (or `gnome-themes-standard`)
|
||||
- Murrine engine
|
||||
- GTK `>=3.20`
|
||||
- `gnome-themes-extra` (or `gnome-themes-standard`)
|
||||
|
||||
### Installation
|
||||
|
||||
1. Download and extract the **Catppuccin-Flavour.zip** file. or **Catppuccin-Flavour-Color.zip** file.
|
||||
[From Release](https://github.com/sadrach-cl/catppuccin-gtk/releases/) or you can install the theme from the [AUR](https://aur.archlinux.org/packages/catppuccin-gtk-theme)
|
||||
1. Download and extract the theme zip from [releases](https://github.com/catppuccin/gtk/releases/).
|
||||
2. Move the theme folder to **".themes"** in your home directory. **(~/.themes)** (Skip this step if you are using the AUR package)
|
||||
3. Select **"Catppuccin-Flavour** or **Catppuccin-Flavour-Color"** via your desktop specific tweaks application (**gnome-tweaks** on Gnome3+).
|
||||
3. Select the downloaded theme via your desktop specific tweaks application (**gnome-tweaks** on Gnome 3+).
|
||||
|
||||
### For Arch Linux users
|
||||
|
||||
We have 4 AUR packages for all the 4 flavours of the theme:
|
||||
|
||||
- [Latte](https://aur.archlinux.org/packages/catppuccin-gtk-theme-latte)
|
||||
- [Frappe](https://aur.archlinux.org/packages/catppuccin-gtk-theme-frappe)
|
||||
- [Macchiato](https://aur.archlinux.org/packages/catppuccin-gtk-theme-macchiato)
|
||||
- [Mocha](https://aur.archlinux.org/packages/catppuccin-gtk-theme-mocha)
|
||||
|
||||
With your favourite AUR helper, install them:
|
||||
|
||||
```bash
|
||||
yay -S catppuccin-gtk-theme-mocha catppuccin-gtk-theme-macchiato catppuccin-gtk-theme-frappe catppuccin-gtk-theme-latte
|
||||
```
|
||||
|
||||
### For Nix users
|
||||
|
||||
We suggest you use [catppuccin/nix](https://github.com/catppuccin/nix).
|
||||
Alternatively, you can use [catppuccin-gtk](https://github.com/NixOS/nixpkgs/blob/master/pkgs/data/themes/catppuccin-gtk/default.nix) from nixpkgs.
|
||||
|
||||
```nix
|
||||
{inputs, ...}: {
|
||||
imports = [inputs.catppuccin.homeManagerModules.catppuccin];
|
||||
|
||||
gtk = {
|
||||
enable = true;
|
||||
catppuccin = {
|
||||
enable = true;
|
||||
flavor = "mocha";
|
||||
accent = "pink";
|
||||
size = "standard";
|
||||
tweaks = [ "normal" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
> [!TIP]
|
||||
> For further information on the options available, see the [full documentation](https://github.com/catppuccin/nix/blob/main/docs/home-manager-options.md#gtkcatppuccinenable).
|
||||
|
||||
### For GTK 4 users
|
||||
|
||||
To theme GTK 4 applications you have to manually symlink the `~/.config/gtk-4.0/` to the themes folder. Use the following commands
|
||||
|
||||
```bash
|
||||
mkdir -p "${HOME}/.config/gtk-4.0"
|
||||
ln -sf "${THEME_DIR}/gtk-4.0/assets" "${HOME}/.config/gtk-4.0/assets"
|
||||
ln -sf "${THEME_DIR}/gtk-4.0/gtk.css" "${HOME}/.config/gtk-4.0/gtk.css"
|
||||
ln -sf "${THEME_DIR}/gtk-4.0/gtk-dark.css" "${HOME}/.config/gtk-4.0/gtk-dark.css"
|
||||
```
|
||||
|
||||
### For Flatpak users
|
||||
|
||||
1. To give your Flatpaks access to your themes folder run:
|
||||
|
||||
```bash
|
||||
sudo flatpak override --filesystem=$HOME/.themes
|
||||
```
|
||||
|
||||
2. To set the theme for all Flatpaks, replace `##theme##` with the name of the theme you want to use and run this command:
|
||||
|
||||
```bash
|
||||
sudo flatpak override --env=GTK_THEME=##theme##
|
||||
```
|
||||
|
||||
3. For a more in depth tutorial see Hamza Algohary's tutorial on [It's FOSS](https://itsfoss.com/flatpak-app-apply-theme/)
|
||||
|
||||
### Handling GTK theme installation from window manager
|
||||
|
||||
1. Install unzip and curl.
|
||||
2. Go to your window manager config file.
|
||||
3. Add an entrance to the config file to be executed when your window manager is loaded.
|
||||
- i3/sway example:
|
||||
```
|
||||
# catppuccin
|
||||
set $ctp-version v0.6.1
|
||||
exec_always if [ ! -e ~/.themes/Catppuccin-Frappe-Standard-Lavender-dark ]; then \
|
||||
mkdir -p ~/.themes \
|
||||
&& curl -L https://github.com/catppuccin/gtk/releases/download/$ctp-version/Catppuccin-Frappe-Standard-Lavender-dark.zip -o ~/.themes/catppuccin.zip \
|
||||
&& unzip ~/.themes/catppuccin.zip -d ~/.themes/ \
|
||||
&& rm -rf ~/.themes/catppuccin.zip; fi
|
||||
```
|
||||
> Note: The previous example execute that script every time i3/sway is reloaded.
|
||||
4. Set the GTK_THEME environment variable:
|
||||
|
||||
```sh
|
||||
export GTK_THEME='Catppuccin-Frappe-Standard-Lavender-dark:dark'
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> in order to update the theme's version, just change the variable `$ctp-version`.
|
||||
|
||||
### GDM Theme
|
||||
|
||||
> [!WARNING]
|
||||
> Applying a custom theme to GDM is not recommended as it is not themeable, however you can do it through certain *hacks*.
|
||||
|
||||
To apply the theme to GDM, A new `gnome-shell-theme.gresource.xml` needs to be complied.
|
||||
To achieve this, you can run the following:
|
||||
|
||||
```bash
|
||||
# Backup the current gresource file.
|
||||
sudo cp -av /usr/share/gnome-shell/gnome-shell-theme.gresource{,~}
|
||||
sudo glib-compile-resources --target="/usr/share/gnome-shell/gnome-shell-theme.gresource" --sourcedir="$THEME_DIR" "$THEME_DIR/gnome-shell-theme.gresource.xml"
|
||||
```
|
||||
|
||||
Make sure to replace `$THEME_DIR` to where the theme was extracted accordingly.
|
||||
|
||||
- For nix users, it'll be the nix store path of the package.
|
||||
- For AUR users, it'll be in `~/.themes`
|
||||
- Otherwise, it'll be wherever you extracted the theme.
|
||||
|
||||
### Using the script
|
||||
|
||||
**Note**: Ensure that you have at least Python version 3.10 installed
|
||||
|
||||
Set up the installer using
|
||||
|
||||
```bash
|
||||
git clone --recurse-submodules git@github.com:catppuccin/gtk.git
|
||||
cd gtk
|
||||
virtualenv -p python3 venv # to be created only once and only if you need a virtual env
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
To check out the install script, run
|
||||
|
||||
```bash
|
||||
python install.py --help
|
||||
```
|
||||
|
||||
> Tip: `python install.py --help` allows the following options:
|
||||
|
||||
```
|
||||
Compulsory field Specify color variant(s) [mocha|frappe|macchiato|latte|all]
|
||||
-d, --dest DIR Specify destination directory (Default: ~/.themes)
|
||||
-n, --name NAME Specify theme name (Default: Colloid)
|
||||
-a, --accent VARIANT... Specify theme color variant(s) [rosewater|flamingo|pink|mauve|red|maroon|peach|yellow|green|teal|sky|
|
||||
sapphire|blue|lavender|all] (Default: blue)
|
||||
-s, --size VARIANT... Specify size variant [standard|compact] (Default: standard variant)
|
||||
-l, --link Link installed gtk-4.0 theme to config folder for all libadwaita app use this theme
|
||||
--zip Zips up the finally produced themes.
|
||||
--tweaks Specify versions for tweaks [black|rimless|normal|float]
|
||||
1. black: Blackness color version
|
||||
2. rimless: Remove the 1px border about windows and menus
|
||||
3. normal: Normal windows button style (titlebuttons: max/min/close)
|
||||
4. float: Floating gnome-shell panel style
|
||||
-h, --help Show help
|
||||
```
|
||||
|
||||
You can install any theme like the following example
|
||||
|
||||
```bash
|
||||
python install.py mocha -a sky --tweaks rimless -d ~/.themes
|
||||
|
||||
```
|
||||
|
||||
You can build all possible variations of the theme possible using the following command and it will install it to releases folder
|
||||
|
||||
```bash
|
||||
python install.py all -a all
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
** WIP **
|
||||
You need to install the following packages to build the theme. Check with your distribution for the package names in the repository
|
||||
|
||||
- `sassc`
|
||||
- `inkscape`
|
||||
- `optipng`
|
||||
|
||||
A few important notes to keep in mind
|
||||
|
||||
- `recolor.py` handles all changes that needs to be done to colloid to ensure it generated catppuccin colors. If vinceliuice changes anything in his theme in future, that is where you must change
|
||||
- `var.py` includes all different variables that you can tinker around as per your personal requirements.
|
||||
- `create_theme.py` consists of a wrapper that will recolor the colloid theme, install it as per the args provided and rename it accordingly.
|
||||
|
||||
## 💝 Thanks to
|
||||
|
||||
- [sadrach-cl](https://github.com/sadrach-cl)
|
||||
**Current maintainers**
|
||||
|
||||
- [npv12](https://github.com/npv12)
|
||||
- [ghostx31](https://github.com/ghostx31)
|
||||
- [Syndrizzle](https://github.com/Syndrizzle)
|
||||
|
||||
**Contributions**
|
||||
|
||||
- [rubyowo](https://github.com/rubyowo) - CI and docs
|
||||
- [braheezy](https://github.com/braheezy) - Instructions for the GDM theme.
|
||||
|
||||
**Previous maintainer(s)**
|
||||
|
||||
- [sadrach-cl](https://github.com/sadrach-cl)
|
||||
|
||||
|
||||
|
||||
<p align="center"><img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/footers/gray0_ctp_on_line.svg?sanitize=true" /></p>
|
||||
<p align="center">Copyright © 2021-present <a href="https://github.com/catppuccin" target="_blank">Catppuccin Org</a>
|
||||
<p align="center"><a href="https://github.com/catppuccin/catppuccin/blob/main/LICENSE"><img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&logoColor=d9e0ee&colorA=363a4f&colorB=b7bdf8"/></a></p>
|
||||
<p align="center"><a href="https://github.com/catppuccin/gtk/blob/main/LICENSE"><img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=GPLv3&logoColor=d9e0ee&colorA=363a4f&colorB=b7bdf8"/></a></p>
|
||||
|
4761
assets/demo.svg
Before Width: | Height: | Size: 5.1 MiB |
BIN
assets/demo2.png
Before Width: | Height: | Size: 49 KiB |
BIN
assets/res.webp
Normal file
After Width: | Height: | Size: 108 KiB |
BIN
assets/ss.png
Before Width: | Height: | Size: 922 KiB |
687
build.py
Executable file
@@ -0,0 +1,687 @@
|
||||
#! /usr/bin/env python3
|
||||
import os, re, shutil, subprocess, argparse, glob, logging, zipfile
|
||||
|
||||
from dataclasses import dataclass
|
||||
from typing import Literal, List
|
||||
|
||||
from catppuccin import PALETTE
|
||||
from catppuccin.models import Flavor, Color
|
||||
|
||||
THIS_DIR = os.path.dirname(os.path.realpath(__file__))
|
||||
SRC_DIR = f"{THIS_DIR}/colloid/src"
|
||||
SASSC_OPT = ["-M", "-t", "expanded"]
|
||||
|
||||
logger = logging.getLogger("catppuccin-gtk")
|
||||
logger.setLevel(logging.DEBUG)
|
||||
ch = logging.StreamHandler()
|
||||
formatter = logging.Formatter("[%(name)s] [%(levelname)s] - %(message)s")
|
||||
ch.setFormatter(formatter)
|
||||
logger.addHandler(ch)
|
||||
|
||||
|
||||
@dataclass
|
||||
class Tweaks:
|
||||
tweaks: List[str]
|
||||
|
||||
def has(self, tweak: str) -> bool:
|
||||
return tweak in self.tweaks
|
||||
|
||||
def id(self) -> str:
|
||||
return ",".join(self.tweaks)
|
||||
|
||||
|
||||
@dataclass
|
||||
class BuildContext:
|
||||
build_root: str
|
||||
output_format: Literal["zip"] | Literal["dir"]
|
||||
theme_name: str
|
||||
flavor: Flavor
|
||||
accent: Color
|
||||
size: Literal["standard"] | Literal["compact"]
|
||||
tweaks: Tweaks
|
||||
|
||||
def output_dir(self) -> str:
|
||||
return f"{self.build_root}/{self.build_id()}"
|
||||
|
||||
def build_id(self) -> str:
|
||||
return f"{self.theme_name}-{self.flavor.identifier}-{self.accent.identifier}-{self.size}+{self.tweaks.id() or 'default'}"
|
||||
|
||||
|
||||
def build(ctx: BuildContext):
|
||||
dark_suffix = ""
|
||||
light_suffix = ""
|
||||
window_suffix = ""
|
||||
scheme_suffix = "-Catppuccin"
|
||||
|
||||
if ctx.tweaks.has("normal"):
|
||||
window_suffix = "-Normal"
|
||||
|
||||
if ctx.flavor == "latte":
|
||||
light_suffix = "-Light"
|
||||
suffix = "-Light"
|
||||
|
||||
if ctx.flavor != "":
|
||||
dark_suffix = "-Dark"
|
||||
suffix = "-Dark"
|
||||
|
||||
output_dir = ctx.output_dir()
|
||||
# [[ -d "${THEME_DIR}" ]] && rm -rf "${THEME_DIR}"
|
||||
logger.info(f"Building into '{output_dir}'...")
|
||||
|
||||
apply_tweaks(ctx)
|
||||
|
||||
os.makedirs(output_dir, exist_ok=True)
|
||||
with open(f"{output_dir}/index.theme", "w") as file:
|
||||
file.write("[Desktop Entry]\n")
|
||||
file.write("Type=X-GNOME-Metatheme\n")
|
||||
file.write(f"Name={ctx.build_id()}\n")
|
||||
file.write("Comment=An Flat Gtk+ theme based on Elegant Design\n")
|
||||
file.write("Encoding=UTF-8\n")
|
||||
file.write("\n")
|
||||
file.write("[X-GNOME-Metatheme]\n")
|
||||
file.write(f"GtkTheme={ctx.build_id()}\n")
|
||||
file.write(f"MetacityTheme={ctx.build_id()}\n")
|
||||
file.write(f"IconTheme=Tela-circle{dark_suffix}\n")
|
||||
file.write(f"CursorTheme={ctx.flavor.name}-cursors\n")
|
||||
file.write("ButtonLayout=close,minimize,maximize:menu\n")
|
||||
|
||||
os.makedirs(f"{output_dir}/gnome-shell", exist_ok=True)
|
||||
shutil.copyfile(
|
||||
f"{SRC_DIR}/main/gnome-shell/pad-osd.css",
|
||||
f"{output_dir}/gnome-shell/pad-osd.css",
|
||||
)
|
||||
subprocess.check_call(
|
||||
[
|
||||
"sassc",
|
||||
*SASSC_OPT,
|
||||
f"{SRC_DIR}/main/gnome-shell/gnome-shell{suffix}.scss",
|
||||
f"{output_dir}/gnome-shell/gnome-shell.css",
|
||||
]
|
||||
)
|
||||
|
||||
os.makedirs(f"{output_dir}/gtk-3.0", exist_ok=True)
|
||||
subprocess.check_call(
|
||||
[
|
||||
"sassc",
|
||||
*SASSC_OPT,
|
||||
f"{SRC_DIR}/main/gtk-3.0/gtk{suffix}.scss",
|
||||
f"{output_dir}/gtk-3.0/gtk.css",
|
||||
]
|
||||
)
|
||||
subprocess.check_call(
|
||||
[
|
||||
"sassc",
|
||||
*SASSC_OPT,
|
||||
f"{SRC_DIR}/main/gtk-3.0/gtk-Dark.scss",
|
||||
f"{output_dir}/gtk-3.0/gtk-Dark.css",
|
||||
]
|
||||
)
|
||||
|
||||
os.makedirs(f"{output_dir}/gtk-4.0", exist_ok=True)
|
||||
subprocess.check_call(
|
||||
[
|
||||
"sassc",
|
||||
*SASSC_OPT,
|
||||
f"{SRC_DIR}/main/gtk-4.0/gtk{suffix}.scss",
|
||||
f"{output_dir}/gtk-4.0/gtk.css",
|
||||
]
|
||||
)
|
||||
subprocess.check_call(
|
||||
[
|
||||
"sassc",
|
||||
*SASSC_OPT,
|
||||
f"{SRC_DIR}/main/gtk-4.0/gtk-Dark.scss",
|
||||
f"{output_dir}/gtk-4.0/gtk-Dark.css",
|
||||
]
|
||||
)
|
||||
|
||||
os.makedirs(f"{output_dir}/cinnamon", exist_ok=True)
|
||||
subprocess.check_call(
|
||||
[
|
||||
"sassc",
|
||||
*SASSC_OPT,
|
||||
f"{SRC_DIR}/main/cinnamon/cinnamon{suffix}.scss",
|
||||
f"{output_dir}/cinnamon/cinnamon.css",
|
||||
]
|
||||
)
|
||||
subprocess.check_call(
|
||||
[
|
||||
"sassc",
|
||||
*SASSC_OPT,
|
||||
f"{SRC_DIR}/main/gtk-4.0/gtk-Dark.scss",
|
||||
f"{output_dir}/gtk-4.0/gtk-Dark.css",
|
||||
]
|
||||
)
|
||||
|
||||
os.makedirs(f"{output_dir}/metacity-1", exist_ok=True)
|
||||
shutil.copyfile(
|
||||
f"{SRC_DIR}/main/metacity-1/metacity-theme-3{window_suffix}.xml",
|
||||
f"{output_dir}/metacity-1/metacity-theme-3.xml",
|
||||
)
|
||||
# FIXME: Symlinks aren't working as intended
|
||||
# FIXME: Do we need them?
|
||||
# os.symlink(
|
||||
# f"{output_dir}/metacity-1/metacity-theme-3.xml",
|
||||
# f"{output_dir}/metacity-1/metacity-theme-2.xml",
|
||||
# )
|
||||
# os.symlink(
|
||||
# f"{output_dir}/metacity-1/metacity-theme-3.xml",
|
||||
# f"{output_dir}/metacity-1/metacity-theme-1.xml",
|
||||
# )
|
||||
|
||||
os.makedirs(f"{output_dir}/xfwm4", exist_ok=True)
|
||||
shutil.copyfile(
|
||||
f"{SRC_DIR}/main/xfwm4/themerc{light_suffix}",
|
||||
f"{output_dir}/xfwm4/themerc",
|
||||
)
|
||||
|
||||
os.makedirs(f"{output_dir}-hdpi/xfwm4", exist_ok=True)
|
||||
shutil.copyfile(
|
||||
f"{SRC_DIR}/main/xfwm4/themerc{light_suffix}",
|
||||
f"{output_dir}-hdpi/xfwm4/themerc",
|
||||
)
|
||||
subst_text(f"{output_dir}-hdpi/xfwm4/themerc", "button_offset=6", "button_offset=9")
|
||||
|
||||
os.makedirs(f"{output_dir}-xhdpi/xfwm4", exist_ok=True)
|
||||
shutil.copyfile(
|
||||
f"{SRC_DIR}/main/xfwm4/themerc{light_suffix or ''}",
|
||||
f"{output_dir}-xhdpi/xfwm4/themerc",
|
||||
)
|
||||
subst_text(
|
||||
f"{output_dir}-xhdpi/xfwm4/themerc", "button_offset=6", "button_offset=12"
|
||||
)
|
||||
|
||||
if not ctx.flavor.dark:
|
||||
shutil.copytree(
|
||||
f"{SRC_DIR}/main/plank/theme-Light{scheme_suffix}/", f"{output_dir}/plank"
|
||||
)
|
||||
else:
|
||||
shutil.copytree(
|
||||
f"{SRC_DIR}/main/plank/theme-Dark{scheme_suffix}/", f"{output_dir}/plank"
|
||||
)
|
||||
|
||||
|
||||
def tweaks_temp():
|
||||
shutil.copyfile(f"{SRC_DIR}/sass/_tweaks.scss", f"{SRC_DIR}/sass/_tweaks-temp.scss")
|
||||
|
||||
|
||||
def subst_text(path, _from, to):
|
||||
with open(path, "r+") as f:
|
||||
content = f.read()
|
||||
f.seek(0)
|
||||
f.truncate()
|
||||
f.write(re.sub(_from, to, content))
|
||||
|
||||
|
||||
GS_VERSION = "46-0"
|
||||
|
||||
|
||||
def gnome_shell_version():
|
||||
shutil.copyfile(
|
||||
f"{SRC_DIR}/sass/gnome-shell/_common.scss",
|
||||
f"{SRC_DIR}/sass/gnome-shell/_common-temp.scss",
|
||||
)
|
||||
subst_text(
|
||||
f"{SRC_DIR}/sass/gnome-shell/_common-temp.scss",
|
||||
"@import 'widgets-40-0';",
|
||||
f"@import 'widgets-{GS_VERSION}';",
|
||||
)
|
||||
|
||||
if GS_VERSION == "3-28":
|
||||
subst_text(
|
||||
f"{SRC_DIR}/sass/gnome-shell/_common-temp.scss",
|
||||
"@import 'extensions-40-0';",
|
||||
f"@import 'extensions-{GS_VERSION}';",
|
||||
)
|
||||
|
||||
|
||||
# Accent translation
|
||||
ctp_to_colloid = {
|
||||
"rosewater": "pink",
|
||||
"flamingo": "pink",
|
||||
"pink": "pink",
|
||||
"mauve": "purple",
|
||||
"red": "red",
|
||||
"maroon": "red",
|
||||
"peach": "orange",
|
||||
"yellow": "yellow",
|
||||
"green": "green",
|
||||
"teal": "teal",
|
||||
"sky": "teal",
|
||||
"sapphire": "default",
|
||||
"blue": "default",
|
||||
"lavender": "default",
|
||||
}
|
||||
|
||||
|
||||
def translate_accent(ctp_accent: Color):
|
||||
return ctp_to_colloid[ctp_accent.identifier]
|
||||
|
||||
|
||||
def write_tweak(key, default, value):
|
||||
subst_text(
|
||||
f"{SRC_DIR}/sass/_tweaks-temp.scss", f"\\${key}: {default}", f"${key}: {value}"
|
||||
)
|
||||
|
||||
|
||||
def apply_tweaks(ctx: BuildContext):
|
||||
write_tweak("theme", "'default'", translate_accent(ctx.accent))
|
||||
|
||||
if ctx.size == "compact":
|
||||
write_tweak("compact", "'false'", "'true'")
|
||||
|
||||
subst_text(
|
||||
f"{SRC_DIR}/sass/_tweaks-temp.scss",
|
||||
"@import 'color-palette-default';",
|
||||
f"@import 'color-palette-catppuccin-{ctx.flavor.identifier}';",
|
||||
)
|
||||
write_tweak("colorscheme", "'default'", "'catppuccin'")
|
||||
|
||||
if ctx.tweaks.has("black"):
|
||||
write_tweak("blackness", "'false'", "'true'")
|
||||
|
||||
if ctx.tweaks.has("rimless"):
|
||||
write_tweak("rimless", "'false'", "'true'")
|
||||
|
||||
if ctx.tweaks.has("normal"):
|
||||
write_tweak("window_button", "'mac'", "'normal'")
|
||||
|
||||
if ctx.tweaks.has("float"):
|
||||
write_tweak("float", "'false'", "'true'")
|
||||
|
||||
|
||||
def make_assets(ctx: BuildContext):
|
||||
color_suffix = ""
|
||||
if not ctx.flavor.dark:
|
||||
color_suffix = "-Light"
|
||||
else:
|
||||
color_suffix = "-Dark"
|
||||
|
||||
dark_suffix = ""
|
||||
if ctx.flavor.dark:
|
||||
dark_suffix = "-Dark"
|
||||
|
||||
light_suffix = ""
|
||||
if not ctx.flavor.dark:
|
||||
light_suffix = "-Light"
|
||||
|
||||
window_suffix = ""
|
||||
if ctx.tweaks.has("normal"):
|
||||
window_suffix = "-Normal"
|
||||
|
||||
output_dir = ctx.output_dir()
|
||||
|
||||
os.makedirs(f"{output_dir}/cinnamon/assets", exist_ok=True)
|
||||
for file in glob.glob(f"{SRC_DIR}/assets/cinnamon/theme/*.svg"):
|
||||
shutil.copy(file, f"{output_dir}/cinnamon/assets")
|
||||
shutil.copy(
|
||||
f"{SRC_DIR}/assets/cinnamon/thumbnail{color_suffix}.svg",
|
||||
f"{output_dir}/cinnamon/thumbnail.png",
|
||||
)
|
||||
|
||||
os.makedirs(f"{output_dir}/gnome-shell/assets", exist_ok=True)
|
||||
for file in glob.glob(f"{SRC_DIR}/assets/gnome-shell/theme/*.svg"):
|
||||
shutil.copy(file, f"{output_dir}/gnome-shell/assets")
|
||||
|
||||
shutil.copytree(
|
||||
f"{SRC_DIR}/assets/gtk/assets",
|
||||
f"{output_dir}/gtk-3.0/assets",
|
||||
dirs_exist_ok=True,
|
||||
)
|
||||
shutil.copytree(
|
||||
f"{SRC_DIR}/assets/gtk/assets",
|
||||
f"{output_dir}/gtk-4.0/assets",
|
||||
dirs_exist_ok=True,
|
||||
)
|
||||
shutil.copyfile(
|
||||
f"{SRC_DIR}/assets/gtk/thumbnail{dark_suffix}.svg",
|
||||
f"{output_dir}/gtk-3.0/thumbnail.png",
|
||||
)
|
||||
shutil.copyfile(
|
||||
f"{SRC_DIR}/assets/gtk/thumbnail{dark_suffix}.svg",
|
||||
f"{output_dir}/gtk-4.0/thumbnail.png",
|
||||
)
|
||||
|
||||
theme_color = ctx.accent.hex
|
||||
|
||||
palette = ctx.flavor.colors
|
||||
background = palette.base.hex
|
||||
background_alt = palette.mantle.hex
|
||||
titlebar = palette.overlay0.hex
|
||||
|
||||
for file in glob.glob(f"{output_dir}/cinnamon/assets/*.svg"):
|
||||
subst_text(file, "#5b9bf8", theme_color)
|
||||
subst_text(file, "#3c84f7", theme_color)
|
||||
|
||||
for file in glob.glob(f"{output_dir}/gnome-shell/assets/*.svg"):
|
||||
subst_text(file, "#5b9bf8", theme_color)
|
||||
subst_text(file, "#3c84f7", theme_color)
|
||||
|
||||
for file in glob.glob(f"{output_dir}/gtk-3.0/assets/*.svg"):
|
||||
subst_text(file, "#5b9bf8", theme_color)
|
||||
subst_text(file, "#3c84f7", theme_color)
|
||||
subst_text(file, "#ffffff", background)
|
||||
subst_text(file, "#2c2c2c", background)
|
||||
subst_text(file, "#3c3c3c", background_alt)
|
||||
|
||||
for file in glob.glob(f"{output_dir}/gtk-4.0/assets/*.svg"):
|
||||
subst_text(file, "#5b9bf8", theme_color)
|
||||
subst_text(file, "#3c84f7", theme_color)
|
||||
subst_text(file, "#ffffff", background)
|
||||
subst_text(file, "#2c2c2c", background)
|
||||
subst_text(file, "#3c3c3c", background_alt)
|
||||
|
||||
if ctx.flavor.dark:
|
||||
subst_text(f"{output_dir}/cinnamon/thumbnail.png", "#2c2c2c", background)
|
||||
subst_text(f"{output_dir}/cinnamon/thumbnail.png", "#5b9bf8", theme_color)
|
||||
|
||||
subst_text(f"{output_dir}/gtk-3.0/thumbnail.png", "#2c2c2c", background)
|
||||
subst_text(f"{output_dir}/gtk-4.0/thumbnail.png", "#2c2c2c", background)
|
||||
|
||||
subst_text(f"{output_dir}/gtk-3.0/thumbnail.png", "#5b9bf8", theme_color)
|
||||
subst_text(f"{output_dir}/gtk-4.0/thumbnail.png", "#5b9bf8", theme_color)
|
||||
else:
|
||||
subst_text(f"{output_dir}/cinnamon/thumbnail.png", "#ffffff", background)
|
||||
subst_text(f"{output_dir}/cinnamon/thumbnail.png", "#f2f2f2", titlebar)
|
||||
subst_text(f"{output_dir}/cinnamon/thumbnail.png", "#3c84f7", theme_color)
|
||||
|
||||
subst_text(f"{output_dir}/gtk-3.0/thumbnail.png", "#f2f2f2", titlebar)
|
||||
subst_text(f"{output_dir}/gtk-3.0/thumbnail.png", "#3c84f7", theme_color)
|
||||
|
||||
subst_text(f"{output_dir}/gtk-4.0/thumbnail.png", "#f2f2f2", titlebar)
|
||||
subst_text(f"{output_dir}/gtk-4.0/thumbnail.png", "#3c84f7", theme_color)
|
||||
|
||||
for file in glob.glob(f"{SRC_DIR}/assets/cinnamon/common-assets/*.svg"):
|
||||
shutil.copy(file, f"{output_dir}/cinnamon/assets")
|
||||
|
||||
for file in glob.glob(f"{SRC_DIR}/assets/cinnamon/assets-{dark_suffix}/*.svg"):
|
||||
shutil.copy(file, f"{output_dir}/cinnamon/assets")
|
||||
|
||||
for file in glob.glob(f"{SRC_DIR}/assets/gnome-shell/common-assets/*.svg"):
|
||||
shutil.copy(file, f"{output_dir}/gnome-shell/assets")
|
||||
|
||||
for file in glob.glob(f"{SRC_DIR}/assets/gnome-shell/assets-{dark_suffix}/*.svg"):
|
||||
shutil.copy(file, f"{output_dir}/gnome-shell/assets")
|
||||
|
||||
for file in glob.glob(f"{SRC_DIR}/assets/gtk/symbolics/*.svg"):
|
||||
shutil.copy(file, f"{output_dir}/gtk-3.0/assets")
|
||||
shutil.copy(file, f"{output_dir}/gtk-4.0/assets")
|
||||
|
||||
for file in glob.glob(f"{SRC_DIR}/assets/metacity-1/assets-{window_suffix}/*.svg"):
|
||||
shutil.copy(file, f"{output_dir}/metacity-1/assets")
|
||||
shutil.copy(
|
||||
f"{SRC_DIR}/assets/metacity-1/thumbnail{dark_suffix}.png",
|
||||
f"{output_dir}/metacity-1/thumbnail.png",
|
||||
)
|
||||
|
||||
# TODO: Make our own assets for this and patch them in with the patch system, then code it to be
|
||||
# {src_dir}/assets/xfwm4/assets{light_suffix}-Catppuccin/
|
||||
# where assets-Light-Catppuccin will have latte
|
||||
# nad assets-Catppuccin will have mocha or something
|
||||
for file in glob.glob(f"{SRC_DIR}/assets/xfwm4/assets{light_suffix}/*.png"):
|
||||
shutil.copy(file, f"{output_dir}/xfwm4")
|
||||
|
||||
for file in glob.glob(f"{SRC_DIR}/assets/xfwm4/assets{light_suffix}-hdpi/*.png"):
|
||||
shutil.copy(file, f"{output_dir}-hdpi/xfwm4")
|
||||
|
||||
for file in glob.glob(f"{SRC_DIR}/assets/xfwm4/assets{light_suffix}-xhdpi/*.png"):
|
||||
shutil.copy(file, f"{output_dir}-xhdpi/xfwm4")
|
||||
|
||||
|
||||
def zip_dir(path, zip_file):
|
||||
# Ref: https://stackoverflow.com/questions/46229764/python-zip-multiple-directories-into-one-zip-file
|
||||
for root, _, files in os.walk(path):
|
||||
for file in files:
|
||||
zip_file.write(
|
||||
os.path.join(root, file),
|
||||
os.path.relpath(os.path.join(root, file), os.path.join(path, "..")),
|
||||
)
|
||||
|
||||
|
||||
def zip_artifacts(dir_list, zip_name, remove=True):
|
||||
with zipfile.ZipFile(zip_name, "w", zipfile.ZIP_DEFLATED) as zipf:
|
||||
for dir in dir_list:
|
||||
zip_dir(dir, zipf)
|
||||
|
||||
if remove:
|
||||
for dir in dir_list:
|
||||
shutil.rmtree(dir)
|
||||
|
||||
|
||||
def build_theme(ctx: BuildContext):
|
||||
build_info = f"""Build info:
|
||||
build_root: {ctx.build_root}
|
||||
theme_name: {ctx.theme_name}
|
||||
flavor: {ctx.flavor.identifier}
|
||||
accent: {ctx.accent.identifier}
|
||||
size: {ctx.size}
|
||||
tweaks: {ctx.tweaks}"""
|
||||
logger.info(build_info)
|
||||
build(ctx)
|
||||
logger.info(f"Main build complete")
|
||||
|
||||
logger.info("Bundling assets...")
|
||||
make_assets(ctx)
|
||||
logger.info("Asset bundling done")
|
||||
|
||||
if ctx.output_format == "zip":
|
||||
zip_artifacts(
|
||||
[
|
||||
ctx.output_dir(),
|
||||
f"{ctx.output_dir()}-hdpi",
|
||||
f"{ctx.output_dir()}-xhdpi",
|
||||
],
|
||||
f"{ctx.build_root}/{ctx.build_id()}.zip",
|
||||
True,
|
||||
)
|
||||
|
||||
"""
|
||||
if (command -v xfce4-popup-whiskermenu &> /dev/null) && $(sed -i "s|.*menu-opacity=.*|menu-opacity=95|" "$HOME/.config/xfce4/panel/whiskermenu"*".rc" &> /dev/null); then
|
||||
sed -i "s|.*menu-opacity=.*|menu-opacity=95|" "$HOME/.config/xfce4/panel/whiskermenu"*".rc"
|
||||
fi
|
||||
|
||||
if (pgrep xfce4-session &> /dev/null); then
|
||||
xfce4-panel -r
|
||||
fi
|
||||
"""
|
||||
|
||||
|
||||
def apply_colloid_patches():
|
||||
if os.path.isfile("colloid/.patched"):
|
||||
logger.info(
|
||||
'Patches seem to be applied, remove "colloid/.patched" to force application (this may fail)'
|
||||
)
|
||||
return
|
||||
|
||||
logger.info("Applying patches...")
|
||||
# Change into colloid
|
||||
for patch in [
|
||||
"plank-dark.patch",
|
||||
"plank-light.patch",
|
||||
"sass-colors.patch",
|
||||
"sass-palette-frappe.patch",
|
||||
"sass-palette-mocha.patch",
|
||||
"sass-palette-latte.patch",
|
||||
"sass-palette-macchiato.patch",
|
||||
]:
|
||||
path = f"./patches/colloid/{patch}"
|
||||
logger.info(f"Applying patch '{patch}', located at '{path}'")
|
||||
subprocess.check_call(["git", "apply", path, "--directory", f"colloid"])
|
||||
|
||||
with open("colloid/.patched", "w") as f:
|
||||
f.write("true")
|
||||
|
||||
logger.info("Patching finished.")
|
||||
|
||||
|
||||
def parse_args():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument(
|
||||
"flavor",
|
||||
type=str,
|
||||
choices=["mocha", "frappe", "macchiato", "latte"],
|
||||
help="Flavor of the theme to apply.",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--name",
|
||||
"-n",
|
||||
type=str,
|
||||
default="catppuccin",
|
||||
dest="name",
|
||||
help="Name of the theme to apply.",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--dest",
|
||||
"-d",
|
||||
type=str,
|
||||
required=True,
|
||||
dest="dest",
|
||||
help="Destination of the files.",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--accent",
|
||||
"-a",
|
||||
type=str,
|
||||
default="mauve",
|
||||
dest="accent",
|
||||
choices=[
|
||||
"rosewater",
|
||||
"flamingo",
|
||||
"pink",
|
||||
"mauve",
|
||||
"red",
|
||||
"maroon",
|
||||
"peach",
|
||||
"yellow",
|
||||
"green",
|
||||
"teal",
|
||||
"sky",
|
||||
"sapphire",
|
||||
"blue",
|
||||
"lavender",
|
||||
"all"
|
||||
],
|
||||
help="Accent of the theme.",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--size",
|
||||
"-s",
|
||||
type=str,
|
||||
default="standard",
|
||||
dest="size",
|
||||
choices=["standard", "compact"],
|
||||
help="Size variant of the theme.",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--tweaks",
|
||||
type=str,
|
||||
default=[],
|
||||
nargs="+",
|
||||
dest="tweaks",
|
||||
choices=["black", "rimless", "normal", "float"],
|
||||
help="Tweaks to apply to the build.",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--zip",
|
||||
help="Whether to bundle the theme into a zip",
|
||||
type=bool,
|
||||
default=False,
|
||||
action=argparse.BooleanOptionalAction,
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--patch",
|
||||
help="Whether to patch the colloid submodule",
|
||||
type=bool,
|
||||
default=True,
|
||||
action=argparse.BooleanOptionalAction,
|
||||
)
|
||||
|
||||
return parser.parse_args()
|
||||
|
||||
def main():
|
||||
args = parse_args()
|
||||
if args.patch:
|
||||
apply_colloid_patches()
|
||||
|
||||
palette = getattr(PALETTE, args.flavor)
|
||||
accents=[
|
||||
"rosewater",
|
||||
"flamingo",
|
||||
"pink",
|
||||
"mauve",
|
||||
"red",
|
||||
"maroon",
|
||||
"peach",
|
||||
"yellow",
|
||||
"green",
|
||||
"teal",
|
||||
"sky",
|
||||
"sapphire",
|
||||
"blue",
|
||||
"lavender",
|
||||
]
|
||||
|
||||
if args.accent == 'all':
|
||||
for accent in accents:
|
||||
accent = getattr(palette.colors, accent)
|
||||
|
||||
tweaks = Tweaks(tweaks=args.tweaks)
|
||||
|
||||
if args.zip:
|
||||
output_format = 'zip'
|
||||
else:
|
||||
output_format = 'dir'
|
||||
|
||||
ctx = BuildContext(
|
||||
build_root=args.dest,
|
||||
theme_name=args.name,
|
||||
flavor=palette,
|
||||
accent=accent,
|
||||
size=args.size,
|
||||
tweaks=tweaks,
|
||||
output_format=output_format
|
||||
)
|
||||
|
||||
tweaks_temp()
|
||||
gnome_shell_version()
|
||||
build_theme(ctx)
|
||||
logger.info("Done!")
|
||||
else:
|
||||
accent = getattr(palette.colors, args.accent)
|
||||
tweaks = Tweaks(tweaks=args.tweaks)
|
||||
|
||||
if args.zip:
|
||||
output_format = 'zip'
|
||||
else:
|
||||
output_format = 'dir'
|
||||
|
||||
ctx = BuildContext(
|
||||
build_root=args.dest,
|
||||
theme_name=args.name,
|
||||
flavor=palette,
|
||||
accent=accent,
|
||||
size=args.size,
|
||||
tweaks=tweaks,
|
||||
output_format=output_format
|
||||
)
|
||||
|
||||
logger.info("Building temp tweaks file")
|
||||
tweaks_temp()
|
||||
logger.info("Inserting gnome-shell imports")
|
||||
gnome_shell_version()
|
||||
logger.info("Building main theme")
|
||||
build_theme(ctx)
|
||||
logger.info("Done!")
|
||||
|
||||
|
||||
try:
|
||||
main()
|
||||
except Exception as e:
|
||||
logger.error("Something went wrong when installing the theme:", exc_info=e)
|
42
build.sh
@@ -1,42 +0,0 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# Check command availability
|
||||
function has_command() {
|
||||
command -v $1 > /dev/null
|
||||
}
|
||||
|
||||
if [ ! "$(which sassc 2> /dev/null)" ]; then
|
||||
echo sassc needs to be installed to generate the css.
|
||||
if has_command zypper; then
|
||||
sudo zypper in sassc
|
||||
elif has_command apt; then
|
||||
sudo apt install sassc
|
||||
elif has_command dnf; then
|
||||
sudo dnf install -y sassc
|
||||
elif has_command yum; then
|
||||
sudo yum install sassc
|
||||
elif has_command pacman; then
|
||||
sudo pacman -S --noconfirm sassc
|
||||
fi
|
||||
fi
|
||||
|
||||
SASSC_OPT="-M -t expanded"
|
||||
|
||||
_COLOR_VARIANTS=('' '-Light' '-Dark')
|
||||
if [ ! -z "${COLOR_VARIANTS:-}" ]; then
|
||||
IFS=', ' read -r -a _COLOR_VARIANTS <<< "${COLOR_VARIANTS:-}"
|
||||
fi
|
||||
|
||||
cp -rf src/sass/_tweaks.scss src/sass/_tweaks-temp.scss
|
||||
cp -rf src/sass/gnome-shell/_common.scss src/sass/gnome-shell/_common-temp.scss
|
||||
|
||||
for color in "${_COLOR_VARIANTS[@]}"; do
|
||||
sassc $SASSC_OPT src/main/gtk-3.0/gtk${color}.{scss,css}
|
||||
echo "==> Generating the 3.0 gtk${color}.css..."
|
||||
sassc $SASSC_OPT src/main/gtk-4.0/gtk${color}.{scss,css}
|
||||
echo "==> Generating the 4.0 gtk${color}.css..."
|
||||
sassc $SASSC_OPT src/main/gnome-shell/gnome-shell${color}.{scss,css}
|
||||
echo "==> Generating the gnome-shell${color}.css..."
|
||||
sassc $SASSC_OPT src/main/cinnamon/cinnamon${color}.{scss,css}
|
||||
echo "==> Generating the cinnamon${color}.css..."
|
||||
done
|
@@ -1,55 +0,0 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
ROOT_UID=0
|
||||
DEST_DIR=
|
||||
|
||||
# Destination directory
|
||||
if [ "$UID" -eq "$ROOT_UID" ]; then
|
||||
DEST_DIR="/usr/share/themes"
|
||||
else
|
||||
DEST_DIR="$HOME/.themes"
|
||||
fi
|
||||
|
||||
THEME_NAME=Colloid
|
||||
THEME_VARIANTS=('' '-purple' '-pink' '-red' '-orange' '-yellow' '-green' '-teal' '-grey')
|
||||
COLOR_VARIANTS=('' '-light' '-dark')
|
||||
SIZE_VARIANTS=('' '-compact')
|
||||
TYPE_VARIANTS=('' '-nord' '-dracula')
|
||||
SCREEN_VARIANTS=('' '-hdpi' '-xhdpi')
|
||||
|
||||
clean() {
|
||||
local dest=${1}
|
||||
local name=${2}
|
||||
local theme=${3}
|
||||
local color=${4}
|
||||
local size=${5}
|
||||
local type=${6}
|
||||
local screen=${7}
|
||||
|
||||
local THEME_DIR=${dest}/${name}${theme}${color}${size}${type}${screen}
|
||||
|
||||
if [[ ${theme} == '' && ${color} == '' && ${size} == '' && ${type} == '' ]]; then
|
||||
cleantheme='none'
|
||||
elif [[ -d ${THEME_DIR} ]]; then
|
||||
rm -rf ${THEME_DIR}
|
||||
echo -e "Find: ${THEME_DIR} ! removing it ..."
|
||||
fi
|
||||
}
|
||||
|
||||
clean_theme() {
|
||||
for theme in "${themes[@]-${THEME_VARIANTS[@]}}"; do
|
||||
for color in "${colors[@]-${COLOR_VARIANTS[@]}}"; do
|
||||
for size in "${sizes[@]-${SIZE_VARIANTS[@]}}"; do
|
||||
for type in "${types[@]-${TYPE_VARIANTS[@]}}"; do
|
||||
for screen in "${screens[@]-${SCREEN_VARIANTS[@]}}"; do
|
||||
clean "${dest:-${DEST_DIR}}" "${name:-${THEME_NAME}}" "${theme}" "${color}" "${size}" "${type}" "${screen}"
|
||||
done
|
||||
done
|
||||
done
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
clean_theme
|
||||
|
||||
exit 0
|
1
colloid
Submodule
60
flake.lock
generated
Normal file
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"nodes": {
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1714495772,
|
||||
"narHash": "sha256-BVkhvsIatul5lXMrnPvgKkpxL3zZGQlPbTgDlFJiYCo=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "c82cda9c0600a2785cda8e60962bcc9cc86862db",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
17
flake.nix
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, flake-utils, ... }:
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
in
|
||||
{
|
||||
devShells.default = import ./shell.nix { inherit pkgs; };
|
||||
}
|
||||
);
|
||||
}
|
||||
|
275
gtkrc.sh
@@ -1,275 +0,0 @@
|
||||
make_gtkrc() {
|
||||
local dest="${1}"
|
||||
local name="${2}"
|
||||
local theme="${3}"
|
||||
local color="${4}"
|
||||
local size="${5}"
|
||||
local ctype="${6}"
|
||||
local window="${7}"
|
||||
|
||||
[[ "${color}" == '-Light' ]] && local ELSE_LIGHT="${color}"
|
||||
[[ "${color}" == '-Dark' ]] && local ELSE_DARK="${color}"
|
||||
|
||||
local GTKRC_DIR="${SRC_DIR}/main/gtk-2.0"
|
||||
local THEME_DIR="${1}/${2}${3}${4}${5}${6}"
|
||||
|
||||
if [[ "${color}" != '-Dark' ]]; then
|
||||
case "$theme" in
|
||||
'')
|
||||
theme_color='#b4befe'
|
||||
;;
|
||||
-Purple)
|
||||
theme_color='#ca9ee6'
|
||||
;;
|
||||
-Pink)
|
||||
theme_color='#f4b8e4'
|
||||
;;
|
||||
-Red)
|
||||
theme_color='#e78284'
|
||||
;;
|
||||
-Orange)
|
||||
theme_color='#ef9f76'
|
||||
;;
|
||||
-Yellow)
|
||||
theme_color='#e5c890'
|
||||
;;
|
||||
-Green)
|
||||
theme_color='#a6d189'
|
||||
;;
|
||||
-Teal)
|
||||
theme_color='#babbf1'
|
||||
;;
|
||||
-Grey)
|
||||
theme_color='#7c7f93'
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$ctype" == '-Nord' ]]; then
|
||||
case "$theme" in
|
||||
'')
|
||||
theme_color='#5e81ac'
|
||||
;;
|
||||
-Purple)
|
||||
theme_color='#b57daa'
|
||||
;;
|
||||
-Pink)
|
||||
theme_color='#cd7092'
|
||||
;;
|
||||
-Red)
|
||||
theme_color='#c35b65'
|
||||
;;
|
||||
-Orange)
|
||||
theme_color='#d0846c'
|
||||
;;
|
||||
-Yellow)
|
||||
theme_color='#e4b558'
|
||||
;;
|
||||
-Green)
|
||||
theme_color='#82ac5d'
|
||||
;;
|
||||
-Teal)
|
||||
theme_color='#83b9b8'
|
||||
;;
|
||||
-Grey)
|
||||
theme_color='#3a4150'
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [[ "$ctype" == '-Dracula' ]]; then
|
||||
case "$theme" in
|
||||
'')
|
||||
theme_color='#a679ec'
|
||||
;;
|
||||
-Purple)
|
||||
theme_color='#a679ec'
|
||||
;;
|
||||
-Pink)
|
||||
theme_color='#f04cab'
|
||||
;;
|
||||
-Red)
|
||||
theme_color='#f44d4d'
|
||||
;;
|
||||
-Orange)
|
||||
theme_color='#f8a854'
|
||||
;;
|
||||
-Yellow)
|
||||
theme_color='#e8f467'
|
||||
;;
|
||||
-Green)
|
||||
theme_color='#4be772'
|
||||
;;
|
||||
-Teal)
|
||||
theme_color='#20eed9'
|
||||
;;
|
||||
-Grey)
|
||||
theme_color='#3c3f51'
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
else
|
||||
case "$theme" in
|
||||
'')
|
||||
theme_color='#b4befe'
|
||||
;;
|
||||
-Purple)
|
||||
theme_color='#ca9ee6'
|
||||
;;
|
||||
-Pink)
|
||||
theme_color='#f4b8e4'
|
||||
;;
|
||||
-Red)
|
||||
theme_color='#e78284'
|
||||
;;
|
||||
-Orange)
|
||||
theme_color='#ef9f76'
|
||||
;;
|
||||
-Yellow)
|
||||
theme_color='#e5c890'
|
||||
;;
|
||||
-Green)
|
||||
theme_color='#a6d189'
|
||||
;;
|
||||
-Teal)
|
||||
theme_color='#81c8be'
|
||||
;;
|
||||
-Grey)
|
||||
theme_color='#7c7f93'
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$ctype" == '-Nord' ]]; then
|
||||
case "$theme" in
|
||||
'')
|
||||
theme_color='#89a3c2'
|
||||
;;
|
||||
-Purple)
|
||||
theme_color='#c89dbf'
|
||||
;;
|
||||
-Pink)
|
||||
theme_color='#dc98b1'
|
||||
;;
|
||||
-Red)
|
||||
theme_color='#d4878f'
|
||||
;;
|
||||
-Orange)
|
||||
theme_color='#dca493'
|
||||
;;
|
||||
-Yellow)
|
||||
theme_color='#eac985'
|
||||
;;
|
||||
-Green)
|
||||
theme_color='#a0c082'
|
||||
;;
|
||||
-Teal)
|
||||
theme_color='#83b9b8'
|
||||
;;
|
||||
-Grey)
|
||||
theme_color='#d9dce3'
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [[ "$ctype" == '-Dracula' ]]; then
|
||||
case "$theme" in
|
||||
'')
|
||||
theme_color='#bd93f9'
|
||||
;;
|
||||
-Purple)
|
||||
theme_color='#bd93f9'
|
||||
;;
|
||||
-Pink)
|
||||
theme_color='#ff79c6'
|
||||
;;
|
||||
-Red)
|
||||
theme_color='#ff5555'
|
||||
;;
|
||||
-Orange)
|
||||
theme_color='#ffb86c'
|
||||
;;
|
||||
-Yellow)
|
||||
theme_color='#f1fa8c'
|
||||
;;
|
||||
-Green)
|
||||
theme_color='#50fa7b'
|
||||
;;
|
||||
-Teal)
|
||||
theme_color='#50fae9'
|
||||
;;
|
||||
-Grey)
|
||||
theme_color='#d9dae3'
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$blackness" == 'true' ]]; then
|
||||
case "$ctype" in
|
||||
'')
|
||||
background_light='#eff1f5'
|
||||
background_dark='#232634'
|
||||
background_darker='#11111b'
|
||||
background_alt='#212121'
|
||||
titlebar_light='#dce0e8'
|
||||
titlebar_dark='#232634'
|
||||
;;
|
||||
-Nord)
|
||||
background_light='#f8fafc'
|
||||
background_dark='#0d0e11'
|
||||
background_darker='#0f1115'
|
||||
background_alt='#1c1f26'
|
||||
titlebar_light='#f0f1f4'
|
||||
titlebar_dark='#020203'
|
||||
;;
|
||||
-Dracula)
|
||||
background_light='#f9f9fb'
|
||||
background_dark='#0d0d11'
|
||||
background_darker='#0f1015'
|
||||
background_alt='#1c1e26'
|
||||
titlebar_light='#f0f1f4'
|
||||
titlebar_dark='#020203'
|
||||
;;
|
||||
esac
|
||||
else
|
||||
case "$ctype" in
|
||||
'')
|
||||
background_light='#eff1f5'
|
||||
background_dark='#232634'
|
||||
background_darker='#11111b'
|
||||
background_alt='#464646'
|
||||
titlebar_light='#dce0e8'
|
||||
titlebar_dark='#232634'
|
||||
;;
|
||||
-Nord)
|
||||
background_light='#f8fafc'
|
||||
background_dark='#242932'
|
||||
background_darker='#333a47'
|
||||
background_alt='#3a4150'
|
||||
titlebar_light='#f0f1f4'
|
||||
titlebar_dark='#1e222a'
|
||||
;;
|
||||
-Dracula)
|
||||
background_light='#f9f9fb'
|
||||
background_dark='#242632'
|
||||
background_darker='#343746'
|
||||
background_alt='#3c3f51'
|
||||
titlebar_light='#f0f1f4'
|
||||
titlebar_dark='#1f2029'
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
cp -r "${GTKRC_DIR}/gtkrc${ELSE_DARK:-}-default" "${THEME_DIR}/gtk-2.0/gtkrc"
|
||||
sed -i "s/#FFFFFF/${background_light}/g" "${THEME_DIR}/gtk-2.0/gtkrc"
|
||||
sed -i "s/#2C2C2C/${background_dark}/g" "${THEME_DIR}/gtk-2.0/gtkrc"
|
||||
sed -i "s/#464646/${background_alt}/g" "${THEME_DIR}/gtk-2.0/gtkrc"
|
||||
|
||||
if [[ "${color}" == '-Dark' ]]; then
|
||||
sed -i "s/#5b9bf8/${theme_color}/g" "${THEME_DIR}/gtk-2.0/gtkrc"
|
||||
sed -i "s/#3C3C3C/${background_darker}/g" "${THEME_DIR}/gtk-2.0/gtkrc"
|
||||
sed -i "s/#242424/${titlebar_dark}/g" "${THEME_DIR}/gtk-2.0/gtkrc"
|
||||
else
|
||||
sed -i "s/#3c84f7/${theme_color}/g" "${THEME_DIR}/gtk-2.0/gtkrc"
|
||||
sed -i "s/#F2F2F2/${titlebar_light}/g" "${THEME_DIR}/gtk-2.0/gtkrc"
|
||||
fi
|
||||
}
|
517
install.sh
@@ -1,517 +0,0 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
set -Eeo pipefail
|
||||
|
||||
REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
|
||||
SRC_DIR="${REPO_DIR}/src"
|
||||
|
||||
source "${REPO_DIR}/gtkrc.sh"
|
||||
|
||||
ROOT_UID=0
|
||||
DEST_DIR=
|
||||
|
||||
ctype=
|
||||
window=
|
||||
|
||||
# Destination directory
|
||||
if [ "$UID" -eq "$ROOT_UID" ]; then
|
||||
DEST_DIR="/usr/share/themes"
|
||||
else
|
||||
DEST_DIR="$HOME/.themes"
|
||||
fi
|
||||
|
||||
SASSC_OPT="-M -t expanded"
|
||||
|
||||
THEME_NAME=Catppuccin
|
||||
THEME_VARIANTS=('' '-Purple' '-Pink' '-Red' '-Orange' '-Yellow' '-Green' '-Teal' '-Grey')
|
||||
COLOR_VARIANTS=('' '-Light' '-Dark')
|
||||
SIZE_VARIANTS=('' '-Compact')
|
||||
|
||||
if [[ "$(command -v gnome-shell)" ]]; then
|
||||
gnome-shell --version
|
||||
SHELL_VERSION="$(gnome-shell --version | cut -d ' ' -f 3 | cut -d . -f -1)"
|
||||
if [[ "${SHELL_VERSION:-}" -ge "42" ]]; then
|
||||
GS_VERSION="42-0"
|
||||
elif [[ "${SHELL_VERSION:-}" -ge "40" ]]; then
|
||||
GS_VERSION="40-0"
|
||||
else
|
||||
GS_VERSION="3-28"
|
||||
fi
|
||||
else
|
||||
echo "'gnome-shell' not found, using styles for last gnome-shell version available."
|
||||
GS_VERSION="42-0"
|
||||
fi
|
||||
|
||||
usage() {
|
||||
cat << EOF
|
||||
Usage: $0 [OPTION]...
|
||||
|
||||
OPTIONS:
|
||||
-d, --dest DIR Specify destination directory (Default: $DEST_DIR)
|
||||
|
||||
-n, --name NAME Specify theme name (Default: $THEME_NAME)
|
||||
|
||||
-t, --theme VARIANT Specify theme color variant(s) [default|purple|pink|red|orange|yellow|green|teal|grey|all] (Default: blue)
|
||||
|
||||
-c, --color VARIANT Specify color variant(s) [standard|light|dark] (Default: All variants))
|
||||
|
||||
-s, --size VARIANT Specify size variant [standard|compact] (Default: standard variant)
|
||||
|
||||
--tweaks Specify versions for tweaks [nord|dracula|black|rimless|normal] (only nord and dracula can not mix use with!)
|
||||
1. nord: Nord ColorScheme version
|
||||
2. dracula Dracula ColorScheme version
|
||||
3. black: Blackness color version
|
||||
4. rimless: Remove the 1px border about windows and menus
|
||||
5. normal: Normal windows button style (titlebuttons: max/min/close)
|
||||
|
||||
-h, --help Show help
|
||||
EOF
|
||||
}
|
||||
|
||||
install() {
|
||||
local dest="${1}"
|
||||
local name="${2}"
|
||||
local theme="${3}"
|
||||
local color="${4}"
|
||||
local size="${5}"
|
||||
local ctype="${6}"
|
||||
local window="${7}"
|
||||
|
||||
[[ "${color}" == '-Light' ]] && local ELSE_LIGHT="${color}"
|
||||
[[ "${color}" == '-Dark' ]] && local ELSE_DARK="${color}"
|
||||
|
||||
local THEME_DIR="${1}/${2}${3}${4}${5}${6}"
|
||||
|
||||
[[ -d "${THEME_DIR}" ]] && rm -rf "${THEME_DIR}"
|
||||
|
||||
echo "Installing '${THEME_DIR}'..."
|
||||
|
||||
theme_tweaks
|
||||
|
||||
mkdir -p "${THEME_DIR}"
|
||||
|
||||
echo "[Desktop Entry]" >> "${THEME_DIR}/index.theme"
|
||||
echo "Type=X-GNOME-Metatheme" >> "${THEME_DIR}/index.theme"
|
||||
echo "Name=${2}${3}${4}${5}${6}" >> "${THEME_DIR}/index.theme"
|
||||
echo "Comment=An Flat Gtk+ theme based on Elegant Design" >> "${THEME_DIR}/index.theme"
|
||||
echo "Encoding=UTF-8" >> "${THEME_DIR}/index.theme"
|
||||
echo "" >> "${THEME_DIR}/index.theme"
|
||||
echo "[X-GNOME-Metatheme]" >> "${THEME_DIR}/index.theme"
|
||||
echo "GtkTheme=${2}${3}${4}${5}${6}" >> "${THEME_DIR}/index.theme"
|
||||
echo "MetacityTheme=${2}${3}${4}${5}${6}" >> "${THEME_DIR}/index.theme"
|
||||
echo "IconTheme=Tela-circle${ELSE_DARK:-}" >> "${THEME_DIR}/index.theme"
|
||||
echo "CursorTheme=${2}-cursors" >> "${THEME_DIR}/index.theme"
|
||||
echo "ButtonLayout=close,minimize,maximize:menu" >> "${THEME_DIR}/index.theme"
|
||||
|
||||
mkdir -p "${THEME_DIR}/gnome-shell"
|
||||
cp -r "${SRC_DIR}/main/gnome-shell/pad-osd.css" "${THEME_DIR}/gnome-shell"
|
||||
sassc $SASSC_OPT "${SRC_DIR}/main/gnome-shell/gnome-shell${color}.scss" "${THEME_DIR}/gnome-shell/gnome-shell.css"
|
||||
|
||||
cp -r "${SRC_DIR}/assets/gnome-shell/common-assets" "${THEME_DIR}/gnome-shell/assets"
|
||||
cp -r "${SRC_DIR}/assets/gnome-shell/assets${ELSE_DARK:-}/"*.svg "${THEME_DIR}/gnome-shell/assets"
|
||||
cp -r "${SRC_DIR}/assets/gnome-shell/theme${theme}${ctype}/"*.svg "${THEME_DIR}/gnome-shell/assets"
|
||||
|
||||
cd "${THEME_DIR}/gnome-shell"
|
||||
ln -s assets/no-events.svg no-events.svg
|
||||
ln -s assets/process-working.svg process-working.svg
|
||||
ln -s assets/no-notifications.svg no-notifications.svg
|
||||
|
||||
mkdir -p "${THEME_DIR}/gtk-2.0"
|
||||
# cp -r "${SRC_DIR}/main/gtk-2.0/gtkrc${theme}${ELSE_DARK:-}${ctype}" "${THEME_DIR}/gtk-2.0/gtkrc"
|
||||
cp -r "${SRC_DIR}/main/gtk-2.0/common/"*'.rc' "${THEME_DIR}/gtk-2.0"
|
||||
cp -r "${SRC_DIR}/assets/gtk-2.0/assets-common${ELSE_DARK:-}" "${THEME_DIR}/gtk-2.0/assets"
|
||||
cp -r "${SRC_DIR}/assets/gtk-2.0/assets${theme}${ELSE_DARK:-}${ctype}/"*"png" "${THEME_DIR}/gtk-2.0/assets"
|
||||
|
||||
mkdir -p "${THEME_DIR}/gtk-3.0"
|
||||
cp -r "${SRC_DIR}/assets/gtk/assets${theme}${ctype}" "${THEME_DIR}/gtk-3.0/assets"
|
||||
cp -r "${SRC_DIR}/assets/gtk/scalable" "${THEME_DIR}/gtk-3.0/assets"
|
||||
cp -r "${SRC_DIR}/assets/gtk/thumbnails/thumbnail${theme}${ctype}${ELSE_DARK:-}.png" "${THEME_DIR}/gtk-3.0/thumbnail.png"
|
||||
sassc $SASSC_OPT "${SRC_DIR}/main/gtk-3.0/gtk${color}.scss" "${THEME_DIR}/gtk-3.0/gtk.css"
|
||||
sassc $SASSC_OPT "${SRC_DIR}/main/gtk-3.0/gtk-Dark.scss" "${THEME_DIR}/gtk-3.0/gtk-dark.css"
|
||||
|
||||
mkdir -p "${THEME_DIR}/gtk-4.0"
|
||||
cp -r "${SRC_DIR}/assets/gtk/assets${theme}${ctype}" "${THEME_DIR}/gtk-4.0/assets"
|
||||
cp -r "${SRC_DIR}/assets/gtk/scalable" "${THEME_DIR}/gtk-4.0/assets"
|
||||
cp -r "${SRC_DIR}/assets/gtk/thumbnails/thumbnail${theme}${ctype}${ELSE_DARK:-}.png" "${THEME_DIR}/gtk-4.0/thumbnail.png"
|
||||
sassc $SASSC_OPT "${SRC_DIR}/main/gtk-4.0/gtk${color}.scss" "${THEME_DIR}/gtk-4.0/gtk.css"
|
||||
sassc $SASSC_OPT "${SRC_DIR}/main/gtk-4.0/gtk-Dark.scss" "${THEME_DIR}/gtk-4.0/gtk-dark.css"
|
||||
|
||||
# link gtk4.0 for libadwaita
|
||||
mkdir -p "${HOME}/.config/gtk-4.0"
|
||||
rm -rf "${HOME}/.config/gtk-4.0/"{assets,gtk.css,gtk-dark.css}
|
||||
ln -sf "${THEME_DIR}/gtk-4.0/assets" "${HOME}/.config/gtk-4.0/assets"
|
||||
ln -sf "${THEME_DIR}/gtk-4.0/gtk.css" "${HOME}/.config/gtk-4.0/gtk.css"
|
||||
ln -sf "${THEME_DIR}/gtk-4.0/gtk-dark.css" "${HOME}/.config/gtk-4.0/gtk-dark.css"
|
||||
|
||||
mkdir -p "${THEME_DIR}/cinnamon"
|
||||
cp -r "${SRC_DIR}/assets/cinnamon/common-assets" "${THEME_DIR}/cinnamon/assets"
|
||||
cp -r "${SRC_DIR}/assets/cinnamon/assets${ELSE_DARK:-}/"*'.svg' "${THEME_DIR}/cinnamon/assets"
|
||||
cp -r "${SRC_DIR}/assets/cinnamon/theme${theme}${ctype}/"*'.svg' "${THEME_DIR}/cinnamon/assets"
|
||||
sassc $SASSC_OPT "${SRC_DIR}/main/cinnamon/cinnamon${color}.scss" "${THEME_DIR}/cinnamon/cinnamon.css"
|
||||
cp -r "${SRC_DIR}/assets/cinnamon/thumbnails/thumbnail${theme}${ctype}${color}.png" "${THEME_DIR}/cinnamon/thumbnail.png"
|
||||
|
||||
mkdir -p "${THEME_DIR}/metacity-1"
|
||||
cp -r "${SRC_DIR}/main/metacity-1/metacity-theme-3${window}.xml" "${THEME_DIR}/metacity-1/metacity-theme-3.xml"
|
||||
cp -r "${SRC_DIR}/assets/metacity-1/assets${window}" "${THEME_DIR}/metacity-1/assets"
|
||||
cp -r "${SRC_DIR}/assets/metacity-1/thumbnail${ELSE_DARK:-}.png" "${THEME_DIR}/metacity-1/thumbnail.png"
|
||||
cd "${THEME_DIR}/metacity-1" && ln -s metacity-theme-3.xml metacity-theme-1.xml && ln -s metacity-theme-3.xml metacity-theme-2.xml
|
||||
|
||||
mkdir -p "${THEME_DIR}/xfwm4"
|
||||
cp -r "${SRC_DIR}/assets/xfwm4/assets${ELSE_LIGHT:-}${ctype}${window}/"*.png "${THEME_DIR}/xfwm4"
|
||||
cp -r "${SRC_DIR}/main/xfwm4/themerc${ELSE_LIGHT:-}" "${THEME_DIR}/xfwm4/themerc"
|
||||
mkdir -p "${THEME_DIR}-hdpi/xfwm4"
|
||||
cp -r "${SRC_DIR}/assets/xfwm4/assets${ELSE_LIGHT:-}${ctype}${window}-hdpi/"*.png "${THEME_DIR}-hdpi/xfwm4"
|
||||
cp -r "${SRC_DIR}/main/xfwm4/themerc${ELSE_LIGHT:-}" "${THEME_DIR}-hdpi/xfwm4/themerc"
|
||||
sed -i "s/button_offset=6/button_offset=9/" "${THEME_DIR}-hdpi/xfwm4/themerc"
|
||||
mkdir -p "${THEME_DIR}-xhdpi/xfwm4"
|
||||
cp -r "${SRC_DIR}/assets/xfwm4/assets${ELSE_LIGHT:-}${ctype}${window}-xhdpi/"*.png "${THEME_DIR}-xhdpi/xfwm4"
|
||||
cp -r "${SRC_DIR}/main/xfwm4/themerc${ELSE_LIGHT:-}" "${THEME_DIR}-xhdpi/xfwm4/themerc"
|
||||
sed -i "s/button_offset=6/button_offset=12/" "${THEME_DIR}-xhdpi/xfwm4/themerc"
|
||||
|
||||
mkdir -p "${THEME_DIR}/plank"
|
||||
if [[ "$color" == '-Light' ]]; then
|
||||
cp -r "${SRC_DIR}/main/plank/theme-Light${ctype}/"* "${THEME_DIR}/plank"
|
||||
else
|
||||
cp -r "${SRC_DIR}/main/plank/theme-Dark${ctype}/"* "${THEME_DIR}/plank"
|
||||
fi
|
||||
}
|
||||
|
||||
themes=()
|
||||
colors=()
|
||||
sizes=()
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "${1}" in
|
||||
-d|--dest)
|
||||
dest="${2}"
|
||||
if [[ ! -d "${dest}" ]]; then
|
||||
echo "Destination directory does not exist. Let's make a new one..."
|
||||
mkdir -p ${dest}
|
||||
fi
|
||||
shift 2
|
||||
;;
|
||||
-n|--name)
|
||||
name="${2}"
|
||||
shift 2
|
||||
;;
|
||||
-c|--color)
|
||||
shift
|
||||
for color in "${@}"; do
|
||||
case "${color}" in
|
||||
standard)
|
||||
colors+=("${COLOR_VARIANTS[0]}")
|
||||
shift
|
||||
;;
|
||||
light)
|
||||
colors+=("${COLOR_VARIANTS[1]}")
|
||||
shift
|
||||
;;
|
||||
dark)
|
||||
colors+=("${COLOR_VARIANTS[2]}")
|
||||
shift
|
||||
;;
|
||||
-*|--*)
|
||||
break
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: Unrecognized color variant '$1'."
|
||||
echo "Try '$0 --help' for more information."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
;;
|
||||
-t|--theme)
|
||||
accent='true'
|
||||
shift
|
||||
for variant in "$@"; do
|
||||
case "$variant" in
|
||||
default)
|
||||
themes+=("${THEME_VARIANTS[0]}")
|
||||
shift
|
||||
;;
|
||||
purple)
|
||||
themes+=("${THEME_VARIANTS[1]}")
|
||||
shift
|
||||
;;
|
||||
pink)
|
||||
themes+=("${THEME_VARIANTS[2]}")
|
||||
shift
|
||||
;;
|
||||
red)
|
||||
themes+=("${THEME_VARIANTS[3]}")
|
||||
shift
|
||||
;;
|
||||
orange)
|
||||
themes+=("${THEME_VARIANTS[4]}")
|
||||
shift
|
||||
;;
|
||||
yellow)
|
||||
themes+=("${THEME_VARIANTS[5]}")
|
||||
shift
|
||||
;;
|
||||
green)
|
||||
themes+=("${THEME_VARIANTS[6]}")
|
||||
shift
|
||||
;;
|
||||
teal)
|
||||
themes+=("${THEME_VARIANTS[7]}")
|
||||
shift
|
||||
;;
|
||||
grey)
|
||||
themes+=("${THEME_VARIANTS[8]}")
|
||||
shift
|
||||
;;
|
||||
all)
|
||||
themes+=("${THEME_VARIANTS[@]}")
|
||||
shift
|
||||
;;
|
||||
-*)
|
||||
break
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: Unrecognized theme variant '$1'."
|
||||
echo "Try '$0 --help' for more information."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
;;
|
||||
-s|--size)
|
||||
shift
|
||||
for variant in "$@"; do
|
||||
case "$variant" in
|
||||
standard)
|
||||
sizes+=("${SIZE_VARIANTS[0]}")
|
||||
shift
|
||||
;;
|
||||
compact)
|
||||
sizes+=("${SIZE_VARIANTS[1]}")
|
||||
compact='true'
|
||||
shift
|
||||
;;
|
||||
-*)
|
||||
break
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: Unrecognized size variant '${1:-}'."
|
||||
echo "Try '$0 --help' for more information."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
;;
|
||||
--tweaks)
|
||||
shift
|
||||
for variant in $@; do
|
||||
case "$variant" in
|
||||
nord)
|
||||
nord="true"
|
||||
ctype="-Nord"
|
||||
echo -e "Install Nord ColorScheme version! ..."
|
||||
shift
|
||||
;;
|
||||
dracula)
|
||||
dracula="true"
|
||||
ctype="-Dracula"
|
||||
echo -e "Install Dracula ColorScheme version! ..."
|
||||
shift
|
||||
;;
|
||||
black)
|
||||
blackness="true"
|
||||
echo -e "Install Blackness version! ..."
|
||||
shift
|
||||
;;
|
||||
rimless)
|
||||
rimless="true"
|
||||
echo -e "Install Rimless version! ..."
|
||||
shift
|
||||
;;
|
||||
normal)
|
||||
normal="true"
|
||||
window="-Normal"
|
||||
echo -e "Install Normal window button version! ..."
|
||||
shift
|
||||
;;
|
||||
-*)
|
||||
break
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: Unrecognized tweaks variant '$1'."
|
||||
echo "Try '$0 --help' for more information."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
;;
|
||||
-h|--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: Unrecognized installation option '$1'."
|
||||
echo "Try '$0 --help' for more information."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ "${#themes[@]}" -eq 0 ]] ; then
|
||||
themes=("${THEME_VARIANTS[0]}")
|
||||
fi
|
||||
|
||||
if [[ "${#colors[@]}" -eq 0 ]] ; then
|
||||
colors=("${COLOR_VARIANTS[@]}")
|
||||
fi
|
||||
|
||||
if [[ "${#sizes[@]}" -eq 0 ]] ; then
|
||||
sizes=("${SIZE_VARIANTS[0]}")
|
||||
fi
|
||||
|
||||
# Check command avalibility
|
||||
function has_command() {
|
||||
command -v $1 > /dev/null
|
||||
}
|
||||
|
||||
# Install needed packages
|
||||
install_package() {
|
||||
if [ ! "$(which sassc 2> /dev/null)" ]; then
|
||||
echo sassc needs to be installed to generate the css.
|
||||
if has_command zypper; then
|
||||
sudo zypper in sassc
|
||||
elif has_command apt-get; then
|
||||
sudo apt-get install sassc
|
||||
elif has_command dnf; then
|
||||
sudo dnf install sassc
|
||||
elif has_command dnf; then
|
||||
sudo dnf install sassc
|
||||
elif has_command pacman; then
|
||||
sudo pacman -S --noconfirm sassc
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
tweaks_temp() {
|
||||
cp -rf ${SRC_DIR}/sass/_tweaks.scss ${SRC_DIR}/sass/_tweaks-temp.scss
|
||||
}
|
||||
|
||||
compact_size() {
|
||||
sed -i "/\$compact:/s/false/true/" ${SRC_DIR}/sass/_tweaks-temp.scss
|
||||
}
|
||||
|
||||
nord_color() {
|
||||
sed -i "/\@import/s/color-palette-default/color-palette-nord/" ${SRC_DIR}/sass/_tweaks-temp.scss
|
||||
sed -i "/\$colorscheme:/s/default/nord/" ${SRC_DIR}/sass/_tweaks-temp.scss
|
||||
}
|
||||
|
||||
dracula_color() {
|
||||
sed -i "/\@import/s/color-palette-default/color-palette-dracula/" ${SRC_DIR}/sass/_tweaks-temp.scss
|
||||
sed -i "/\$colorscheme:/s/default/dracula/" ${SRC_DIR}/sass/_tweaks-temp.scss
|
||||
}
|
||||
|
||||
blackness_color() {
|
||||
sed -i "/\$blackness:/s/false/true/" ${SRC_DIR}/sass/_tweaks-temp.scss
|
||||
}
|
||||
|
||||
border_rimless() {
|
||||
sed -i "/\$rimless:/s/false/true/" ${SRC_DIR}/sass/_tweaks-temp.scss
|
||||
}
|
||||
|
||||
normal_winbutton() {
|
||||
sed -i "/\$window_button:/s/mac/normal/" ${SRC_DIR}/sass/_tweaks-temp.scss
|
||||
}
|
||||
|
||||
gnome_shell_version() {
|
||||
cp -rf ${SRC_DIR}/sass/gnome-shell/_common.scss ${SRC_DIR}/sass/gnome-shell/_common-temp.scss
|
||||
|
||||
sed -i "/\widgets/s/40-0/${GS_VERSION}/" ${SRC_DIR}/sass/gnome-shell/_common-temp.scss
|
||||
|
||||
if [[ "${GS_VERSION}" == '3-28' ]]; then
|
||||
sed -i "/\extensions/s/40-0/${GS_VERSION}/" ${SRC_DIR}/sass/gnome-shell/_common-temp.scss
|
||||
fi
|
||||
}
|
||||
|
||||
theme_color() {
|
||||
if [[ "$theme" != '' ]]; then
|
||||
case "$theme" in
|
||||
-Purple)
|
||||
theme_color='purple'
|
||||
;;
|
||||
-Pink)
|
||||
theme_color='pink'
|
||||
;;
|
||||
-Red)
|
||||
theme_color='red'
|
||||
;;
|
||||
-Orange)
|
||||
theme_color='orange'
|
||||
;;
|
||||
-Yellow)
|
||||
theme_color='yellow'
|
||||
;;
|
||||
-Green)
|
||||
theme_color='green'
|
||||
;;
|
||||
-Teal)
|
||||
theme_color='teal'
|
||||
;;
|
||||
-Grey)
|
||||
theme_color='grey'
|
||||
;;
|
||||
esac
|
||||
tweaks_temp
|
||||
sed -i "/\$theme:/s/default/${theme_color}/" ${SRC_DIR}/sass/_tweaks-temp.scss
|
||||
fi
|
||||
}
|
||||
|
||||
theme_tweaks() {
|
||||
if [[ "$accent" = "true" ]] ; then
|
||||
theme_color
|
||||
fi
|
||||
|
||||
if [[ "$compact" = "true" ]] ; then
|
||||
compact_size
|
||||
fi
|
||||
|
||||
if [[ "$nord" = "true" ]] ; then
|
||||
nord_color
|
||||
fi
|
||||
|
||||
if [[ "$dracula" = "true" ]] ; then
|
||||
dracula_color
|
||||
fi
|
||||
|
||||
if [[ "$blackness" = "true" ]] ; then
|
||||
blackness_color
|
||||
fi
|
||||
|
||||
if [[ "$rimless" = "true" ]] ; then
|
||||
border_rimless
|
||||
fi
|
||||
|
||||
if [[ "$normal" = "true" ]] ; then
|
||||
normal_winbutton
|
||||
fi
|
||||
}
|
||||
|
||||
install_theme() {
|
||||
for theme in "${themes[@]}"; do
|
||||
for color in "${colors[@]}"; do
|
||||
for size in "${sizes[@]}"; do
|
||||
install "${dest:-$DEST_DIR}" "${_name:-$THEME_NAME}" "$theme" "$color" "$size" "$ctype" "$window"
|
||||
make_gtkrc "${dest:-$DEST_DIR}" "${_name:-$THEME_NAME}" "$theme" "$color" "$size" "$ctype" "$window"
|
||||
done
|
||||
done
|
||||
done
|
||||
|
||||
if [[ "$DESKTOP_SESSION" == 'xfce' ]]; then
|
||||
sed -i "s|.*menu-opacity=.*|menu-opacity=95|" "$HOME/.config/xfce4/panel/whiskermenu"*".rc"
|
||||
fi
|
||||
}
|
||||
|
||||
./clean-old-theme.sh
|
||||
|
||||
install_package && tweaks_temp && gnome_shell_version && install_theme
|
||||
|
||||
echo
|
||||
echo Done.
|
87
patches/colloid/palette.tera
Normal file
@@ -0,0 +1,87 @@
|
||||
---
|
||||
whiskers:
|
||||
version: 2.1.0
|
||||
matrix:
|
||||
- flavor
|
||||
filename: 'sass-palette-{{ flavor.identifier }}.patch'
|
||||
---
|
||||
{%- set palette = flavor.colors -%}
|
||||
diff --git a/src/sass/_color-palette-catppuccin-{{ flavor.identifier }}.scss b/src/sass/_color-palette-catppuccin-{{ flavor.identifier }}.scss
|
||||
new file mode 100644
|
||||
index 00000000..8a905942
|
||||
--- /dev/null
|
||||
+++ b/src/sass/_color-palette-catppuccin-{{ flavor.identifier }}.scss
|
||||
@@ -0,0 +1,72 @@
|
||||
+// Default Theme Color Palette
|
||||
+
|
||||
+// Red
|
||||
+$red-light: #{{ palette.red.hex }};
|
||||
+$red-dark: #{{ palette.red | mod(lightness=30) | get(key="hex") }};
|
||||
+
|
||||
+// Pink
|
||||
+$pink-light: #{{ palette.pink.hex }};
|
||||
+$pink-dark: #{{ palette.pink | mod(lightness=30) | get(key="hex") }};
|
||||
+
|
||||
+// Purple
|
||||
+$purple-light: #{{ palette.mauve.hex }};
|
||||
+$purple-dark: #{{ palette.mauve | mod(lightness=30) | get(key="hex") }};
|
||||
+
|
||||
+// Blue
|
||||
+$blue-light: #{{ palette.blue.hex }};
|
||||
+$blue-dark: #{{ palette.blue | mod(lightness=30) | get(key="hex") }};
|
||||
+
|
||||
+// Teal
|
||||
+$teal-light: #{{ palette.teal.hex }};
|
||||
+$teal-dark: #{{ palette.teal | mod(lightness=30) | get(key="hex") }};
|
||||
+
|
||||
+// Green
|
||||
+$green-light: #{{ palette.green.hex }};
|
||||
+$green-dark: #{{ palette.green | mod(lightness=30) | get(key="hex") }};
|
||||
+
|
||||
+// Yellow
|
||||
+$yellow-light: #{{ palette.yellow.hex }};
|
||||
+$yellow-dark: #{{ palette.yellow | mod(lightness=30) | get(key="hex") }};
|
||||
+
|
||||
+// Orange
|
||||
+$orange-light: #{{ palette.peach.hex }};
|
||||
+$orange-dark: #{{ palette.peach | mod(lightness=30) | get(key="hex") }};
|
||||
+
|
||||
+// Grey
|
||||
+$grey-050: #{{ palette.text.hex }};
|
||||
+$grey-100: #{{ palette.subtext1.hex }};
|
||||
+$grey-150: #{{ palette.subtext1.hex }};
|
||||
+$grey-200: #{{ palette.subtext0.hex }};
|
||||
+$grey-250: #{{ palette.subtext0.hex }};
|
||||
+$grey-300: #{{ palette.overlay1.hex }};
|
||||
+$grey-350: #{{ palette.overlay1.hex }};
|
||||
+$grey-400: #{{ palette.overlay0.hex }};
|
||||
+$grey-450: #{{ palette.overlay0.hex }};
|
||||
+$grey-500: #{{ palette.surface2.hex }};
|
||||
+$grey-550: #{{ palette.surface2.hex }};
|
||||
+$grey-600: #{{ palette.surface1.hex }};
|
||||
+$grey-650: #{{ palette.surface1.hex }};
|
||||
+$grey-700: #{{ palette.surface0.hex }};
|
||||
+$grey-750: #{{ palette.surface0.hex }};
|
||||
+$grey-800: #{{ palette.base.hex }};
|
||||
+$grey-850: #{{ palette.base.hex }};
|
||||
+$grey-900: #{{ palette.crust.hex }};
|
||||
+$grey-950: #{{ palette.crust.hex }};
|
||||
+
|
||||
+// White
|
||||
+$white: #FFFFFF;
|
||||
+
|
||||
+// Black
|
||||
+$black: #000000;
|
||||
+
|
||||
+// Button
|
||||
+$button-close: #{{ palette.red.hex }};
|
||||
+$button-max: #{{ palette.green.hex }};
|
||||
+$button-min: #{{ palette.yellow.hex }};
|
||||
+
|
||||
+// Link
|
||||
+$links: #{{ palette.sky.hex }};
|
||||
+
|
||||
+// Theme
|
||||
+$default-light: $purple-light;
|
||||
+$default-dark: $purple-dark;
|
||||
{{ '' }}
|
70
patches/colloid/plank-dark.patch
Normal file
@@ -0,0 +1,70 @@
|
||||
diff --git a/src/main/plank/theme-Dark-Catppuccin/dock.theme b/src/main/plank/theme-Dark-Catppuccin/dock.theme
|
||||
new file mode 100644
|
||||
index 00000000..26a6a747
|
||||
--- /dev/null
|
||||
+++ b/src/main/plank/theme-Dark-Catppuccin/dock.theme
|
||||
@@ -0,0 +1,64 @@
|
||||
+#This file based on:
|
||||
+#https://git.launchpad.net/plank/tree/data/themes/Default/dock.theme
|
||||
+
|
||||
+[PlankTheme]
|
||||
+#The roundness of the top corners.
|
||||
+TopRoundness=16
|
||||
+#The roundness of the bottom corners.
|
||||
+BottomRoundness=0
|
||||
+#The thickness (in pixels) of lines drawn.
|
||||
+LineWidth=0
|
||||
+#The color (RGBA) of the outer stroke.
|
||||
+OuterStrokeColor=0;;0;;0;;0
|
||||
+#The starting color (RGBA) of the fill gradient.
|
||||
+FillStartColor=33;;33;;33;;255
|
||||
+#The ending color (RGBA) of the fill gradient.
|
||||
+FillEndColor=33;;33;;33;;255
|
||||
+#The color (RGBA) of the inner stroke.
|
||||
+InnerStrokeColor=33;;33;;33;;255
|
||||
+
|
||||
+[PlankDockTheme]
|
||||
+#The padding on the left/right dock edges, in tenths of a percent of IconSize.
|
||||
+HorizPadding=2
|
||||
+#The padding on the top dock edge, in tenths of a percent of IconSize.
|
||||
+TopPadding=2
|
||||
+#The padding on the bottom dock edge, in tenths of a percent of IconSize.
|
||||
+BottomPadding=1
|
||||
+#The padding between items on the dock, in tenths of a percent of IconSize.
|
||||
+ItemPadding=2
|
||||
+#The size of item indicators, in tenths of a percent of IconSize.
|
||||
+IndicatorSize=5
|
||||
+#The size of the icon-shadow behind every item, in tenths of a percent of IconSize.
|
||||
+IconShadowSize=0
|
||||
+#The height (in percent of IconSize) to bounce an icon when the application sets urgent.
|
||||
+UrgentBounceHeight=1.6666666666666667
|
||||
+#The height (in percent of IconSize) to bounce an icon when launching an application.
|
||||
+LaunchBounceHeight=0.625
|
||||
+#The opacity value (0 to 1) to fade the dock to when hiding it.
|
||||
+FadeOpacity=1
|
||||
+#The amount of time (in ms) for click animations.
|
||||
+ClickTime=0
|
||||
+#The amount of time (in ms) to bounce an urgent icon.
|
||||
+UrgentBounceTime=600
|
||||
+#The amount of time (in ms) to bounce an icon when launching an application.
|
||||
+LaunchBounceTime=600
|
||||
+#The amount of time (in ms) for active window indicator animations.
|
||||
+ActiveTime=150
|
||||
+#The amount of time (in ms) to slide icons into/out of the dock.
|
||||
+SlideTime=300
|
||||
+#The time (in ms) to fade the dock in/out on a hide (if FadeOpacity is < 1).
|
||||
+FadeTime=250
|
||||
+#The time (in ms) to slide the dock in/out on a hide (if FadeOpacity is 1).
|
||||
+HideTime=250
|
||||
+#The size of the urgent glow (shown when dock is hidden), in tenths of a percent of IconSize.
|
||||
+GlowSize=30
|
||||
+#The total time (in ms) to show the hidden-dock urgent glow.
|
||||
+GlowTime=10000
|
||||
+#The time (in ms) of each pulse of the hidden-dock urgent glow.
|
||||
+GlowPulseTime=2000
|
||||
+#The hue-shift (-180 to 180) of the urgent indicator color.
|
||||
+UrgentHueShift=150
|
||||
+#The time (in ms) to move an item to its new position or its addition/removal to/from the dock.
|
||||
+ItemMoveTime=450
|
||||
+#Whether background and icons will unhide/hide with different speeds. The top-border of both will leave/hit the screen-edge at the same time.
|
||||
+CascadeHide=true
|
70
patches/colloid/plank-light.patch
Normal file
@@ -0,0 +1,70 @@
|
||||
diff --git a/src/main/plank/theme-Light-Catppuccin/dock.theme b/src/main/plank/theme-Light-Catppuccin/dock.theme
|
||||
new file mode 100644
|
||||
index 00000000..a4029c96
|
||||
--- /dev/null
|
||||
+++ b/src/main/plank/theme-Light-Catppuccin/dock.theme
|
||||
@@ -0,0 +1,64 @@
|
||||
+#This file based on:
|
||||
+#https://git.launchpad.net/plank/tree/data/themes/Default/dock.theme
|
||||
+
|
||||
+[PlankTheme]
|
||||
+#The roundness of the top corners.
|
||||
+TopRoundness=16
|
||||
+#The roundness of the bottom corners.
|
||||
+BottomRoundness=0
|
||||
+#The thickness (in pixels) of lines drawn.
|
||||
+LineWidth=0
|
||||
+#The color (RGBA) of the outer stroke.
|
||||
+OuterStrokeColor=0;;0;;0;;0
|
||||
+#The starting color (RGBA) of the fill gradient.
|
||||
+FillStartColor=242;;242;;242;;255
|
||||
+#The ending color (RGBA) of the fill gradient.
|
||||
+FillEndColor=242;;242;;242;;255
|
||||
+#The color (RGBA) of the inner stroke.
|
||||
+InnerStrokeColor=242;;242;;242;;255
|
||||
+
|
||||
+[PlankDockTheme]
|
||||
+#The padding on the left/right dock edges, in tenths of a percent of IconSize.
|
||||
+HorizPadding=2
|
||||
+#The padding on the top dock edge, in tenths of a percent of IconSize.
|
||||
+TopPadding=2
|
||||
+#The padding on the bottom dock edge, in tenths of a percent of IconSize.
|
||||
+BottomPadding=1
|
||||
+#The padding between items on the dock, in tenths of a percent of IconSize.
|
||||
+ItemPadding=2
|
||||
+#The size of item indicators, in tenths of a percent of IconSize.
|
||||
+IndicatorSize=5
|
||||
+#The size of the icon-shadow behind every item, in tenths of a percent of IconSize.
|
||||
+IconShadowSize=0
|
||||
+#The height (in percent of IconSize) to bounce an icon when the application sets urgent.
|
||||
+UrgentBounceHeight=1.6666666666666667
|
||||
+#The height (in percent of IconSize) to bounce an icon when launching an application.
|
||||
+LaunchBounceHeight=0.625
|
||||
+#The opacity value (0 to 1) to fade the dock to when hiding it.
|
||||
+FadeOpacity=1
|
||||
+#The amount of time (in ms) for click animations.
|
||||
+ClickTime=0
|
||||
+#The amount of time (in ms) to bounce an urgent icon.
|
||||
+UrgentBounceTime=600
|
||||
+#The amount of time (in ms) to bounce an icon when launching an application.
|
||||
+LaunchBounceTime=600
|
||||
+#The amount of time (in ms) for active window indicator animations.
|
||||
+ActiveTime=150
|
||||
+#The amount of time (in ms) to slide icons into/out of the dock.
|
||||
+SlideTime=300
|
||||
+#The time (in ms) to fade the dock in/out on a hide (if FadeOpacity is < 1).
|
||||
+FadeTime=250
|
||||
+#The time (in ms) to slide the dock in/out on a hide (if FadeOpacity is 1).
|
||||
+HideTime=250
|
||||
+#The size of the urgent glow (shown when dock is hidden), in tenths of a percent of IconSize.
|
||||
+GlowSize=30
|
||||
+#The total time (in ms) to show the hidden-dock urgent glow.
|
||||
+GlowTime=10000
|
||||
+#The time (in ms) of each pulse of the hidden-dock urgent glow.
|
||||
+GlowPulseTime=2000
|
||||
+#The hue-shift (-180 to 180) of the urgent indicator color.
|
||||
+UrgentHueShift=150
|
||||
+#The time (in ms) to move an item to its new position or its addition/removal to/from the dock.
|
||||
+ItemMoveTime=450
|
||||
+#Whether background and icons will unhide/hide with different speeds. The top-border of both will leave/hit the screen-edge at the same time.
|
||||
+CascadeHide=true
|
47
patches/colloid/sass-colors.patch
Normal file
@@ -0,0 +1,47 @@
|
||||
diff --git a/src/sass/_colors.scss b/src/sass/_colors.scss
|
||||
index e8366fa0..97fa670c 100644
|
||||
--- a/src/sass/_colors.scss
|
||||
+++ b/src/sass/_colors.scss
|
||||
@@ -57,9 +57,8 @@
|
||||
@else { @return rgba($white, 0.1); }
|
||||
}
|
||||
|
||||
-@function theme($color) {
|
||||
+@function theme() {
|
||||
@if ($variant == 'light') {
|
||||
- @if ($theme == 'default') { @return $default-dark; }
|
||||
@if ($theme == 'purple') { @return $purple-dark; }
|
||||
@if ($theme == 'pink') { @return $pink-dark; }
|
||||
@if ($theme == 'red') { @return $red-dark; }
|
||||
@@ -68,8 +67,9 @@
|
||||
@if ($theme == 'green') { @return $green-dark; }
|
||||
@if ($theme == 'teal') { @return $teal-dark; }
|
||||
@if ($theme == 'grey') { @return $grey-600; }
|
||||
+
|
||||
+ @return $default-dark;
|
||||
} @else {
|
||||
- @if ($theme == 'default') { @return $default-light; }
|
||||
@if ($theme == 'purple') { @return $purple-light; }
|
||||
@if ($theme == 'pink') { @return $pink-light; }
|
||||
@if ($theme == 'red') { @return $red-light; }
|
||||
@@ -78,6 +78,8 @@
|
||||
@if ($theme == 'green') { @return $green-light; }
|
||||
@if ($theme == 'teal') { @return $teal-light; }
|
||||
@if ($theme == 'grey') { @return $grey-200; }
|
||||
+
|
||||
+ @return $default-light;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,9 +115,9 @@
|
||||
// Basic colors
|
||||
//
|
||||
|
||||
-$primary: theme(color);
|
||||
+$primary: theme();
|
||||
$drop_target_color: $orange-dark;
|
||||
-$indicator: theme(color);
|
||||
+$indicator: theme();
|
||||
$titlebar-indicator: if($variant == 'dark', currentColor, $primary);
|
||||
$inverse-indicator: if($theme == 'grey', $white, $primary);
|
||||
$applet-primary: if($theme == 'grey' and variant == 'light' and $topbar == 'dark', $grey-200, $primary);
|
78
patches/colloid/sass-palette-frappe.patch
Normal file
@@ -0,0 +1,78 @@
|
||||
diff --git a/src/sass/_color-palette-catppuccin-frappe.scss b/src/sass/_color-palette-catppuccin-frappe.scss
|
||||
new file mode 100644
|
||||
index 00000000..8a905942
|
||||
--- /dev/null
|
||||
+++ b/src/sass/_color-palette-catppuccin-frappe.scss
|
||||
@@ -0,0 +1,72 @@
|
||||
+// Default Theme Color Palette
|
||||
+
|
||||
+// Red
|
||||
+$red-light: #e78284;
|
||||
+$red-dark: #81191b;
|
||||
+
|
||||
+// Pink
|
||||
+$pink-light: #f4b8e4;
|
||||
+$pink-dark: #851567;
|
||||
+
|
||||
+// Purple
|
||||
+$purple-light: #ca9ee6;
|
||||
+$purple-dark: #58207a;
|
||||
+
|
||||
+// Blue
|
||||
+$blue-light: #8caaee;
|
||||
+$blue-dark: #143686;
|
||||
+
|
||||
+// Teal
|
||||
+$teal-light: #81c8be;
|
||||
+$teal-dark: #2f6b63;
|
||||
+
|
||||
+// Green
|
||||
+$green-light: #a6d189;
|
||||
+$green-dark: #466f2b;
|
||||
+
|
||||
+// Yellow
|
||||
+$yellow-light: #e5c890;
|
||||
+$yellow-dark: #7d5d1d;
|
||||
+
|
||||
+// Orange
|
||||
+$orange-light: #ef9f76;
|
||||
+$orange-dark: #8a3910;
|
||||
+
|
||||
+// Grey
|
||||
+$grey-050: #c6d0f5;
|
||||
+$grey-100: #b5bfe2;
|
||||
+$grey-150: #b5bfe2;
|
||||
+$grey-200: #a5adce;
|
||||
+$grey-250: #a5adce;
|
||||
+$grey-300: #838ba7;
|
||||
+$grey-350: #838ba7;
|
||||
+$grey-400: #737994;
|
||||
+$grey-450: #737994;
|
||||
+$grey-500: #626880;
|
||||
+$grey-550: #626880;
|
||||
+$grey-600: #51576d;
|
||||
+$grey-650: #51576d;
|
||||
+$grey-700: #414559;
|
||||
+$grey-750: #414559;
|
||||
+$grey-800: #303446;
|
||||
+$grey-850: #303446;
|
||||
+$grey-900: #232634;
|
||||
+$grey-950: #232634;
|
||||
+
|
||||
+// White
|
||||
+$white: #FFFFFF;
|
||||
+
|
||||
+// Black
|
||||
+$black: #000000;
|
||||
+
|
||||
+// Button
|
||||
+$button-close: #e78284;
|
||||
+$button-max: #a6d189;
|
||||
+$button-min: #e5c890;
|
||||
+
|
||||
+// Link
|
||||
+$links: #99d1db;
|
||||
+
|
||||
+// Theme
|
||||
+$default-light: $purple-light;
|
||||
+$default-dark: $purple-dark;
|
78
patches/colloid/sass-palette-latte.patch
Normal file
@@ -0,0 +1,78 @@
|
||||
diff --git a/src/sass/_color-palette-catppuccin-latte.scss b/src/sass/_color-palette-catppuccin-latte.scss
|
||||
new file mode 100644
|
||||
index 00000000..8a905942
|
||||
--- /dev/null
|
||||
+++ b/src/sass/_color-palette-catppuccin-latte.scss
|
||||
@@ -0,0 +1,72 @@
|
||||
+// Default Theme Color Palette
|
||||
+
|
||||
+// Red
|
||||
+$red-light: #d20f39;
|
||||
+$red-dark: #900a27;
|
||||
+
|
||||
+// Pink
|
||||
+$pink-light: #ea76cb;
|
||||
+$pink-dark: #851567;
|
||||
+
|
||||
+// Purple
|
||||
+$purple-light: #8839ef;
|
||||
+$purple-dark: #440b8f;
|
||||
+
|
||||
+// Blue
|
||||
+$blue-light: #1e66f5;
|
||||
+$blue-dark: #073693;
|
||||
+
|
||||
+// Teal
|
||||
+$teal-light: #179299;
|
||||
+$teal-dark: #148086;
|
||||
+
|
||||
+// Green
|
||||
+$green-light: #40a02b;
|
||||
+$green-dark: #317921;
|
||||
+
|
||||
+// Yellow
|
||||
+$yellow-light: #df8e1d;
|
||||
+$yellow-dark: #885712;
|
||||
+
|
||||
+// Orange
|
||||
+$orange-light: #fe640b;
|
||||
+$orange-dark: #993901;
|
||||
+
|
||||
+// Grey
|
||||
+$grey-050: #4c4f69;
|
||||
+$grey-100: #5c5f77;
|
||||
+$grey-150: #5c5f77;
|
||||
+$grey-200: #6c6f85;
|
||||
+$grey-250: #6c6f85;
|
||||
+$grey-300: #8c8fa1;
|
||||
+$grey-350: #8c8fa1;
|
||||
+$grey-400: #9ca0b0;
|
||||
+$grey-450: #9ca0b0;
|
||||
+$grey-500: #acb0be;
|
||||
+$grey-550: #acb0be;
|
||||
+$grey-600: #bcc0cc;
|
||||
+$grey-650: #bcc0cc;
|
||||
+$grey-700: #ccd0da;
|
||||
+$grey-750: #ccd0da;
|
||||
+$grey-800: #eff1f5;
|
||||
+$grey-850: #eff1f5;
|
||||
+$grey-900: #dce0e8;
|
||||
+$grey-950: #dce0e8;
|
||||
+
|
||||
+// White
|
||||
+$white: #FFFFFF;
|
||||
+
|
||||
+// Black
|
||||
+$black: #000000;
|
||||
+
|
||||
+// Button
|
||||
+$button-close: #d20f39;
|
||||
+$button-max: #40a02b;
|
||||
+$button-min: #df8e1d;
|
||||
+
|
||||
+// Link
|
||||
+$links: #04a5e5;
|
||||
+
|
||||
+// Theme
|
||||
+$default-light: $purple-light;
|
||||
+$default-dark: $purple-dark;
|
78
patches/colloid/sass-palette-macchiato.patch
Normal file
@@ -0,0 +1,78 @@
|
||||
diff --git a/src/sass/_color-palette-catppuccin-macchiato.scss b/src/sass/_color-palette-catppuccin-macchiato.scss
|
||||
new file mode 100644
|
||||
index 00000000..8a905942
|
||||
--- /dev/null
|
||||
+++ b/src/sass/_color-palette-catppuccin-macchiato.scss
|
||||
@@ -0,0 +1,72 @@
|
||||
+// Default Theme Color Palette
|
||||
+
|
||||
+// Red
|
||||
+$red-light: #ed8796;
|
||||
+$red-dark: #861425;
|
||||
+
|
||||
+// Pink
|
||||
+$pink-light: #f5bde6;
|
||||
+$pink-dark: #861467;
|
||||
+
|
||||
+// Purple
|
||||
+$purple-light: #c6a0f6;
|
||||
+$purple-dark: #470d8d;
|
||||
+
|
||||
+// Blue
|
||||
+$blue-light: #8aadf4;
|
||||
+$blue-dark: #0d388d;
|
||||
+
|
||||
+// Teal
|
||||
+$teal-light: #8bd5ca;
|
||||
+$teal-dark: #297166;
|
||||
+
|
||||
+// Green
|
||||
+$green-light: #a6da95;
|
||||
+$green-dark: #3a7228;
|
||||
+
|
||||
+// Yellow
|
||||
+$yellow-light: #eed49f;
|
||||
+$yellow-dark: #835f17;
|
||||
+
|
||||
+// Orange
|
||||
+$orange-light: #f5a97f;
|
||||
+$orange-dark: #8f390b;
|
||||
+
|
||||
+// Grey
|
||||
+$grey-050: #cad3f5;
|
||||
+$grey-100: #b8c0e0;
|
||||
+$grey-150: #b8c0e0;
|
||||
+$grey-200: #a5adcb;
|
||||
+$grey-250: #a5adcb;
|
||||
+$grey-300: #8087a2;
|
||||
+$grey-350: #8087a2;
|
||||
+$grey-400: #6e738d;
|
||||
+$grey-450: #6e738d;
|
||||
+$grey-500: #5b6078;
|
||||
+$grey-550: #5b6078;
|
||||
+$grey-600: #494d64;
|
||||
+$grey-650: #494d64;
|
||||
+$grey-700: #363a4f;
|
||||
+$grey-750: #363a4f;
|
||||
+$grey-800: #24273a;
|
||||
+$grey-850: #24273a;
|
||||
+$grey-900: #181926;
|
||||
+$grey-950: #181926;
|
||||
+
|
||||
+// White
|
||||
+$white: #FFFFFF;
|
||||
+
|
||||
+// Black
|
||||
+$black: #000000;
|
||||
+
|
||||
+// Button
|
||||
+$button-close: #ed8796;
|
||||
+$button-max: #a6da95;
|
||||
+$button-min: #eed49f;
|
||||
+
|
||||
+// Link
|
||||
+$links: #91d7e3;
|
||||
+
|
||||
+// Theme
|
||||
+$default-light: $purple-light;
|
||||
+$default-dark: $purple-dark;
|
78
patches/colloid/sass-palette-mocha.patch
Normal file
@@ -0,0 +1,78 @@
|
||||
diff --git a/src/sass/_color-palette-catppuccin-mocha.scss b/src/sass/_color-palette-catppuccin-mocha.scss
|
||||
new file mode 100644
|
||||
index 00000000..8a905942
|
||||
--- /dev/null
|
||||
+++ b/src/sass/_color-palette-catppuccin-mocha.scss
|
||||
@@ -0,0 +1,72 @@
|
||||
+// Default Theme Color Palette
|
||||
+
|
||||
+// Red
|
||||
+$red-light: #f38ba8;
|
||||
+$red-dark: #8c0e32;
|
||||
+
|
||||
+// Pink
|
||||
+$pink-light: #f5c2e7;
|
||||
+$pink-dark: #841667;
|
||||
+
|
||||
+// Purple
|
||||
+$purple-light: #cba6f7;
|
||||
+$purple-dark: #470d8d;
|
||||
+
|
||||
+// Blue
|
||||
+$blue-light: #89b4fa;
|
||||
+$blue-dark: #063d94;
|
||||
+
|
||||
+// Teal
|
||||
+$teal-light: #94e2d5;
|
||||
+$teal-dark: #21796a;
|
||||
+
|
||||
+// Green
|
||||
+$green-light: #a6e3a1;
|
||||
+$green-dark: #2a7723;
|
||||
+
|
||||
+// Yellow
|
||||
+$yellow-light: #f9e2af;
|
||||
+$yellow-dark: #8f650b;
|
||||
+
|
||||
+// Orange
|
||||
+$orange-light: #fab387;
|
||||
+$orange-dark: #943c06;
|
||||
+
|
||||
+// Grey
|
||||
+$grey-050: #cdd6f4;
|
||||
+$grey-100: #bac2de;
|
||||
+$grey-150: #bac2de;
|
||||
+$grey-200: #a6adc8;
|
||||
+$grey-250: #a6adc8;
|
||||
+$grey-300: #7f849c;
|
||||
+$grey-350: #7f849c;
|
||||
+$grey-400: #6c7086;
|
||||
+$grey-450: #6c7086;
|
||||
+$grey-500: #585b70;
|
||||
+$grey-550: #585b70;
|
||||
+$grey-600: #45475a;
|
||||
+$grey-650: #45475a;
|
||||
+$grey-700: #313244;
|
||||
+$grey-750: #313244;
|
||||
+$grey-800: #1e1e2e;
|
||||
+$grey-850: #1e1e2e;
|
||||
+$grey-900: #11111b;
|
||||
+$grey-950: #11111b;
|
||||
+
|
||||
+// White
|
||||
+$white: #FFFFFF;
|
||||
+
|
||||
+// Black
|
||||
+$black: #000000;
|
||||
+
|
||||
+// Button
|
||||
+$button-close: #f38ba8;
|
||||
+$button-max: #a6e3a1;
|
||||
+$button-min: #f9e2af;
|
||||
+
|
||||
+// Link
|
||||
+$links: #89dceb;
|
||||
+
|
||||
+// Theme
|
||||
+$default-light: $purple-light;
|
||||
+$default-dark: $purple-dark;
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB |
1543
patches/xfwm4/assets-Catppuccin-macchiato-Normal.svg
Normal file
After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 49 KiB |
1546
patches/xfwm4/assets-Light-Catppuccin-macchiato-Normal.svg
Normal file
After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 49 KiB |
1546
patches/xfwm4/assets-Light-Catppuccin-mocha-Normal.svg
Normal file
After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 49 KiB |
1
requirements.txt
Normal file
@@ -0,0 +1 @@
|
||||
catppuccin>=2.0.0
|
11
shell.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{ pkgs ? import <nixpkgs> { } }:
|
||||
|
||||
pkgs.mkShell {
|
||||
name = "dev-shell";
|
||||
buildInputs = with pkgs; [
|
||||
python311
|
||||
python311Packages.catppuccin
|
||||
sassc
|
||||
];
|
||||
}
|
||||
|
@@ -1,56 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
version="1.1"
|
||||
id="svg4"
|
||||
sodipodi:docname="calendar-arrow-left.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<metadata
|
||||
id="metadata10">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs8" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="704"
|
||||
id="namedview6"
|
||||
showgrid="false"
|
||||
inkscape:zoom="29.5"
|
||||
inkscape:cx="13.680381"
|
||||
inkscape:cy="6.1418434"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4" />
|
||||
<path
|
||||
d="M10 3v10L5 8z"
|
||||
fill="#000000"
|
||||
opacity="0.54"
|
||||
id="path2"
|
||||
style="fill:#e6e6e6" />
|
||||
</svg>
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -1,56 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
version="1.1"
|
||||
id="svg4"
|
||||
sodipodi:docname="calendar-arrow-right.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<metadata
|
||||
id="metadata10">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs8" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="704"
|
||||
id="namedview6"
|
||||
showgrid="false"
|
||||
inkscape:zoom="14.75"
|
||||
inkscape:cx="8"
|
||||
inkscape:cy="8"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4" />
|
||||
<path
|
||||
d="M6 3v10l5-5z"
|
||||
fill="#000000"
|
||||
opacity="0.54"
|
||||
id="path2"
|
||||
style="fill:#e6e6e6" />
|
||||
</svg>
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -1,3 +0,0 @@
|
||||
<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="12" cy="12" r="10" fill="#ffffff" opacity=".12"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 168 B |
@@ -1,3 +0,0 @@
|
||||
<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="12" cy="12" r="10" fill="#ffffff" opacity=".12"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 168 B |
@@ -1,4 +0,0 @@
|
||||
<svg width="40" height="20" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect transform="scale(-1,1)" x="-40" y="-.019988" width="40" height="20" rx="10" ry="10" fill="#ffffff" opacity=".35" stroke-width="0" style="paint-order:stroke fill markers"/>
|
||||
<circle cx="9.98" cy="9.98" r="8.98" fill="#ffffff" stroke-width="0" style="paint-order:stroke fill markers"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 376 B |
@@ -1,6 +0,0 @@
|
||||
<svg width="400" height="120" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="translate(0 -932.36)">
|
||||
<rect x="10" y="942.36" width="380" height="160" rx="18" ry="18" fill="#4d4d4d" stroke-width="0"/>
|
||||
<path class="ColorScheme-Text" d="m200 964.36c-4.4183 0-8 3.5817-8 8h-16v4h48v-4h-16c0-4.4183-3.5817-8-8-8zm0 4c2.2091 1e-5 4 1.7909 4 4h-8c1e-5 -2.2091 1.7909-4 4-4zm-20 12v32c0 4.4321 3.5679 8.0001 8 8.0001h24c4.4321 0 8-3.568 8-8.0001v-32h-38zm4 4h32v28c0 2.2161-1.7839 4.0001-4 4.0001h-24c-2.2161 0-4-1.784-4-4.0001z" fill="#ececec"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 573 B |
@@ -1,56 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
version="1.1"
|
||||
id="svg4"
|
||||
sodipodi:docname="calendar-arrow-left.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<metadata
|
||||
id="metadata10">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs8" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="704"
|
||||
id="namedview6"
|
||||
showgrid="false"
|
||||
inkscape:zoom="29.5"
|
||||
inkscape:cx="13.680381"
|
||||
inkscape:cy="6.1418434"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4" />
|
||||
<path
|
||||
d="M10 3v10L5 8z"
|
||||
fill="#000000"
|
||||
opacity="0.54"
|
||||
id="path2"
|
||||
style="fill:#e6e6e6" />
|
||||
</svg>
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -1,56 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
version="1.1"
|
||||
id="svg4"
|
||||
sodipodi:docname="calendar-arrow-right.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<metadata
|
||||
id="metadata10">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs8" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="704"
|
||||
id="namedview6"
|
||||
showgrid="false"
|
||||
inkscape:zoom="14.75"
|
||||
inkscape:cx="8"
|
||||
inkscape:cy="8"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4" />
|
||||
<path
|
||||
d="M6 3v10l5-5z"
|
||||
fill="#000000"
|
||||
opacity="0.54"
|
||||
id="path2"
|
||||
style="fill:#e6e6e6" />
|
||||
</svg>
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -1,3 +0,0 @@
|
||||
<svg width="24" height="24" fill="#000000" opacity=".54" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m12 2c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z" fill="#dfdfdf"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 291 B |
@@ -1,3 +0,0 @@
|
||||
<svg width="24" height="24" fill="#000000" opacity=".54" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m12 2c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z" fill="#dfdfdf"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 291 B |
@@ -1,4 +0,0 @@
|
||||
<svg width="40" height="20" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m10 0c-5.54 0-10 4.46-10 10s4.46 10 10 10h20c5.54 0 10-4.46 10-10s-4.46-10-10-10zm0 1h20c4.986 0 9 4.014 9 9s-4.014 9-9 9h-20c-4.986 0-9-4.014-9-9s4.014-9 9-9z" fill="#ffffff" opacity=".5" stroke-width="0" style="paint-order:stroke fill markers"/>
|
||||
<circle transform="scale(-1,1)" cx="-10" cy="10" r="5" fill="#ffffff" opacity=".5" stroke-width="0" style="paint-order:stroke fill markers"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 486 B |
@@ -1,6 +0,0 @@
|
||||
<svg width="400" height="120" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="translate(0 -932.36)">
|
||||
<rect x="10" y="942.36" width="380" height="160" rx="18" ry="18" fill="#4d4d4d" stroke-width="0"/>
|
||||
<path class="ColorScheme-Text" d="m200 964.36c-4.4183 0-8 3.5817-8 8h-16v4h48v-4h-16c0-4.4183-3.5817-8-8-8zm0 4c2.2091 1e-5 4 1.7909 4 4h-8c1e-5 -2.2091 1.7909-4 4-4zm-20 12v32c0 4.4321 3.5679 8.0001 8 8.0001h24c4.4321 0 8-3.568 8-8.0001v-32h-38zm4 4h32v28c0 2.2161-1.7839 4.0001-4 4.0001h-24c-2.2161 0-4-1.784-4-4.0001z" fill="#ececec"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 573 B |
@@ -1,3 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
|
||||
<path d="M10 3v10L5 8z" fill="#000000" opacity="0.54"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 149 B |
@@ -1,3 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
|
||||
<path d="M6 3v10l5-5z" fill="#000000" opacity="0.54"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 148 B |