Compare commits
147 Commits
v-0.2.5
...
chore/use-
Author | SHA1 | Date | |
---|---|---|---|
|
fd8311f2d4 | ||
|
641f692dd8 | ||
|
a36e8a3b91 | ||
|
327d02c0ec | ||
|
495589d9f8 | ||
|
455dd7b403 | ||
|
b40c355ba3 | ||
|
001ba5bf12 | ||
|
1c336f20ad | ||
|
14cee4c1f5 | ||
|
febd32f208 | ||
|
663f6c61f8 | ||
|
b2f3d267e4 | ||
|
e72416ae5e | ||
|
40d4eb967b | ||
|
87a5f92f4b | ||
|
b508c0ff2d | ||
|
44be6bb595 | ||
|
6eeda71fb7 | ||
|
5c3ec52e39 | ||
|
084c3acde7 | ||
|
66c2314f9c | ||
|
8d8949e96d | ||
|
89d94d64cb | ||
|
0a214efef1 | ||
|
e9b9a2f350 | ||
|
13f2a344c8 | ||
|
63c8fd9dee | ||
|
0fa26adccc | ||
|
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 | ||
|
de9774417c | ||
|
69f6472acc | ||
|
87a79fd2bf |
@@ -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
|
||||
|
59
.github/ISSUE_TEMPLATE/bug.yml
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
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:
|
||||
- From release (install.py)
|
||||
- From release (manual installation)
|
||||
- From source (build.py)
|
||||
- Nix (nixpkgs / catppuccin/nix)
|
||||
- AUR package
|
||||
validations:
|
||||
required: true
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Are you running the latest release, and if not does the issue persist there?
|
||||
description: "Our latest release can be found under the [GitHub releases](https://github.com/catppuccin/gtk/releases/latest)"
|
||||
options:
|
||||
- label: I am running on the latest release & the issue persists there
|
||||
required: true
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: If using GTK4, have you symlinked the "gtk-4.0" folder?
|
||||
description: "The instructions for symlinking are described at the bottom of the [Manual Installation guide](https://github.com/catppuccin/gtk/tree/663f6c61f8cf1fcbbeb72110bf6b0a0214755245?tab=readme-ov-file#manual-installation)."
|
||||
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
|
35
.github/workflows/build.yml
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
name: "Generate test artifacts"
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, reopened, synchronize]
|
||||
jobs:
|
||||
build:
|
||||
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 patches/xfwm4/generate_assets.py
|
||||
|
||||
python ./build.py mocha --all-accents --zip -d $PWD/releases &&
|
||||
python ./build.py macchiato --all-accents --zip -d $PWD/releases &&
|
||||
python ./build.py frappe --all-accents --zip -d $PWD/releases &&
|
||||
python ./build.py latte --all-accents --zip -d $PWD/releases
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: '${{ github.sha }}-artifacts'
|
||||
path: ./releases/*.zip
|
||||
|
33
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
name: "Mainline 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 --all-accents --zip -d $PWD/releases &&
|
||||
python ./build.py macchiato --all-accents --zip -d $PWD/releases &&
|
||||
python ./build.py frappe --all-accents --zip -d $PWD/releases &&
|
||||
python ./build.py latte --all-accents --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
|
68
CONTRIBUTING.md
Normal file
@@ -0,0 +1,68 @@
|
||||
## Development
|
||||
|
||||
### Requirements
|
||||
- All the [requirements for building](#building)
|
||||
- `whiskers`, optionally, from [catppuccin/toolbox](https://github.com/catppuccin/toolbox/tree/main/whiskers#installation)
|
||||
|
||||
### Patching colloid
|
||||
> [!TIP]
|
||||
> If you need to change the patches, reset the submodule and rerun the build script.
|
||||
|
||||
We patch upstream colloid through a series of `.patch` files, applied through `git apply` once when the build begins.
|
||||
The patches are located in `./patches/colloid/`.
|
||||
|
||||
Once the build script patches the submodule, it will write a file into
|
||||
`colloid/.patched`, to signal to future invocations that the patches have already been applied.
|
||||
|
||||
The palette patches are generated through `whiskers`,
|
||||
so if you're changing them, they will need regenerated. Simply run `whiskers palette.tera` to rebuild them.
|
||||
|
||||
The process for building the theme is [documented in the README](./README.md#building).
|
||||
|
||||
### Upstreaming procedure
|
||||
|
||||
Now and again, Colloid will have bugs upstream that impacts our theme. With our patching system we can easily fix these problems,
|
||||
but we still want to contribute the fixes upstream to benefit all users & forks of Colloid.
|
||||
|
||||
To avoid stalling unnecessarily, our procedure for the above is as follows:
|
||||
1) Open a PR to fix the issue, by adding a patch file to our theme, add `upstream:intended`
|
||||
to signal these changes are to be sent to Colloid eventually.
|
||||
2) Merge the PR & close the issue in our theme pertaining to the issue, once reviewed and approved
|
||||
3) Open a PR in Colloid with the patch
|
||||
4) Open a new issue in our theme, with these details:
|
||||
- The initial issue in our theme
|
||||
- The PR in Colloid that fixes the issue there
|
||||
- The PR that fixed the issue in our theme
|
||||
|
||||
Add the `upstream:open` label
|
||||
5) Once the PR is merged in Colloid:
|
||||
1) Test that the issue no longer persists, without our patch
|
||||
2) Open a PR to remove the patch file in our theme, with these details:
|
||||
- The tracking issue
|
||||
- The commit that fixed the issue in Colloid
|
||||
3) Close the tracking issue & merge the PR to remove the patch file
|
||||
|
||||
|
||||
### Running test builds
|
||||
We support building and publishing test builds from PRs. When you open PRs, the CI will automatically build with your changes and push an artifact
|
||||
which bundles all of the produced themes.
|
||||
|
||||
You can then download the artifacts as a zip (result should look similar to 7bff2448a81e36bf3b0e03bfbd649bebe6973ec7-artifacts.zip) and
|
||||
pass the path into `install.py` under the `--from-artifact` option:
|
||||
```bash
|
||||
python3 install.py mocha blue --dest ./build --from-artifact ~/downloads/7bff2448a81e36bf3b0e03bfbd649bebe6973ec7-artifacts.zip
|
||||
```
|
||||
|
||||
This will take the target flavor / accent out of the zip, and install it using the regular install process.
|
||||
|
||||
It is advised to pass a `--dest` when running in this mode, because the released zips follow the exact same naming scheme as regular builds.
|
||||
This wil cause conflicts when you install, if you already had that theme installed. Passing a different destination allows you to move the
|
||||
extracted folders to `~/.local/share/themes` yourself, adding a suffix as appropriate to avoid conflicts.
|
||||
|
||||
> [!WARNING]
|
||||
> If you pass `--link` to the install script when working from a PR, it will forcibly overwrite your `~/.config/gtk-4.0/` symlinks.
|
||||
> You will have to reinstall / relink to revert this.
|
||||
|
||||
### Useful resources
|
||||
- GNOME-shell sources: https://gitlab.gnome.org/GNOME/gnome-shell/-/tree/gnome-46/data/theme
|
||||
- GTK inspector guide: https://developer.gnome.org/documentation/tools/inspector.html
|
190
README.md
@@ -1,49 +1,193 @@
|
||||
<h3 align="center">
|
||||
<img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/logos/exports/1544x1544_circle.png" width="100" alt="Logo"/><br/>
|
||||
<img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/misc/transparent.png" height="30" width="0px"/>
|
||||
Catppuccin for <a href="https://gtk.org/">GTK</a>
|
||||
<img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/misc/transparent.png" height="30" width="0px"/>
|
||||
<img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/logos/exports/1544x1544_circle.png" width="100" alt="Logo"/><br/>
|
||||
<img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/misc/transparent.png" height="30" width="0px"/>
|
||||
Catppuccin for <a href="https://gtk.org/">GTK</a>
|
||||
<img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/misc/transparent.png" height="30" width="0px"/>
|
||||
</h3>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/catppuccin/gtk/stargazers"><img src="https://img.shields.io/github/stars/catppuccin/gtk?colorA=363a4f&colorB=b7bdf8&style=for-the-badge"></a>
|
||||
<a href="https://github.com/catppuccin/gtk/issues"><img src="https://img.shields.io/github/issues/catppuccin/gtk?colorA=363a4f&colorB=f5a97f&style=for-the-badge"></a>
|
||||
<a href="https://github.com/catppuccin/gtk/contributors"><img src="https://img.shields.io/github/contributors/catppuccin/gtk?colorA=363a4f&colorB=a6da95&style=for-the-badge"></a>
|
||||
<a href="https://github.com/catppuccin/gtk/stargazers"><img src="https://img.shields.io/github/stars/catppuccin/gtk?colorA=363a4f&colorB=b7bdf8&style=for-the-badge"></a>
|
||||
<a href="https://github.com/catppuccin/gtk/issues"><img src="https://img.shields.io/github/issues/catppuccin/gtk?colorA=363a4f&colorB=f5a97f&style=for-the-badge"></a>
|
||||
<a href="https://github.com/catppuccin/gtk/contributors"><img src="https://img.shields.io/github/contributors/catppuccin/gtk?colorA=363a4f&colorB=a6da95&style=for-the-badge"></a>
|
||||
</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)
|
||||
## Installation
|
||||
|
||||
## Usage
|
||||
This GTK theme requires:
|
||||
|
||||
- GTK `>=3.20`
|
||||
- Python 3+
|
||||
|
||||
### Automated script
|
||||
|
||||
We provide a Python script to automate the process of installing the theme:
|
||||
|
||||
```bash
|
||||
curl -LsS "https://raw.githubusercontent.com/catppuccin/gtk/main/install.py" -o install.py
|
||||
python3 install.py <flavor> <accent>
|
||||
[catppuccin-gtk] [INFO] - Installation info:
|
||||
flavor: mocha
|
||||
accent: blue
|
||||
dest: /home/<user>/.local/share/themes
|
||||
link: False
|
||||
|
||||
remote_url: https://github.com/catppuccin/gtk/releases/download/v1.0.0-alpha/catppuccin-mocha-blue-standard+default.zip
|
||||
[catppuccin-gtk] [INFO] - Starting download...
|
||||
[catppuccin-gtk] [INFO] - Response status: 200
|
||||
[catppuccin-gtk] [INFO] - Download finished, zip is valid
|
||||
[catppuccin-gtk] [INFO] - Verifying download..
|
||||
[catppuccin-gtk] [INFO] - Download verified
|
||||
[catppuccin-gtk] [INFO] - Extracting...
|
||||
[catppuccin-gtk] [INFO] - Extraction complete
|
||||
[catppuccin-gtk] [INFO] - Theme installation complete!
|
||||
```
|
||||
|
||||
### Arch Linux
|
||||
|
||||
With your favourite AUR helper, you can install your flavor of choice:
|
||||
|
||||
```bash
|
||||
yay -S catppuccin-gtk-theme-<flavor>
|
||||
paru -S catppuccin-gtk-theme-<flavor>
|
||||
```
|
||||
|
||||
### Nix
|
||||
|
||||
We have created a Nix module ([catppuccin/nix](https://github.com/catppuccin/nix)) for theming apps under Nix, and recommend that you use it.
|
||||
You can set up our Nix module for GTK with the following config:
|
||||
|
||||
```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 with our module, see the [full documentation](https://github.com/catppuccin/nix/blob/main/docs/home-manager-options.md#gtkcatppuccinenable).
|
||||
|
||||
Alternatively, if you are not using our Nix module, you can grab the theme from [nixpkgs/catppuccin-gtk](https://github.com/NixOS/nixpkgs/blob/master/pkgs/data/themes/catppuccin-gtk/default.nix)
|
||||
|
||||
## Flatpak
|
||||
Flatpak by default restricts access to themes, to allow access, use the following:
|
||||
```bash
|
||||
sudo flatpak override --filesystem=$HOME/.local/share/themes
|
||||
```
|
||||
|
||||
After you've allowed access, set the theme, using the following:
|
||||
```bash
|
||||
# Change to suite your flavor / accent combination
|
||||
export FLAVOR="mocha"
|
||||
export ACCENT="mauve"
|
||||
|
||||
# Set the theme
|
||||
sudo flatpak override --env=GTK_THEME="catppuccin-${FLAVOR}-${ACCENT}-standard+default"
|
||||
```
|
||||
|
||||
### Manual installation
|
||||
|
||||
If your distro does not package our theme, and the installation script will not work for your use case, you can pull down releases and extract them yourself. You can find the [latest release on GitHub](https://github.com/catppuccin/gtk/releases/latest).
|
||||
|
||||
```bash
|
||||
cd ~/.local/share/themes
|
||||
|
||||
# Set the root URL
|
||||
export ROOT_URL="https://https://github.com/catppuccin/gtk/releases/download"
|
||||
|
||||
# Change to the tag you want to download
|
||||
export RELEASE="v1.0.0"
|
||||
|
||||
# Change to suite your flavor / accent combination
|
||||
export FLAVOR="mocha"
|
||||
export ACCENT="mauve"
|
||||
curl -LsS "${ROOT_URL}/${RELEASE}/catppuccin-${FLAVOR}-${ACCENT}-standard+default.zip"
|
||||
|
||||
# Extract the catppuccin zip file
|
||||
unzip catppuccin-${FLAVOR}-${ACCENT}-standard+default.zip
|
||||
|
||||
# Set the catppuccin theme directory
|
||||
export THEME_DIR="$HOME/.local/share/themes/catppuccin-${FLAVOR}-${ACCENT}-standard+default"
|
||||
|
||||
# Optionally, add support for libadwaita
|
||||
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"
|
||||
```
|
||||
|
||||
## Building
|
||||
|
||||
If our prebuilt offerings do not match your requirements, you will have to build the theme from source.
|
||||
|
||||
### Requirements
|
||||
|
||||
- GTK `>=3.20`
|
||||
- `gnome-themes-extra` (or `gnome-themes-standard`)
|
||||
- Murrine engine
|
||||
- Python 3+
|
||||
- `sassc`, the Sass compiler
|
||||
- `inkscape`, `optipng`, for rendering PNGs
|
||||
|
||||
### Installation
|
||||
> [!WARNING]
|
||||
> We use a submodule to bring in colloid, the theme this theme is based on. You will need to clone
|
||||
> with `git clone <url> --recurse-submodules` to bring in the submodule.
|
||||
|
||||
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+).
|
||||
To build the theme, simply invoke `build.py`:
|
||||
|
||||
## Development
|
||||
```bash
|
||||
python3 build.py mocha --dest ./build -a rosewater --tweaks rimless
|
||||
[catppuccin-gtk] [INFO] - Patches seem to be applied, remove "colloid/.patched" to force application (this may fail)
|
||||
[catppuccin-gtk] [INFO] - Building temp tweaks file
|
||||
[catppuccin-gtk] [INFO] - Inserting gnome-shell imports
|
||||
[catppuccin-gtk] [INFO] - Building main theme
|
||||
[catppuccin-gtk] [INFO] - Build info:
|
||||
build_root: ./build
|
||||
theme_name: catppuccin
|
||||
flavor: mocha
|
||||
accent: rosewater
|
||||
size: standard
|
||||
tweaks: Tweaks(tweaks=['rimless'])
|
||||
[catppuccin-gtk] [INFO] - Building into './build/catppuccin-mocha-rosewater-standard+rimless'...
|
||||
[catppuccin-gtk] [INFO] - Main build complete
|
||||
[catppuccin-gtk] [INFO] - Bundling assets...
|
||||
[catppuccin-gtk] [INFO] - Asset bundling done
|
||||
[catppuccin-gtk] [INFO] - Done!
|
||||
```
|
||||
|
||||
** WIP **
|
||||
You can now find the built theme under `./build`. If you want to package the theme up as a zip instead, pass `--zip` to the build script.
|
||||
|
||||
## 💝 Thanks to
|
||||
|
||||
- [sadrach-cl](https://github.com/sadrach-cl)
|
||||
**Current maintainers**
|
||||
|
||||
- [nullishamy](https://github.com/nullishamy)
|
||||
- [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 |
633
build.py
Executable file
@@ -0,0 +1,633 @@
|
||||
#!/usr/bin/env python3
|
||||
import os, re, shutil, subprocess, argparse, glob, logging, zipfile, sys
|
||||
|
||||
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", dirs_exist_ok=True
|
||||
)
|
||||
else:
|
||||
shutil.copytree(
|
||||
f"{SRC_DIR}/main/plank/theme-Dark-Catppuccin/", f"{output_dir}/plank", dirs_exist_ok=True
|
||||
)
|
||||
|
||||
|
||||
def init_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}';",
|
||||
)
|
||||
|
||||
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'", f"'{ctx.accent.identifier}'")
|
||||
|
||||
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",
|
||||
)
|
||||
|
||||
xfwm4_assets = f"{THIS_DIR}/patches/xfwm4/generated/assets-catppuccin-{ctx.flavor.identifier}"
|
||||
for file in glob.glob(xfwm4_assets + '/*'):
|
||||
shutil.copy(file, f"{output_dir}/xfwm4")
|
||||
|
||||
xfwm4_assets = xfwm4_assets + "-hdpi/*"
|
||||
for file in glob.glob(xfwm4_assets):
|
||||
shutil.copy(file, f"{output_dir}-hdpi/xfwm4")
|
||||
|
||||
xfwm4_assets = xfwm4_assets + "-xhdpi/*"
|
||||
for file in glob.glob(xfwm4_assets):
|
||||
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",
|
||||
"theme-func.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",
|
||||
nargs='+',
|
||||
dest="accents",
|
||||
choices=[
|
||||
"rosewater",
|
||||
"flamingo",
|
||||
"pink",
|
||||
"mauve",
|
||||
"red",
|
||||
"maroon",
|
||||
"peach",
|
||||
"yellow",
|
||||
"green",
|
||||
"teal",
|
||||
"sky",
|
||||
"sapphire",
|
||||
"blue",
|
||||
"lavender",
|
||||
],
|
||||
help="Accent of the theme.",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--all-accents",
|
||||
help="Whether to build all accents",
|
||||
dest="all_accents",
|
||||
action="store_true",
|
||||
)
|
||||
|
||||
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()
|
||||
|
||||
if args.zip:
|
||||
output_format = "zip"
|
||||
else:
|
||||
output_format = "dir"
|
||||
|
||||
tweaks = Tweaks(tweaks=args.tweaks)
|
||||
|
||||
palette = getattr(PALETTE, args.flavor)
|
||||
|
||||
accents = args.accents
|
||||
if args.all_accents:
|
||||
accents = [
|
||||
"rosewater",
|
||||
"flamingo",
|
||||
"pink",
|
||||
"mauve",
|
||||
"red",
|
||||
"maroon",
|
||||
"peach",
|
||||
"yellow",
|
||||
"green",
|
||||
"teal",
|
||||
"sky",
|
||||
"sapphire",
|
||||
"blue",
|
||||
"lavender",
|
||||
]
|
||||
|
||||
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,
|
||||
)
|
||||
logger.info("Building temp tweaks file")
|
||||
init_tweaks_temp()
|
||||
logger.info("Inserting gnome-shell imports")
|
||||
gnome_shell_version()
|
||||
logger.info("Building main theme")
|
||||
build_theme(ctx)
|
||||
logger.info(f"Completed {palette.identifier} with {accent.identifier}")
|
||||
|
||||
logger.info("Done!")
|
||||
|
||||
try:
|
||||
main()
|
||||
except Exception as e:
|
||||
logger.error("Something went wrong when building the theme:", exc_info=e)
|
||||
sys.exit(1)
|
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='#8caaee'
|
||||
;;
|
||||
-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='#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='#8caaee'
|
||||
;;
|
||||
-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
|
||||
}
|
212
install.py
Normal file
@@ -0,0 +1,212 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os, zipfile, argparse, logging, io
|
||||
from typing import Optional
|
||||
from pathlib import Path
|
||||
from dataclasses import dataclass
|
||||
from urllib.request import urlopen, Request
|
||||
from urllib.parse import urlparse
|
||||
|
||||
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 build_info(self, include_url=True) -> str:
|
||||
url = build_release_url(self)
|
||||
info = f"""Installation info:
|
||||
flavor: {self.flavor}
|
||||
accent: {self.accent}
|
||||
dest: {self.dest.absolute()}
|
||||
link: {self.link}"""
|
||||
if include_url:
|
||||
info += f"\nremote_url: {url}"
|
||||
return info
|
||||
|
||||
|
||||
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",
|
||||
],
|
||||
help="Accent of the theme.",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--from-artifact",
|
||||
type=Path,
|
||||
dest="from_artifact",
|
||||
help="Install from an artifact instead of a mainline release, pass the artifact path (e.g 7bff2448a81e36bf3b0e03bfbd649bebe6973ec7-artifacts.zip)",
|
||||
)
|
||||
|
||||
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:
|
||||
root = "https://github.com/catppuccin/gtk/releases/latest/download"
|
||||
zip_name = f"catppuccin-{ctx.flavor}-{ctx.accent}-standard+default.zip"
|
||||
|
||||
return f"{root}/{zip_name}"
|
||||
|
||||
|
||||
def fetch_zip(url: str) -> Optional[zipfile.ZipFile]:
|
||||
req = Request(url)
|
||||
|
||||
zip_file = None
|
||||
logger.info("Starting download...")
|
||||
with urlopen(req) 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 None
|
||||
logger.info("Download verified")
|
||||
return zip_file
|
||||
|
||||
|
||||
def add_libadwaita_links(ctx: InstallContext, rewrite: bool = False):
|
||||
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}")
|
||||
try:
|
||||
if rewrite:
|
||||
os.remove(gtk4_dir / "assets")
|
||||
os.remove(gtk4_dir / "gtk.css")
|
||||
os.remove(gtk4_dir / "gtk-dark.css")
|
||||
except FileNotFoundError:
|
||||
logger.debug("Ignoring FileNotFound in symlink rewrite")
|
||||
|
||||
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 install(ctx: InstallContext):
|
||||
url = build_release_url(ctx)
|
||||
logger.info(ctx.build_info())
|
||||
|
||||
zip_file = fetch_zip(url)
|
||||
if zip_file is None:
|
||||
return
|
||||
|
||||
logger.info("Extracting...")
|
||||
zip_file.extractall(ctx.dest)
|
||||
logger.info("Extraction complete")
|
||||
|
||||
if ctx.link:
|
||||
add_libadwaita_links(ctx)
|
||||
|
||||
def install_from_artifact(ctx: InstallContext, artifact_path: Path):
|
||||
# Working from a pull request, special case it
|
||||
logger.info(f"Extracting artifact from '{artifact_path}'")
|
||||
artifacts = zipfile.ZipFile(artifact_path)
|
||||
|
||||
logger.info("Verifying artifact...")
|
||||
first_bad_file = artifacts.testzip()
|
||||
if first_bad_file is not None:
|
||||
logger.error(f'Zip appears to be corrupt, first bad file is "{first_bad_file}"')
|
||||
return None
|
||||
logger.info("Artifact verified")
|
||||
|
||||
logger.info(ctx.build_info(False))
|
||||
|
||||
# The zip, inside the artifacts, that we want to pull out
|
||||
zip_name = f"catppuccin-{ctx.flavor}-{ctx.accent}-standard+default.zip"
|
||||
logger.info(f"Pulling '{zip_name}' from the artifacts")
|
||||
info = artifacts.getinfo(zip_name)
|
||||
|
||||
logger.info("Extracting the artifact...")
|
||||
artifact = zipfile.ZipFile(io.BytesIO(artifacts.read(info)))
|
||||
artifact.extractall(ctx.dest)
|
||||
logger.info("Extraction complete")
|
||||
|
||||
if ctx.link:
|
||||
logger.info("Adding links (with rewrite)")
|
||||
add_libadwaita_links(ctx, True)
|
||||
logger.info("Links added")
|
||||
|
||||
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
|
||||
)
|
||||
|
||||
if args.from_artifact:
|
||||
install_from_artifact(ctx, args.from_artifact)
|
||||
return
|
||||
|
||||
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.
|
123
patches/colloid/palette.tera
Normal file
@@ -0,0 +1,123 @@
|
||||
---
|
||||
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..4ff0da0d
|
||||
--- /dev/null
|
||||
+++ b/src/sass/_color-palette-catppuccin-{{ flavor.identifier }}.scss
|
||||
@@ -0,0 +1,87 @@
|
||||
+ // Our accents
|
||||
+ $rosewater: #{{ palette.rosewater.hex }};
|
||||
+ $flamingo: #{{ palette.flamingo.hex }};
|
||||
+ $pink: #{{ palette.pink.hex }};
|
||||
+ $mauve: #{{ palette.mauve.hex }};
|
||||
+ $red: #{{ palette.red.hex }};
|
||||
+ $maroon: #{{ palette.maroon.hex }};
|
||||
+ $peach: #{{ palette.peach.hex }};
|
||||
+ $yellow: #{{ palette.yellow.hex }};
|
||||
+ $green: #{{ palette.green.hex }};
|
||||
+ $teal: #{{ palette.teal.hex }};
|
||||
+ $sky: #{{ palette.sky.hex }};
|
||||
+ $sapphire: #{{ palette.sapphire.hex }};
|
||||
+ $blue: #{{ palette.blue.hex }};
|
||||
+ $lavender: #{{ palette.lavender.hex }};
|
||||
+// 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
|
||||
{% if flavor.dark -%} {#- https://github.com/catppuccin/gtk/blob/0c3e8817da94769887c690b2211e006b287b27b1/scripts/recolor.py#L153-L176 -#}
|
||||
+$grey-050: #{{ palette.overlay2.hex }};
|
||||
+$grey-100: #{{ palette.overlay1.hex }};
|
||||
+$grey-150: #{{ palette.overlay0.hex }};
|
||||
+$grey-200: #{{ palette.surface2.hex }};
|
||||
+$grey-250: #{{ palette.surface1.hex }};
|
||||
+$grey-300: red;
|
||||
+$grey-350: red;
|
||||
+$grey-400: red;
|
||||
+$grey-450: red;
|
||||
+$grey-500: red;
|
||||
+$grey-550: red;
|
||||
+$grey-600: red;
|
||||
+$grey-650: #{{ palette.surface0.hex }};
|
||||
+$grey-700: #{{ palette.base.hex }};
|
||||
+$grey-750: #{{ palette.crust.hex }};
|
||||
+$grey-800: #{{ palette.crust.hex }};
|
||||
+$grey-850: #020202;
|
||||
+$grey-900: #010101;
|
||||
+$grey-950: #000000;
|
||||
{%- else -%} {#- Light mode https://github.com/catppuccin/gtk/blob/0c3e8817da94769887c690b2211e006b287b27b1/scripts/recolor.py#L128-L151 -#}
|
||||
+$grey-050: #{{ palette.crust.hex }};
|
||||
+$grey-100: #{{ palette.mantle.hex }};
|
||||
+$grey-150: #{{ palette.base.hex }};
|
||||
+$grey-200: #{{ palette.surface0.hex }};
|
||||
+$grey-250: #{{ palette.surface1.hex }};
|
||||
+$grey-300: red;
|
||||
+$grey-350: red;
|
||||
+$grey-400: red;
|
||||
+$grey-450: red;
|
||||
+$grey-500: red;
|
||||
+$grey-550: red;
|
||||
+$grey-600: red;
|
||||
+$grey-650: #{{ palette.base.hex }};
|
||||
+$grey-700: #{{ palette.base.hex }};
|
||||
+$grey-750: #{{ palette.mantle.hex }};
|
||||
+$grey-800: #{{ palette.text.hex }};
|
||||
+$grey-850: #020202;
|
||||
+$grey-900: #010101;
|
||||
+$grey-950: #000000;
|
||||
{%- endif %}
|
||||
+
|
||||
+// White
|
||||
+$white: #eff1f5;
|
||||
+
|
||||
+// Black
|
||||
+$black: #11111b;
|
||||
+
|
||||
+// 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
|
93
patches/colloid/sass-palette-frappe.patch
Normal file
@@ -0,0 +1,93 @@
|
||||
diff --git a/src/sass/_color-palette-catppuccin-frappe.scss b/src/sass/_color-palette-catppuccin-frappe.scss
|
||||
new file mode 100644
|
||||
index 00000000..4ff0da0d
|
||||
--- /dev/null
|
||||
+++ b/src/sass/_color-palette-catppuccin-frappe.scss
|
||||
@@ -0,0 +1,87 @@
|
||||
+ // Our accents
|
||||
+ $rosewater: #f2d5cf;
|
||||
+ $flamingo: #eebebe;
|
||||
+ $pink: #f4b8e4;
|
||||
+ $mauve: #ca9ee6;
|
||||
+ $red: #e78284;
|
||||
+ $maroon: #ea999c;
|
||||
+ $peach: #ef9f76;
|
||||
+ $yellow: #e5c890;
|
||||
+ $green: #a6d189;
|
||||
+ $teal: #81c8be;
|
||||
+ $sky: #99d1db;
|
||||
+ $sapphire: #85c1dc;
|
||||
+ $blue: #8caaee;
|
||||
+ $lavender: #babbf1;
|
||||
+// 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: #949cbb;
|
||||
+$grey-100: #838ba7;
|
||||
+$grey-150: #737994;
|
||||
+$grey-200: #626880;
|
||||
+$grey-250: #51576d;
|
||||
+$grey-300: red;
|
||||
+$grey-350: red;
|
||||
+$grey-400: red;
|
||||
+$grey-450: red;
|
||||
+$grey-500: red;
|
||||
+$grey-550: red;
|
||||
+$grey-600: red;
|
||||
+$grey-650: #414559;
|
||||
+$grey-700: #303446;
|
||||
+$grey-750: #232634;
|
||||
+$grey-800: #232634;
|
||||
+$grey-850: #020202;
|
||||
+$grey-900: #010101;
|
||||
+$grey-950: #000000;
|
||||
+
|
||||
+// White
|
||||
+$white: #eff1f5;
|
||||
+
|
||||
+// Black
|
||||
+$black: #11111b;
|
||||
+
|
||||
+// Button
|
||||
+$button-close: #e78284;
|
||||
+$button-max: #a6d189;
|
||||
+$button-min: #e5c890;
|
||||
+
|
||||
+// Link
|
||||
+$links: #99d1db;
|
||||
+
|
||||
+// Theme
|
||||
+$default-light: $purple-light;
|
||||
+$default-dark: $purple-dark;
|
93
patches/colloid/sass-palette-latte.patch
Normal file
@@ -0,0 +1,93 @@
|
||||
diff --git a/src/sass/_color-palette-catppuccin-latte.scss b/src/sass/_color-palette-catppuccin-latte.scss
|
||||
new file mode 100644
|
||||
index 00000000..4ff0da0d
|
||||
--- /dev/null
|
||||
+++ b/src/sass/_color-palette-catppuccin-latte.scss
|
||||
@@ -0,0 +1,87 @@
|
||||
+ // Our accents
|
||||
+ $rosewater: #dc8a78;
|
||||
+ $flamingo: #dd7878;
|
||||
+ $pink: #ea76cb;
|
||||
+ $mauve: #8839ef;
|
||||
+ $red: #d20f39;
|
||||
+ $maroon: #e64553;
|
||||
+ $peach: #fe640b;
|
||||
+ $yellow: #df8e1d;
|
||||
+ $green: #40a02b;
|
||||
+ $teal: #179299;
|
||||
+ $sky: #04a5e5;
|
||||
+ $sapphire: #209fb5;
|
||||
+ $blue: #1e66f5;
|
||||
+ $lavender: #7287fd;
|
||||
+// 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: #dce0e8;
|
||||
+$grey-100: #e6e9ef;
|
||||
+$grey-150: #eff1f5;
|
||||
+$grey-200: #ccd0da;
|
||||
+$grey-250: #bcc0cc;
|
||||
+$grey-300: red;
|
||||
+$grey-350: red;
|
||||
+$grey-400: red;
|
||||
+$grey-450: red;
|
||||
+$grey-500: red;
|
||||
+$grey-550: red;
|
||||
+$grey-600: red;
|
||||
+$grey-650: #eff1f5;
|
||||
+$grey-700: #eff1f5;
|
||||
+$grey-750: #e6e9ef;
|
||||
+$grey-800: #4c4f69;
|
||||
+$grey-850: #020202;
|
||||
+$grey-900: #010101;
|
||||
+$grey-950: #000000;
|
||||
+
|
||||
+// White
|
||||
+$white: #eff1f5;
|
||||
+
|
||||
+// Black
|
||||
+$black: #11111b;
|
||||
+
|
||||
+// Button
|
||||
+$button-close: #d20f39;
|
||||
+$button-max: #40a02b;
|
||||
+$button-min: #df8e1d;
|
||||
+
|
||||
+// Link
|
||||
+$links: #04a5e5;
|
||||
+
|
||||
+// Theme
|
||||
+$default-light: $purple-light;
|
||||
+$default-dark: $purple-dark;
|
93
patches/colloid/sass-palette-macchiato.patch
Normal file
@@ -0,0 +1,93 @@
|
||||
diff --git a/src/sass/_color-palette-catppuccin-macchiato.scss b/src/sass/_color-palette-catppuccin-macchiato.scss
|
||||
new file mode 100644
|
||||
index 00000000..4ff0da0d
|
||||
--- /dev/null
|
||||
+++ b/src/sass/_color-palette-catppuccin-macchiato.scss
|
||||
@@ -0,0 +1,87 @@
|
||||
+ // Our accents
|
||||
+ $rosewater: #f4dbd6;
|
||||
+ $flamingo: #f0c6c6;
|
||||
+ $pink: #f5bde6;
|
||||
+ $mauve: #c6a0f6;
|
||||
+ $red: #ed8796;
|
||||
+ $maroon: #ee99a0;
|
||||
+ $peach: #f5a97f;
|
||||
+ $yellow: #eed49f;
|
||||
+ $green: #a6da95;
|
||||
+ $teal: #8bd5ca;
|
||||
+ $sky: #91d7e3;
|
||||
+ $sapphire: #7dc4e4;
|
||||
+ $blue: #8aadf4;
|
||||
+ $lavender: #b7bdf8;
|
||||
+// 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: #939ab7;
|
||||
+$grey-100: #8087a2;
|
||||
+$grey-150: #6e738d;
|
||||
+$grey-200: #5b6078;
|
||||
+$grey-250: #494d64;
|
||||
+$grey-300: red;
|
||||
+$grey-350: red;
|
||||
+$grey-400: red;
|
||||
+$grey-450: red;
|
||||
+$grey-500: red;
|
||||
+$grey-550: red;
|
||||
+$grey-600: red;
|
||||
+$grey-650: #363a4f;
|
||||
+$grey-700: #24273a;
|
||||
+$grey-750: #181926;
|
||||
+$grey-800: #181926;
|
||||
+$grey-850: #020202;
|
||||
+$grey-900: #010101;
|
||||
+$grey-950: #000000;
|
||||
+
|
||||
+// White
|
||||
+$white: #eff1f5;
|
||||
+
|
||||
+// Black
|
||||
+$black: #11111b;
|
||||
+
|
||||
+// Button
|
||||
+$button-close: #ed8796;
|
||||
+$button-max: #a6da95;
|
||||
+$button-min: #eed49f;
|
||||
+
|
||||
+// Link
|
||||
+$links: #91d7e3;
|
||||
+
|
||||
+// Theme
|
||||
+$default-light: $purple-light;
|
||||
+$default-dark: $purple-dark;
|
93
patches/colloid/sass-palette-mocha.patch
Normal file
@@ -0,0 +1,93 @@
|
||||
diff --git a/src/sass/_color-palette-catppuccin-mocha.scss b/src/sass/_color-palette-catppuccin-mocha.scss
|
||||
new file mode 100644
|
||||
index 00000000..4ff0da0d
|
||||
--- /dev/null
|
||||
+++ b/src/sass/_color-palette-catppuccin-mocha.scss
|
||||
@@ -0,0 +1,87 @@
|
||||
+ // Our accents
|
||||
+ $rosewater: #f5e0dc;
|
||||
+ $flamingo: #f2cdcd;
|
||||
+ $pink: #f5c2e7;
|
||||
+ $mauve: #cba6f7;
|
||||
+ $red: #f38ba8;
|
||||
+ $maroon: #eba0ac;
|
||||
+ $peach: #fab387;
|
||||
+ $yellow: #f9e2af;
|
||||
+ $green: #a6e3a1;
|
||||
+ $teal: #94e2d5;
|
||||
+ $sky: #89dceb;
|
||||
+ $sapphire: #74c7ec;
|
||||
+ $blue: #89b4fa;
|
||||
+ $lavender: #b4befe;
|
||||
+// 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: #9399b2;
|
||||
+$grey-100: #7f849c;
|
||||
+$grey-150: #6c7086;
|
||||
+$grey-200: #585b70;
|
||||
+$grey-250: #45475a;
|
||||
+$grey-300: red;
|
||||
+$grey-350: red;
|
||||
+$grey-400: red;
|
||||
+$grey-450: red;
|
||||
+$grey-500: red;
|
||||
+$grey-550: red;
|
||||
+$grey-600: red;
|
||||
+$grey-650: #313244;
|
||||
+$grey-700: #1e1e2e;
|
||||
+$grey-750: #11111b;
|
||||
+$grey-800: #11111b;
|
||||
+$grey-850: #020202;
|
||||
+$grey-900: #010101;
|
||||
+$grey-950: #000000;
|
||||
+
|
||||
+// White
|
||||
+$white: #eff1f5;
|
||||
+
|
||||
+// Black
|
||||
+$black: #11111b;
|
||||
+
|
||||
+// Button
|
||||
+$button-close: #f38ba8;
|
||||
+$button-max: #a6e3a1;
|
||||
+$button-min: #f9e2af;
|
||||
+
|
||||
+// Link
|
||||
+$links: #89dceb;
|
||||
+
|
||||
+// Theme
|
||||
+$default-light: $purple-light;
|
||||
+$default-dark: $purple-dark;
|
46
patches/colloid/theme-func.patch
Normal file
@@ -0,0 +1,46 @@
|
||||
diff --git a/src/sass/_colors.scss b/src/sass/_colors.scss
|
||||
index 8738bf37..71797c6d 100644
|
||||
--- a/src/sass/_colors.scss
|
||||
+++ b/src/sass/_colors.scss
|
||||
@@ -58,27 +58,20 @@
|
||||
}
|
||||
|
||||
@function theme($color) {
|
||||
- @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; }
|
||||
- @if ($theme == 'orange') { @return $orange-dark; }
|
||||
- @if ($theme == 'yellow') { @return $yellow-dark; }
|
||||
- @if ($theme == 'green') { @return $green-dark; }
|
||||
- @if ($theme == 'teal') { @return $teal-dark; }
|
||||
- @if ($theme == 'grey') { @return $grey-600; }
|
||||
- } @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; }
|
||||
- @if ($theme == 'orange') { @return $orange-light; }
|
||||
- @if ($theme == 'yellow') { @return $yellow-light; }
|
||||
- @if ($theme == 'green') { @return $green-light; }
|
||||
- @if ($theme == 'teal') { @return $teal-light; }
|
||||
- @if ($theme == 'grey') { @return $grey-200; }
|
||||
- }
|
||||
+ @if ($theme == 'rosewater') { @return $rosewater; }
|
||||
+ @if ($theme == 'flamingo') { @return $flamingo; }
|
||||
+ @if ($theme == 'pink') { @return $pink; }
|
||||
+ @if ($theme == 'mauve') { @return $mauve; }
|
||||
+ @if ($theme == 'red') { @return $red; }
|
||||
+ @if ($theme == 'maroon') { @return $maroon; }
|
||||
+ @if ($theme == 'peach') { @return $peach; }
|
||||
+ @if ($theme == 'yellow') { @return $yellow; }
|
||||
+ @if ($theme == 'green') { @return $green; }
|
||||
+ @if ($theme == 'teal') { @return $teal; }
|
||||
+ @if ($theme == 'sky') { @return $sky; }
|
||||
+ @if ($theme == 'sapphire') { @return $sapphire; }
|
||||
+ @if ($theme == 'blue') { @return $blue; }
|
||||
+ @if ($theme == 'lavender') { @return $lavender; }
|
||||
}
|
||||
|
||||
@function background($type) {
|
2
patches/xfwm4/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
generated/
|
||||
patched/
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
244
patches/xfwm4/generate_assets.py
Normal file
@@ -0,0 +1,244 @@
|
||||
from typing import List
|
||||
from catppuccin import PALETTE
|
||||
from catppuccin.models import Flavor
|
||||
|
||||
import re, os, shutil, subprocess, time
|
||||
from dataclasses import dataclass
|
||||
|
||||
THIS_DIR = os.path.dirname(os.path.realpath(__file__))
|
||||
|
||||
INDEX = [
|
||||
"close-active",
|
||||
"close-inactive",
|
||||
"close-prelight",
|
||||
"close-pressed",
|
||||
"hide-active",
|
||||
"hide-inactive",
|
||||
"hide-prelight",
|
||||
"hide-pressed",
|
||||
"maximize-active",
|
||||
"maximize-inactive",
|
||||
"maximize-prelight",
|
||||
"maximize-pressed",
|
||||
"maximize-toggled-active",
|
||||
"maximize-toggled-inactive",
|
||||
"maximize-toggled-prelight",
|
||||
"maximize-toggled-pressed",
|
||||
"menu-active",
|
||||
"menu-inactive",
|
||||
"menu-prelight",
|
||||
"menu-pressed",
|
||||
"shade-active",
|
||||
"shade-inactive",
|
||||
"shade-prelight",
|
||||
"shade-pressed",
|
||||
"shade-toggled-active",
|
||||
"shade-toggled-inactive",
|
||||
"shade-toggled-prelight",
|
||||
"shade-toggled-pressed",
|
||||
"stick-active",
|
||||
"stick-inactive",
|
||||
"stick-prelight",
|
||||
"stick-pressed",
|
||||
"stick-toggled-active",
|
||||
"stick-toggled-inactive",
|
||||
"stick-toggled-prelight",
|
||||
"stick-toggled-pressed",
|
||||
"title-1-active",
|
||||
"title-1-inactive",
|
||||
"title-2-active",
|
||||
"title-2-inactive",
|
||||
"title-3-active",
|
||||
"title-3-inactive",
|
||||
"title-4-active",
|
||||
"title-4-inactive",
|
||||
"title-5-active",
|
||||
"title-5-inactive",
|
||||
"top-left-active",
|
||||
"top-left-inactive",
|
||||
"top-right-active",
|
||||
"top-right-inactive",
|
||||
"left-active",
|
||||
"left-inactive",
|
||||
"right-active",
|
||||
"right-inactive",
|
||||
"bottom-active",
|
||||
"bottom-inactive",
|
||||
"bottom-left-active",
|
||||
"bottom-left-inactive",
|
||||
"bottom-right-active",
|
||||
"bottom-right-inactive",
|
||||
]
|
||||
|
||||
|
||||
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))
|
||||
|
||||
|
||||
def generate_for_flavor(flavor: Flavor):
|
||||
# Setup the palette
|
||||
palette = flavor.colors
|
||||
|
||||
close_color=f'#{palette.red.hex}'
|
||||
max_color=f'#{palette.green.hex}'
|
||||
min_color=f'#{palette.yellow.hex}'
|
||||
|
||||
# We expand the source assets into the 4 flavors, but need to map between
|
||||
# Their definition of dark and ours. This means that latte will get the -light assets
|
||||
# and the rest get the -dark assets to work from
|
||||
color = "-dark"
|
||||
if not flavor.dark:
|
||||
color = "-light"
|
||||
|
||||
# Make a directory for our patched SVGs to live in before compilation
|
||||
odir = f"{THIS_DIR}/patched"
|
||||
os.makedirs(odir, exist_ok=True)
|
||||
|
||||
# Copy the base assets into the output
|
||||
shutil.copy(
|
||||
f"{THIS_DIR}/assets{color}.svg",
|
||||
f"{odir}/assets-catppuccin-{flavor.identifier}.svg",
|
||||
)
|
||||
shutil.copy(
|
||||
f"{THIS_DIR}/assets{color}-normal.svg",
|
||||
f"{odir}/assets-catppuccin-{flavor.identifier}-normal.svg",
|
||||
)
|
||||
|
||||
# Patch all the SVGs
|
||||
path = f"{odir}/assets-catppuccin-{flavor.identifier}-normal.svg"
|
||||
subst_text(path, "#fd5f51", close_color)
|
||||
subst_text(path, "#38c76a", max_color)
|
||||
subst_text(path, "#fdbe04", min_color)
|
||||
|
||||
headerbar = palette.base.hex
|
||||
headerbar_backdrop = palette.mantle.hex
|
||||
|
||||
if flavor.dark:
|
||||
path = f"{odir}/assets-catppuccin-{flavor.identifier}.svg"
|
||||
subst_text(path, "#242424", headerbar)
|
||||
subst_text(path, "#2c2c2c", headerbar_backdrop)
|
||||
|
||||
path = f"{odir}/assets-catppuccin-{flavor.identifier}-normal.svg"
|
||||
subst_text(path, "#242424", headerbar)
|
||||
subst_text(path, "#2c2c2c", headerbar_backdrop)
|
||||
else:
|
||||
path = f"{odir}/assets-catppuccin-{flavor.identifier}.svg"
|
||||
subst_text(path, "#f2f2f2", headerbar)
|
||||
subst_text(path, "#fafafa", headerbar_backdrop)
|
||||
|
||||
path = f"{odir}/assets-catppuccin-{flavor.identifier}-normal.svg"
|
||||
subst_text(path, "#f2f2f2", headerbar)
|
||||
subst_text(path, "#fafafa", headerbar_backdrop)
|
||||
|
||||
|
||||
@dataclass
|
||||
class WorkerInput:
|
||||
output_path: str
|
||||
output_dir: str
|
||||
input_path: str
|
||||
dpi: str
|
||||
ident: str
|
||||
|
||||
|
||||
def call_subprocesses(inp: WorkerInput):
|
||||
inkscape = "inkscape"
|
||||
optipng = "optipng"
|
||||
|
||||
return [
|
||||
subprocess.Popen(
|
||||
[
|
||||
inkscape,
|
||||
"--export-id",
|
||||
inp.ident,
|
||||
"--export-id-only",
|
||||
"--export-dpi",
|
||||
inp.dpi,
|
||||
"--export-filename",
|
||||
inp.output_path,
|
||||
inp.input_path,
|
||||
],
|
||||
stdout=subprocess.DEVNULL,
|
||||
stderr=subprocess.STDOUT,
|
||||
),
|
||||
subprocess.Popen(
|
||||
[optipng, "-o7", "--quiet", inp.output_path],
|
||||
stdout=subprocess.DEVNULL,
|
||||
stderr=subprocess.STDOUT,
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
@dataclass
|
||||
class RenderState:
|
||||
tasks: List[subprocess.Popen]
|
||||
input_root: str
|
||||
output_root: str
|
||||
|
||||
|
||||
screen_to_dpi = {
|
||||
"-hdpi": "144",
|
||||
"-xhdpi": "192",
|
||||
}
|
||||
|
||||
def render_for_screen(state: RenderState, flavor: Flavor, screen: str, ident: str):
|
||||
# NOTE: We do not generate for the -normal variant currently, that would just be
|
||||
# a stupid amount of compute and time for little benefit
|
||||
src_file = f"{state.input_root}/assets-catppuccin-{flavor.identifier}.svg"
|
||||
|
||||
output_dir = f"{state.output_root}/assets-catppuccin-{flavor.identifier}{screen}"
|
||||
output_path = f"{output_dir}/{ident}.png"
|
||||
|
||||
dpi = screen_to_dpi.get(screen, "96")
|
||||
|
||||
os.makedirs(output_dir, exist_ok=True)
|
||||
|
||||
if os.path.exists(output_path):
|
||||
print(f"Skipping '{output_path}', already generated")
|
||||
else:
|
||||
new_tasks = call_subprocesses(
|
||||
WorkerInput(
|
||||
output_path=output_path,
|
||||
output_dir=output_dir,
|
||||
input_path=src_file,
|
||||
dpi=dpi,
|
||||
ident=ident,
|
||||
)
|
||||
)
|
||||
state.tasks.extend(new_tasks)
|
||||
|
||||
|
||||
def render_for_flavor(flavor: Flavor, state: RenderState):
|
||||
print(
|
||||
f"Starting render tasks for {flavor.identifier}"
|
||||
)
|
||||
for ident in INDEX:
|
||||
render_for_screen(state=state, flavor=flavor, screen="", ident=ident)
|
||||
render_for_screen(state=state, flavor=flavor, screen="-hdpi", ident=ident)
|
||||
render_for_screen(state=state, flavor=flavor, screen="-xhdpi", ident=ident)
|
||||
|
||||
|
||||
generate_for_flavor(PALETTE.mocha)
|
||||
generate_for_flavor(PALETTE.latte)
|
||||
generate_for_flavor(PALETTE.macchiato)
|
||||
generate_for_flavor(PALETTE.frappe)
|
||||
|
||||
state = RenderState(
|
||||
tasks=[], input_root=f"{THIS_DIR}/patched", output_root=f"{THIS_DIR}/generated"
|
||||
)
|
||||
start_time = time.time()
|
||||
|
||||
render_for_flavor(PALETTE.mocha, state)
|
||||
render_for_flavor(PALETTE.latte, state)
|
||||
render_for_flavor(PALETTE.macchiato, state)
|
||||
render_for_flavor(PALETTE.frappe, state)
|
||||
|
||||
for task in state.tasks:
|
||||
task.wait()
|
||||
|
||||
end_time = time.time() - start_time
|
||||
print(f"Generation complete in {end_time} seconds")
|
||||
shutil.rmtree(state.input_root)
|
9
renovate.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": [
|
||||
"config:recommended"
|
||||
],
|
||||
"git-submodules": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
1
requirements.txt
Normal file
@@ -0,0 +1 @@
|
||||
catppuccin>=2.0.0
|
13
shell.nix
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
pkgs ? import <nixpkgs> { },
|
||||
}:
|
||||
pkgs.mkShell {
|
||||
name = "dev-shell";
|
||||
buildInputs = with pkgs; [
|
||||
python311
|
||||
python311Packages.catppuccin
|
||||
sassc
|
||||
inkscape
|
||||
optipng
|
||||
];
|
||||
}
|
@@ -1,56 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
version="1.1"
|
||||
id="svg4"
|
||||
sodipodi:docname="calendar-arrow-left.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<metadata
|
||||
id="metadata10">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs8" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="704"
|
||||
id="namedview6"
|
||||
showgrid="false"
|
||||
inkscape:zoom="29.5"
|
||||
inkscape:cx="13.680381"
|
||||
inkscape:cy="6.1418434"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4" />
|
||||
<path
|
||||
d="M10 3v10L5 8z"
|
||||
fill="#000000"
|
||||
opacity="0.54"
|
||||
id="path2"
|
||||
style="fill:#e6e6e6" />
|
||||
</svg>
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -1,56 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
version="1.1"
|
||||
id="svg4"
|
||||
sodipodi:docname="calendar-arrow-right.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<metadata
|
||||
id="metadata10">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs8" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="704"
|
||||
id="namedview6"
|
||||
showgrid="false"
|
||||
inkscape:zoom="14.75"
|
||||
inkscape:cx="8"
|
||||
inkscape:cy="8"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4" />
|
||||
<path
|
||||
d="M6 3v10l5-5z"
|
||||
fill="#000000"
|
||||
opacity="0.54"
|
||||
id="path2"
|
||||
style="fill:#e6e6e6" />
|
||||
</svg>
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -1,3 +0,0 @@
|
||||
<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="12" cy="12" r="10" fill="#ffffff" opacity=".12"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 168 B |
@@ -1,3 +0,0 @@
|
||||
<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="12" cy="12" r="10" fill="#ffffff" opacity=".12"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 168 B |
@@ -1,4 +0,0 @@
|
||||
<svg width="40" height="20" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect transform="scale(-1,1)" x="-40" y="-.019988" width="40" height="20" rx="10" ry="10" fill="#ffffff" opacity=".35" stroke-width="0" style="paint-order:stroke fill markers"/>
|
||||
<circle cx="9.98" cy="9.98" r="8.98" fill="#ffffff" stroke-width="0" style="paint-order:stroke fill markers"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 376 B |
@@ -1,6 +0,0 @@
|
||||
<svg width="400" height="120" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="translate(0 -932.36)">
|
||||
<rect x="10" y="942.36" width="380" height="160" rx="18" ry="18" fill="#4d4d4d" stroke-width="0"/>
|
||||
<path class="ColorScheme-Text" d="m200 964.36c-4.4183 0-8 3.5817-8 8h-16v4h48v-4h-16c0-4.4183-3.5817-8-8-8zm0 4c2.2091 1e-5 4 1.7909 4 4h-8c1e-5 -2.2091 1.7909-4 4-4zm-20 12v32c0 4.4321 3.5679 8.0001 8 8.0001h24c4.4321 0 8-3.568 8-8.0001v-32h-38zm4 4h32v28c0 2.2161-1.7839 4.0001-4 4.0001h-24c-2.2161 0-4-1.784-4-4.0001z" fill="#ececec"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 573 B |
@@ -1,56 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
version="1.1"
|
||||
id="svg4"
|
||||
sodipodi:docname="calendar-arrow-left.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<metadata
|
||||
id="metadata10">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs8" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="704"
|
||||
id="namedview6"
|
||||
showgrid="false"
|
||||
inkscape:zoom="29.5"
|
||||
inkscape:cx="13.680381"
|
||||
inkscape:cy="6.1418434"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4" />
|
||||
<path
|
||||
d="M10 3v10L5 8z"
|
||||
fill="#000000"
|
||||
opacity="0.54"
|
||||
id="path2"
|
||||
style="fill:#e6e6e6" />
|
||||
</svg>
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -1,56 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
version="1.1"
|
||||
id="svg4"
|
||||
sodipodi:docname="calendar-arrow-right.svg"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
|
||||
<metadata
|
||||
id="metadata10">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs8" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="704"
|
||||
id="namedview6"
|
||||
showgrid="false"
|
||||
inkscape:zoom="14.75"
|
||||
inkscape:cx="8"
|
||||
inkscape:cy="8"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4" />
|
||||
<path
|
||||
d="M6 3v10l5-5z"
|
||||
fill="#000000"
|
||||
opacity="0.54"
|
||||
id="path2"
|
||||
style="fill:#e6e6e6" />
|
||||
</svg>
|
Before Width: | Height: | Size: 1.5 KiB |
@@ -1,3 +0,0 @@
|
||||
<svg width="24" height="24" fill="#000000" opacity=".54" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m12 2c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z" fill="#dfdfdf"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 291 B |
@@ -1,3 +0,0 @@
|
||||
<svg width="24" height="24" fill="#000000" opacity=".54" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m12 2c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z" fill="#dfdfdf"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 291 B |
@@ -1,4 +0,0 @@
|
||||
<svg width="40" height="20" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m10 0c-5.54 0-10 4.46-10 10s4.46 10 10 10h20c5.54 0 10-4.46 10-10s-4.46-10-10-10zm0 1h20c4.986 0 9 4.014 9 9s-4.014 9-9 9h-20c-4.986 0-9-4.014-9-9s4.014-9 9-9z" fill="#ffffff" opacity=".5" stroke-width="0" style="paint-order:stroke fill markers"/>
|
||||
<circle transform="scale(-1,1)" cx="-10" cy="10" r="5" fill="#ffffff" opacity=".5" stroke-width="0" style="paint-order:stroke fill markers"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 486 B |
@@ -1,6 +0,0 @@
|
||||
<svg width="400" height="120" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="translate(0 -932.36)">
|
||||
<rect x="10" y="942.36" width="380" height="160" rx="18" ry="18" fill="#4d4d4d" stroke-width="0"/>
|
||||
<path class="ColorScheme-Text" d="m200 964.36c-4.4183 0-8 3.5817-8 8h-16v4h48v-4h-16c0-4.4183-3.5817-8-8-8zm0 4c2.2091 1e-5 4 1.7909 4 4h-8c1e-5 -2.2091 1.7909-4 4-4zm-20 12v32c0 4.4321 3.5679 8.0001 8 8.0001h24c4.4321 0 8-3.568 8-8.0001v-32h-38zm4 4h32v28c0 2.2161-1.7839 4.0001-4 4.0001h-24c-2.2161 0-4-1.784-4-4.0001z" fill="#ececec"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 573 B |
@@ -1,3 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
|
||||
<path d="M10 3v10L5 8z" fill="#000000" opacity="0.54"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 149 B |
@@ -1,3 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
|
||||
<path d="M6 3v10l5-5z" fill="#000000" opacity="0.54"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 148 B |
@@ -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="#000000" 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="#000000" 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="#000000" 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="#ffffff" 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="#4d4d4d"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 573 B |
@@ -1,112 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<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="35"
|
||||
height="200"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
||||
sodipodi:docname="add-workspace-hover.svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="4"
|
||||
inkscape:cx="-81.038405"
|
||||
inkscape:cy="108.58132"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="709"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
showguides="false"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:bbox-paths="true"
|
||||
inkscape:snap-bbox-edge-midpoints="true"
|
||||
inkscape:bbox-nodes="true">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3040"
|
||||
empspacing="5"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" />
|
||||
<sodipodi:guide
|
||||
orientation="0,1"
|
||||
position="20,100"
|
||||
id="guide3893"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
orientation="1,0"
|
||||
position="18,190"
|
||||
id="guide3895"
|
||||
inkscape:locked="false" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Notice" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Attribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#ShareAlike" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-852.36218)">
|
||||
<path
|
||||
id="rect4694"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 7,857.36218 28,0 0,190.00002 -28,0 c -1.108,0 -2,-0.892 -2,-2 L 5,859.36218 c 0,-1.108 0.892,-2 2,-2 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sccssss" />
|
||||
<g
|
||||
transform="translate(0,-0.9999969)"
|
||||
id="g3917-7"
|
||||
style="fill:#eceff1;fill-opacity:1;opacity:0.5;stroke:none;stroke-opacity:1" />
|
||||
<path
|
||||
id="rect4804"
|
||||
transform="translate(0,852.36218)"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 18,94 c -0.554,0 -1,0.446 -1,1 l 0,4 -4,0 c -0.554,0 -1,0.446 -1,1 0,0.554 0.446,1 1,1 l 4,0 0,4 c 0,0.554 0.446,1 1,1 0.554,0 1,-0.446 1,-1 l 0,-4 4,0 c 0.554,0 1,-0.446 1,-1 0,-0.554 -0.446,-1 -1,-1 l -4,0 0,-4 c 0,-0.554 -0.446,-1 -1,-1 z m 8,6 a 8,8 0 0 1 -8,8 8,8 0 0 1 -8,-8 8,8 0 0 1 8,-8 8,8 0 0 1 8,8 z" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 4.8 KiB |
@@ -1,113 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<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="35"
|
||||
height="200"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
||||
sodipodi:docname="add-workspace.svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="4"
|
||||
inkscape:cx="-28.526103"
|
||||
inkscape:cy="75.41215"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="709"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
showguides="false"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:bbox-paths="true"
|
||||
inkscape:snap-bbox-edge-midpoints="true"
|
||||
inkscape:bbox-nodes="true"
|
||||
inkscape:document-rotation="0">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3040"
|
||||
empspacing="5"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" />
|
||||
<sodipodi:guide
|
||||
orientation="0,1"
|
||||
position="20,100"
|
||||
id="guide3893"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
orientation="1,0"
|
||||
position="18,190"
|
||||
id="guide3895"
|
||||
inkscape:locked="false" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Notice" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#Attribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
<cc:requires
|
||||
rdf:resource="http://creativecommons.org/ns#ShareAlike" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-852.36218)">
|
||||
<path
|
||||
id="rect4694"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.35;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 7,857.36218 28,0 0,190.00002 -28,0 c -1.108,0 -2,-0.892 -2,-2 L 5,859.36218 c 0,-1.108 0.892,-2 2,-2 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sccssss" />
|
||||
<g
|
||||
transform="translate(0,-0.9999969)"
|
||||
id="g3917-7"
|
||||
style="fill:#eceff1;fill-opacity:1;opacity:0.5;stroke:none;stroke-opacity:1" />
|
||||
<path
|
||||
id="rect4804"
|
||||
transform="translate(0,852.36218)"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.87;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 18,94 c -0.554,0 -1,0.446 -1,1 l 0,4 -4,0 c -0.554,0 -1,0.446 -1,1 0,0.554 0.446,1 1,1 l 4,0 0,4 c 0,0.554 0.446,1 1,1 0.554,0 1,-0.446 1,-1 l 0,-4 4,0 c 0.554,0 1,-0.446 1,-1 0,-0.554 -0.446,-1 -1,-1 l -4,0 0,-4 c 0,-0.554 -0.446,-1 -1,-1 z m 8,6 a 8,8 0 0 1 -8,8 8,8 0 0 1 -8,-8 8,8 0 0 1 8,-8 8,8 0 0 1 8,8 z" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 4.8 KiB |
@@ -1,10 +0,0 @@
|
||||
<svg id="Foreground" width="26" height="26" enable-background="new 0 0 16 16" version="1.0" viewBox="0 0 18.909 18.909" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<filter id="filter839" x="-.048" y="-.048" width="1.096" height="1.096" color-interpolation-filters="sRGB">
|
||||
<feGaussianBlur stdDeviation="0.32"/>
|
||||
</filter>
|
||||
</defs>
|
||||
<circle cx="9.4545" cy="10.182" r="8" fill="#000000" filter="url(#filter839)" opacity=".1" stroke-width="0"/>
|
||||
<circle cx="9.4545" cy="9.4545" r="8" fill="#d8354a" stroke-width="0"/>
|
||||
<path d="m6.1115 5.7478c-0.092952 1e-7 -0.18588 0.035309-0.2571 0.10653-0.14245 0.14245-0.14245 0.37175 0 0.5142l3.0852 3.0866-3.0852 3.0852c-0.14245 0.14245-0.14245 0.37175 0 0.5142 0.14245 0.14245 0.37317 0.14245 0.51562 0l3.0852-3.0852 3.0852 3.0852c0.14245 0.14245 0.37175 0.14245 0.5142 0 0.14245-0.14245 0.14245-0.37175 0-0.5142l-3.0852-3.0852 3.0852-3.0866c0.14245-0.14245 0.14245-0.37175 0-0.5142-0.14245-0.14245-0.37175-0.14245-0.5142 0l-3.0852 3.0852-3.0852-3.0852c-0.071224-0.071224-0.16557-0.10653-0.25852-0.10653z" fill="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.3606" style="paint-order:markers stroke fill"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.2 KiB |
@@ -1,10 +0,0 @@
|
||||
<svg id="Foreground" width="26" height="26" enable-background="new 0 0 16 16" version="1.0" viewBox="0 0 18.909 18.909" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<filter id="filter839" x="-.048" y="-.048" width="1.096" height="1.096" color-interpolation-filters="sRGB">
|
||||
<feGaussianBlur stdDeviation="0.32"/>
|
||||
</filter>
|
||||
</defs>
|
||||
<circle cx="9.4545" cy="10.182" r="8" fill="#000000" filter="url(#filter839)" opacity=".1" stroke-width="0"/>
|
||||
<circle cx="9.4545" cy="9.4545" r="8" fill="#ff7a80" stroke-width="0"/>
|
||||
<path d="m6.1115 5.7478c-0.092952 1e-7 -0.18588 0.035309-0.2571 0.10653-0.14245 0.14245-0.14245 0.37175 0 0.5142l3.0852 3.0866-3.0852 3.0852c-0.14245 0.14245-0.14245 0.37175 0 0.5142 0.14245 0.14245 0.37317 0.14245 0.51562 0l3.0852-3.0852 3.0852 3.0852c0.14245 0.14245 0.37175 0.14245 0.5142 0 0.14245-0.14245 0.14245-0.37175 0-0.5142l-3.0852-3.0852 3.0852-3.0866c0.14245-0.14245 0.14245-0.37175 0-0.5142-0.14245-0.14245-0.37175-0.14245-0.5142 0l-3.0852 3.0852-3.0852-3.0852c-0.071224-0.071224-0.16557-0.10653-0.25852-0.10653z" fill="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.3606" style="paint-order:markers stroke fill"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.2 KiB |
@@ -1,10 +0,0 @@
|
||||
<svg id="Foreground" width="26" height="26" enable-background="new 0 0 16 16" version="1.0" viewBox="0 0 18.909 18.909" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<filter id="filter879" x="-.048" y="-.048" width="1.096" height="1.096" color-interpolation-filters="sRGB">
|
||||
<feGaussianBlur stdDeviation="0.32"/>
|
||||
</filter>
|
||||
</defs>
|
||||
<circle cx="9.4545" cy="10.182" r="8" fill="#000000" filter="url(#filter879)" opacity=".1" stroke-width="0"/>
|
||||
<circle cx="9.4545" cy="9.4545" r="8" fill="#f75a61" stroke-width="0"/>
|
||||
<path d="m6.1115 5.7478c-0.092952 1e-7 -0.18588 0.035309-0.2571 0.10653-0.14245 0.14245-0.14245 0.37175 0 0.5142l3.0852 3.0866-3.0852 3.0852c-0.14245 0.14245-0.14245 0.37175 0 0.5142 0.14245 0.14245 0.37317 0.14245 0.51562 0l3.0852-3.0852 3.0852 3.0852c0.14245 0.14245 0.37175 0.14245 0.5142 0 0.14245-0.14245 0.14245-0.37175 0-0.5142l-3.0852-3.0852 3.0852-3.0866c0.14245-0.14245 0.14245-0.37175 0-0.5142-0.14245-0.14245-0.37175-0.14245-0.5142 0l-3.0852 3.0852-3.0852-3.0852c-0.071224-0.071224-0.16557-0.10653-0.25852-0.10653z" fill="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.3606" style="paint-order:markers stroke fill"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.2 KiB |
@@ -1,138 +0,0 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
for theme in '' '-Purple' '-Pink' '-Red' '-Orange' '-Yellow' '-Green' '-Teal' '-Grey'; do
|
||||
for type in '' '-Nord' '-Dracula'; do
|
||||
case "$theme" in
|
||||
'')
|
||||
theme_color_dark='#1e66f5'
|
||||
theme_color_light='#8caaee'
|
||||
;;
|
||||
-Purple)
|
||||
theme_color_dark='#8839ef'
|
||||
theme_color_light='#ca9ee6'
|
||||
;;
|
||||
-Pink)
|
||||
theme_color_dark='#ea76cb'
|
||||
theme_color_light='#f4b8e4'
|
||||
;;
|
||||
-Red)
|
||||
theme_color_dark='#d20f39'
|
||||
theme_color_light='#e78284'
|
||||
;;
|
||||
-Orange)
|
||||
theme_color_dark='#fe640b'
|
||||
theme_color_light='#ef9f76'
|
||||
;;
|
||||
-Yellow)
|
||||
theme_color_dark='#df8e1d'
|
||||
theme_color_light='#e5c890'
|
||||
;;
|
||||
-Green)
|
||||
theme_color_dark='#40a02b'
|
||||
theme_color_light='#a6d189'
|
||||
;;
|
||||
-Teal)
|
||||
theme_color_dark='#179299'
|
||||
theme_color_light='#81c8be'
|
||||
;;
|
||||
-Grey)
|
||||
theme_color_dark='#45475a'
|
||||
theme_color_light='#ccd0da'
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ "$type" == '-Nord' ]]; then
|
||||
case "$theme" in
|
||||
'')
|
||||
theme_color_dark='#5e81ac'
|
||||
theme_color_light='#89a3c2'
|
||||
;;
|
||||
-Purple)
|
||||
theme_color_dark='#b57daa'
|
||||
theme_color_light='#c89dbf'
|
||||
;;
|
||||
-Pink)
|
||||
theme_color_dark='#cd7092'
|
||||
theme_color_light='#dc98b1'
|
||||
;;
|
||||
-Red)
|
||||
theme_color_dark='#c35b65'
|
||||
theme_color_light='#d4878f'
|
||||
;;
|
||||
-Orange)
|
||||
theme_color_dark='#d0846c'
|
||||
theme_color_light='#dca493'
|
||||
;;
|
||||
-Yellow)
|
||||
theme_color_dark='#e4b558'
|
||||
theme_color_light='#eac985'
|
||||
;;
|
||||
-Green)
|
||||
theme_color_dark='#82ac5d'
|
||||
theme_color_light='#a0c082'
|
||||
;;
|
||||
-Teal)
|
||||
theme_color_dark='#63a6a5'
|
||||
theme_color_light='#83b9b8'
|
||||
;;
|
||||
-Grey)
|
||||
theme_color_dark='#3a4150'
|
||||
theme_color_light='#d9dce3'
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [[ "$type" == '-Dracula' ]]; then
|
||||
case "$theme" in
|
||||
'')
|
||||
theme_color_dark='#a679ec'
|
||||
theme_color_light='#bd93f9'
|
||||
;;
|
||||
-Purple)
|
||||
theme_color_dark='#a679ec'
|
||||
theme_color_light='#bd93f9'
|
||||
;;
|
||||
-Pink)
|
||||
theme_color_dark='#f04cab'
|
||||
theme_color_light='#ff79c6'
|
||||
;;
|
||||
-Red)
|
||||
theme_color_dark='#f44d4d'
|
||||
theme_color_light='#ff5555'
|
||||
;;
|
||||
-Orange)
|
||||
theme_color_dark='#f8a854'
|
||||
theme_color_light='#ffb86c'
|
||||
;;
|
||||
-Yellow)
|
||||
theme_color_dark='#e8f467'
|
||||
theme_color_light='#f1fa8c'
|
||||
;;
|
||||
-Green)
|
||||
theme_color_dark='#4be772'
|
||||
theme_color_light='#50fa7b'
|
||||
;;
|
||||
-Teal)
|
||||
theme_color_dark='#20eed9'
|
||||
theme_color_light='#50fae9'
|
||||
;;
|
||||
-Grey)
|
||||
theme_color_dark='#3c3f51'
|
||||
theme_color_light='#d9dae3'
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [[ "$type" != '' ]]; then
|
||||
cp -rf "theme" "theme${theme}${type}"
|
||||
sed -i "s/#3c84f7/${theme_color_dark}/g" "theme${theme}${type}"/*.svg
|
||||
sed -i "s/#5b9bf8/${theme_color_light}/g" "theme${theme}${type}"/*.svg
|
||||
elif [[ "$theme" != '' ]]; then
|
||||
cp -rf "theme" "theme${theme}"
|
||||
sed -i "s/#3c84f7/${theme_color_dark}/g" "theme${theme}"/*.svg
|
||||
sed -i "s/#5b9bf8/${theme_color_light}/g" "theme${theme}"/*.svg
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
echo -e "DONE!"
|
@@ -1,6 +0,0 @@
|
||||
<svg width="35" height="200" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="translate(0 -852.36)" shape-rendering="auto">
|
||||
<path d="m7 857.36h28v190h-28c-1.108 0-2-0.892-2-2v-186c0-1.108 0.892-2 2-2z" color="#000000" color-rendering="auto" fill="#a679ec" image-rendering="auto" solid-color="#000000" style="isolation:auto;mix-blend-mode:normal"/>
|
||||
<path transform="translate(0 852.36)" d="m18 94c-0.554 0-1 0.446-1 1v4h-4c-0.554 0-1 0.446-1 1s0.446 1 1 1h4v4c0 0.554 0.446 1 1 1s1-0.446 1-1v-4h4c0.554 0 1-0.446 1-1s-0.446-1-1-1h-4v-4c0-0.554-0.446-1-1-1zm8 6a8 8 0 0 1-8 8 8 8 0 0 1-8-8 8 8 0 0 1 8-8 8 8 0 0 1 8 8z" color="#000000" color-rendering="auto" fill="#ffffff" image-rendering="auto" solid-color="#000000" style="isolation:auto;mix-blend-mode:normal"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 797 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">
|
||||
<path d="m12 2a10 10 0 0 0-10 10 10 10 0 0 0 10 10 10 10 0 0 0 10-10 10 10 0 0 0-10-10zm5.6289 5.9629v0.0019532c0.12781-4e-6 0.25558 0.04855 0.35352 0.14648 0.19587 0.19587 0.19587 0.51116 0 0.70703l-7.0723 7.0723c-0.02449 0.02449-0.050325 0.046133-0.078125 0.064453-0.02772 0.01839-0.055857 0.032682-0.085937 0.044922-0.03009 0.01224-0.06225 0.019271-0.09375 0.025391-0.03149 0.0061-0.063743 0.011718-0.095703 0.011718-0.03195 0-0.06226-0.005518-0.09375-0.011718-0.03149-0.0061-0.06367-0.013151-0.09375-0.025391-0.03009-0.01224-0.058188-0.026562-0.085938-0.044922-0.01389-0.0092-0.027866-0.02051-0.041015-0.03125-0.013121-0.01071-0.026823-0.022916-0.039063-0.035156l-4.1855-4.1875c-0.19587-0.19587-0.19587-0.51116 0-0.70703 0.19587-0.19587 0.51116-0.19587 0.70703 0l3.832 3.834 6.7188-6.7188c0.09793-0.09793 0.22571-0.14648 0.35352-0.14648z" fill="#bd93f9"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 966 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">
|
||||
<path d="m12 2a10 10 0 0 0-10 10 10 10 0 0 0 10 10 10 10 0 0 0 10-10 10 10 0 0 0-10-10zm5.6289 5.9629v0.0019532c0.12781-4e-6 0.25558 0.04855 0.35352 0.14648 0.19587 0.19587 0.19587 0.51116 0 0.70703l-7.0723 7.0723c-0.02449 0.02449-0.050325 0.046133-0.078125 0.064453-0.02772 0.01839-0.055857 0.032682-0.085937 0.044922-0.03009 0.01224-0.06225 0.019271-0.09375 0.025391-0.03149 0.0061-0.063743 0.011718-0.095703 0.011718-0.03195 0-0.06226-0.005518-0.09375-0.011718-0.03149-0.0061-0.06367-0.013151-0.09375-0.025391-0.03009-0.01224-0.058188-0.026562-0.085938-0.044922-0.01389-0.0092-0.027866-0.02051-0.041015-0.03125-0.013121-0.01071-0.026823-0.022916-0.039063-0.035156l-4.1855-4.1875c-0.19587-0.19587-0.19587-0.51116 0-0.70703 0.19587-0.19587 0.51116-0.19587 0.70703 0l3.832 3.834 6.7188-6.7188c0.09793-0.09793 0.22571-0.14648 0.35352-0.14648z" fill="#a679ec"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 966 B |
@@ -1,5 +0,0 @@
|
||||
<svg width="104" height="104" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="translate(0 -948.36)">
|
||||
<circle id="corner-ripple" cx="52" cy="1000.4" r="48" fill="#a679ec" opacity=".25"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 218 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">
|
||||
<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 8c1.1046 0 2 0.89543 2 2s-0.89543 2-2 2-2-0.89543-2-2 0.89543-2 2-2z" fill="#bd93f9"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 275 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">
|
||||
<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 8c1.1046 0 2 0.89543 2 2s-0.89543 2-2 2-2-0.89543-2-2 0.89543-2 2-2z" fill="#a679ec"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 275 B |
@@ -1,6 +0,0 @@
|
||||
<svg width="35" height="200" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="translate(0 -852.36)" shape-rendering="auto">
|
||||
<path d="m7 857.36h28v190h-28c-1.108 0-2-0.892-2-2v-186c0-1.108 0.892-2 2-2z" color="#000000" color-rendering="auto" fill="#3c84f7" image-rendering="auto" solid-color="#000000" style="isolation:auto;mix-blend-mode:normal"/>
|
||||
<path transform="translate(0 852.36)" d="m18 94c-0.554 0-1 0.446-1 1v4h-4c-0.554 0-1 0.446-1 1s0.446 1 1 1h4v4c0 0.554 0.446 1 1 1s1-0.446 1-1v-4h4c0.554 0 1-0.446 1-1s-0.446-1-1-1h-4v-4c0-0.554-0.446-1-1-1zm8 6a8 8 0 0 1-8 8 8 8 0 0 1-8-8 8 8 0 0 1 8-8 8 8 0 0 1 8 8z" color="#000000" color-rendering="auto" fill="#ffffff" image-rendering="auto" solid-color="#000000" style="isolation:auto;mix-blend-mode:normal"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 797 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">
|
||||
<path d="m12 2a10 10 0 0 0-10 10 10 10 0 0 0 10 10 10 10 0 0 0 10-10 10 10 0 0 0-10-10zm5.6289 5.9629v0.0019532c0.12781-4e-6 0.25558 0.04855 0.35352 0.14648 0.19587 0.19587 0.19587 0.51116 0 0.70703l-7.0723 7.0723c-0.02449 0.02449-0.050325 0.046133-0.078125 0.064453-0.02772 0.01839-0.055857 0.032682-0.085937 0.044922-0.03009 0.01224-0.06225 0.019271-0.09375 0.025391-0.03149 0.0061-0.063743 0.011718-0.095703 0.011718-0.03195 0-0.06226-0.005518-0.09375-0.011718-0.03149-0.0061-0.06367-0.013151-0.09375-0.025391-0.03009-0.01224-0.058188-0.026562-0.085938-0.044922-0.01389-0.0092-0.027866-0.02051-0.041015-0.03125-0.013121-0.01071-0.026823-0.022916-0.039063-0.035156l-4.1855-4.1875c-0.19587-0.19587-0.19587-0.51116 0-0.70703 0.19587-0.19587 0.51116-0.19587 0.70703 0l3.832 3.834 6.7188-6.7188c0.09793-0.09793 0.22571-0.14648 0.35352-0.14648z" fill="#5b9bf8"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 966 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">
|
||||
<path d="m12 2a10 10 0 0 0-10 10 10 10 0 0 0 10 10 10 10 0 0 0 10-10 10 10 0 0 0-10-10zm5.6289 5.9629v0.0019532c0.12781-4e-6 0.25558 0.04855 0.35352 0.14648 0.19587 0.19587 0.19587 0.51116 0 0.70703l-7.0723 7.0723c-0.02449 0.02449-0.050325 0.046133-0.078125 0.064453-0.02772 0.01839-0.055857 0.032682-0.085937 0.044922-0.03009 0.01224-0.06225 0.019271-0.09375 0.025391-0.03149 0.0061-0.063743 0.011718-0.095703 0.011718-0.03195 0-0.06226-0.005518-0.09375-0.011718-0.03149-0.0061-0.06367-0.013151-0.09375-0.025391-0.03009-0.01224-0.058188-0.026562-0.085938-0.044922-0.01389-0.0092-0.027866-0.02051-0.041015-0.03125-0.013121-0.01071-0.026823-0.022916-0.039063-0.035156l-4.1855-4.1875c-0.19587-0.19587-0.19587-0.51116 0-0.70703 0.19587-0.19587 0.51116-0.19587 0.70703 0l3.832 3.834 6.7188-6.7188c0.09793-0.09793 0.22571-0.14648 0.35352-0.14648z" fill="#3c84f7"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 966 B |
@@ -1,5 +0,0 @@
|
||||
<svg width="104" height="104" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="translate(0 -948.36)">
|
||||
<circle id="corner-ripple" cx="52" cy="1000.4" r="48" fill="#3c84f7" opacity=".25"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 218 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">
|
||||
<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 8c1.1046 0 2 0.89543 2 2s-0.89543 2-2 2-2-0.89543-2-2 0.89543-2 2-2z" fill="#5b9bf8"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 275 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">
|
||||
<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 8c1.1046 0 2 0.89543 2 2s-0.89543 2-2 2-2-0.89543-2-2 0.89543-2 2-2z" fill="#3c84f7"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 275 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="#5b9bf8" stroke-width="0" style="paint-order:stroke fill markers"/>
|
||||
<circle cx="30" cy="9.98" r="8.98" fill="#ffffff" stroke-width="0" style="paint-order:stroke fill markers"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 360 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="#3c84f7" stroke-width="0" style="paint-order:stroke fill markers"/>
|
||||
<circle cx="30" cy="9.98" r="8.98" fill="#ffffff" stroke-width="0" style="paint-order:stroke fill markers"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 360 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="#bd93f9" stroke-width="0" style="paint-order:stroke fill markers"/>
|
||||
<circle cx="30" cy="9.98" r="8.98" fill="#ffffff" stroke-width="0" style="paint-order:stroke fill markers"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 360 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="#a679ec" stroke-width="0" style="paint-order:stroke fill markers"/>
|
||||
<circle cx="30" cy="9.98" r="8.98" fill="#ffffff" stroke-width="0" style="paint-order:stroke fill markers"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 360 B |