add matugen support for hyprland

This commit is contained in:
Sem
2026-03-30 20:56:59 +02:00
parent 029cd7ae55
commit ddd9a93679
6 changed files with 204 additions and 101 deletions

150
hypr/colors.conf Normal file
View File

@@ -0,0 +1,150 @@
$image = /home/sem/Pictures/wallpapers/171022.jpg
$background = rgba(0f1511ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$error = rgba(ffece9ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$error_container = rgba(ffaea4ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$inverse_on_surface = rgba(000000ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$inverse_primary = rgba(065334ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$inverse_surface = rgba(dfe4ddff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$on_background = rgba(dfe4ddff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$on_error = rgba(000000ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$on_error_container = rgba(000000ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$on_primary = rgba(000000ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$on_primary_container = rgba(000000ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$on_primary_fixed = rgba(000000ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$on_primary_fixed_variant = rgba(00150aff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$on_secondary = rgba(000000ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$on_secondary_container = rgba(000000ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$on_secondary_fixed = rgba(000000ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$on_secondary_fixed_variant = rgba(02150bff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$on_surface = rgba(ffffffff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$on_surface_variant = rgba(ffffffff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$on_tertiary = rgba(000000ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$on_tertiary_container = rgba(000000ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$on_tertiary_fixed = rgba(000000ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$on_tertiary_fixed_variant = rgba(00141aff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$outline = rgba(e9f2e9ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$outline_variant = rgba(bcc5bdff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$primary = rgba(bcffd5ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$primary_container = rgba(8dd1a9ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$primary_fixed = rgba(adf2c7ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$primary_fixed_dim = rgba(91d5acff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$scrim = rgba(000000ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$secondary = rgba(def6e4ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$secondary_container = rgba(b1c8b7ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$secondary_fixed = rgba(d0e8d6ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$secondary_fixed_dim = rgba(b5ccbbff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$shadow = rgba(000000ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$source_color = rgba(323c35ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$surface = rgba(0f1511ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$surface_bright = rgba(4c514dff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$surface_container = rgba(2c322dff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$surface_container_high = rgba(373d38ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$surface_container_highest = rgba(424843ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$surface_container_low = rgba(1b211dff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$surface_container_lowest = rgba(000000ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$surface_dim = rgba(0f1511ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$surface_tint = rgba(91d5acff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$surface_variant = rgba(404942ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$tertiary = rgba(daf4ffff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$tertiary_container = rgba(a0c9d8ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$tertiary_fixed = rgba(bfe9f9ff)
$image = /home/sem/Pictures/wallpapers/171022.jpg
$tertiary_fixed_dim = rgba(a4cddcff)

View File

@@ -17,6 +17,7 @@
# source = ~/.config/hypr/myColors.conf
source = ~/linux-dotfiles/hypr/monitors.conf
source = colors.conf
###################
### MY PROGRAMS ###
@@ -86,8 +87,8 @@ general {
border_size = 2
# https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
col.active_border = rgba(d2519cee) rgba(dd94ffee) 45deg
col.inactive_border = rgba(d2519caa)
col.active_border = $primary_fixed_dim
col.inactive_border = $inverse_primary
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false

View File

@@ -43,82 +43,14 @@ block_postfix = "*>"
contrast = 1.0
[config.wallpaper]
# Whether to set the wallpaper or not
set = true
# The base command to run for applying the wallpaper.
# Keywords like {{ image }} or anything that works inside of hooks works here.
# You could also set a static color if you use the color keywords and the wallpaper setter supports it.
command = "swww img --transition-type center {{ image }}"
command = "awww img {{ image }} --transition-type grow --transition-fps 60 --transition-duration 0.6"
# Whether to set the wallpaper or not
set = true
# For example, killing the wallpaper daemon. Usage is like a normal hook.
# pre_hook = ""
# If you don't want to use the other colors that are automatically generated (on_color, on_color_container) you can just import a custom json with the colors instead.
# For an example of importing json see: https://iniox.github.io/#matugen/usage/importing-json
[config.custom_colors]
red = "#ff0000"
blue = "#0000ff"
green = "#00ff00"
[templates.includeme]
input_path = "./include.txt"
# The output path is optional if you just want to import the template anyways.
# output_path = "./a/include.txt"
[templates.name1]
# Relative paths will be resolved from the path `config.toml` is in.
input_path = "./colors.whatever-extension"
output_path = "./a/colors-generated.whatever-extension"
# Defaults to a value of 0 if unspecified, determines the order that each template is processed.
# You can use index = n to force a particular template hook to run after everything else, and index = -n for before everything else
index = 1
# Defaults to the type from CLI if unspecified.
# One of `SchemeContent`, `SchemeExpressive`, `SchemeFidelity`, `SchemeFruitSalad`, `SchemeMonochrome`, `SchemeNeutral`, `SchemeRainbow`, `SchemeTonalSpot`, `SchemeVibrant`
type = "SchemeExpressive"
# For testing of the `--continue-on-error` flag
# [templates.ishoulderror]
# Relative paths will be resolved from the path `config.toml` is in.
# input_path = "./error-testing.txt"
# output_path = "./a/error-testing.txt"
# This will use a different input path depending on what mode you use.
# input_path_modes = { dark = "./colors.whatever-extension", light = "./colors.whatever-extension" }
# This will compare all of the colors inside the array with the color you set as `compare_to`, and returns the closest color to it.
# You can then use `{{closest_color}}` inside hooks.
colors_to_compare = [
{ name = "black", color = "#000000" },
{ name = "red", color = "#ff0000" },
{ name = "maroon", color = "#800000" },
{ name = "yellow", color = "#ffff00" },
{ name = "olive", color = "#808000" },
{ name = "lime", color = "#00ff00" },
{ name = "green", color = "#008000" },
{ name = "aqua", color = "#00ffff" },
{ name = "teal", color = "#008080" },
{ name = "blue", color = "#0000ff" },
{ name = "navy", color = "#000080" },
{ name = "fuchsia", color = "#ff00ff" },
{ name = "purple", color = "#800080" },
]
compare_to = "{{colors.primary.default.hex}}"
# Runs before the template is exported. You can use keywords here.
# If you want the command to be async, add an & symbol to the end of the command on unix.
pre_hook = 'echo "source color {{colors.source_color.default.hex}}, source image {{image}}, closest color {{closest_color}}"'
# Runs after the template is exported. You can use keywords here.
# If you want the command to be async, add an & symbol to the end of the command on unix.
post_hook = 'echo "after gen"'
# For overriding the prefix for a specific template only
expr_prefix = "{{"
expr_postfix = "}}"
# Only hex values
# https://m3.material.io/styles/color/advanced/adjust-existing-colors#1cc12e43-237b-45b9-8fe0-9a3549c1f61e
# If you want to use the original color without any harmonization, add `_source` after the name like: `{{ color_source }}`
# Example: To use the original red color you would use `{{ red_source }}` instead of `{{ red }}`
[templates.hyprland]
input_path = '~/linux-dotfiles/matugen/templates/hyprland-colors.conf'
output_path = '~/linux-dotfiles/hypr/colors.conf'
post_hook = "hyprctl reload && echo 'done'"

View File

@@ -0,0 +1,4 @@
<* for name, value in colors *>
$image = {{image}}
${{name}} = rgba({{value.default.hex_stripped}}ff)
<* endfor *>

View File

@@ -1,4 +1,3 @@
import Quickshell
import Quickshell.Io
import QtQuick
@@ -36,15 +35,14 @@ Item {
var index = Math.floor(Math.random() * wallpapers.length);
var path = wallpapers[index];
// console.log("wallpaper set to " + path);
wallpaperProcess.command = ["awww", "img", path, "--transition-type", "grow", "--transition-fps", "60", "--transition-duration", "0.6"];
wallpaperProcess.command = ["matugen", "image", path]
console.log("Running command: " + wallpaperProcess.command);
wallpaperProcess.running = true;
}
Timer {
interval: 60000
interval: 60000 * 15 // every 15 minutes
running: true
repeat: true
onTriggered: wallpaperHolder.setRandomWallpaper()

View File

@@ -1,37 +1,55 @@
pragma ComponentBehavior: Bound
import Quickshell
import Quickshell.Wayland
import Quickshell.Hyprland
import Quickshell.Io
import QtQuick
import QtQuick.Layouts
import QtQuick.Window
import "."
import "constants"
import "ui"
import "services"
// qmllint disable uncreatable-type
PanelWindow {
ShellRoot {
id: root
// =====================
// Layout
// =====================
anchors.top: true
anchors.left: true
anchors.right: true
implicitHeight: 25
color: Constants.colBg
// put RandomWallpaper and SystemStats here so they only get instantiated once
RandomWallpaper {}
SystemStats {
id: stats
}
TopBar {
anchors.fill: parent
cpuUsage: stats.cpuUsage
memUsage: stats.memUsage
Variants {
model: Quickshell.screens
// qmllint disable uncreatable-type
PanelWindow {
id: rootPanel
required property ShellScreen modelData
screen: modelData
// =====================
// Layout
// =====================
anchors.top: true
anchors.left: true
anchors.right: true
implicitHeight: 25
color: Constants.colBg
Loader {
id: wallpaperLoader
sourceComponent: RandomWallpaper {}
active: false
}
TopBar {
anchors.fill: parent
cpuUsage: stats.cpuUsage
memUsage: stats.memUsage
}
}
}
}