diff --git a/.config/ags/config.js b/.config/ags/config.js index 73e57b57f..02f3132b5 100644 --- a/.config/ags/config.js +++ b/.config/ags/config.js @@ -12,6 +12,7 @@ import { startAutoDarkModeService } from './services/darkmode.js'; import { Bar, BarCornerTopleft, BarCornerTopright } from './modules/bar/main.js'; import Cheatsheet from './modules/cheatsheet/main.js'; // import DesktopBackground from './modules/desktopbackground/main.js'; +import Wallselect from './modules/wallselect/main.js' import Dock from './modules/dock/main.js'; import Corner from './modules/screencorners/main.js'; import Crosshair from './modules/crosshair/main.js'; @@ -42,6 +43,7 @@ startBatteryWarningService().catch(print) const Windows = () => [ // forMonitors(DesktopBackground), forMonitors(Crosshair), + forMonitors(Wallselect), Overview(), forMonitors(Indicator), forMonitors(Cheatsheet), diff --git a/.config/ags/modules/.configuration/user_options.js b/.config/ags/modules/.configuration/user_options.js index 6bb90255f..e0ffa4e5f 100644 --- a/.config/ags/modules/.configuration/user_options.js +++ b/.config/ags/modules/.configuration/user_options.js @@ -147,6 +147,12 @@ let configOptions = { }, 'workspaces': { 'shown': 10, + 'style': 'japanese' + }, + 'wallselect': { + 'enabled': true, + 'wallpaperFolder': '/Pictures/Wallpapers', + 'wallpaperLimit': 100 }, 'dock': { 'enabled': false, diff --git a/.config/ags/modules/bar/normal/workspaces_hyprland.js b/.config/ags/modules/bar/normal/workspaces_hyprland.js index 8e7e789bc..abbf6aeee 100644 --- a/.config/ags/modules/bar/normal/workspaces_hyprland.js +++ b/.config/ags/modules/bar/normal/workspaces_hyprland.js @@ -36,6 +36,22 @@ const getFontWeightName = (weight) => { } } +// Number style conversion functions +const numberStyles = { + 'normal': (n) => n.toString(), + 'thai': (n) => n.toString().replace(/[0-9]/g, d => '๐๑๒๓๔๕๖๗๘๙'[d]), + 'japanese': (n) => n.toString().replace(/[0-9]/g, d => '〇一二三四五六七八九'[d]), + 'chinese': (n) => n.toString().replace(/[0-9]/g, d => '零一二三四五六七八九'[d]), + 'korean': (n) => n.toString().replace(/[0-9]/g, d => '영일이삼사오육칠팔구'[d]), + 'devanagari': (n) => n.toString().replace(/[0-9]/g, d => '०१२३४५६७८९'[d]), + 'bengali': (n) => n.toString().replace(/[0-9]/g, d => '০১২৩৪৫৬৭৮৯'[d]) +}; + +const convertNumber = (number, style = 'normal') => { + const converter = numberStyles[style] || numberStyles.normal; + return converter(number); +}; + // Font size = workspace id const WorkspaceContents = (count = 10) => { return DrawingArea({ @@ -165,7 +181,11 @@ const WorkspaceContents = (count = 10) => { else cr.setSourceRGBA(inactivecolors.red, inactivecolors.green, inactivecolors.blue, inactivecolors.alpha); - layout.set_text(`${i + offset}`, -1); + // Convert number to selected style + const numberStyle = userOptions.workspaces.style || 'normal'; + const displayNumber = convertNumber(i + offset, numberStyle); + layout.set_text(displayNumber, -1); + const [layoutWidth, layoutHeight] = layout.get_pixel_size(); const x = -workspaceRadius + (workspaceDiameter * i) - (layoutWidth / 2); const y = (height - layoutHeight) / 2; @@ -179,10 +199,11 @@ const WorkspaceContents = (count = 10) => { } export default () => EventBox({ - onScrollUp: () => Hyprland.messageAsync(`dispatch workspace r-1`).catch(print), - onScrollDown: () => Hyprland.messageAsync(`dispatch workspace r+1`).catch(print), + // onScrollUp: () => Hyprland.messageAsync(`dispatch workspace -1`).catch(print), + // onScrollDown: () => Hyprland.messageAsync(`dispatch workspace +1`).catch(print), onMiddleClick: () => toggleWindowOnAllMonitors('osk'), onSecondaryClick: () => App.toggleWindow('overview'), + hexpand:true, attribute: { clicked: false, ws_group: 0, @@ -190,9 +211,11 @@ export default () => EventBox({ child: Box({ homogeneous: true, className: 'bar-group-margin', + hexpand:true, children: [Box({ className: 'bar-group bar-group-standalone bar-group-pad', css: 'min-width: 2px;', + hexpand:true, children: [WorkspaceContents(userOptions.workspaces.shown)], })] }), diff --git a/.config/ags/modules/indicators/colorscheme.js b/.config/ags/modules/indicators/colorscheme.js index bb00558ef..ff4b36ee5 100644 --- a/.config/ags/modules/indicators/colorscheme.js +++ b/.config/ags/modules/indicators/colorscheme.js @@ -78,8 +78,8 @@ function calculateSchemeInitIndex(optionsArr, searchValue = 'vibrant') { const schemeOptionsArr = [ [ - { name: getString('Tonal Spot'), value: 'tonalspot' }, - { name: getString('Fruit Salad'), value: 'fruitsalad' }, + { name: getString('Tonal Spot'), value: 'tonal-spot' }, + { name: getString('Fruit Salad'), value: 'fruit-salad' }, { name: getString('Fidelity'), value: 'fidelity' }, { name: getString('Rainbow'), value: 'rainbow' }, ], @@ -87,14 +87,14 @@ const schemeOptionsArr = [ { name: getString('Neutral'), value: 'neutral' }, { name: getString('Monochrome'), value: 'monochrome' }, { name: getString('Expressive'), value: 'expressive' }, - { name: getString('Vibrant'), value: 'vibrant' }, + // { name: getString('Vibrant'), value: 'content' }, + { name: getString('Content'), value: 'content' }, ], [ - { name: getString('Vibrant+'), value: 'morevibrant' }, + // { name: getString('Vibrant+'), value: 'morevibrant' }, ], - //[ - // { name: getString('Content'), value: 'content' }, - //] + [ + ] ]; const LIGHTDARK_FILE_LOCATION = `${GLib.get_user_state_dir()}/ags/user/colormode.txt`; @@ -133,43 +133,18 @@ const ColorSchemeSettings = () => Widget.Box({ ConfigToggle({ icon: 'border_clear', name: getString('Transparency'), - desc: getString('Make shell elements transparent'), + desc: getString('Make Everything transparent'), initValue: initTransparencyVal, - onChange: (self, newValue) => { - let transparency = newValue == 0 ? "opaque" : "transparent"; - execAsync([`bash`, `-c`, `mkdir -p ${GLib.get_user_state_dir()}/ags/user && sed -i "2s/.*/${transparency}/" ${GLib.get_user_state_dir()}/ags/user/colormode.txt`]) - .then(execAsync(['bash', '-c', `${App.configDir}/scripts/color_generation/switchcolor.sh`])) - .catch(print); + onChange: async (self, newValue) => { + try { + const transparency = newValue == 0 ? "opaque" : "transparent"; + await execAsync([`bash`, `-c`, `mkdir -p ${GLib.get_user_state_dir()}/ags/user && sed -i "2s/.*/${transparency}/" ${GLib.get_user_state_dir()}/ags/user/colormode.txt`]); + await execAsync(['bash', '-c', `${App.configDir}/scripts/color_generation/applycolor.sh &`]); + } catch (error) { + console.error('Error changing transparency:', error); + } }, - }), - Widget.Box({ - tooltipText: getString('Theme GTK apps using accent color\n(drawback: dark/light mode switching requires restart)'), - className: 'txt spacing-h-5 configtoggle-box', - children: [ - MaterialIcon('imagesearch_roller', 'norm'), - Widget.Label({ - className: 'txt txt-small', - label: getString('Use Gradience'), - }), - Widget.Box({ hexpand: true }), - ConfigMulipleSelection({ - hpack: 'center', - vpack: 'center', - optionsArr: [ - [{ name: 'Off', value: 0 }, { name: 'On', value: 1 }], - ], - initIndex: [-1, -1], - onChange: (value, name) => { - const ADWAITA_BLUE = "#3584E4"; - if (value) execAsync([`bash`, `-c`, `${App.configDir}/scripts/color_generation/switchcolor.sh - --yes-gradience`, `&`]) - .catch(print); - else execAsync([`bash`, `-c`, `${App.configDir}/scripts/color_generation/switchcolor.sh "${ADWAITA_BLUE}" --no-gradience`, `&`]) - .catch(print); - - }, - }), - ] - }), + }) ] }), Widget.Box({ diff --git a/.config/ags/modules/indicators/main.js b/.config/ags/modules/indicators/main.js index 16741937f..2096aa25b 100644 --- a/.config/ags/modules/indicators/main.js +++ b/.config/ags/modules/indicators/main.js @@ -23,7 +23,7 @@ export default (monitor = 0) => Widget.Window({ css: 'min-height: 2px;', children: [ IndicatorValues(monitor), - MusicControls(), + // MusicControls(), NotificationPopups(), ColorScheme(), ] diff --git a/.config/ags/modules/wallselect/main.js b/.config/ags/modules/wallselect/main.js new file mode 100644 index 000000000..06746eea1 --- /dev/null +++ b/.config/ags/modules/wallselect/main.js @@ -0,0 +1,224 @@ +import Widget from "resource:///com/github/Aylur/ags/widget.js"; +import * as Utils from "resource:///com/github/Aylur/ags/utils.js"; +import App from "resource:///com/github/Aylur/ags/app.js"; +import userOptions from "../.configuration/user_options.js"; +import GLib from 'gi://GLib'; +import Gio from 'gi://Gio'; +const { Box, Label, EventBox, Scrollable, Button } = Widget; +// Constants +const CONFIG_DIR = GLib.get_home_dir() + '/.config/ags'; +const WALLPAPER_DIR = GLib.get_home_dir() + (userOptions.wallselect.wallpaperFolder || '/Pictures/wallpapers'); +const THUMBNAIL_DIR = GLib.build_filenamev([WALLPAPER_DIR, "thumbnails"]); + +// Cached Variables +let wallpaperPathsPromise = null; +let cachedContent = null; +let fileMonitor = null; + +// Initialize file monitoring +const initFileMonitor = () => { + if (fileMonitor) return; + + const file = Gio.File.new_for_path(WALLPAPER_DIR); + fileMonitor = file.monitor_directory(Gio.FileMonitorFlags.NONE, null); + + fileMonitor.connect('changed', (_, file, otherFile, eventType) => { + const path = file.get_path(); + const ext = path.toLowerCase().split('.').pop(); + const validExts = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'tga', 'tiff', 'bmp', 'ico']; + + // Handle both file creation and deletion + if ((eventType === Gio.FileMonitorEvent.CREATED || + eventType === Gio.FileMonitorEvent.DELETED) && + validExts.includes(ext)) { + + const action = eventType === Gio.FileMonitorEvent.CREATED ? 'added' : 'deleted'; + + if (eventType === Gio.FileMonitorEvent.DELETED) { + // Get the thumbnail path + const filename = path.split('/').pop(); + const thumbnailPath = GLib.build_filenamev([THUMBNAIL_DIR, filename]); + + // Delete the thumbnail if it exists + if (GLib.file_test(thumbnailPath, GLib.FileTest.EXISTS)) { + GLib.unlink(thumbnailPath); + } + } + + // Regenerate thumbnails + Utils.execAsync([`bash`, `${CONFIG_DIR}/scripts/generate_thumbnails.sh`]) + .then(() => { + // Reset caches + wallpaperPathsPromise = null; + cachedContent = null; + + // Refresh UI if visible + if (App.getWindow('wallselect')?.visible) { + App.closeWindow('wallselect'); + App.openWindow('wallselect'); + } + }); + } + }); +}; + + +// Wallpaper Button +const WallpaperButton = (path) => + Widget.Button({ + child: Box({ className: "preview-box", css: `background-image: url("${path}");` }), + onClicked: () => { + Utils.execAsync(['sh', `${CONFIG_DIR}/scripts/color_generation/switchwall.sh`, path.replace("thumbnails", "")]); + App.closeWindow("wallselect"); + }, + }); + +// Get Wallpaper Paths +const getWallpaperPaths = () => { + if (wallpaperPathsPromise) return wallpaperPathsPromise; + wallpaperPathsPromise = Utils.execAsync( + `find ${GLib.shell_quote(THUMBNAIL_DIR)} -type f \\( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" -o -iname "*.gif" -o -iname "*.webp" -o -iname "*.tga" -o -iname "*.tiff" -o -iname "*.bmp" -o -iname "*.ico" \\)` + ).then(files => files.split("\n").filter(Boolean)); + return wallpaperPathsPromise; +}; + +// Create Content +const createContent = async () => { + if (cachedContent) return cachedContent; + + try { + const wallpaperPaths = await getWallpaperPaths(); + + if (wallpaperPaths.length === 0) { + return createPlaceholder(); + } + + cachedContent = EventBox({ + onPrimaryClick: () => App.closeWindow("wallselect"), + onSecondaryClick: () => App.closeWindow("wallselect"), + onMiddleClick: () => App.closeWindow("wallselect"), + child: Scrollable({ + hexpand: true, + vexpand: false, + hscroll: "always", + vscroll: "never", + child: Box({ + className: "wallpaper-list", + children: wallpaperPaths.map(WallpaperButton), + }), + }), + }); + + return cachedContent; + + } catch (error) { + return Box({ + className: "wallpaper-error", + vexpand: true, + hexpand: true, + children: [ + Label({ label: "Error loading wallpapers.", className: "txt-large txt-error", }), + ], + }); + } +}; + +// Placeholder content when no wallpapers found +const createPlaceholder = () => Box({ + className: 'wallpaper-placeholder', + vertical: true, + vexpand: true, + hexpand: true, + spacing: 10, + children: [ + Box({ + vertical: true, + vpack: 'center', + hpack: 'center', + vexpand: true, + children: [ + Label({ label: 'No wallpapers found.', className: 'txt-norm onSurfaceVariant', }), + Label({ label: 'Generate thumbnails to get started.',opacity:0.8, className: 'txt-small onSurfaceVariant', }), + ], + }), + ], +}); + +// Generate Thumbnails Button +const GenerateButton = () => Widget.Button({ + className: 'button-accent generate-thumbnails', + child: Box({ + spacing:8, + children: [ + Widget.Icon({ icon: 'view-refresh-symbolic', size: 16, }), + Widget.Label({ className:"txt-small onSurfaceVariant",label: 'Generate Thumbnails', }), + ], + }), + tooltipText: 'Regenerate all wallpaper thumbnails', + onClicked: () => { + Utils.execAsync([`bash`, `${CONFIG_DIR}/scripts/generate_thumbnails.sh`]) + .then(() => { + cachedContent = null; // Invalidate cache + App.closeWindow('wallselect'); + App.openWindow('wallselect'); + }); + }, +}); + +// Toggle Wallselect Window +const toggleWindow = () => { + const win = App.getWindow('wallselect'); + if (!win) return; + win.visible = !win.visible; +}; +export { toggleWindow }; + +// Initialize monitoring when the module loads +initFileMonitor(); + +// Main Window +export default () => Widget.Window({ + name: "wallselect", + anchor: ['top', 'bottom', 'right', 'left'], + layer: 'overlay', + visible: false, + child: Widget.Overlay({ + child: EventBox({ + onPrimaryClick: () => App.closeWindow("wallselect"), + onSecondaryClick: () => App.closeWindow("wallselect"), + onMiddleClick: () => App.closeWindow("wallselect"), + child: Box({ css: 'min-height: 1000px;', }), + }), + overlays: [ + Box({ + vertical: true, + className: "sidebar-right spacing-v-15", + vpack: 'start', + children: [ + Box({ + className: "wallselect-header", + children: [ + Box({ hexpand: true }), + GenerateButton(), + ], + }), + Box({ + vertical: true, + className: "sidebar-module", + setup: (self) => + self.hook( + App, + async (_, name, visible) => { + if (name === "wallselect" && visible) { + const content = await createContent(); + self.children = [content]; + } + }, + "window-toggled", + ), + }), + ], + }), + ], + }), +}); \ No newline at end of file diff --git a/.config/ags/scripts/color_generation/applycolor.sh b/.config/ags/scripts/color_generation/applycolor.sh index 6c371f40c..9971b9810 100755 --- a/.config/ags/scripts/color_generation/applycolor.sh +++ b/.config/ags/scripts/color_generation/applycolor.sh @@ -6,11 +6,10 @@ XDG_STATE_HOME="${XDG_STATE_HOME:-$HOME/.local/state}" CONFIG_DIR="$XDG_CONFIG_HOME/ags" CACHE_DIR="$XDG_CACHE_HOME/ags" STATE_DIR="$XDG_STATE_HOME/ags" +colormodefile="$STATE_DIR/user/colormode.txt" -term_alpha=100 #Set this to < 100 make all your terminals transparent -# sleep 0 # idk i wanted some delay or colors dont get applied properly if [ ! -d "$CACHE_DIR"/user/generated ]; then - mkdir -p "$CACHE_DIR"/user/generated + mkdir -p "$CACHE_DIR"/user/generated fi cd "$CONFIG_DIR" || exit @@ -19,11 +18,26 @@ colorstrings='' colorlist=() colorvalues=() -# wallpath=$(swww query | head -1 | awk -F 'image: ' '{print $2}') -# wallpath_png="$CACHE_DIR/user/generated/hypr/lockscreen.png" -# convert "$wallpath" "$wallpath_png" -# wallpath_png=$(echo "$wallpath_png" | sed 's/\//\\\//g') -# wallpath_png=$(sed 's/\//\\\\\//g' <<< "$wallpath_png") + +# Fetch second line from color mode file +secondline=$(sed -n '2p' "$colormodefile") + +# Determine terminal opacity based on the second line +if [[ "$secondline" == *"transparent"* ]]; then # Set for transparent background + term_transparency=0.83 + ags_transparency=True + hypr_opacity=0.9 + hypr_value=1 + rofi_alpha=#00000090 + rofi_alpha_element=#00000025 +else #Opaque Stuff + hypr_value=0 + term_transparency=1 + ags_transparency=False + hypr_opacity=1 + rofi_alpha="var(surface)" + rofi_alpha_element="var(surface)" +fi transparentize() { local hex="$1" @@ -38,152 +52,41 @@ transparentize() { } get_light_dark() { - lightdark="" - if [ ! -f "$STATE_DIR/user/colormode.txt" ]; then - echo "" >"$STATE_DIR/user/colormode.txt" - else - lightdark=$(sed -n '1p' "$STATE_DIR/user/colormode.txt") - fi - echo "$lightdark" -} - -apply_fuzzel() { - # Check if scripts/templates/fuzzel/fuzzel.ini exists - if [ ! -f "scripts/templates/fuzzel/fuzzel.ini" ]; then - echo "Template file not found for Fuzzel. Skipping that." - return - fi - # Copy template - mkdir -p "$CACHE_DIR"/user/generated/fuzzel - cp "scripts/templates/fuzzel/fuzzel.ini" "$CACHE_DIR"/user/generated/fuzzel/fuzzel.ini - # Apply colors - for i in "${!colorlist[@]}"; do - sed -i "s/{{ ${colorlist[$i]} }}/${colorvalues[$i]#\#}/g" "$CACHE_DIR"/user/generated/fuzzel/fuzzel.ini - done - - cp "$CACHE_DIR"/user/generated/fuzzel/fuzzel.ini "$XDG_CONFIG_HOME"/fuzzel/fuzzel.ini -} - -apply_term() { - # Check if terminal escape sequence template exists - if [ ! -f "scripts/templates/terminal/sequences.txt" ]; then - echo "Template file not found for Terminal. Skipping that." - return - fi - # Copy template - mkdir -p "$CACHE_DIR"/user/generated/terminal - cp "scripts/templates/terminal/sequences.txt" "$CACHE_DIR"/user/generated/terminal/sequences.txt - # Apply colors - for i in "${!colorlist[@]}"; do - sed -i "s/${colorlist[$i]} #/${colorvalues[$i]#\#}/g" "$CACHE_DIR"/user/generated/terminal/sequences.txt - done - - sed -i "s/\$alpha/$term_alpha/g" "$CACHE_DIR/user/generated/terminal/sequences.txt" - - for file in /dev/pts/*; do - if [[ $file =~ ^/dev/pts/[0-9]+$ ]]; then - cat "$CACHE_DIR"/user/generated/terminal/sequences.txt >"$file" + lightdark="" + if [ ! -f "$STATE_DIR/user/colormode.txt" ]; then + echo "" > "$STATE_DIR/user/colormode.txt" + else + lightdark=$(sed -n '1p' "$STATE_DIR/user/colormode.txt") fi - done -} - -apply_hyprland() { - # Check if scripts/templates/hypr/hyprland/colors.conf exists - if [ ! -f "scripts/templates/hypr/hyprland/colors.conf" ]; then - echo "Template file not found for Hyprland colors. Skipping that." - return - fi - # Copy template - mkdir -p "$CACHE_DIR"/user/generated/hypr/hyprland - cp "scripts/templates/hypr/hyprland/colors.conf" "$CACHE_DIR"/user/generated/hypr/hyprland/colors.conf - # Apply colors - for i in "${!colorlist[@]}"; do - sed -i "s/{{ ${colorlist[$i]} }}/${colorvalues[$i]#\#}/g" "$CACHE_DIR"/user/generated/hypr/hyprland/colors.conf - done - - cp "$CACHE_DIR"/user/generated/hypr/hyprland/colors.conf "$XDG_CONFIG_HOME"/hypr/hyprland/colors.conf + echo "$lightdark" } - -apply_hyprlock() { - # Check if scripts/templates/hypr/hyprlock.conf exists - if [ ! -f "scripts/templates/hypr/hyprlock.conf" ]; then - echo "Template file not found for hyprlock. Skipping that." - return - fi - # Copy template - mkdir -p "$CACHE_DIR"/user/generated/hypr/ - cp "scripts/templates/hypr/hyprlock.conf" "$CACHE_DIR"/user/generated/hypr/hyprlock.conf - # Apply colors - # sed -i "s/{{ SWWW_WALL }}/${wallpath_png}/g" "$CACHE_DIR"/user/generated/hypr/hyprlock.conf - for i in "${!colorlist[@]}"; do - sed -i "s/{{ ${colorlist[$i]} }}/${colorvalues[$i]#\#}/g" "$CACHE_DIR"/user/generated/hypr/hyprlock.conf - done - - cp "$CACHE_DIR"/user/generated/hypr/hyprlock.conf "$XDG_CONFIG_HOME"/hypr/hyprlock.conf -} - apply_lightdark() { - lightdark=$(get_light_dark) - if [ "$lightdark" = "light" ]; then - gsettings set org.gnome.desktop.interface color-scheme 'prefer-light' - else - gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' - fi -} - -apply_gtk() { # Using gradience-cli - usegradience=$(sed -n '4p' "$STATE_DIR/user/colormode.txt") - if [[ "$usegradience" = "nogradience" ]]; then - rm "$XDG_CONFIG_HOME/gtk-3.0/gtk.css" - rm "$XDG_CONFIG_HOME/gtk-4.0/gtk.css" - return - fi - - # Copy template - mkdir -p "$CACHE_DIR"/user/generated/gradience - cp "scripts/templates/gradience/preset.json" "$CACHE_DIR"/user/generated/gradience/preset.json - - # Apply colors - for i in "${!colorlist[@]}"; do - sed -i "s/{{ ${colorlist[$i]} }}/${colorvalues[$i]}/g" "$CACHE_DIR"/user/generated/gradience/preset.json - done - - mkdir -p "$XDG_CONFIG_HOME/presets" # create gradience presets folder - source $(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate - gradience-cli apply -p "$CACHE_DIR"/user/generated/gradience/preset.json --gtk both - deactivate - - # And set GTK theme manually as Gradience defaults to light adw-gtk3 - # (which is unreadable when broken when you use dark mode) - lightdark=$(get_light_dark) - if [ "$lightdark" = "light" ]; then - gsettings set org.gnome.desktop.interface gtk-theme 'adw-gtk3' - else - gsettings set org.gnome.desktop.interface gtk-theme adw-gtk3-dark - fi -} - -apply_ags() { - agsv1 run-js "handleStyles(false);" - agsv1 run-js 'openColorScheme.value = true; Utils.timeout(2000, () => openColorScheme.value = false);' + lightdark=$(get_light_dark) + if [ "$lightdark" = "light" ]; then + gsettings set org.gnome.desktop.interface color-scheme 'prefer-light' + else + gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' + fi } -apply_qt() { - sh "$CONFIG_DIR/scripts/kvantum/materialQT.sh" # generate kvantum theme - python "$CONFIG_DIR/scripts/kvantum/changeAdwColors.py" # apply config colors +apply_transparency() { + # Ags + sed -i "s/$transparent:.*;/$transparent:$ags_transparency;/" ~/.config/ags/scss/mode.scss + agsv1 run-js "handleStyles(false);" + # Rofi + sed -i "s/wbg:.*;/wbg:$rofi_alpha;/" ~/.config/rofi/config.rasi + sed -i "s/element-bg:.*;/element-bg:$rofi_alpha_element;/" ~/.config/rofi/config.rasi + # Hyprland + sed -i "s/windowrule = opacity .*\ override/windowrule = opacity $hypr_opacity override/" ~/.config/hypr/hyprland/rules/default.conf + # Terminal + sed -i "s/background_opacity .*\ override/background_opacity $term_transparency override/" ~/.config/kitty/kitty.conf } colornames=$(cat $STATE_DIR/scss/_material.scss | cut -d: -f1) colorstrings=$(cat $STATE_DIR/scss/_material.scss | cut -d: -f2 | cut -d ' ' -f2 | cut -d ";" -f1) IFS=$'\n' -colorlist=($colornames) # Array of color names -colorvalues=($colorstrings) # Array of color values +colorlist=( $colornames ) # Array of color names +colorvalues=( $colorstrings ) # Array of color values -apply_ags & -apply_hyprland & -apply_hyprlock & apply_lightdark & -apply_gtk & -apply_qt & -apply_fuzzel & -apply_term & +apply_transparency & diff --git a/.config/ags/scripts/color_generation/colorgen.sh b/.config/ags/scripts/color_generation/colorgen.sh index b4ab6d009..be3684777 100755 --- a/.config/ags/scripts/color_generation/colorgen.sh +++ b/.config/ags/scripts/color_generation/colorgen.sh @@ -4,6 +4,7 @@ XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}" XDG_STATE_HOME="${XDG_STATE_HOME:-$HOME/.local/state}" CONFIG_DIR="$XDG_CONFIG_HOME/ags" +SCRIPTS_DIR="$XDG_CONFIG_HOME/ags/scripts" CACHE_DIR="$XDG_CACHE_HOME/ags" STATE_DIR="$XDG_STATE_HOME/ags" @@ -15,88 +16,45 @@ fi # check if the file $STATE_DIR/user/colormode.txt exists. if not, create it. else, read it to $lightdark colormodefile="$STATE_DIR/user/colormode.txt" -lightdark="dark" -transparency="opaque" -materialscheme="vibrant" -terminalscheme="$XDG_CONFIG_HOME/ags/scripts/templates/terminal/scheme-base.json" +lightdark="" +transparency="" +materialscheme="" if [ ! -f $colormodefile ]; then echo "dark" > $colormodefile echo "opaque" >> $colormodefile - echo "vibrant" >> $colormodefile -elif [[ $(wc -l < $colormodefile) -ne 4 || $(wc -w < $colormodefile) -ne 4 ]]; then + echo "content" >> $colormodefile +elif [[ $(wc -l < $colormodefile) -ne 3 || $(wc -w < $colormodefile) -ne 3 ]]; then echo "dark" > $colormodefile echo "opaque" >> $colormodefile - echo "vibrant" >> $colormodefile - echo "yesgradience" >> $colormodefile + echo "content" >> $colormodefile else lightdark=$(sed -n '1p' $colormodefile) transparency=$(sed -n '2p' $colormodefile) materialscheme=$(sed -n '3p' $colormodefile) - if [ "$materialscheme" = "monochrome" ]; then - terminalscheme="$XDG_CONFIG_HOME/ags/scripts/templates/terminal/scheme-monochrome.json" - fi -fi -backend="material" # color generator backend -if [ ! -f "$STATE_DIR/user/colorbackend.txt" ]; then - echo "material" > "$STATE_DIR/user/colorbackend.txt" -else - backend=$(cat "$STATE_DIR/user/colorbackend.txt") fi -cd "$CONFIG_DIR/scripts/" || exit -if [[ "$1" = "#"* ]]; then # this is a color - color_generation/generate_colors_material.py --color "$1" \ - --mode "$lightdark" --scheme "$materialscheme" --transparency "$transparency" \ - --termscheme $terminalscheme --blend_bg_fg \ - > "$CACHE_DIR"/user/generated/material_colors.scss - if [ "$2" = "--apply" ]; then - cp "$CACHE_DIR"/user/generated/material_colors.scss "$STATE_DIR/scss/_material.scss" - color_generation/applycolor.sh - fi -elif [ "$backend" = "material" ]; then - smartflag='' - if [ "$3" = "--smart" ]; then - smartflag='--smart' +# Get the color mode +COLORMODE_FILE_DIR="/tmp/ags/colormode" +if [ -f "$COLORMODE_FILE_DIR" ]; then + colormode=$(sed -n '1p' "$COLORMODE_FILE_DIR") + if [[ "$colormode" == "light" ]]; then + lightdark="light" + else + lightdark="dark" fi - source $(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate - python color_generation/generate_colors_material.py --path "$(eval echo $1)" \ - --mode "$lightdark" --scheme "$materialscheme" --transparency "$transparency" \ - --termscheme $terminalscheme --blend_bg_fg \ - --cache "$STATE_DIR/user/color.txt" $smartflag \ - > "$CACHE_DIR"/user/generated/material_colors.scss - deactivate - if [ "$2" = "--apply" ]; then - cp "$CACHE_DIR"/user/generated/material_colors.scss "$STATE_DIR/scss/_material.scss" - color_generation/applycolor.sh - fi -elif [ "$backend" = "pywal" ]; then - # clear and generate - source $(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate - wal -c - wal -i "$1" -n $lightdark -q - deactivate - # copy scss - cp "$XDG_CACHE_HOME/wal/colors.scss" "$CACHE_DIR"/user/generated/material_colors.scss +fi - cat color_generation/pywal_to_material.scss >> "$CACHE_DIR"/user/generated/material_colors.scss - if [ "$2" = "--apply" ]; then - sass -I "$STATE_DIR/scss" -I "$CONFIG_DIR/scss/fallback" "$CACHE_DIR"/user/generated/material_colors.scss "$CACHE_DIR"/user/generated/colors_classes.scss --style compressed - # sed -i "s/ { color//g" "$CACHE_DIR"/user/generated/colors_classes.scss - # sed -i "s/\./$/g" "$CACHE_DIR"/user/generated/colors_classes.scss - # sed -i "s/}//g" "$CACHE_DIR"/user/generated/colors_classes.scss - sed -i "s/{color//g" "$CACHE_DIR"/user/generated/colors_classes.scss - sed -i "s/\./$/g" "$CACHE_DIR"/user/generated/colors_classes.scss - sed -i "s/\:/: /g" "$CACHE_DIR"/user/generated/colors_classes.scss - sed -i "s/}/;\n/g" "$CACHE_DIR"/user/generated/colors_classes.scss - if [ "$lightdark" = "light" ]; then - printf "\n""\$darkmode: false;""\n" >> "$CACHE_DIR"/user/generated/colors_classes.scss - else - printf "\n""\$darkmode: true;""\n" >> "$CACHE_DIR"/user/generated/colors_classes.scss - fi +cd "$CONFIG_DIR/scripts/" || exit - cp "$CACHE_DIR"/user/generated/colors_classes.scss "$STATE_DIR/scss/_material.scss" +# Store the image source if it's an image +if [[ ! "$1" = "#"* ]]; then # this is an image + # Store the image path + echo "$1" > "$STATE_DIR/user/current_wallpaper.txt" +fi - color_generation/applycolor.sh - fi +matugen image "$1" --mode "$lightdark" -t "scheme-$materialscheme" +# Apply the generated colors if --apply flag is set +if [ "$2" = "" ]; then +exit fi diff --git a/.config/ags/scripts/color_generation/generate_colors_material.py b/.config/ags/scripts/color_generation/generate_colors_material.py deleted file mode 100755 index 5c2c8c71a..000000000 --- a/.config/ags/scripts/color_generation/generate_colors_material.py +++ /dev/null @@ -1,184 +0,0 @@ -#!/usr/bin/env -S\_/bin/sh\_-xc\_"source\_\$(eval\_echo\_\$ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate&&exec\_python\_-E\_"\$0"\_"\$@"" -import argparse -import math -import json -from PIL import Image -from materialyoucolor.quantize import QuantizeCelebi -from materialyoucolor.score.score import Score -from materialyoucolor.hct import Hct -from materialyoucolor.dynamiccolor.material_dynamic_colors import MaterialDynamicColors -from materialyoucolor.utils.color_utils import (rgba_from_argb, argb_from_rgb, argb_from_rgba) -from materialyoucolor.utils.math_utils import (sanitize_degrees_double, difference_degrees, rotation_direction) - -parser = argparse.ArgumentParser(description='Color generation script') -parser.add_argument('--path', type=str, default=None, help='generate colorscheme from image') -parser.add_argument('--size', type=int , default=128 , help='bitmap image size') -parser.add_argument('--color', type=str, default=None, help='generate colorscheme from color') -parser.add_argument('--mode', type=str, choices=['dark', 'light'], default='dark', help='dark or light mode') -parser.add_argument('--scheme', type=str, default='vibrant', help='material scheme to use') -parser.add_argument('--smart', action='store_true', default=False, help='decide scheme type based on image color') -parser.add_argument('--transparency', type=str, choices=['opaque', 'transparent'], default='opaque', help='enable transparency') -parser.add_argument('--termscheme', type=str, default=None, help='JSON file containg the terminal scheme for generating term colors') -parser.add_argument('--harmony', type=float , default=0.8, help='(0-1) Color hue shift towards accent') -parser.add_argument('--harmonize_threshold', type=float , default=100, help='(0-180) Max threshold angle to limit color hue shift') -parser.add_argument('--term_fg_boost', type=float , default=0.35, help='Make terminal foreground more different from the background') -parser.add_argument('--blend_bg_fg', action='store_true', default=False, help='Shift terminal background or foreground towards accent') -parser.add_argument('--cache', type=str, default=None, help='file path to store the generated color') -parser.add_argument('--debug', action='store_true', default=False, help='debug mode') -args = parser.parse_args() - -rgba_to_hex = lambda rgba: "#{:02X}{:02X}{:02X}".format(rgba[0], rgba[1], rgba[2]) -argb_to_hex = lambda argb: "#{:02X}{:02X}{:02X}".format(*map(round, rgba_from_argb(argb))) -hex_to_argb = lambda hex_code: argb_from_rgb(int(hex_code[1:3], 16), int(hex_code[3:5], 16), int(hex_code[5:], 16)) -display_color = lambda rgba : "\x1B[38;2;{};{};{}m{}\x1B[0m".format(rgba[0], rgba[1], rgba[2], "\x1b[7m \x1b[7m") - -def calculate_optimal_size (width: int, height: int, bitmap_size: int) -> (int, int): - image_area = width * height; - bitmap_area = bitmap_size ** 2 - scale = math.sqrt(bitmap_area/image_area) if image_area > bitmap_area else 1 - new_width = round(width * scale) - new_height = round(height * scale) - if new_width == 0: - new_width = 1 - if new_height == 0: - new_height = 1 - return new_width, new_height - -def harmonize (design_color: int, source_color: int, threshold: float = 35, harmony: float = 0.5) -> int: - from_hct = Hct.from_int(design_color) - to_hct = Hct.from_int(source_color) - difference_degrees_ = difference_degrees(from_hct.hue, to_hct.hue) - rotation_degrees = min(difference_degrees_ * harmony, threshold) - output_hue = sanitize_degrees_double( - from_hct.hue + rotation_degrees * rotation_direction(from_hct.hue, to_hct.hue) - ) - return Hct.from_hct(output_hue, from_hct.chroma, from_hct.tone).to_int() - -def boost_chroma_tone (argb: int, chroma: float = 1, tone: float = 1) -> int: - hct = Hct.from_int(argb) - return Hct.from_hct(hct.hue, hct.chroma * chroma, hct.tone * tone).to_int() - -darkmode = (args.mode == 'dark') -transparent = (args.transparency == 'transparent') - -if args.path is not None: - image = Image.open(args.path) - - if image.format == "GIF": - image.seek(1) - - if image.mode in ["L", "P"]: - image = image.convert('RGB') - wsize, hsize = image.size - wsize_new, hsize_new = calculate_optimal_size(wsize, hsize, args.size) - if wsize_new < wsize or hsize_new < hsize: - image = image.resize((wsize_new, hsize_new), Image.Resampling.BICUBIC) - colors = QuantizeCelebi(list(image.getdata()), 128) - argb = Score.score(colors)[0] - - if args.cache is not None: - with open(args.cache, 'w') as file: - file.write(argb_to_hex(argb)) - hct = Hct.from_int(argb) - if(args.smart): - if(hct.chroma < 20): - args.scheme = 'neutral' - if(hct.tone > 60): - darkmode = False -elif args.color is not None: - argb = hex_to_argb(args.color) - hct = Hct.from_int(argb) - -if args.scheme == 'fruitsalad': - from materialyoucolor.scheme.scheme_fruit_salad import SchemeFruitSalad as Scheme -elif args.scheme == 'expressive': - from materialyoucolor.scheme.scheme_expressive import SchemeExpressive as Scheme -elif args.scheme == 'monochrome': - from materialyoucolor.scheme.scheme_monochrome import SchemeMonochrome as Scheme -elif args.scheme == 'rainbow': - from materialyoucolor.scheme.scheme_rainbow import SchemeRainbow as Scheme -elif args.scheme == 'tonalspot': - from materialyoucolor.scheme.scheme_tonal_spot import SchemeTonalSpot as Scheme -elif args.scheme == 'neutral': - from materialyoucolor.scheme.scheme_neutral import SchemeNeutral as Scheme -elif args.scheme == 'fidelity': - from materialyoucolor.scheme.scheme_fidelity import SchemeFidelity as Scheme -elif args.scheme == 'content': - from materialyoucolor.scheme.scheme_content import SchemeContent as Scheme -elif args.scheme == 'vibrant': - from materialyoucolor.scheme.scheme_vibrant import SchemeVibrant as Scheme -else: - from schemes.scheme_morevibrant import SchemeMoreVibrant as Scheme - -# Generate -scheme = Scheme(hct, darkmode, 0.0) - -material_colors = {} -term_colors = {} - -for color in vars(MaterialDynamicColors).keys(): - color_name = getattr(MaterialDynamicColors, color) - if hasattr(color_name, "get_hct"): - rgba = color_name.get_hct(scheme).to_rgba() - material_colors[color] = rgba_to_hex(rgba) - -# Extended material -if darkmode == True: - material_colors['success'] = '#B5CCBA' - material_colors['onSuccess'] = '#213528' - material_colors['successContainer'] = '#374B3E' - material_colors['onSuccessContainer'] = '#D1E9D6' -else: - material_colors['success'] = '#4F6354' - material_colors['onSuccess'] = '#FFFFFF' - material_colors['successContainer'] = '#D1E8D5' - material_colors['onSuccessContainer'] = '#0C1F13' - -# Terminal Colors -if args.termscheme is not None: - with open(args.termscheme, 'r') as f: - json_termscheme = f.read() - term_source_colors = json.loads(json_termscheme)['dark' if darkmode else 'light'] - - primary_color_argb = hex_to_argb(material_colors['primary_paletteKeyColor']) - for color, val in term_source_colors.items(): - if(args.scheme == 'monochrome') : - term_colors[color] = val - continue - if args.blend_bg_fg and color == "term0": - harmonized = boost_chroma_tone(hex_to_argb(material_colors['surfaceContainerLow']), 1.2, 0.95) - elif args.blend_bg_fg and color == "term15": - harmonized = boost_chroma_tone(hex_to_argb(material_colors['onSurface']), 3, 1) - else: - harmonized = harmonize(hex_to_argb(val), primary_color_argb, args.harmonize_threshold, args.harmony) - harmonized = boost_chroma_tone(harmonized, 1, 1 + (args.term_fg_boost * (1 if darkmode else -1))) - term_colors[color] = argb_to_hex(harmonized) - -if args.debug == False: - print(f"$darkmode: {darkmode};") - print(f"$transparent: {transparent};") - for color, code in material_colors.items(): - print(f"${color}: {code};") - for color, code in term_colors.items(): - print(f"${color}: {code};") -else: - if args.path is not None: - print('\n--------------Image properties-----------------') - print(f"Image size: {wsize} x {hsize}") - print(f"Resized image: {wsize_new} x {hsize_new}") - print('\n---------------Selected color------------------') - print(f"Dark mode: {darkmode}") - print(f"Scheme: {args.scheme}") - print(f"Accent color: {display_color(rgba_from_argb(argb))} {argb_to_hex(argb)}") - print(f"HCT: {hct.hue:.2f} {hct.chroma:.2f} {hct.tone:.2f}") - print('\n---------------Material colors-----------------') - for color, code in material_colors.items(): - rgba = rgba_from_argb(hex_to_argb(code)) - print(f"{color.ljust(32)} : {display_color(rgba)} {code}") - print('\n----------Harmonize terminal colors------------') - for color, code in term_colors.items(): - rgba = rgba_from_argb(hex_to_argb(code)) - code_source = term_source_colors[color] - rgba_source = rgba_from_argb(hex_to_argb(code_source)) - print(f"{color.ljust(6)} : {display_color(rgba_source)} {code_source} --> {display_color(rgba)} {code}") - print('-----------------------------------------------') diff --git a/.config/ags/scripts/color_generation/pywal.sh b/.config/ags/scripts/color_generation/pywal.sh deleted file mode 100755 index ded45eee0..000000000 --- a/.config/ags/scripts/color_generation/pywal.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -# A wrapper for pywal inside the virtual env -source $(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate -#wal "$@" -wal $* -deactivate diff --git a/.config/ags/scripts/color_generation/pywal_to_material.scss b/.config/ags/scripts/color_generation/pywal_to_material.scss deleted file mode 100644 index ff049b219..000000000 --- a/.config/ags/scripts/color_generation/pywal_to_material.scss +++ /dev/null @@ -1,57 +0,0 @@ -$primary: lighten($color4, 20%); -$onPrimary: darken($color2, 20%); -$primaryContainer: darken($color2, 10%); -$onPrimaryContainer: lighten($color4, 10%); -$secondary: desaturate(lighten($color5, 20%), 20%); -$onSecondary: desaturate(darken($color3, 20%), 20%); -$secondaryContainer: desaturate(darken($color3, 20%), 20%); -$onSecondaryContainer: desaturate(lighten($color5, 20%), 20%); -$tertiary: adjust-hue(lighten($color4, 20%), 30deg); -$onTertiary: adjust-hue(darken($color2, 20%), 30deg); -$tertiaryContainer: adjust-hue(darken($color2, 10%), 30deg); -$tertiaryContainer: adjust-hue(lighten($color4, 10%), 30deg); -$error: #ffb4a9; -$onError: #680003; -$errorContainer: #930006; -$onErrorContainer: #ffb4a9; -$colorbarbg: $color0; -$background: $color0; -$onBackground: $color7; -$surface: $color0; -$onSurface: $color7; -$surfaceVariant: $color1; -$onSurfaceVariant: $color7; -$outline: $color7; -$shadow: #000000; -$inverseSurface: invert($surface); -$inverseOnSurface: invert($onSurface); -$inversePrimary: invert($primary); - -.primary { color: $primary; } -.onPrimary { color: $onPrimary; } -.primaryContainer { color: $primaryContainer; } -.onPrimaryContainer { color: $onPrimaryContainer; } -.secondary { color: $secondary; } -.onSecondary { color: $onSecondary; } -.secondaryContainer { color: $secondaryContainer; } -.onSecondaryContainer { color: $onSecondaryContainer; } -.tertiary { color: $tertiary; } -.onTertiary { color: $onTertiary; } -.tertiaryContainer { color: $tertiaryContainer; } -.onTertiaryContainer { color: $tertiaryContainer; } -.error { color: $error; } -.onError { color: $onError; } -.errorContainer { color: $errorContainer; } -.onErrorContainer { color: $onErrorContainer; } -.colorbarbg { color: $colorbarbg; } -.background { color: $background; } -.onBackground { color: $onBackground; } -.surface { color: $surface; } -.onSurface { color: $onSurface; } -.surfaceVariant { color: $surfaceVariant; } -.onSurfaceVariant { color: $onSurfaceVariant; } -.outline { color: $outline; } -.shadow { color: $shadow; } -.inverseSurface { color: $inverseSurface; } -.inverseOnSurface { color: $inverseOnSurface; } -.inversePrimary { color: $inversePrimary; } diff --git a/.config/ags/scripts/color_generation/randomwall.sh b/.config/ags/scripts/color_generation/randomwall.sh index f2b18b3fd..60fd26bf8 100755 --- a/.config/ags/scripts/color_generation/randomwall.sh +++ b/.config/ags/scripts/color_generation/randomwall.sh @@ -1,4 +1,22 @@ #!/usr/bin/env bash -XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" -CONFIG_DIR="$XDG_CONFIG_HOME/ags" -$CONFIG_DIR/scripts/color_generation/switchwall.sh "$(fd . $(xdg-user-dir PICTURES)/wallpapers/ -e .png -e .jpg -e .svg | xargs shuf -n1 -e)" + +WallSwitch="$HOME/.config/ags/scripts/color_generation/switchwall.sh" +RecentWallpapersFile="$HOME/.config/ags/switched_wallpapers.txt" +MaxRecentWallpapers=1 # Number of recent wallpapers to remember + +mkdir -p "$(dirname "$RecentWallpapersFile")" +touch "$RecentWallpapersFile" +cleanup_recent_wallpapers() { + if [ "$(wc -l < "$RecentWallpapersFile")" -gt "$MaxRecentWallpapers" ]; then + head -n -"$MaxRecentWallpapers" "$RecentWallpapersFile" > "$RecentWallpapersFile.tmp" && mv "$RecentWallpapersFile.tmp" "$RecentWallpapersFile" + fi +} +imgpath=$(find "$HOME/Pictures/Wallpapers/" -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" -o -iname "*.gif" \) ! -path "*/thumbnails/*" ! -path "$(grep -v '^#' "$RecentWallpapersFile" | tr '\n' '|' | sed 's/|$//')" -print0 | shuf -zn 1 | xargs -0 -I {} echo {}) +if [ -z "$imgpath" ]; then + echo "No new wallpapers available." + exit 1 +fi + +"$WallSwitch" "$imgpath" +echo "$imgpath" >> "$RecentWallpapersFile" +cleanup_recent_wallpapers diff --git a/.config/ags/scripts/color_generation/schemes/scheme_morevibrant.py b/.config/ags/scripts/color_generation/schemes/scheme_morevibrant.py deleted file mode 100644 index 2715021c5..000000000 --- a/.config/ags/scripts/color_generation/schemes/scheme_morevibrant.py +++ /dev/null @@ -1,44 +0,0 @@ -from materialyoucolor.scheme.dynamic_scheme import DynamicSchemeOptions, DynamicScheme -from materialyoucolor.scheme.variant import Variant -from materialyoucolor.palettes.tonal_palette import TonalPalette - - -class SchemeMoreVibrant(DynamicScheme): - hues = [0.0, 41.0, 61.0, 101.0, 131.0, 181.0, 251.0, 301.0, 360.0] - secondary_rotations = [18.0, 15.0, 10.0, 12.0, 15.0, 18.0, 15.0, 12.0, 12.0] - tertiary_rotations = [35.0, 30.0, 20.0, 25.0, 30.0, 35.0, 30.0, 25.0, 25.0] - - def __init__(self, source_color_hct, is_dark, contrast_level): - super().__init__( - DynamicSchemeOptions( - source_color_hct=source_color_hct, - variant=Variant.VIBRANT, - contrast_level=contrast_level, - is_dark=is_dark, - primary_palette=TonalPalette.from_hue_and_chroma( - source_color_hct.hue, 200.0 - ), - secondary_palette=TonalPalette.from_hue_and_chroma( - DynamicScheme.get_rotated_hue( - source_color_hct, - SchemeMoreVibrant.hues, - SchemeMoreVibrant.secondary_rotations, - ), - 32.0, - ), - tertiary_palette=TonalPalette.from_hue_and_chroma( - DynamicScheme.get_rotated_hue( - source_color_hct, - SchemeMoreVibrant.hues, - SchemeMoreVibrant.tertiary_rotations, - ), - 32.0, - ), - neutral_palette=TonalPalette.from_hue_and_chroma( - source_color_hct.hue, 13.0 - ), - neutral_variant_palette=TonalPalette.from_hue_and_chroma( - source_color_hct.hue, 15.0 - ), - ) - ) diff --git a/.config/ags/scripts/color_generation/specials/_material_badapple-l.scss b/.config/ags/scripts/color_generation/specials/_material_badapple-l.scss deleted file mode 100644 index 12c047b0f..000000000 --- a/.config/ags/scripts/color_generation/specials/_material_badapple-l.scss +++ /dev/null @@ -1,29 +0,0 @@ -$darkmode: false; -$primary: #000000; -$onPrimary: #FFFFFF ; -$primaryContainer: #d4d4d4; -$onPrimaryContainer: #000000; -$secondary: #000000; -$onSecondary: #FFFFFF ; -$secondaryContainer: #bebebe; -$onSecondaryContainer: #000000; -$tertiary: #000000; -$onTertiary: #FFFFFF ; -$tertiaryContainer: #FFFFFF ; -$onTertiaryContainer: #000000; -$error: #000000; -$onError: #FFFFFF ; -$errorContainer: #FFFFFF ; -$onErrorContainer: #000000; -$colorbarbg: #FFFFFF ; -$background: #FFFFFF ; -$onBackground: #000000; -$surface: #f0f0f0; -$onSurface: #000000; -$surfaceVariant: #dddddd; -$onSurfaceVariant: #000000; -$outline: #525252; -$shadow: #000000 ; -$inverseSurface: #000000; -$inverseOnSurface: #FFFFFF; -$inversePrimary: #000000; diff --git a/.config/ags/scripts/color_generation/specials/_material_badapple.scss b/.config/ags/scripts/color_generation/specials/_material_badapple.scss deleted file mode 100644 index 24dd73ff5..000000000 --- a/.config/ags/scripts/color_generation/specials/_material_badapple.scss +++ /dev/null @@ -1,29 +0,0 @@ -$darkmode: true; -$primary: #e2e2e2; -$onPrimary: #000000; -$primaryContainer: #6b6b6b; -$onPrimaryContainer: #e2e2e2; -$secondary: #e2e2e2; -$onSecondary: #000000; -$secondaryContainer: #313131; -$onSecondaryContainer: #e2e2e2; -$tertiary: #e2e2e2; -$onTertiary: #000000; -$tertiaryContainer: #000000; -$onTertiaryContainer: #e2e2e2; -$error: #e2e2e2; -$onError: #000000; -$errorContainer: #000000; -$onErrorContainer: #e2e2e2; -$colorbarbg: #000000; -$background: #000000; -$onBackground: #e2e2e2; -$surface: #161616; -$onSurface: #e2e2e2; -$surfaceVariant: #242424; -$onSurfaceVariant: #e2e2e2; -$outline: #a1a1a1; -$shadow: #000000; -$inverseSurface: #e2e2e2; -$inverseOnSurface: #000000; -$inversePrimary: #e2e2e2; diff --git a/.config/ags/scripts/color_generation/switchcolor.sh b/.config/ags/scripts/color_generation/switchcolor.sh index 183efc7c9..9bb6b06aa 100755 --- a/.config/ags/scripts/color_generation/switchcolor.sh +++ b/.config/ags/scripts/color_generation/switchcolor.sh @@ -4,36 +4,7 @@ XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}" XDG_STATE_HOME="${XDG_STATE_HOME:-$HOME/.local/state}" CONFIG_DIR="$XDG_CONFIG_HOME/ags" -CACHE_DIR="$XDG_CACHE_HOME/ags" STATE_DIR="$XDG_STATE_HOME/ags" - COLORMODE_FILE_DIR="$STATE_DIR/user/colormode.txt" -if [ "$1" == "--pick" ]; then - color=$(hyprpicker --no-fancy) -elif [[ "$1" = "#"* ]]; then # this is a color - color=$1 -else - color=$(cut -f1 "$STATE_DIR/user/color.txt") -fi - -sed -i "1s/.*/$color/" "$STATE_DIR/user/color.txt" - -# Use Gradience? -colormodelines=$(wc -l "$COLORMODE_FILE_DIR" | awk '{print $1}' ) -if [ "$2" == "--no-gradience" ]; then - if [ "$colormodelines" == "3" ]; then - echo 'nogradience' >> "$COLORMODE_FILE_DIR" - else - sed -i "4s/.*/nogradience/" "$COLORMODE_FILE_DIR" - fi -elif [ "$2" == "--yes-gradience" ]; then - if [ "$colormodelines" == "3" ]; then - echo 'yesgradience' >> "$COLORMODE_FILE_DIR" - else - sed -i "4s/.*/yesgradience/" "$COLORMODE_FILE_DIR" - fi -fi - -# Generate colors for ags n stuff -"$CONFIG_DIR"/scripts/color_generation/colorgen.sh "${color}" --apply +"$CONFIG_DIR"/scripts/color_generation/colorgen.sh "$(cat "$STATE_DIR/user/current_wallpaper.txt")" & diff --git a/.config/ags/scripts/color_generation/switchwall.sh b/.config/ags/scripts/color_generation/switchwall.sh index d1aef669e..7515df5dc 100755 --- a/.config/ags/scripts/color_generation/switchwall.sh +++ b/.config/ags/scripts/color_generation/switchwall.sh @@ -1,40 +1,24 @@ #!/usr/bin/env bash -XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" -CONFIG_DIR="$XDG_CONFIG_HOME/ags" +# Configuration +CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/ags" +LAST_IMAGE="$HOME/.cache/last_wallpaper.txt" +YAD="yad --width 1200 --height 800 --file --add-preview --large-preview --title='Choose wallpaper'" -switch() { - imgpath=$1 - read scale screenx screeny screensizey < <(hyprctl monitors -j | jq '.[] | select(.focused) | .scale, .x, .y, .height' | xargs) - cursorposx=$(hyprctl cursorpos -j | jq '.x' 2>/dev/null) || cursorposx=960 - cursorposx=$(bc <<< "scale=0; ($cursorposx - $screenx) * $scale / 1") - cursorposy=$(hyprctl cursorpos -j | jq '.y' 2>/dev/null) || cursorposy=540 - cursorposy=$(bc <<< "scale=0; ($cursorposy - $screeny) * $scale / 1") - cursorposy_inverted=$((screensizey - cursorposy)) +# Ensure wallpaper directory exists +mkdir -p "$HOME/Pictures/Wallpapers" - if [ "$imgpath" == '' ]; then - echo 'Aborted' - exit 0 - fi +# Validate and set wallpaper +set_wallpaper() { + [[ -z "$1" || ! -f "$1" ]] && { echo "Invalid image path: $1" >&2; return 1; } + [[ -f "$LAST_IMAGE" && "$(cat "$LAST_IMAGE")" == "$1" ]] && { echo "Skipping: Same image as last selection."; return; } - # agsv1 run-js "wallpaper.set('')" - # sleep 0.1 && agsv1 run-js "wallpaper.set('${imgpath}')" & - swww img "$imgpath" --transition-step 100 --transition-fps 120 \ - --transition-type grow --transition-angle 30 --transition-duration 1 \ - --transition-pos "$cursorposx, $cursorposy_inverted" + swww img "$1" --transition-fps 144 --transition-type wipe --transition-duration 1 + "$CONFIG_DIR/scripts/color_generation/colorgen.sh" "$1" + echo "$1" > "$LAST_IMAGE" } -if [ "$1" == "--noswitch" ]; then - imgpath=$(swww query | awk -F 'image: ' '{print $2}') - # imgpath=$(agsv1 run-js 'wallpaper.get(0)') -elif [[ "$1" ]]; then - switch "$1" -else - # Select and set image (hyprland) - - cd "$(xdg-user-dir PICTURES)" || return 1 - switch "$(yad --width 1200 --height 800 --file --add-preview --large-preview --title='Choose wallpaper')" -fi - -# Generate colors for ags n stuff -"$CONFIG_DIR"/scripts/color_generation/colorgen.sh "${imgpath}" --apply --smart +# Main +img="$1" +[[ -z "$img" ]] && img=$($YAD) +[[ -n "$img" && -f "$img" ]] && set_wallpaper "$img" || exit 1 \ No newline at end of file diff --git a/.config/ags/scss/main.scss b/.config/ags/scss/main.scss index 57938e81a..c8a34300c 100644 --- a/.config/ags/scss/main.scss +++ b/.config/ags/scss/main.scss @@ -5,13 +5,13 @@ *:not(popover) { all: unset; } // Colors +@import './mode'; // Darkmode @import 'material'; // Material colors @import './colors'; // Global color definitions. Uses material colors as base. @import './lib_mixins'; @import 'lib_mixins_overrides'; @import './lib_classes'; @import './common'; // Context menu n stuff - // Components @import './bar'; @import './cheatsheet'; @@ -23,6 +23,7 @@ @import './sidebars'; @import './session'; @import './notifications'; +@import './wallselect'; // Music is put last as it might mess stuff up with pywal @import './music'; // Everything related to music is here diff --git a/.config/ags/scss/mode.scss b/.config/ags/scss/mode.scss new file mode 100644 index 000000000..a19c42626 --- /dev/null +++ b/.config/ags/scss/mode.scss @@ -0,0 +1,2 @@ +$darkmode:False; +$transparent:False; \ No newline at end of file diff --git a/.config/ags/scss/wallselect.scss b/.config/ags/scss/wallselect.scss new file mode 100644 index 000000000..2f4e39a22 --- /dev/null +++ b/.config/ags/scss/wallselect.scss @@ -0,0 +1,50 @@ +.wallpaper-list { + .preview-box { + min-width: 9.375rem; + min-height: 5.625rem; + background-size: cover; + background-position: center; + border-radius: 0.5rem; + } + + button { + padding: 0.25rem; + margin: 0.25rem; + } + + .scroll-box { + min-height: 6.875rem; + } +} + +.wallpaper-window { + @extend .sidebar-right; +} + +.wallpaper-placeholder { + padding: 2rem; + + .txt-large { + font-size: 1.2em; + } + + .txt-subtext { + opacity: 0.8; + } +} + +.generate-thumbnails { + padding: 0.5rem 1rem; + border-radius: 624.9375rem; + background-color: $secondaryContainer; + color: $onSecondaryContainer; + margin-right: 0.5rem; + + &:hover { + background-color: mix($secondaryContainer, $onSecondaryContainer, 90%); + } + + &:active { + background-color: mix($secondaryContainer, $onSecondaryContainer, 80%); + } +} \ No newline at end of file diff --git a/.config/ags/switched_wallpapers.txt b/.config/ags/switched_wallpapers.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.config/anyrun/style.css b/.config/anyrun/style.css index ca45f260d..a8e5a6838 100644 --- a/.config/anyrun/style.css +++ b/.config/anyrun/style.css @@ -1,6 +1,6 @@ * { all: unset; - font-size: 1.3rem; + font-size: 1.4rem; } #window, @@ -33,12 +33,12 @@ #match:selected, #match:hover, #plugin:hover { - background: #2e3131; + background: #121318; } #entry { - background: #0b0f10; - border: 1px solid #0b0f10; + background: #121318; + /* border: 1px solid #8f9099; */ border-radius: 16px; margin: 0.5rem; padding: 0.3rem 1rem; @@ -59,8 +59,9 @@ list > #plugin:hover { } box#main { - background: #0b0f10; - box-shadow: inset 0 0 0 1px #0b0f10, 0 0 0 1px #0b0f10; - border-radius: 24px; + background: #121318; + /* box-shadow: inset 0 0 0 1px #000000, 0 0 0 1px; */ + border-radius: 20px; + min-height:30px; padding: 0.3rem; } diff --git a/.config/hypr/hyprland/keybinds.conf b/.config/hypr/hyprland/keybinds.conf index f180a843f..bd9296b7e 100644 --- a/.config/hypr/hyprland/keybinds.conf +++ b/.config/hypr/hyprland/keybinds.conf @@ -160,6 +160,7 @@ bind = Super, B, exec, agsv1 -t 'sideleft' # Toggle left sidebar bind = Super, A, exec, agsv1 -t 'sideleft' # [hidden] bind = Super, O, exec, agsv1 -t 'sideleft' # [hidden] bind = Super, N, exec, agsv1 -t 'sideright' # Toggle right sidebar +bind = Super, Y, exec, agsv1 -t 'wallselect' # Toggle wallpaper selector bind = Super, M, exec, agsv1 run-js 'openMusicControls.value = (!mpris.getPlayer() ? false : !openMusicControls.value);' # Toggle music controls bind = Super, Comma, exec, agsv1 run-js 'openColorScheme.value = true; Utils.timeout(2000, () => openColorScheme.value = false);' # View color scheme and options bind = Super, K, exec, for ((i=0; i<$(hyprctl monitors -j | jq length); i++)); do agsv1 -t "osk""$i"; done # Toggle on-screen keyboard diff --git a/.config/matugen/config.toml b/.config/matugen/config.toml new file mode 100644 index 000000000..6f3e20de5 --- /dev/null +++ b/.config/matugen/config.toml @@ -0,0 +1,75 @@ +[config.wallpaper] +command = "swww" + +[templates.ags] +input_path = '~/.config/matugen/templates/ags.scss' +output_path = '~/.local/state/ags/scss/_material.scss' +post_hook='agsv1 run-js "handleStyles(false);"' + +[templates.gradience] +input_path = '~/.config/matugen/templates/gradience.json' +output_path = '~/.cache/ags/user/generated/gradience/gradience.json' +post_hook='rm -rf ~/.config/gtk-4.0 && gradience-cli apply -p ~/.cache/ags/user/generated/gradience/gradience.json --gtk both' +[templates.hyprlock] +input_path = '~/.config/matugen/templates/hyprlock.conf' +output_path = '~/.config/hypr/hyprlock.conf' +post_hook = 'hyprctl reload' + +[templates.hyprland] +input_path = '~/.config/matugen/templates/hyprland-colors.conf' +output_path = '~/.config/hypr/colors.conf' + +[templates.spicetify] +input_path = '~/.config/matugen/templates/colors.ini' +output_path = '~/.config/spicetify/Themes/Comfy/color.ini' + +[templates.qt5ct] +input_path = '~/.config/matugen/templates/qtct-colors.conf' +output_path = '~/.config/qt5ct/colors/matugen.conf' + +[templates.qt6ct] +input_path = '~/.config/matugen/templates/qtct-colors.conf' +output_path = '~/.config/qt6ct/colors/matugen.conf' + +[templates.starship] +input_path = '~/.config/matugen/templates/starship-colors.toml' +output_path = '~/.config/starship.toml' +post_hook = 'starship init zsh > ~/.zshrc' + +[templates.obsidian] +input_path = '~/.config/matugen/templates/obsidian.css' +output_path = '/mnt/Data/General-Archive/obsidian/.obsidian/snippets/material-you.css' + +[templates.vscode] +input_path = '~/.config/matugen/templates/vscode-color-theme.json' +output_path = '~/.windsurf/extensions/theme-material-you/themes/vscode.json' +post_hook = 'cp ~/.config/matugen/other/vscode-package.json ~/.windsurf/extensions/theme-material-you/package.json' + +[templates.pywalfox] +input_path = '~/.config/matugen/templates/pywalfox-colors.json' +output_path = '~/.cache/wal/colors.json' +post_hook = 'pywalfox update' + +[templates.heroic] +input_path = '~/.config/matugen/templates/heroic-theme.css' +output_path = '~/.config/heroic/themes/material-you.css' + +[templates.discord] +input_path = '~/.config/matugen/templates/discord.css' +output_path = '~/.config/vesktop/themes/material-you.css' + +[templates.telegram] +input_path = '~/.config/matugen/templates/telegram-colors.tdesktop-theme' +output_path = '~/.config/telegram-desktop/themes/material-you.tdesktop-theme' + +[templates.kitty] +input_path = '~/.config/matugen/templates/kitty-colors.conf' +output_path = '~/.config/kitty/colors.conf' + +[templates.rofi] +input_path = '~/.config/matugen/templates/rofi-colors.rasi' +output_path = '~/.config/rofi/colors.rasi' + +[templates.anyrun] +input_path = '~/.config/matugen/templates/anyrun.css' +output_path = '~/.config/anyrun/style.css' diff --git a/.config/matugen/other/vscode-package.json b/.config/matugen/other/vscode-package.json new file mode 100644 index 000000000..484e50098 --- /dev/null +++ b/.config/matugen/other/vscode-package.json @@ -0,0 +1,20 @@ +{ + "name": "material", + "displayName": "Generated Matugen Theme", + "description": "A VS Code theme inspired by Material You, designed to provide a calming and efficient coding environment.", + "version": "1.0.0", + "publisher": "Pharmaracist", + "engines": { + "vscode": "1.91.0" + }, + "categories": ["Themes"], + "contributes": { + "themes": [ + { + "label": "Generated Matugen Theme", + "uiTheme": "vs-dark", + "path": "./themes/vscode.json" + } + ] + } +} \ No newline at end of file diff --git a/.config/matugen/templates/ags.scss b/.config/matugen/templates/ags.scss new file mode 100644 index 000000000..e3f8e8c98 --- /dev/null +++ b/.config/matugen/templates/ags.scss @@ -0,0 +1,72 @@ +// PreGenerated Matugen Template for AGS + +$primary: {{colors.primary.default.hex}}; +$onPrimary: {{colors.on_primary.default.hex}}; +$primaryContainer: {{colors.primary_container.default.hex}}; +$onPrimaryContainer: {{colors.on_primary_container.default.hex}}; +$secondary: {{colors.secondary.default.hex}}; +$onSecondary: {{colors.on_secondary.default.hex}}; +$secondaryContainer: {{colors.secondary_container.default.hex}}; +$onSecondaryContainer: {{colors.on_secondary_container.default.hex}}; +$tertiary: {{colors.tertiary.default.hex}}; +$onTertiary: {{colors.on_tertiary.default.hex}}; +$tertiaryContainer: {{colors.tertiary_container.default.hex}}; +$onTertiaryContainer: {{colors.on_tertiary_container.default.hex}}; +$error: {{colors.error.default.hex}}; +$onError: {{colors.on_error.default.hex}}; +$errorContainer: {{colors.error_container.default.hex}}; +$onErrorContainer: {{colors.on_error_container.default.hex}}; +$background: {{colors.background.default.hex}}; +$onBackground: {{colors.on_background.default.hex}}; +$surface: {{colors.surface.default.hex}}; +$onSurface: {{colors.on_surface.default.hex}}; +$surfaceVariant: {{colors.surface_variant.default.hex}}; +$onSurfaceVariant: {{colors.on_surface_variant.default.hex}}; +$surfaceDim: {{colors.surface_dim.default.hex}}; +$surfaceBright: {{colors.surface_bright.default.hex}}; +$surfaceContainerLowest: {{colors.surface_container_lowest.default.hex}}; +$surfaceContainerLow: {{colors.surface_container_low.default.hex}}; +$surfaceContainer: {{colors.surface_container.default.hex}}; +$surfaceContainerHigh: {{colors.surface_container_high.default.hex}}; +$surfaceContainerHighest: {{colors.surface_container_highest.default.hex}}; +$outline: {{colors.outline.default.hex}}; +$outlineVariant: {{colors.outline_variant.default.hex}}; +$shadow: {{colors.shadow.default.hex}}; +$scrim: {{colors.scrim.default.hex}}; +$inverseSurface: {{colors.inverse_surface.default.hex}}; +$inverseOnSurface: {{colors.inverse_on_surface.default.hex}}; +$inversePrimary: {{colors.inverse_primary.default.hex}}; +$surfaceTint: {{colors.surface_tint.default.hex}}; +$primaryFixed: {{colors.primary_fixed.default.hex}}; +$primaryFixedDim: {{colors.primary_fixed_dim.default.hex}}; +$onPrimaryFixed: {{colors.on_primary_fixed.default.hex}}; +$onPrimaryFixedVariant: {{colors.on_primary_fixed_variant.default.hex}}; +$secondaryFixed: {{colors.secondary_fixed.default.hex}}; +$secondaryFixedDim: {{colors.secondary_fixed_dim.default.hex}}; +$onSecondaryFixed: {{colors.on_secondary_fixed.default.hex}}; +$onSecondaryFixedVariant: {{colors.on_secondary_fixed_variant.default.hex}}; +$tertiaryFixed: {{colors.tertiary_fixed.default.hex}}; +$tertiaryFixedDim: {{colors.tertiary_fixed_dim.default.hex}}; +$onTertiaryFixed: {{colors.on_tertiary_fixed.default.hex}}; +$onTertiaryFixedVariant: {{colors.on_tertiary_fixed_variant.default.hex}}; +$success: {{colors.primary.default.hex}}; +$onSuccess: {{colors.on_primary.default.hex}}; +$successContainer: {{colors.primary_container.default.hex}}; +$onSuccessContainer: {{colors.on_primary_container.default.hex}}; + +$term0: $background; +$term1: $primary; +$term2: $secondary; +$term3: $tertiary; +$term4: $error; +$term5: $surface; +$term6: $surfaceVariant; +$term7: $surfaceDim; +$term8: $inverseSurface; +$term9: $onPrimary; +$term10: $onSecondary; +$term11: $onTertiary; +$term12: $onError; +$term13: $onBackground; +$term14: $surfaceContainer; +$term15: $surfaceContainerHighest; diff --git a/.config/matugen/templates/alacritty.toml b/.config/matugen/templates/alacritty.toml new file mode 100644 index 000000000..053e2ce87 --- /dev/null +++ b/.config/matugen/templates/alacritty.toml @@ -0,0 +1,68 @@ +[colors.primary] +background = '{{colors.background.default.hex}}' +foreground = '{{colors.on_surface.default.hex}}' + +[colors.cursor] +text = '{{colors.on_surface.default.hex}}' +cursor = '{{colors.on_surface_variant.default.hex}}' + +[colors.vi_mode_cursor] +text = '{{colors.background.default.hex}}' +cursor = '{{colors.primary.default.hex}}' + +[colors.search.matches] +foreground = '{{colors.surface_variant.default.hex}}' +background = '{{colors.tertiary.default.hex}}' + +[colors.search.focused_match] +foreground = '{{colors.surface_variant.default.hex}}' +background = '{{colors.primary.default.hex}}' + +[colors.footer_bar] +foreground = '{{colors.surface_variant.default.hex}}' +background = '{{colors.inverse_surface.default.hex}}' + +[colors.hints.start] +foreground = '{{colors.surface_variant.default.hex}}' +background = '{{colors.secondary.default.hex}}' + +[colors.hints.end] +foreground = '{{colors.surface_variant.default.hex}}' +background = '{{colors.secondary.default.hex}}' + +[colors.selection] +text = '{{colors.background.default.hex}}' +background = '{{colors.primary.default.hex}}' + + +[colors.normal] +black = '#181818' +red = '{{colors.error.default.hex}}' +green = '{{colors.primary.default.hex}}' +yellow = '{{colors.inverse_primary.default.hex}}' +blue = '{{colors.primary.default.hex}}' +magenta = '{{colors.tertiary.default.hex}}' +cyan = '{{colors.secondary.default.hex}}' +white = '#BAC2DE' + + +[colors.bright] +black = '#585B70' +red = '#F38BA8' +green = '#A6E3A1' +yellow = '#F9E2AF' +blue = '#89B4FA' +magenta = '#F5C2E7' +cyan = '#94E2D5' +white = '#A6ADC8' + + +[colors.dim] +black = '#45475A' +red = '#F38BA8' +green = '#A6E3A1' +yellow = '#F9E2AF' +blue = '#89B4FA' +magenta = '#F5C2E7' +cyan = '#94E2D5' +white = '#BAC2DE' diff --git a/.config/matugen/templates/anyrun.css b/.config/matugen/templates/anyrun.css new file mode 100644 index 000000000..3238245a2 --- /dev/null +++ b/.config/matugen/templates/anyrun.css @@ -0,0 +1,67 @@ +* { + all: unset; + font-size: 1.4rem; +} + +#window, +#match, +#entry, +#plugin, +#main { + background: transparent; +} + +#match.activatable { + border-radius: 16px; + padding: 0.3rem 0.9rem; + margin-top: 0.01rem; +} +#match.activatable:first-child { + margin-top: 0.7rem; +} +#match.activatable:last-child { + margin-bottom: 0.6rem; +} + +#plugin:hover #match.activatable { + border-radius: 10px; + padding: 0.3rem; + margin-top: 0.01rem; + margin-bottom: 0; +} + +#match:selected, +#match:hover, +#plugin:hover { + background: {{colors.background.default.hex}}; +} + +#entry { + background: {{colors.background.default.hex}}; + /* border: 1px solid {{colors.outline.default.hex}}; */ + border-radius: 16px; + margin: 0.5rem; + padding: 0.3rem 1rem; +} + +list > #plugin { + border-radius: 16px; + margin: 0 0.3rem; +} +list > #plugin:first-child { + margin-top: 0.3rem; +} +list > #plugin:last-child { + margin-bottom: 0.3rem; +} +list > #plugin:hover { + padding: 0.6rem; +} + +box#main { + background: {{colors.background.default.hex}}; + /* box-shadow: inset 0 0 0 1px {{colors.shadow.default.hex}}, 0 0 0 1px; */ + border-radius: 20px; + min-height:30px; + padding: 0.3rem; +} diff --git a/.config/matugen/templates/colors.css b/.config/matugen/templates/colors.css new file mode 100644 index 000000000..f246856f3 --- /dev/null +++ b/.config/matugen/templates/colors.css @@ -0,0 +1,7 @@ +/* +* Css Colors +* Generated with Matugen +*/ +<* for name, value in colors *> + @define-color {{name}} {{value.default.hex}}; +<* endfor *> diff --git a/.config/matugen/templates/colors.ini b/.config/matugen/templates/colors.ini new file mode 100644 index 000000000..c624c5501 --- /dev/null +++ b/.config/matugen/templates/colors.ini @@ -0,0 +1,27 @@ +[Matugen] +text = {{colors.on_surface_variant.default.hex_stripped}} +subtext = {{colors.outline.default.hex_stripped}} +main = {{colors.surface_dim.default.hex_stripped}} +main-elevated = {{colors.surface_container_highest.default.hex_stripped}} +main-transition = {{colors.inverse_surface.default.hex_stripped}} +highlight = {{colors.tertiary_container.default.hex_stripped}} +highlight-elevated = {{colors.secondary_container.default.hex_stripped}} +sidebar = {{colors.surface_container_lowest.default.hex_stripped}} +player = {{colors.surface_container_low.default.hex_stripped}} +card = {{colors.surface_container_high.default.hex_stripped}} +shadow = {{colors.scrim.default.hex_stripped}} +selected-row = {{colors.primary_container.default.hex_stripped}} +button = {{colors.secondary.default.hex_stripped}} +button-active = {{colors.secondary_container.default.hex_stripped}} +button-disabled = {{colors.surface_variant.default.hex_stripped}} +tab-active = {{colors.inverse_on_surface.default.hex_stripped}} +notification = {{colors.tertiary.default.hex_stripped}} +notification-error = {{colors.error_container.default.hex_stripped}} +misc = {{colors.outline_variant.default.hex_stripped}} +play-button = {{colors.primary.default.hex_stripped}} +play-button-active = {{colors.on_primary_container.default.hex_stripped}} +progress-fg = {{colors.tertiary.default.hex_stripped}} +progress-bg = {{colors.tertiary_container.default.hex_stripped}} +heart = {{colors.error.default.hex_stripped}} +pagelink-active = {{colors.inverse_primary.default.hex_stripped}} +radio-btn-active = {{colors.on_tertiary_container.default.hex_stripped}} diff --git a/.config/matugen/templates/discord.css b/.config/matugen/templates/discord.css new file mode 100644 index 000000000..6d088a3f0 --- /dev/null +++ b/.config/matugen/templates/discord.css @@ -0,0 +1,108 @@ +/** + * @name Material Discord + * @version 3.0.5 + * @description A theme based on Google's Material Design + * @author CapnKitten + * + * @website http://github.com/CapnKitten + * @source https://github.com/CapnKitten/BetterDiscord/blob/master/Themes/Material-Discord/css/source.css + * @donate https://paypal.me/capnkitten + * @invite jzJkA6Z + */ + + @import url(https://capnkitten.github.io/BetterDiscord/Themes/Material-Discord/css/source.css); + + /* Material You addon */ + @import url(https://capnkitten.github.io/BetterDiscord/Themes/Material-Discord/css/addons/material-you/source.css); + + /* MATERIAL YOU DARK THEME SETTINGS */ + .theme-dark { + --saturation-modifier: 0.31; + --lightness-modifier: 0.225; + --text-lightness-modifier: 1.0; + } + + /* MATERIAL YOU LIGHT THEME SETTINGS */ + .theme-light { + --saturation-modifier: 0.74; + --lightness-modifier: 2.125; + --text-lightness-modifier: 1.0; + } + + :root { + /* ACCENT HSL AND TEXT COLOR SETTINGS */ + --accent-hue: 227; + --accent-saturation: 71%; + --accent-lightness: 61%; + --accent-text-color: hsl(0,0%,100%); /* DOES NOTHING WITH MATERIAL YOU ENABLED */ + --accent-button-action: hsl(0,0%,100%); + + /* ALERT HSL AND TEXT COLOR SETTINGS */ + --alert-hue: 0; + --alert-saturation: 85%; + --alert-lightness: 61%; + --alert-text-color: hsl(0,0%,100%); /* DOES NOTHING WITH MATERIAL YOU ENABLED */ + + /* WARNING HSL AND TEXT COLOR SETTINGS*/ + --warning-hue: 40; + --warning-saturation: 86.4%; + --warning-lightness: 56.9%; + --warning-text-color: hsl(0,0%,100%); /* DOES NOTHING WITH MATERIAL YOU ENABLED */ + + /* MESSAGE SETTINGS */ + --message-radius: 18px; + --message-padding-top: 8px; + --message-padding-side: 12px; + + /* MESSAGE MEDIA SETTINGS */ + --media-radius: 10px; + + /* CARD SETTINGS */ + --card-radius: 8px; + --card-radius-big: 18px; + + /* BUTTON SETTINGS */ + --button-height: 36px; + --button-padding: 0 24px; + --button-action-color: hsl(0,0%,100%); + + /* INPUT SETTINGS */ + --input-height: 36px; + --input-padding: 0 12px; + + /* POPOUT AND MODAL SETTINGS */ + --popout-radius: 8px; + --popout-radius-big: 18px; + + /* TOOLTIP SETTINGS */ + --tooltip-color: hsl(0,0%,38%,0.9); + --tooltip-text-color: hsl(0,0%,87%); + --tooltip-font-size: 12px; + --tooltip-padding: 8px; + --tooltip-radius: 8px; + + /* SCROLLBAR SETTINGS */ + --scrollbar-width: 10px; + --scrollbar-thin-width: 6px; + --app-bg: {{colors.surface.default.hex}}; + --main-color: {{colors.surface.default.hex}}; + --main-alt: {{colors.surface.default.hex}}; + --status-picker-color: {{colors.primary_container.default.hex}}; + --sidebar-panel-color: {{colors.primary_container.default.hex}}; + --tooltip-color: {{colors.surface.default.hex}}; + --tooltip-text-color: {{colors.on_surface.default.hex}}; + --accent-text-color: {{colors.on_surface.default.hex}}; + --card-color-filled: {{colors.primary_container.default.hex}}; + --card-color-hover: {{colors.inverse_primary.default.hex}}; + --card-color-active: {{colors.inverse_primary.default.hex}}; + --card-header-text-color: {{colors.on_surface.default.hex}}; + --input-text-color: {{colors.on_surface.default.hex}}; + --message-color: {{colors.primary_container.default.hex}}; + --message-color-hover: {{colors.inverse_primary.default.hex}}; + --message-color-alt: {{colors.primary_container.default.hex}}; + --attachment-color: {{colors.on_primary.default.hex}}; + --main-textarea-color: {{colors.primary_container.default.hex}}; + --card-border-color: {{colors.primary_container.default.hex}}; + --switch-knob-color: {{colors.primary_container.default.hex}}; + --accent-hue: {{colors.primary_container.default.hue}}; + } \ No newline at end of file diff --git a/.config/matugen/templates/dunstrc-colors b/.config/matugen/templates/dunstrc-colors new file mode 100644 index 000000000..6ead8f828 --- /dev/null +++ b/.config/matugen/templates/dunstrc-colors @@ -0,0 +1,90 @@ +[global] +monitor = 0 +follow = none +width = 380 +height = 95 +origin = top-right +offset = 12x12 +scale = 0 +notification_limit = 0 +progress_bar = true +progress_bar_height = 4 +progress_bar_frame_width = 0 +progress_bar_min_width = 150 +progress_bar_max_width = 300 +indicate_hidden = yes +transparency = 3 +separator_height = 6 +padding = 12 +horizontal_padding = 12 +text_icon_padding = 12 +frame_width = 0 +sort = yes +font = "Rubik 10" +line_height = 3 +markup = full +format = "%s\n%b" +alignment = left +vertical_alignment = center +show_age_threshold = 60 +ellipsize = middle +ignore_newline = no +stack_duplicates = true +hide_duplicate_count = false +show_indicators = yes +icon_position = left +min_icon_size = 24 +max_icon_size = 32 +icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/ +icon_path = /usr/share/icons/Papirus-Dark/48x48/actions/:/usr/share/icons/Papirus-Dark/48x48/apps/:/usr/share/icons/Papirus-Dark/48x48/devices/:/usr/share/icons/Papirus-Dark/48x48/emblems/:/usr/share/icons/Papirus-Dark/48x48/emotes/:/usr/share/icons/Papirus-Dark/48x48/mimetypes/:/usr/share/icons/Papirus-Dark/48x48/places/:/usr/share/icons/Papirus-Dark/48x48/status/ +sticky_history = yes +history_length = 20 +browser = /usr/bin/xdg-open +always_run_script = true +title = Dunst +class = Dunst +corner_radius = 14 +ignore_dbusclose = false +force_xwayland = false +force_xinerama = false +mouse_left_click = close_current +mouse_middle_click = do_action, close_current +mouse_right_click = close_all +separator_color = frame +frame_color = "{{colors.primary.default.hex}}" +highlight = "{{colors.primary.default.hex}}" +separator_color= "{{colors.outline.default.hex}}" +gap_size = 8 +enable_posix_regex = true +enable_recursive_icon_lookup = true +enable_markup = true + +# Animation settings +enable_animations = true +animation_frame_interval = 8 +animation_time_in = 200 +animation_time_out = 200 +animation_time_delta = 200 +animation_easing_in = "ease-out" +animation_easing_out = "ease-in" + +[experimental] +per_monitor_dpi = false + +[urgency_low] +timeout = 3 +background = "{{colors.surface.default.hex}}" +foreground = "{{colors.on_surface.default.hex}}" +highlight = "{{colors.primary_container.default.hex}}" + +[urgency_normal] +timeout = 6 +background = "{{colors.surface.default.hex}}" +foreground = "{{colors.on_surface.default.hex}}" +highlight = "{{colors.primary_container.default.hex}}" + +[urgency_critical] +timeout = 0 +background = "{{colors.surface.default.hex}}" +foreground = "{{colors.on_surface.default.hex}}" +highlight = "{{colors.error.default.hex}}" \ No newline at end of file diff --git a/.config/matugen/templates/foot.json b/.config/matugen/templates/foot.json new file mode 100644 index 000000000..2b2e31541 --- /dev/null +++ b/.config/matugen/templates/foot.json @@ -0,0 +1,38 @@ +{ + "dark": { + "term0": "{{colors.background.default.hex}}", + "term1": "{{colors.error.default.hex}}", + "term2": "{{colors.secondary.default.hex}}", + "term3": "{{colors.tertiary.default.hex}}", + "term4": "#458588", + "term5": "{{colors.primary.default.hex}}", + "term6": "#689D6A", + "term7": "{{colors.surface_variant.default.hex}}", + "term8": "{{colors.on_background.default.hex}}", + "term9": "{{colors.error.default.hex}}", + "term10": "{{colors.secondary.default.hex}}", + "term11": "{{colors.tertiary.default.hex}}", + "term12": "#83A598", + "term13": "{{colors.primary.default.hex}}", + "term14": "#8EC07C", + "term15": "{{colors.surface.default.hex}}" + }, + "light": { + "term0": "{{colors.surface.default.hex}}", + "term1": "{{colors.error.default.hex}}", + "term2": "{{colors.secondary.default.hex}}", + "term3": "{{colors.tertiary.default.hex}}", + "term4": "#FFD866", + "term5": "{{colors.primary.default.hex}}", + "term6": "#78DCE8", + "term7": "{{colors.on_surface.default.hex}}", + "term8": "{{colors.background.default.hex}}", + "term9": "{{colors.error.default.hex}}", + "term10": "{{colors.secondary.default.hex}}", + "term11": "{{colors.tertiary.default.hex}}", + "term12": "#FFD866", + "term13": "{{colors.primary.default.hex}}", + "term14": "#78DCE8", + "term15": "{{colors.surface_variant.default.hex}}" + } + } \ No newline at end of file diff --git a/.config/matugen/templates/fuzzel.ini b/.config/matugen/templates/fuzzel.ini new file mode 100644 index 000000000..8c674395b --- /dev/null +++ b/.config/matugen/templates/fuzzel.ini @@ -0,0 +1,28 @@ +[main] +font=Iosevka:size=10 +icon-theme=Papirus-Dark +terminal=kitty +width=30 +lines=12 +horizontal-pad=20 +vertical-pad=20 +inner-pad=8 +line-height=18 +letter-spacing=0 +anchor=bottom-right +x-offset=-50 +y-offset=-50 +layer=overlay + +[colors] +background="{{colors.surface.default.hex}}ff" +text="{{colors.on_surface.default.hex}}ff" +match="{{colors.primary.default.hex}}ff" +selection="{{colors.secondary_container.default.hex}}ff" +selection-text="{{colors.on_secondary_container.default.hex}}ff" +selection-match="{{colors.primary.default.hex}}ff" +border="{{colors.outline.default.hex}}ff" + +[border] +width=0 +radius=12 diff --git a/.config/matugen/templates/gradience.json b/.config/matugen/templates/gradience.json new file mode 100644 index 000000000..c27f52001 --- /dev/null +++ b/.config/matugen/templates/gradience.json @@ -0,0 +1,86 @@ +{ + "name": "Pharmaracism Theme", + "variables": { + "theme_fg_color": "{{colors.on_surface.default.hex}}", + "theme_text_color": "{{colors.on_surface.default.hex}}", + "theme_bg_color": "{{colors.surface.default.hex}}", + "theme_base_color": "{{colors.surface.default.hex}}", + "theme_selected_bg_color": "{{colors.primary_container.default.hex}}", + "theme_selected_fg_color": "{{colors.on_primary_container.default.hex}}", + "insensitive_bg_color": "{{colors.surface.default.hex}}", + "insensitive_fg_color": "{{colors.on_surface_variant.default.hex}}", + "insensitive_base_color": "{{colors.surface_variant.default.hex}}", + "theme_unfocused_fg_color": "{{colors.on_surface_variant.default.hex}}", + "theme_unfocused_text_color": "{{colors.on_surface_variant.default.hex}}", + "theme_unfocused_bg_color": "{{colors.surface.default.hex}}", + "theme_unfocused_base_color": "{{colors.surface.default.hex}}", + "theme_unfocused_selected_bg_color": "{{colors.surface_variant.default.hex}}", + "theme_unfocused_selected_fg_color": "{{colors.on_surface_variant.default.hex}}", + "unfocused_insensitive_color": "{{colors.on_surface_variant.default.hex}}", + "borders": "{{colors.outline.default.hex}}", + "unfocused_borders": "{{colors.outline.default.hex}}", + "warning_color": "{{colors.error.default.hex}}", + "error_color": "{{colors.error.default.hex}}", + "success_color": "{{colors.primary.default.hex}}", + "wm_title": "{{colors.on_primary_container.default.hex}}", + "wm_unfocused_title": "{{colors.on_surface_variant.default.hex}}", + "wm_highlight": "{{colors.primary_container.default.hex}}", + "wm_bg": "{{colors.background.default.hex}}", + "wm_unfocused_bg": "{{colors.background.default.hex}}", + "wm_button_close_icon": "{{colors.on_secondary_container.default.hex}}", + "wm_button_close_hover_bg": "{{colors.secondary_container.default.hex}}", + "wm_button_close_active_bg": "{{colors.surface_variant.default.hex}}", + "content_view_bg": "{{colors.surface.default.hex}}", + "placeholder_text_color": "{{colors.on_surface_variant.default.hex}}", + "text_view_bg": "{{colors.surface_container.default.hex}}", + "budgie_tasklist_indicator_color": "{{colors.primary.default.hex}}", + "budgie_tasklist_indicator_color_active": "{{colors.primary.default.hex}}", + "budgie_tasklist_indicator_color_active_window": "{{colors.secondary.default.hex}}", + "budgie_tasklist_indicator_color_attention": "{{colors.error.default.hex}}", + "accent_bg_color": "{{colors.primary_container.default.hex}}", + "accent_fg_color": "{{colors.on_primary_container.default.hex}}", + "accent_color": "{{colors.primary.default.hex}}", + "destructive_bg_color": "{{colors.error_container.default.hex}}", + "destructive_fg_color": "{{colors.on_error_container.default.hex}}", + "destructive_color": "{{colors.error.default.hex}}", + "success_bg_color": "{{colors.primary_container.default.hex}}", + "success_fg_color": "{{colors.primary_container.default.hex}}", + "warning_bg_color": "{{colors.error_container.default.hex}}", + "warning_fg_color": "{{colors.on_primary_container.default.hex}}", + "error_bg_color": "{{colors.error_container.default.hex}}", + "error_fg_color": "{{colors.on_error_container.default.hex}}", + "window_bg_color": "{{colors.background.default.hex}}", + "window_fg_color": "{{colors.on_background.default.hex}}", + "view_bg_color": "{{colors.surface.default.hex}}", + "view_fg_color": "{{colors.on_surface.default.hex}}", + "headerbar_bg_color": "{{colors.surface_container_low.default.hex}}", + "headerbar_fg_color": "{{colors.on_surface.default.hex}}", + "headerbar_border_color": "{{colors.outline.default.hex}}", + "headerbar_backdrop_color": "{{colors.surface_container_low.default.hex}}", + "headerbar_shade_color": "rgba(0, 0, 0, 0.09)", + "card_bg_color": "{{colors.surface_container.default.hex}}", + "card_fg_color": "{{colors.on_surface.default.hex}}", + "card_shade_color": "rgba(0, 0, 0, 0.09)", + "dialog_bg_color": "{{colors.secondary_container.default.hex}}", + "dialog_fg_color": "{{colors.on_secondary_container.default.hex}}", + "popover_bg_color": "{{colors.secondary_container.default.hex}}", + "popover_fg_color": "{{colors.on_secondary_container.default.hex}}", + "thumbnail_bg_color": "{{colors.surface_container.default.hex}}", + "thumbnail_fg_color": "{{colors.on_surface.default.hex}}", + "shade_color": "rgba(0, 0, 0, 1)", + "scrollbar_outline_color": "rgba(0, 0, 0, 1)", + "sidebar_bg_color": "{{colors.secondary.default.hex}}", + "sidebar_fg_color": "{{colors.surface_variant.default.hex}}", + "sidebar_border_color": "{{colors.background.default.hex}}", + "sidebar_backdrop_color": "{{colors.background.default.hex}}" + }, + "palette": { + "blue_": {}, + "green_": {} + }, + "custom_css": { + "gtk4": "", + "gtk3": "" + }, + "plugins": {} + } diff --git a/.config/matugen/templates/gtk-colors.css b/.config/matugen/templates/gtk-colors.css new file mode 100644 index 000000000..2506fe1fb --- /dev/null +++ b/.config/matugen/templates/gtk-colors.css @@ -0,0 +1,23 @@ +/* +* GTK Colors +* Generated with Matugen +*/ + +@define-color accent_color {{colors.primary_fixed_dim.default.hex}}; +@define-color accent_fg_color {{colors.on_primary_fixed.default.hex}}; +@define-color accent_bg_color {{colors.primary_fixed_dim.default.hex}}; +@define-color window_bg_color {{colors.surface_dim.default.hex}}; +@define-color window_fg_color {{colors.on_surface.default.hex}}; +@define-color headerbar_bg_color {{colors.surface_dim.default.hex}}; +@define-color headerbar_fg_color {{colors.on_surface.default.hex}}; +@define-color popover_bg_color {{colors.surface_dim.default.hex}}; +@define-color popover_fg_color {{colors.on_surface.default.hex}}; +@define-color view_bg_color {{colors.surface.default.hex}}; +@define-color view_fg_color {{colors.on_surface.default.hex}}; +@define-color card_bg_color {{colors.surface.default.hex}}; +@define-color card_fg_color {{colors.on_surface.default.hex}}; +@define-color sidebar_bg_color {{colors.secondary_container.default.hex}} ; +@define-color sidebar_fg_color{{colors.on_primary.default.hex}} ; +@define-color sidebar_border_color @window_bg_color; +@define-color sidebar_backdrop_color @window_bg_color; + diff --git a/.config/matugen/templates/heroic-theme.css b/.config/matugen/templates/heroic-theme.css new file mode 100644 index 000000000..b3b363dd7 --- /dev/null +++ b/.config/matugen/templates/heroic-theme.css @@ -0,0 +1,45 @@ +/* Material You theme for Heroic */ +/* Generated by matugen */ + +body { + /* Base colors */ + --accent: {{colors.primary.default.hex}}; + --accent-overlay: {{colors.primary_container.default.hex}}; + --navbar-accent: {{colors.secondary.default.hex}}; + + /* Surface colors - Using Material elevation tokens */ + --background: {{colors.surface.default.hex}}; + --body-background: {{colors.surface_container_low.default.hex}}; + --background-darker: {{colors.surface_container.default.hex}}; + --current-background: {{colors.surface_container.default.hex}}; + --navbar-background: {{colors.surface_container.default.hex}}; + --navbar-active-background: {{colors.surface_container_high.default.hex}}; + + /* Interactive elements */ + --input-background: {{colors.surface_variant.default.hex}}; + --modal-background: {{colors.surface_container_high.default.hex}}; + --modal-border: {{colors.outline.default.hex}}; + + /* State colors */ + --success: {{colors.tertiary.default.hex}}; + --success-hover: {{colors.tertiary_container.default.hex}}; + --primary: {{colors.primary.default.hex}}; + --primary-hover: {{colors.primary_container.default.hex}}; + --danger: {{colors.error.default.hex}}; + --danger-hover: {{colors.error_container.default.hex}}; + + /* Status indicators */ + --anticheat-denied: {{colors.error.default.hex}}; + --anticheat-broken: {{colors.error_container.default.hex}}; + --anticheat-running: {{colors.primary.default.hex}}; + --anticheat-supported: {{colors.tertiary.default.hex}}; + --anticheat-planned: {{colors.secondary.default.hex}}; + + /* Typography and icons */ + --text-title: {{colors.on_surface.default.hex}}; + --icons-background: {{colors.on_surface_variant.default.hex}}; + --action-icon: {{colors.on_surface.default.hex}}; + --action-icon-hover: {{colors.primary.default.hex}}; + --action-icon-active: {{colors.primary_container.default.hex}}; + --icon-disabled: {{colors.on_surface.default.hex}}38; +} diff --git a/.config/matugen/templates/hyprland-colors.conf b/.config/matugen/templates/hyprland-colors.conf new file mode 100644 index 000000000..91897334b --- /dev/null +++ b/.config/matugen/templates/hyprland-colors.conf @@ -0,0 +1,3 @@ +<* for name, value in colors *> +${{name}} = rgb({{value.default.hex_stripped}}) +<* endfor *> diff --git a/.config/matugen/templates/hyprlock.conf b/.config/matugen/templates/hyprlock.conf new file mode 100644 index 000000000..2bc584d1e --- /dev/null +++ b/.config/matugen/templates/hyprlock.conf @@ -0,0 +1,101 @@ +# BACKGROUND +background { + monitor = + path = {{ image }} + blur_passes = 3 + contrast = 0.8916 + brightness = 0.8172 + vibrancy = 0.1696 + vibrancy_darkness = 0.0 +} + +# GENERAL +general { + no_fade_in = false + grace = 0 + disable_loading_bar = false +} + +# Time-Hour +label { + monitor = + text = cmd[update:1000] echo "$(date +"%I")" + color = {{ colors.primary.default.rgb }} + font_size = 125 + font_family = StretchPro + position = -80, 190 + halign = center + valign = center +} + +# Time-Minute +label { + monitor = + text = cmd[update:1000] echo "$(date +"%M")" + color = {{ colors.secondary.default.rgb }} + font_size = 125 + font_family = StretchPro + position = 0, 70 + halign = center + valign = center +} + +# Day-Month-Date +label { + monitor = + text = cmd[update:1000] echo -e "$(date +"%d %B, %a.")" + color = {{ colors.primary.default.rgb }} + font_size = 19 + font_family = "Rubik Medium" + position = 20, -10 + halign = center + valign = center +} + +# USER +label { + monitor = + text =  $USER + color = {{ colors.primary.default.rgb }} + outline_thickness = 2 + dots_size = 0.15 # Scale of input-field height, 0.2 - 0.8 + dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0 + dots_center = true + font_size = 12 + font_family = Rubik + position = 0, -300 + halign = center + valign = center +} + +# INPUT FIELD +input-field { + monitor = + size = 210, 40 + outline_thickness = 2 + dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8 + dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0 + dots_center = true + outer_color = {{ colors.outline.default.rgb }} + inner_color = {{ colors.surface.default.rgb }} + font_color = {{ colors.primary.default.rgb }} + fade_on_empty = false + font_family = SF Pro Display + placeholder_text = Enter Password + hide_input = false + position = 0, -340 + halign = center + valign = center +} + +# # CURRENT SONG +label { + monitor = + text =cmd[update:10] echo "$(~/.config/hypr/Scripts/songdetail.sh)" + color = {{ colors.secondary.default.rgb }} + font_size = 14 + font_family = JetBrains Mono Nerd, SF Pro Display Bold + position = 0, 20 + halign = center + valign = bottom +} diff --git a/.config/matugen/templates/kitty-colors.conf b/.config/matugen/templates/kitty-colors.conf new file mode 100644 index 000000000..91b8e4be1 --- /dev/null +++ b/.config/matugen/templates/kitty-colors.conf @@ -0,0 +1,41 @@ +cursor {{colors.on_surface.default.hex}} +cursor_text_color {{colors.on_surface_variant.default.hex}} + +foreground {{colors.on_surface.default.hex}} +background {{colors.surface.default.hex}} +selection_foreground {{colors.on_secondary.default.hex}} +selection_background {{colors.secondary_fixed_dim.default.hex}} +url_color {{colors.primary.default.hex}} + +# black +color8 #262626 +color0 #4c4c4c + +# red +color1 #ac8a8c +color9 #c49ea0 + +# green +color2 #8aac8b +color10 #9ec49f + +# yellow +color3 #aca98a +color11 #c4c19e + +# blue +/* color4 #8f8aac */ +color4 {{colors.primary.default.hex}} +color12 #a39ec4 + +# magenta +color5 #ac8aac +color13 #c49ec4 + +# cyan +color6 #8aacab +color14 #9ec3c4 + +# white +color15 #e7e7e7 +color7 #f0f0f0 diff --git a/.config/matugen/templates/midnight-discord.css b/.config/matugen/templates/midnight-discord.css new file mode 100644 index 000000000..a796d94ea --- /dev/null +++ b/.config/matugen/templates/midnight-discord.css @@ -0,0 +1,99 @@ +/** + * @name midnight + * @description A dark, rounded discord theme. + * @author refact0r + * @version 1.6.2 + * @invite nz87hXyvcy + * @website https://github.com/refact0r/midnight-discord + * @source https://github.com/refact0r/midnight-discord/blob/master/midnight.theme.css + * @authorId 508863359777505290 + * @authorLink https://www.refact0r.dev +*/ + +/* IMPORTANT: make sure to enable dark mode in discord settings for the theme to apply properly!!! */ + +@import url('https://refact0r.github.io/midnight-discord/midnight.css'); + +/* customize things here */ +:root { + /* font, change to 'gg sans' for default discord font*/ + --font: 'figtree'; + + /* top left corner text */ + --corner-text: 'Midnight'; + + /* color of status indicators and window controls */ + --online-indicator: {{colors.inverse_primary.default.hex}}; /* change to #23a55a for default green */ + --dnd-indicator: {{colors.error.default.hex}}; /* change to #f13f43 for default red */ + --idle-indicator: {{colors.tertiary_container.default.hex}}; /* change to #f0b232 for default yellow */ + --streaming-indicator: {{colors.on_primary.default.hex}}; /* change to #593695 for default purple */ + + /* accent colors */ + --accent-1: {{colors.tertiary.default.hex}}; /* links */ + --accent-2: {{colors.primary.default.hex}}; /* general unread/mention elements, some icons when active */ + --accent-3: {{colors.primary.default.hex}}; /* accent buttons */ + --accent-4: {{colors.surface_bright.default.hex}}; /* accent buttons when hovered */ + --accent-5: {{colors.primary_fixed_dim.default.hex}}; /* accent buttons when clicked */ + --mention: {{colors.surface.default.hex}}; /* mentions & mention messages */ + --mention-hover: {{colors.surface_bright.default.hex}}; /* mentions & mention messages when hovered */ + + /* text colors */ + --text-0: {{colors.surface.default.hex}}; /* text on colored elements */ + --text-1: {{colors.on_surface.default.hex}}; /* other normally white text */ + --text-2: {{colors.on_surface.default.hex}}; /* headings and important text */ + --text-3: {{colors.on_surface_variant.default.hex}}; /* normal text */ + --text-4: {{colors.on_surface_variant.default.hex}}; /* icon buttons and channels */ + --text-5: {{colors.outline.default.hex}}; /* muted channels/chats and timestamps */ + + /* background and dark colors */ + --bg-1: {{colors.primary.default.hex}}; /* dark buttons when clicked */ + --bg-2: {{colors.surface_container_high.default.hex}}; /* dark buttons */ + --bg-3: {{colors.surface_container_low.default.hex}}; /* spacing, secondary elements */ + --bg-4: {{colors.surface.default.hex}}; /* main background color */ + --hover: {{colors.surface_bright.default.hex}}; /* channels and buttons when hovered */ + --active: {{colors.surface_bright.default.hex}}; /* channels and buttons when clicked or selected */ + --message-hover: {{colors.surface_bright.default.hex}}; /* messages when hovered */ + + /* amount of spacing and padding */ + --spacing: 12px; + + /* animations */ + /* ALL ANIMATIONS CAN BE DISABLED WITH REDUCED MOTION IN DISCORD SETTINGS */ + --list-item-transition: 0.2s ease; /* channels/members/settings hover transition */ + --unread-bar-transition: 0.2s ease; /* unread bar moving into view transition */ + --moon-spin-transition: 0.4s ease; /* moon icon spin */ + --icon-spin-transition: 1s ease; /* round icon button spin (settings, emoji, etc.) */ + + /* corner roundness (border-radius) */ + --roundness-xl: 22px; /* roundness of big panel outer corners */ + --roundness-l: 20px; /* popout panels */ + --roundness-m: 16px; /* smaller panels, images, embeds */ + --roundness-s: 12px; /* members, settings inputs */ + --roundness-xs: 10px; /* channels, buttons */ + --roundness-xxs: 8px; /* searchbar, small elements */ + + /* direct messages moon icon */ + /* change to block to show, none to hide */ + --discord-icon: none; /* discord icon */ + --moon-icon: block; /* moon icon */ + --moon-icon-url: url('https://upload.wikimedia.org/wikipedia/commons/c/c4/Font_Awesome_5_solid_moon.svg'); /* custom icon url */ + --moon-icon-size: auto; + + /* filter uncolorable elements to fit theme */ + /* (just set to none, they're too much work to configure) */ + --login-bg-filter: saturate(0.3) hue-rotate(-15deg) brightness(0.4); /* login background artwork */ + --green-to-accent-3-filter: hue-rotate(56deg) saturate(1.43); /* add friend page explore icon */ + --blurple-to-accent-3-filter: hue-rotate(304deg) saturate(0.84) brightness(1.2); /* add friend page school icon */ +} + +/* Selected chat/friend text */ +.selected_f5eb4b, +.selected_f6f816 .link_d8bfb3 { + color: var(--text-0) !important; + background: var(--accent-3) !important; +} + +.selected_f6f816 .link_d8bfb3 * { + color: var(--text-0) !important; + fill: var(--text-0) !important; +} diff --git a/.config/matugen/templates/obsidian.css b/.config/matugen/templates/obsidian.css new file mode 100644 index 000000000..0d4ace786 --- /dev/null +++ b/.config/matugen/templates/obsidian.css @@ -0,0 +1,234 @@ +/* Material You theme for Obsidian */ +/* Generated by matugen */ + +.theme-dark { + /* Keep soft backgrounds */ + --background-primary: #{{colors.surface.default.hex_stripped}}; + --background-primary-alt: #{{colors.surface_variant.default.hex_stripped}}40; + --background-secondary: #{{colors.surface_variant.default.hex_stripped}}20; + --background-secondary-alt: #{{colors.surface_variant.default.hex_stripped}}10; + + /* Subtle borders and modifiers */ + --background-modifier-border: #{{colors.outline.default.hex_stripped}}20; + --background-modifier-form-field: #{{colors.surface_variant.default.hex_stripped}}20; + --background-modifier-form-field-highlighted: #{{colors.surface_variant.default.hex_stripped}}30; + --background-modifier-box-shadow: rgba(0, 0, 0, 0.05); + --background-modifier-success: #{{colors.primary.default.hex_stripped}}40; + --background-modifier-error: #{{colors.error.default.hex_stripped}}40; + --background-modifier-error-hover: #{{colors.error_container.default.hex_stripped}}30; + --background-modifier-cover: rgba(0, 0, 0, 0.2); + + /* 94% opacity text */ + --text-normal: #{{colors.on_surface.default.hex_stripped}}f0; + --text-muted: #{{colors.on_surface_variant.default.hex_stripped}}f0; + --text-faint: #{{colors.on_surface_variant.default.hex_stripped}}f0; + --text-error: #{{colors.error.default.hex_stripped}}f0; + --text-error-hover: #{{colors.error.default.hex_stripped}}f0; + + /* Subtle highlights */ + --text-highlight-bg: #{{colors.primary.default.hex_stripped}}15; + --text-highlight-bg-active: #{{colors.primary.default.hex_stripped}}25; + --text-selection: #{{colors.primary.default.hex_stripped}}25; + --text-on-accent: #{{colors.on_primary.default.hex_stripped}}f0; + + /* Clear interactive elements at 94% */ + --interactive-normal: #{{colors.surface_variant.default.hex_stripped}}20; + --interactive-hover: #{{colors.surface_variant.default.hex_stripped}}30; + --interactive-accent: #{{colors.primary.default.hex_stripped}}f0; + --interactive-accent-hover: #{{colors.primary_container.default.hex_stripped}}f0; + --interactive-success: #{{colors.primary.default.hex_stripped}}f0; + + /* Subtle scrollbars */ + --scrollbar-bg: #{{colors.surface_variant.default.hex_stripped}}10; + --scrollbar-thumb-bg: #{{colors.primary.default.hex_stripped}}20; + --scrollbar-active-thumb-bg: #{{colors.primary.default.hex_stripped}}30; + + /* Headings at 94% */ + --text-title-h1: #{{colors.on_surface.default.hex_stripped}}f0; + --text-title-h2: #{{colors.on_surface_variant.default.hex_stripped}}f0; + --text-title-h3: #{{colors.on_surface_variant.default.hex_stripped}}f0; + --text-title-h4: #{{colors.on_surface_variant.default.hex_stripped}}f0; + --text-title-h5: #{{colors.on_surface_variant.default.hex_stripped}}f0; + --text-title-h6: #{{colors.on_surface_variant.default.hex_stripped}}f0; + + /* Links at 94% */ + --text-link: #{{colors.primary.default.hex_stripped}}f0; + --text-a: #{{colors.primary.default.hex_stripped}}f0; + --text-a-hover: #{{colors.primary.default.hex_stripped}}f0; + + /* Tags at 94% with subtle backgrounds */ + --tag-color: #{{colors.secondary.default.hex_stripped}}f0; + --tag-background: #{{colors.secondary.default.hex_stripped}}15; + --tag-background-hover: #{{colors.secondary.default.hex_stripped}}25; + + --titlebar-text-color-focused: #{{colors.on_surface.default.hex_stripped}}f0; + + /* Clear text on subtle backgrounds */ + --inline-code-background: #{{colors.surface_variant.default.hex_stripped}}25; + --code-block-background: #{{colors.surface_variant.default.hex_stripped}}15; + + /* Checkboxes at 94% */ + --checkbox-color: #{{colors.primary.default.hex_stripped}}f0; + --checkbox-color-hover: #{{colors.primary_container.default.hex_stripped}}f0; + --checkbox-border-color: #{{colors.outline.default.hex_stripped}}f0; + --checkbox-border-color-hover: #{{colors.primary.default.hex_stripped}}f0; + + /* Clear text on subtle backgrounds */ + --table-header-background: #{{colors.surface_variant.default.hex_stripped}}25; + --table-header-background-hover: #{{colors.surface_variant.default.hex_stripped}}35; + --table-row-background-hover: #{{colors.surface_variant.default.hex_stripped}}15; + + /* Graph colors at 94% */ + --graph-line: #{{colors.outline.default.hex_stripped}}f0; + --graph-node: #{{colors.primary.default.hex_stripped}}f0; + --graph-node-unresolved: #{{colors.error.default.hex_stripped}}f0; + --graph-node-focused: #{{colors.secondary.default.hex_stripped}}f0; + + --calendar-week-number: #{{colors.outline.default.hex_stripped}}f0; + --calendar-selected-day: #{{colors.primary.default.hex_stripped}}f0; + + /* Navigation at 94% with subtle backgrounds */ + --nav-item-color: #{{colors.on_surface.default.hex_stripped}}f0; + --nav-item-background-hover: #{{colors.surface_variant.default.hex_stripped}}25; + --nav-item-background-active: #{{colors.primary.default.hex_stripped}}15; + --nav-file-tag: #{{colors.secondary.default.hex_stripped}}f0; + + /* Blockquotes at 94% */ + --blockquote-border: #{{colors.primary.default.hex_stripped}}f0; + --blockquote-background: #{{colors.surface_variant.default.hex_stripped}}15; + + /* Icons at 94% */ + --icon-color: #{{colors.on_surface.default.hex_stripped}}f0; + --icon-color-hover: #{{colors.primary.default.hex_stripped}}f0; + --icon-color-active: #{{colors.primary.default.hex_stripped}}f0; + + /* Tabs at 94% with subtle backgrounds */ + --tab-text-color: #{{colors.on_surface.default.hex_stripped}}f0; + --tab-text-color-focused: #{{colors.primary.default.hex_stripped}}f0; + --tab-text-color-focused-active: #{{colors.on_primary.default.hex_stripped}}f0; + --tab-background-focused: #{{colors.primary.default.hex_stripped}}15; + --tab-background-focused-active: #{{colors.primary.default.hex_stripped}}25; +} + +/* Custom styling */ +.theme-dark { + --font-text-theme: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Inter, Ubuntu, sans-serif; + --font-editor-theme: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Inter, Ubuntu, sans-serif; + --font-monospace-theme: 'Jetbrains Mono', 'Fira Code', Menlo, Monaco, Consolas, 'Courier New', monospace; +} + +/* Headers */ +.markdown-preview-view h1, +.markdown-source-view.mod-cm6 .HyperMD-header-1 { + color: var(--text-title-h1); + font-weight: 600; +} + +.markdown-preview-view h2, +.markdown-source-view.mod-cm6 .HyperMD-header-2 { + color: var(--text-title-h2); + font-weight: 600; +} + +.markdown-preview-view h3, +.markdown-source-view.mod-cm6 .HyperMD-header-3 { + color: var(--text-title-h3); + font-weight: 500; +} + +.markdown-preview-view h4, +.markdown-source-view.mod-cm6 .HyperMD-header-4 { + color: var(--text-title-h4); + font-weight: 500; +} + +.markdown-preview-view h5, +.markdown-source-view.mod-cm6 .HyperMD-header-5 { + color: var(--text-title-h5); + font-weight: 500; +} + +.markdown-preview-view h6, +.markdown-source-view.mod-cm6 .HyperMD-header-6 { + color: var(--text-title-h6); + font-weight: 500; +} + +/* Links */ +.cm-hmd-internal-link, +.internal-link { + color: var(--text-link); + text-decoration: none; +} + +.cm-hmd-internal-link:hover, +.internal-link:hover { + color: var(--text-a-hover); + text-decoration: underline; +} + +/* Code blocks */ +.markdown-preview-view code, +.cm-s-obsidian span.cm-inline-code { + color: var(--text-normal); + background-color: var(--inline-code-background); + padding: 0.2em 0.4em; + border-radius: 4px; +} + +/* Blockquotes */ +.markdown-preview-view blockquote, +.cm-s-obsidian .HyperMD-quote { + border-left: 4px solid var(--blockquote-border); + background-color: var(--blockquote-background); + padding: 1em; + margin: 1em 0; + border-radius: 0 4px 4px 0; +} + +/* Checkboxes */ +input[type='checkbox'] { + border: 1px solid var(--checkbox-border-color); + background-color: transparent; + transition: all 0.2s ease; +} + +input[type='checkbox']:hover { + border-color: var(--checkbox-border-color-hover); + background-color: var(--checkbox-color-hover); +} + +input[type='checkbox']:checked { + background-color: var(--checkbox-color); + border-color: var(--checkbox-color); +} + +/* Tables */ +th { + background-color: var(--table-header-background); + border-bottom: 2px solid var(--background-modifier-border); + font-weight: 600; +} + +tr:nth-child(even) { + background-color: var(--background-secondary); +} + +tr:hover { + background-color: var(--table-row-background-hover); +} + +/* Tags */ +a.tag { + color: var(--tag-color); + background-color: var(--tag-background); + padding: 2px 8px; + border-radius: 4px; + text-decoration: none; + transition: all 0.2s ease; +} + +a.tag:hover { + background-color: var(--tag-background-hover); + text-decoration: none; +} diff --git a/.config/matugen/templates/pywalfox-colors.json b/.config/matugen/templates/pywalfox-colors.json new file mode 100644 index 000000000..9ddf17fac --- /dev/null +++ b/.config/matugen/templates/pywalfox-colors.json @@ -0,0 +1,22 @@ +{ + "wallpaper": "{{image}}", + "alpha": "100", + "colors": { + "color0": "{{colors.background.default.hex}}", + "color1": "", + "color2": "", + "color3": "", + "color4": "", + "color5": "", + "color6": "", + "color7": "", + "color8": "", + "color9": "", + "color10": "{{colors.primary.default.hex}}", + "color11": "", + "color12": "", + "color13": "{{colors.surface_bright.default.hex}}", + "color14": "", + "color15": "{{colors.on_surface.default.hex}}" + } +} diff --git a/.config/matugen/templates/qtct-colors.conf b/.config/matugen/templates/qtct-colors.conf new file mode 100644 index 000000000..5d35cb46d --- /dev/null +++ b/.config/matugen/templates/qtct-colors.conf @@ -0,0 +1,5 @@ +[ColorScheme] +active_colors={{colors.on_background.default.hex}}, {{colors.surface.default.hex}}, #ffffff, #cacaca, #9f9f9f, #b8b8b8, {{colors.on_background.default.hex}}, #ffffff, {{colors.on_surface.default.hex}}, {{colors.background.default.hex}}, {{colors.background.default.hex}}, {{colors.shadow.default.hex}}, {{colors.primary_container.default.hex}}, {{colors.on_primary_container.default.hex}}, {{colors.secondary.default.hex}}, {{colors.primary.default.hex}}, {{colors.surface.default.hex}}, {{colors.scrim.default.hex}}, {{colors.surface.default.hex}}, {{colors.on_surface.default.hex}}, {{colors.secondary.default.hex}} +disabled_colors={{colors.on_background.default.hex}}, {{colors.surface.default.hex}}, #ffffff, #cacaca, #9f9f9f, #b8b8b8, {{colors.on_background.default.hex}}, #ffffff, {{colors.on_surface.default.hex}}, {{colors.background.default.hex}}, {{colors.background.default.hex}}, {{colors.shadow.default.hex}}, {{colors.primary_container.default.hex}}, {{colors.on_primary_container.default.hex}}, {{colors.secondary.default.hex}}, {{colors.primary.default.hex}}, {{colors.surface.default.hex}}, {{colors.scrim.default.hex}}, {{colors.surface.default.hex}}, {{colors.on_surface.default.hex}}, {{colors.secondary.default.hex}} +inactive_colors={{colors.on_background.default.hex}}, {{colors.surface.default.hex}}, #ffffff, #cacaca, #9f9f9f, #b8b8b8, {{colors.on_background.default.hex}}, #ffffff, {{colors.on_surface.default.hex}}, {{colors.background.default.hex}}, {{colors.background.default.hex}}, {{colors.shadow.default.hex}}, {{colors.primary_container.default.hex}}, {{colors.on_primary_container.default.hex}}, {{colors.secondary.default.hex}}, {{colors.primary.default.hex}}, {{colors.surface.default.hex}}, {{colors.scrim.default.hex}}, {{colors.surface.default.hex}}, {{colors.on_surface.default.hex}}, {{colors.secondary.default.hex}} + diff --git a/.config/matugen/templates/rofi-colors.rasi b/.config/matugen/templates/rofi-colors.rasi new file mode 100755 index 000000000..9f677bc75 --- /dev/null +++ b/.config/matugen/templates/rofi-colors.rasi @@ -0,0 +1,47 @@ +* { + primary: {{colors.primary.default.hex}}; + primary-fixed: {{colors.primary_fixed.default.hex}}; + primary-fixed-dim: {{colors.primary_fixed_dim.default.hex}}; + on-primary: {{colors.on_primary.default.hex}}; + on-primary-fixed: {{colors.on_primary_fixed.default.hex}}; + on-primary-fixed-variant: {{colors.on_primary_fixed_variant.default.hex}}; + primary-container: {{colors.primary_container.default.hex}}; + on-primary-container: {{colors.on_primary_container.default.hex}}; + secondary: {{colors.secondary.default.hex}}; + secondary-fixed: {{colors.secondary_fixed.default.hex}}; + secondary-fixed-dim: {{colors.secondary_fixed_dim.default.hex}}; + on-secondary: {{colors.on_secondary.default.hex}}; + on-secondary-fixed: {{colors.on_secondary_fixed.default.hex}}; + on-secondary-fixed-variant: {{colors.on_secondary_fixed_variant.default.hex}}; + secondary-container: {{colors.secondary_container.default.hex}}; + on-secondary-container: {{colors.on_secondary_container.default.hex}}; + tertiary: {{colors.tertiary.default.hex}}; + tertiary-fixed: {{colors.tertiary_fixed.default.hex}}; + tertiary-fixed-dim: {{colors.tertiary_fixed_dim.default.hex}}; + on-tertiary: {{colors.on_tertiary.default.hex}}; + on-tertiary-fixed: {{colors.on_tertiary_fixed.default.hex}}; + on-tertiary-fixed-variant: {{colors.on_tertiary_fixed_variant.default.hex}}; + tertiary-container: {{colors.tertiary_container.default.hex}}; + on-tertiary-container: {{colors.on_tertiary_container.default.hex}}; + error: {{colors.error.default.hex}}; + on-error: {{colors.on_error.default.hex}}; + error-container: {{colors.error_container.default.hex}}; + on-error-container: {{colors.on_error_container.default.hex}}; + surface: {{colors.surface.default.hex}}; + on-surface: {{colors.on_surface.default.hex}}; + on-surface-variant: {{colors.on_surface_variant.default.hex}}; + outline: {{colors.outline.default.hex}}; + outline-variant: {{colors.outline_variant.default.hex}}; + shadow: {{colors.shadow.default.hex}}; + scrim: {{colors.scrim.default.hex}}; + inverse-surface: {{colors.inverse_surface.default.hex}}; + inverse-on-surface: {{colors.inverse_on_surface.default.hex}}; + inverse-primary: {{colors.inverse_primary.default.hex}}; + surface-dim: {{colors.surface_dim.default.hex}}; + surface-bright: {{colors.surface_bright.default.hex}}; + surface-container-lowest: {{colors.surface_container_lowest.default.hex}}; + surface-container-low: {{colors.surface_container_low.default.hex}}; + surface-container: {{colors.surface_container.default.hex}}; + surface-container-high: {{colors.surface_container_high.default.hex}}; + surface-container-highest: {{colors.surface_container_highest.default.hex}}; +} \ No newline at end of file diff --git a/.config/matugen/templates/spicetify-colors.ini b/.config/matugen/templates/spicetify-colors.ini new file mode 100644 index 000000000..6d079bcf6 --- /dev/null +++ b/.config/matugen/templates/spicetify-colors.ini @@ -0,0 +1,35 @@ +[Base] +main_fg = ${on_surface} +secondary_fg = ${on_surface_variant} +main_bg = ${surface} +sidebar_and_player_bg = ${surface_container} +cover_overlay_and_shadow = 000000 +indicator_fg_and_button_bg = ${primary} +pressing_fg = ${on_primary} +slider_bg = ${surface_variant} +sidebar_indicator_and_hover_button_bg = ${primary} +scrollbar_fg_and_selected_row_bg = ${surface_variant} +pressing_button_fg = ${on_primary} +pressing_button_bg = ${primary} +selected_button = ${primary} +miscellaneous_bg = ${surface_container} +miscellaneous_hover_bg = ${surface_container_high} +preserve_1 = FFFFFF + +[Dark] +main_fg = ${on_surface} +secondary_fg = ${on_surface_variant} +main_bg = ${surface} +sidebar_and_player_bg = ${surface_container} +cover_overlay_and_shadow = 000000 +indicator_fg_and_button_bg = ${primary} +pressing_fg = ${on_primary} +slider_bg = ${surface_variant} +sidebar_indicator_and_hover_button_bg = ${primary} +scrollbar_fg_and_selected_row_bg = ${surface_variant} +pressing_button_fg = ${on_primary} +pressing_button_bg = ${primary} +selected_button = ${primary} +miscellaneous_bg = ${surface_container} +miscellaneous_hover_bg = ${surface_container_high} +preserve_1 = FFFFFF diff --git a/.config/matugen/templates/starship-colors.toml b/.config/matugen/templates/starship-colors.toml new file mode 100644 index 000000000..49130d1c0 --- /dev/null +++ b/.config/matugen/templates/starship-colors.toml @@ -0,0 +1,46 @@ +format = ''' +$directory$git_branch$rust$python +$character''' + +palette = 'colors' + +[palettes.colors] +mustard = '#af8700' # example +color1 = '{{colors.primary_fixed_dim.default.hex}}' +color2 = '{{colors.on_primary.default.hex}}' +color3 = '{{colors.on_surface_variant.default.hex}}' +color4 = '{{colors.surface_container.default.hex}}' +color5 = '{{colors.on_primary.default.hex}}' +color6 = '{{colors.surface_dim.default.hex}}' +color7 = '{{colors.surface.default.hex}}' +color8 = '{{colors.primary.default.hex}}' +color9 = '{{colors.tertiary.default.hex}}' + +# Prompt symbols +[character] +success_symbol = "[🞈](color9 bold)" +error_symbol = "[🞈](@{error})" +vicmd_symbol = "[🞈](#f9e2af)" + +[directory] +format = "[](fg:color1 bg:color4)[󰉋](bg:color1 fg:color2)[ ](fg:color1 bg:color4)[$path ](fg:color3 bg:color4)[ ](fg:color4)" + +[directory.substitutions] +"Documents" = "󰈙 " +"Downloads" = " " +"Music" = " " +"Pictures" = " " + +[git_branch] +format = "[](fg:color8 bg:color4)[ ](bg:color8 fg:color5)[](fg:color8 bg:color4)[(bg:color8 fg:color5) $branch](fg:color3 bg:color4)[](fg:color4) " + +[time] +format = "[](fg:color8 bg:color4)[ ](bg:color8 fg:color5)[](fg:color8 bg:color4)[(bg:color8 fg:color5) $time](fg:color3 bg:color4)[](fg:color4) " +disabled = false +time_format = "%R" # Hour:Minute Format + +[python] +format = "[](fg:color8 bg:color4)[${symbol}${version}](bg:color8 fg:color5)[](fg:color8 bg:color4)[(bg:color8 fg:color5)( ${virtualenv})](fg:color3 bg:color4)[](fg:color4) " +symbol = '🐍' +# pyenv_version_name = true +pyenv_prefix = 'venv' diff --git a/.config/matugen/templates/telegram-colors.tdesktop-theme b/.config/matugen/templates/telegram-colors.tdesktop-theme new file mode 100644 index 000000000..c40854143 --- /dev/null +++ b/.config/matugen/templates/telegram-colors.tdesktop-theme @@ -0,0 +1,118 @@ +// Material You theme for Telegram Desktop +// Generated by matugen + +COLOR_GRAY: #{{colors.outline.default.hex_stripped}}; +COLOR_DARK: #{{colors.surface_variant.default.hex_stripped}}; + +windowBg: #{{colors.background.default.hex_stripped}}; // Main background +windowFg: #{{colors.on_background.default.hex_stripped}}; // Main text +windowBgOver: #{{colors.surface_variant.default.hex_stripped}}; // Generic background on hover +windowBgRipple: #{{colors.surface_variant.default.hex_stripped}}; // Ripple effect +windowFgOver: #{{colors.on_surface_variant.default.hex_stripped}}; // Text on hover +windowSubTextFg: #{{colors.outline.default.hex_stripped}}; // Minor text +windowSubTextFgOver: #{{colors.outline.default.hex_stripped}}; // Minor text on hover +windowBoldFg: #{{colors.on_background.default.hex_stripped}}; // Bold text +windowBoldFgOver: #{{colors.on_surface_variant.default.hex_stripped}}; // Bold text on hover +windowBgActive: #{{colors.primary.default.hex_stripped}}; // Active items background +windowFgActive: #{{colors.on_primary.default.hex_stripped}}; // Active items text +windowActiveTextFg: #{{colors.primary.default.hex_stripped}}; // Active items text +windowShadowFg: #{{colors.shadow.default.hex_stripped}}; // Window shadow +windowShadowFgFallback: #{{colors.shadow.default.hex_stripped}}; // Fallback for shadow + +shadowFg: #{{colors.shadow.default.hex_stripped}}; // General shadow +slideFadeOutBg: #{{colors.background.default.hex_stripped}}; +slideFadeOutShadowFg: #{{colors.shadow.default.hex_stripped}}; + +imageBg: #{{colors.surface.default.hex_stripped}}; +imageBgTransparent: #{{colors.surface.default.hex_stripped}}; + +activeButtonBg: #{{colors.primary.default.hex_stripped}}; // Active button background +activeButtonBgOver: #{{colors.primary_container.default.hex_stripped}}; // Active button hover background +activeButtonBgRipple: #{{colors.on_primary_container.default.hex_stripped}}; // Active button ripple +activeButtonFg: #{{colors.on_primary.default.hex_stripped}}; // Active button text +activeButtonFgOver: #{{colors.on_primary_container.default.hex_stripped}}; // Active button hover text +activeButtonSecondaryFg: #{{colors.on_primary.default.hex_stripped}}; // Active button secondary text +activeButtonSecondaryFgOver: #{{colors.on_primary_container.default.hex_stripped}}; // Active button secondary hover text + +lightButtonBg: #{{colors.surface.default.hex_stripped}}; // Light button background +lightButtonBgOver: #{{colors.surface_variant.default.hex_stripped}}; // Light button hover background +lightButtonBgRipple: #{{colors.primary.default.hex_stripped}}; // Light button ripple +lightButtonFg: #{{colors.on_surface.default.hex_stripped}}; // Light button text +lightButtonFgOver: #{{colors.on_surface_variant.default.hex_stripped}}; // Light button hover text + +attentionButtonFg: #{{colors.error.default.hex_stripped}}; +attentionButtonFgOver: #{{colors.error.default.hex_stripped}}; +attentionButtonBgOver: #{{colors.error_container.default.hex_stripped}}; +attentionButtonBgRipple: #{{colors.on_error_container.default.hex_stripped}}; + +outlineButtonBg: #{{colors.surface.default.hex_stripped}}; // Outline button background +outlineButtonBgOver: #{{colors.surface_variant.default.hex_stripped}}; // Outline button hover background +outlineButtonOutlineFg: #{{colors.primary.default.hex_stripped}}; // Outline button color +outlineButtonBgRipple: #{{colors.primary.default.hex_stripped}}; // Outline button ripple + +menuBg: #{{colors.surface.default.hex_stripped}}; +menuBgOver: #{{colors.surface_variant.default.hex_stripped}}; +menuBgRipple: #{{colors.primary.default.hex_stripped}}; +menuIconFg: #{{colors.on_surface.default.hex_stripped}}; +menuIconFgOver: #{{colors.on_surface_variant.default.hex_stripped}}; +menuSubmenuArrowFg: #{{colors.outline.default.hex_stripped}}; +menuFgDisabled: #{{colors.outline.default.hex_stripped}}; +menuSeparatorFg: #{{colors.outline.default.hex_stripped}}; + +scrollBarBg: #{{colors.primary.default.hex_stripped}}40; // Scroll bar background (40% opacity) +scrollBarBgOver: #{{colors.primary.default.hex_stripped}}60; // Scroll bar hover background (60% opacity) +scrollBg: #{{colors.surface_variant.default.hex_stripped}}40; // Scroll bar track (40% opacity) +scrollBgOver: #{{colors.surface_variant.default.hex_stripped}}60; // Scroll bar track on hover (60% opacity) + +smallCloseIconFg: #{{colors.outline.default.hex_stripped}}; +smallCloseIconFgOver: #{{colors.on_surface_variant.default.hex_stripped}}; + +radialFg: #{{colors.primary.default.hex_stripped}}; +radialBg: #{{colors.surface.default.hex_stripped}}; + +placeholderFg: #{{colors.outline.default.hex_stripped}}; // Placeholder text +placeholderFgActive: #{{colors.primary.default.hex_stripped}}; // Active placeholder text +inputBorderFg: #{{colors.outline.default.hex_stripped}}; // Input border +filterInputBorderFg: #{{colors.outline.default.hex_stripped}}; // Search input border +filterInputInactiveBg: #{{colors.surface.default.hex_stripped}}; // Inactive search input background +checkboxFg: #{{colors.primary.default.hex_stripped}}; // Checkbox color + +titleBg: #{{colors.surface.default.hex_stripped}}; // Window title background +titleShadow: #{{colors.shadow.default.hex_stripped}}; +titleButtonFg: #{{colors.on_surface.default.hex_stripped}}; // Title button color +titleButtonBgOver: #{{colors.surface_variant.default.hex_stripped}}; // Title button hover background +titleButtonFgOver: #{{colors.on_surface_variant.default.hex_stripped}}; // Title button hover color +titleButtonCloseBgOver: #{{colors.error.default.hex_stripped}}; +titleButtonCloseFgOver: #{{colors.on_error.default.hex_stripped}}; +titleFgActive: #{{colors.on_surface.default.hex_stripped}}; // Active title text +titleFg: #{{colors.on_surface.default.hex_stripped}}; // Inactive title text + +trayCounterBg: #{{colors.error.default.hex_stripped}}; // Tray counter background +trayCounterBgMute: #{{colors.outline.default.hex_stripped}}; // Muted tray counter background +trayCounterFg: #{{colors.on_error.default.hex_stripped}}; // Tray counter text +trayCounterBgMacInvert: #{{colors.error.default.hex_stripped}}; // Mac tray counter +trayCounterFgMacInvert: #{{colors.on_error.default.hex_stripped}}; // Mac tray counter text + +layerBg: #{{colors.surface.default.hex_stripped}}99; // Layer background (60% opacity) + +cancelIconFg: #{{colors.error.default.hex_stripped}}; // Cancel icon +cancelIconFgOver: #{{colors.error.default.hex_stripped}}; // Cancel icon on hover + +boxBg: #{{colors.surface.default.hex_stripped}}; // Box background +boxTextFg: #{{colors.on_surface.default.hex_stripped}}; // Box text +boxTextFgGood: #{{colors.primary.default.hex_stripped}}; // Box good text +boxTextFgError: #{{colors.error.default.hex_stripped}}; // Box error text +boxTitleFg: #{{colors.on_surface.default.hex_stripped}}; // Box title text +boxSearchBg: #{{colors.surface.default.hex_stripped}}; // Box search field background +boxSearchCancelIconFg: #{{colors.error.default.hex_stripped}}; // Box search cancel icon +boxSearchCancelIconFgOver: #{{colors.error.default.hex_stripped}}; // Box search cancel icon on hover + +contactsBg: #{{colors.surface.default.hex_stripped}}; // Contacts background +contactsBgOver: #{{colors.surface_variant.default.hex_stripped}}; // Contacts background on hover +contactsNameFg: #{{colors.on_surface.default.hex_stripped}}; // Contact name +contactsStatusFg: #{{colors.outline.default.hex_stripped}}; // Contact status +contactsStatusFgOver: #{{colors.on_surface_variant.default.hex_stripped}}; // Contact status on hover +contactsStatusFgOnline: #{{colors.primary.default.hex_stripped}}; // Online contact status + +photoCropFadeBg: #{{colors.surface.default.hex_stripped}}cc; // Photo crop fade background +photoCropPointFg: #{{colors.primary.default.hex_stripped}}; // Photo crop points diff --git a/.config/matugen/templates/vscode-color-theme.json b/.config/matugen/templates/vscode-color-theme.json new file mode 100644 index 000000000..3281fcf97 --- /dev/null +++ b/.config/matugen/templates/vscode-color-theme.json @@ -0,0 +1,112 @@ +{ + "name": "Material You", + "colors": { + "editor.background": "{{colors.background.default.hex}}", + "editor.foreground": "{{colors.on_background.default.hex}}", + "activityBar.background": "{{colors.surface.default.hex}}", + "activityBar.foreground": "{{colors.on_surface.default.hex}}", + "activityBar.inactiveForeground": "{{colors.outline.default.hex}}", + "activityBarBadge.background": "{{colors.primary.default.hex}}", + "activityBarBadge.foreground": "{{colors.on_primary.default.hex}}", + "badge.background": "{{colors.primary.default.hex}}", + "badge.foreground": "{{colors.on_primary.default.hex}}", + "button.background": "{{colors.primary.default.hex}}", + "button.foreground": "{{colors.on_primary.default.hex}}", + "button.hoverBackground": "{{colors.primary_container.default.hex}}", + "dropdown.background": "{{colors.surface.default.hex}}", + "dropdown.foreground": "{{colors.on_surface.default.hex}}", + "editor.lineHighlightBackground": "{{colors.surface_variant.default.hex}}40", + "editor.selectionBackground": "{{colors.primary.default.hex}}40", + "editor.wordHighlightBackground": "{{colors.secondary.default.hex}}40", + "editorCursor.foreground": "{{colors.primary.default.hex}}", + "editorGroup.border": "{{colors.outline.default.hex}}", + "editorGroupHeader.tabsBackground": "{{colors.background.default.hex}}", + "editorIndentGuide.background": "{{colors.outline.default.hex}}40", + "editorLineNumber.foreground": "{{colors.outline.default.hex}}", + "editorLineNumber.activeForeground": "{{colors.primary.default.hex}}", + "focusBorder": "{{colors.primary.default.hex}}", + "list.activeSelectionBackground": "{{colors.primary.default.hex}}40", + "list.activeSelectionForeground": "{{colors.on_surface.default.hex}}", + "list.hoverBackground": "{{colors.surface_variant.default.hex}}40", + "list.hoverForeground": "{{colors.on_surface_variant.default.hex}}", + "list.inactiveSelectionBackground": "{{colors.surface_variant.default.hex}}40", + "panel.background": "{{colors.surface.default.hex}}", + "panel.border": "{{colors.outline.default.hex}}", + "panelTitle.activeForeground": "{{colors.primary.default.hex}}", + "peekView.border": "{{colors.primary.default.hex}}", + "peekViewEditor.background": "{{colors.surface.default.hex}}", + "peekViewResult.background": "{{colors.surface_variant.default.hex}}", + "peekViewTitle.background": "{{colors.surface.default.hex}}", + "progressBar.background": "{{colors.primary.default.hex}}", + "scrollbar.shadow": "{{colors.background.default.hex}}00", + "scrollbarSlider.activeBackground": "{{colors.primary.default.hex}}80", + "scrollbarSlider.background": "{{colors.surface_variant.default.hex}}40", + "scrollbarSlider.hoverBackground": "{{colors.surface_variant.default.hex}}80", + "sideBar.background": "{{colors.surface.default.hex}}", + "sideBar.foreground": "{{colors.on_surface.default.hex}}", + "sideBarSectionHeader.background": "{{colors.surface_variant.default.hex}}", + "sideBarSectionHeader.foreground": "{{colors.on_surface_variant.default.hex}}", + "sideBarTitle.foreground": "{{colors.primary.default.hex}}", + "statusBar.background": "{{colors.surface_variant.default.hex}}", + "statusBar.foreground": "{{colors.on_surface_variant.default.hex}}", + "statusBar.debuggingBackground": "{{colors.tertiary.default.hex}}", + "statusBar.debuggingForeground": "{{colors.on_tertiary.default.hex}}", + "statusBar.noFolderBackground": "{{colors.surface.default.hex}}", + "statusBarItem.remoteBackground": "{{colors.primary.default.hex}}", + "statusBarItem.remoteForeground": "{{colors.on_primary.default.hex}}", + "tab.activeBackground": "{{colors.surface.default.hex}}", + "tab.activeForeground": "{{colors.primary.default.hex}}", + "tab.inactiveBackground": "{{colors.background.default.hex}}", + "tab.inactiveForeground": "{{colors.outline.default.hex}}", + "terminal.background": "{{colors.background.default.hex}}", + "terminal.foreground": "{{colors.on_background.default.hex}}", + "titleBar.activeBackground": "{{colors.surface.default.hex}}", + "titleBar.activeForeground": "{{colors.on_surface.default.hex}}", + "titleBar.inactiveBackground": "{{colors.surface_variant.default.hex}}", + "titleBar.inactiveForeground": "{{colors.on_surface_variant.default.hex}}" + }, + "tokenColors": [ + { + "scope": ["comment", "punctuation.definition.comment", "string.comment"], + "settings": { + "foreground": "{{colors.outline.default.hex}}" + } + }, + { + "scope": ["constant", "entity.name.constant", "variable.other.constant", "variable.other.enummember"], + "settings": { + "foreground": "{{colors.primary.default.hex}}" + } + }, + { + "scope": ["entity.name", "entity.other.attribute-name"], + "settings": { + "foreground": "{{colors.tertiary.default.hex}}" + } + }, + { + "scope": ["entity.name.tag", "keyword", "storage.type", "storage.modifier"], + "settings": { + "foreground": "{{colors.primary.default.hex}}" + } + }, + { + "scope": ["string", "string punctuation.section.embedded source"], + "settings": { + "foreground": "{{colors.secondary.default.hex}}" + } + }, + { + "scope": ["variable", "variable.parameter.function"], + "settings": { + "foreground": "{{colors.on_background.default.hex}}" + } + }, + { + "scope": ["support.function", "entity.name.function"], + "settings": { + "foreground": "{{colors.tertiary.default.hex}}" + } + } + ] +}