Compare commits
115 Commits
v-0.2.7
...
v1.0.0-rc1
Author | SHA1 | Date | |
---|---|---|---|
|
9625cc3eb1 | ||
|
d8a7720c1d | ||
|
4050bab0f1 | ||
|
fb3ceb6211 | ||
|
4b73517739 | ||
|
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
|
33
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
name: "Release"
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "v*"
|
||||
jobs:
|
||||
release:
|
||||
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 mocha -a all --zip -d $PWD/releases &&
|
||||
python ./build.py macchiato -a all --zip -d $PWD/releases &&
|
||||
python ./build.py frappe -a all --zip -d $PWD/releases &&
|
||||
python ./build.py latte -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
|
119
README.md
@@ -12,38 +12,125 @@
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img src="https://raw.githubusercontent.com/catppuccin/gtk/main/assets/demo2.png"/>
|
||||
<img src="assets/res.webp"/>
|
||||
</p>
|
||||
|
||||
# About
|
||||
|
||||
This GTK theme is based on the [Colloid](https://github.com/vinceliuice/Colloid-gtk-theme) theme made by [Vinceliuice](https://github.com/vinceliuice)
|
||||
This GTK theme is based on the [Colloid](https://github.com/vinceliuice/Colloid-gtk-theme) theme made by [vinceliuice](https://github.com/vinceliuice)
|
||||
|
||||
## Usage
|
||||
|
||||
### Requirements
|
||||
|
||||
- GTK `>=3.20`
|
||||
- `gnome-themes-extra` (or `gnome-themes-standard`)
|
||||
- Murrine engine
|
||||
- GTK >=3.20
|
||||
- `python3`
|
||||
- `gnome-themes-extra` (or `gnome-themes-standard`)
|
||||
|
||||
### Installation
|
||||
To build the theme, make sure the following packages are installed:
|
||||
- `sassc`
|
||||
- `inkscape`
|
||||
- `optipng`
|
||||
|
||||
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)
|
||||
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+).
|
||||
### Manually
|
||||
|
||||
## Development
|
||||
1. Download and extract the theme zip from the [latest release](https://github.com/catppuccin/gtk/releases/latest/).
|
||||
2. Move the theme folder to the `~/.local/share/themes` directory.
|
||||
3. Select the downloaded theme via your desktop specific tweaks application (GNOME Tweaks on GNOME 3+).
|
||||
4. To theme other apps that are using GTK, make sure to run the following command:
|
||||
```bash
|
||||
export THEME_DIR="~/.local/share/themes/catppuccin-<flavor>-<accent>-standard+default"
|
||||
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"
|
||||
```
|
||||
|
||||
** WIP **
|
||||
### Flatpak
|
||||
|
||||
In order for Flatpak to access the theme, make sure to run the following command:
|
||||
```bash
|
||||
sudo flatpak override --filesystem=$HOME/.local/share/themes
|
||||
```
|
||||
|
||||
Then, run the following command to apply the theme.
|
||||
```bash
|
||||
export THEME_DIR="~/.local/share/themes/catppuccin-<flavor>-<accent>-standard+default"
|
||||
sudo flatpak override --env=GTK_THEME=$THEME_DIR
|
||||
```
|
||||
|
||||
### Using the install script to install the theme
|
||||
|
||||
To install the theme using the install script, run `install.py`:
|
||||
```
|
||||
python3 install.py <flavor> <accent>
|
||||
```
|
||||
|
||||
If you have adwaita installed, make sure to include `--link` in order to add symlinks for it:
|
||||
```
|
||||
python3 install.py <flavor> <accent> --link
|
||||
```
|
||||
Run the command and the gtk theme should be installed!
|
||||
|
||||
### AUR
|
||||
|
||||
We have 4 AUR packages for all the 4 flavours (Latte, Frappe, Macchiato, Mocha)
|
||||
|
||||
With your favourite AUR helper, you can install one of these flavors:
|
||||
|
||||
```bash
|
||||
yay -S catppuccin-gtk-theme-<flavor>
|
||||
```
|
||||
|
||||
### Nix
|
||||
|
||||
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 Other Distros
|
||||
|
||||
Refer to [Using the install script to install the theme](https://github.com/catppuccin/gtk/edit/refactor/build-system/README.md#installing-the-theme-manually) or [Installing the theme manually](https://github.com/catppuccin/gtk/edit/refactor/build-system/README.md#installing-the-theme-manually).
|
||||
|
||||
### Theming the GDM Theme
|
||||
In order to theme the GDM theme, install the `gdm-settings` app, select the Catppuccin theme, and click *Save*.
|
||||
|
||||
## 💝 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 |
667
build.py
Executable file
@@ -0,0 +1,667 @@
|
||||
#! /usr/bin/env python3
|
||||
import os, re, shutil, subprocess, argparse, glob, logging, zipfile
|
||||
|
||||
from dataclasses import dataclass
|
||||
from typing import Any, 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 Suffix:
|
||||
true_value: str
|
||||
test: Any # callback function
|
||||
false_value: str = ""
|
||||
|
||||
|
||||
IS_DARK = Suffix(true_value="-Dark", test=lambda ctx: ctx.flavor.dark)
|
||||
IS_LIGHT = Suffix(true_value="-Light", test=lambda ctx: not ctx.flavor.dark)
|
||||
IS_WINDOW_NORMAL = Suffix(true_value="-Normal", test=lambda ctx: ctx.tweaks.has('normal'))
|
||||
DARK_LIGHT = Suffix(
|
||||
true_value="-Dark", false_value="-Light", test=lambda ctx: ctx.flavor.dark
|
||||
)
|
||||
|
||||
@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 apply_suffix(self, suffix: Suffix) -> str:
|
||||
if suffix.test(self):
|
||||
return suffix.true_value
|
||||
else:
|
||||
return suffix.false_value
|
||||
|
||||
|
||||
def build(ctx: BuildContext):
|
||||
output_dir = ctx.output_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{ctx.apply_suffix(IS_DARK)}\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{ctx.apply_suffix(DARK_LIGHT)}.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{ctx.apply_suffix(DARK_LIGHT)}.scss",
|
||||
f"{output_dir}/gtk-3.0/gtk.css",
|
||||
]
|
||||
)
|
||||
subprocess.check_call(
|
||||
[
|
||||
"sassc",
|
||||
*SASSC_OPT,
|
||||
# NOTE: This uses 'Dark' for the source, but 'dark' for the destination. This is intentional. Do !!NOT!! change it without consultation
|
||||
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{ctx.apply_suffix(DARK_LIGHT)}.scss",
|
||||
f"{output_dir}/gtk-4.0/gtk.css",
|
||||
]
|
||||
)
|
||||
subprocess.check_call(
|
||||
[
|
||||
"sassc",
|
||||
*SASSC_OPT,
|
||||
# NOTE: This uses 'Dark' for the source, but 'dark' for the destination. This is intentional. Do !!NOT!! change it without consultation
|
||||
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{ctx.apply_suffix(DARK_LIGHT)}.scss",
|
||||
f"{output_dir}/cinnamon/cinnamon.css",
|
||||
]
|
||||
)
|
||||
|
||||
os.makedirs(f"{output_dir}/metacity-1", exist_ok=True)
|
||||
shutil.copyfile(
|
||||
f"{SRC_DIR}/main/metacity-1/metacity-theme-3{ctx.apply_suffix(IS_WINDOW_NORMAL)}.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{ctx.apply_suffix(IS_LIGHT)}",
|
||||
f"{output_dir}/xfwm4/themerc",
|
||||
)
|
||||
|
||||
os.makedirs(f"{output_dir}-hdpi/xfwm4", exist_ok=True)
|
||||
shutil.copyfile(
|
||||
f"{SRC_DIR}/main/xfwm4/themerc{ctx.apply_suffix(IS_LIGHT)}",
|
||||
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{ctx.apply_suffix(IS_LIGHT)}",
|
||||
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-Catppuccin/", f"{output_dir}/plank"
|
||||
)
|
||||
else:
|
||||
shutil.copytree(
|
||||
f"{SRC_DIR}/main/plank/theme-Dark-Catppuccin/", 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):
|
||||
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{ctx.apply_suffix(DARK_LIGHT)}.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{ctx.apply_suffix(IS_DARK)}.svg",
|
||||
f"{output_dir}/gtk-3.0/thumbnail.png",
|
||||
)
|
||||
shutil.copyfile(
|
||||
f"{SRC_DIR}/assets/gtk/thumbnail{ctx.apply_suffix(IS_DARK)}.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{ctx.apply_suffix(IS_DARK)}/*.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{ctx.apply_suffix(IS_DARK)}/*.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{ctx.apply_suffix(IS_WINDOW_NORMAL)}/*.svg"):
|
||||
shutil.copy(file, f"{output_dir}/metacity-1/assets")
|
||||
shutil.copy(
|
||||
f"{SRC_DIR}/assets/metacity-1/thumbnail{ctx.apply_suffix(IS_DARK)}.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{ctx.apply_suffix(IS_LIGHT)}/*.png"):
|
||||
shutil.copy(file, f"{output_dir}/xfwm4")
|
||||
|
||||
for file in glob.glob(f"{SRC_DIR}/assets/xfwm4/assets{ctx.apply_suffix(IS_LIGHT)}-hdpi/*.png"):
|
||||
shutil.copy(file, f"{output_dir}-hdpi/xfwm4")
|
||||
|
||||
for file in glob.glob(f"{SRC_DIR}/assets/xfwm4/assets{ctx.apply_suffix(IS_LIGHT)}-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 building 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
27
flake.lock
generated
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1715961556,
|
||||
"narHash": "sha256-+NpbZRCRisUHKQJZF3CT+xn14ZZQO+KjxIIanH3Pvn4=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "4a6b83b05df1a8bd7d99095ec4b4d271f2956b64",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
18
flake.nix
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
|
||||
outputs =
|
||||
{ nixpkgs, ... }:
|
||||
let
|
||||
forAllSystems =
|
||||
function:
|
||||
nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed (
|
||||
system: function nixpkgs.legacyPackages.${system}
|
||||
);
|
||||
in
|
||||
{
|
||||
devShells = forAllSystems (pkgs: {
|
||||
default = pkgs.callPackage ./shell.nix { };
|
||||
});
|
||||
};
|
||||
}
|
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
|
||||
}
|
147
install.py
Normal file
@@ -0,0 +1,147 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os, zipfile, argparse, logging, io
|
||||
from pathlib import Path
|
||||
from dataclasses import dataclass
|
||||
from urllib.request import urlopen, Request
|
||||
|
||||
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 InstallContext:
|
||||
flavor: str
|
||||
accent: str
|
||||
dest: Path
|
||||
link: bool
|
||||
|
||||
|
||||
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(
|
||||
"accent",
|
||||
type=str,
|
||||
default="mauve",
|
||||
choices=[
|
||||
"rosewater",
|
||||
"flamingo",
|
||||
"pink",
|
||||
"mauve",
|
||||
"red",
|
||||
"maroon",
|
||||
"peach",
|
||||
"yellow",
|
||||
"green",
|
||||
"teal",
|
||||
"sky",
|
||||
"sapphire",
|
||||
"blue",
|
||||
"lavender",
|
||||
"all",
|
||||
],
|
||||
help="Accent of the theme.",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--dest",
|
||||
"-d",
|
||||
type=str,
|
||||
dest="dest",
|
||||
help="Destination of the files.",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--link",
|
||||
help="Whether to add symlinks for libadwaita",
|
||||
type=bool,
|
||||
default=False,
|
||||
action=argparse.BooleanOptionalAction,
|
||||
)
|
||||
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def build_release_url(ctx: InstallContext) -> str:
|
||||
repo_root = "https://github.com/catppuccin/gtk/releases/download"
|
||||
release = "v1.0.0-alpha"
|
||||
zip_name = f"catppuccin-{ctx.flavor}-{ctx.accent}-standard+default.zip"
|
||||
|
||||
return f"{repo_root}/{release}/{zip_name}"
|
||||
|
||||
|
||||
def install(ctx: InstallContext):
|
||||
url = build_release_url(ctx)
|
||||
build_info = f"""Installation info:
|
||||
flavor: {ctx.flavor}
|
||||
accent: {ctx.accent}
|
||||
dest: {ctx.dest.absolute()}
|
||||
link: {ctx.link}
|
||||
|
||||
remote_url: {url}"""
|
||||
logger.info(build_info)
|
||||
httprequest = Request(url)
|
||||
|
||||
zip_file = None
|
||||
logger.info("Starting download...")
|
||||
with urlopen(httprequest) as response:
|
||||
logger.info(f"Response status: {response.status}")
|
||||
zip_file = zipfile.ZipFile(io.BytesIO(response.read()))
|
||||
logger.info("Download finished, zip is valid")
|
||||
|
||||
logger.info("Verifying download..")
|
||||
first_bad_file = zip_file.testzip()
|
||||
if first_bad_file is not None:
|
||||
logger.error(f'Zip appears to be corrupt, first bad file is "{first_bad_file}"')
|
||||
return
|
||||
logger.info("Download verified")
|
||||
|
||||
logger.info("Extracting...")
|
||||
zip_file.extractall(ctx.dest)
|
||||
logger.info("Extraction complete")
|
||||
|
||||
if ctx.link:
|
||||
dir_name = (ctx.dest / f"catppuccin-{ctx.flavor}-{ctx.accent}-standard+default" / 'gtk-4.0').absolute()
|
||||
gtk4_dir = (Path(os.path.expanduser('~')) / '.config' / 'gtk-4.0').absolute()
|
||||
os.makedirs(gtk4_dir, exist_ok=True)
|
||||
|
||||
logger.info("Adding symlinks for libadwaita")
|
||||
logger.info(f'Root: {dir_name}')
|
||||
logger.info(f'Target: {gtk4_dir}')
|
||||
os.symlink(dir_name / 'assets', gtk4_dir / 'assets')
|
||||
os.symlink(dir_name / 'gtk.css', gtk4_dir / 'gtk.css')
|
||||
os.symlink(dir_name / 'gtk-dark.css', gtk4_dir / 'gtk-dark.css')
|
||||
|
||||
|
||||
def main():
|
||||
args = parse_args()
|
||||
dest = Path(os.path.expanduser("~")) / ".local" / "share" / "themes"
|
||||
os.makedirs(dest, exist_ok=True)
|
||||
|
||||
if args.dest:
|
||||
dest = Path(args.dest)
|
||||
|
||||
ctx = InstallContext(
|
||||
flavor=args.flavor, accent=args.accent, dest=dest, link=args.link
|
||||
)
|
||||
|
||||
install(ctx)
|
||||
|
||||
logger.info('Theme installation complete!')
|
||||
|
||||
|
||||
try:
|
||||
main()
|
||||
except Exception as e:
|
||||
logger.error("Something went wrong when installing the theme:", exc_info=e)
|
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.hex }};
|
||||
+
|
||||
+// Pink
|
||||
+$pink-light: #{{ palette.pink.hex }};
|
||||
+$pink-dark: #{{ palette.pink.hex }};
|
||||
+
|
||||
+// Purple
|
||||
+$purple-light: #{{ palette.mauve.hex }};
|
||||
+$purple-dark: #{{ palette.mauve.hex }};
|
||||
+
|
||||
+// Blue
|
||||
+$blue-light: #{{ palette.blue.hex }};
|
||||
+$blue-dark: #{{ palette.blue.hex }};
|
||||
+
|
||||
+// Teal
|
||||
+$teal-light: #{{ palette.teal.hex }};
|
||||
+$teal-dark: #{{ palette.teal.hex }};
|
||||
+
|
||||
+// Green
|
||||
+$green-light: #{{ palette.green.hex }};
|
||||
+$green-dark: #{{ palette.green.hex }};
|
||||
+
|
||||
+// Yellow
|
||||
+$yellow-light: #{{ palette.yellow.hex }};
|
||||
+$yellow-dark: #{{ palette.yellow.hex }};
|
||||
+
|
||||
+// Orange
|
||||
+$orange-light: #{{ palette.peach.hex }};
|
||||
+$orange-dark: #{{ palette.peach.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: #e78284;
|
||||
+
|
||||
+// Pink
|
||||
+$pink-light: #f4b8e4;
|
||||
+$pink-dark: #f4b8e4;
|
||||
+
|
||||
+// Purple
|
||||
+$purple-light: #ca9ee6;
|
||||
+$purple-dark: #ca9ee6;
|
||||
+
|
||||
+// Blue
|
||||
+$blue-light: #8caaee;
|
||||
+$blue-dark: #8caaee;
|
||||
+
|
||||
+// Teal
|
||||
+$teal-light: #81c8be;
|
||||
+$teal-dark: #81c8be;
|
||||
+
|
||||
+// Green
|
||||
+$green-light: #a6d189;
|
||||
+$green-dark: #a6d189;
|
||||
+
|
||||
+// Yellow
|
||||
+$yellow-light: #e5c890;
|
||||
+$yellow-dark: #e5c890;
|
||||
+
|
||||
+// Orange
|
||||
+$orange-light: #ef9f76;
|
||||
+$orange-dark: #ef9f76;
|
||||
+
|
||||
+// 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: #d20f39;
|
||||
+
|
||||
+// Pink
|
||||
+$pink-light: #ea76cb;
|
||||
+$pink-dark: #ea76cb;
|
||||
+
|
||||
+// Purple
|
||||
+$purple-light: #8839ef;
|
||||
+$purple-dark: #8839ef;
|
||||
+
|
||||
+// Blue
|
||||
+$blue-light: #1e66f5;
|
||||
+$blue-dark: #1e66f5;
|
||||
+
|
||||
+// Teal
|
||||
+$teal-light: #179299;
|
||||
+$teal-dark: #179299;
|
||||
+
|
||||
+// Green
|
||||
+$green-light: #40a02b;
|
||||
+$green-dark: #40a02b;
|
||||
+
|
||||
+// Yellow
|
||||
+$yellow-light: #df8e1d;
|
||||
+$yellow-dark: #df8e1d;
|
||||
+
|
||||
+// Orange
|
||||
+$orange-light: #fe640b;
|
||||
+$orange-dark: #fe640b;
|
||||
+
|
||||
+// 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: #ed8796;
|
||||
+
|
||||
+// Pink
|
||||
+$pink-light: #f5bde6;
|
||||
+$pink-dark: #f5bde6;
|
||||
+
|
||||
+// Purple
|
||||
+$purple-light: #c6a0f6;
|
||||
+$purple-dark: #c6a0f6;
|
||||
+
|
||||
+// Blue
|
||||
+$blue-light: #8aadf4;
|
||||
+$blue-dark: #8aadf4;
|
||||
+
|
||||
+// Teal
|
||||
+$teal-light: #8bd5ca;
|
||||
+$teal-dark: #8bd5ca;
|
||||
+
|
||||
+// Green
|
||||
+$green-light: #a6da95;
|
||||
+$green-dark: #a6da95;
|
||||
+
|
||||
+// Yellow
|
||||
+$yellow-light: #eed49f;
|
||||
+$yellow-dark: #eed49f;
|
||||
+
|
||||
+// Orange
|
||||
+$orange-light: #f5a97f;
|
||||
+$orange-dark: #f5a97f;
|
||||
+
|
||||
+// 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: #f38ba8;
|
||||
+
|
||||
+// Pink
|
||||
+$pink-light: #f5c2e7;
|
||||
+$pink-dark: #f5c2e7;
|
||||
+
|
||||
+// Purple
|
||||
+$purple-light: #cba6f7;
|
||||
+$purple-dark: #cba6f7;
|
||||
+
|
||||
+// Blue
|
||||
+$blue-light: #89b4fa;
|
||||
+$blue-dark: #89b4fa;
|
||||
+
|
||||
+// Teal
|
||||
+$teal-light: #94e2d5;
|
||||
+$teal-dark: #94e2d5;
|
||||
+
|
||||
+// Green
|
||||
+$green-light: #a6e3a1;
|
||||
+$green-dark: #a6e3a1;
|
||||
+
|
||||
+// Yellow
|
||||
+$yellow-light: #f9e2af;
|
||||
+$yellow-dark: #f9e2af;
|
||||
+
|
||||
+// Orange
|
||||
+$orange-light: #fab387;
|
||||
+$orange-dark: #fab387;
|
||||
+
|
||||
+// 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 |