From 62c46f537ef242f97e4c6758ed69071e9badf17a Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sat, 12 Apr 2025 17:54:03 +0200 Subject: [PATCH 01/77] nicer looking hyprland config dir in tooltip (closes #1213) --- .config/ags/modules/.commonwidgets/configwidgets_apps.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.config/ags/modules/.commonwidgets/configwidgets_apps.js b/.config/ags/modules/.commonwidgets/configwidgets_apps.js index 7a2e63e31..3bf7ce712 100644 --- a/.config/ags/modules/.commonwidgets/configwidgets_apps.js +++ b/.config/ags/modules/.commonwidgets/configwidgets_apps.js @@ -1,3 +1,4 @@ +const { GLib } = imports.gi; import * as Utils from 'resource:///com/github/Aylur/ags/utils.js'; const { execAsync, exec } = Utils; @@ -5,7 +6,7 @@ import { getNestedProperty, updateNestedProperty } from "../.miscutils/objects.j import { ConfigSpinButton, ConfigToggle } from "./configwidgets.js"; const AGS_CONFIG_FILE = `${App.configDir}/user_options.jsonc`; -const HYPRLAND_CONFIG_FILE = `\${XDG_CONFIG_HOME:-$HOME/.config}/hypr/custom/general.conf`; +const HYPRLAND_CONFIG_FILE = `${GLib.get_user_config_dir()}/hypr/custom/general.conf`; export const AgsToggle = ({ icon, name, desc = null, From 742d84ee866faa26d7c742fc1be8db943bd97bb9 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 13 Apr 2025 02:28:48 +0200 Subject: [PATCH 02/77] qt theme: fix stupid menu corner --- .config/Kvantum/Colloid/Colloid.kvconfig | 2 +- .config/Kvantum/Colloid/ColloidDark.kvconfig | 2 +- .config/Kvantum/MaterialAdw/MaterialAdw.kvconfig | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.config/Kvantum/Colloid/Colloid.kvconfig b/.config/Kvantum/Colloid/Colloid.kvconfig index 1294ba409..65470510c 100644 --- a/.config/Kvantum/Colloid/Colloid.kvconfig +++ b/.config/Kvantum/Colloid/Colloid.kvconfig @@ -10,7 +10,7 @@ group_toolbar_buttons=false toolbar_item_spacing=0 toolbar_interior_spacing=2 spread_progressbar=true -composite=false +composite=true menu_shadow_depth=6 spread_menuitems=false tooltip_shadow_depth=7 diff --git a/.config/Kvantum/Colloid/ColloidDark.kvconfig b/.config/Kvantum/Colloid/ColloidDark.kvconfig index 61493df5a..d2406c143 100644 --- a/.config/Kvantum/Colloid/ColloidDark.kvconfig +++ b/.config/Kvantum/Colloid/ColloidDark.kvconfig @@ -10,7 +10,7 @@ group_toolbar_buttons=false toolbar_item_spacing=0 toolbar_interior_spacing=2 spread_progressbar=true -composite=false +composite=true menu_shadow_depth=6 spread_menuitems=false tooltip_shadow_depth=7 diff --git a/.config/Kvantum/MaterialAdw/MaterialAdw.kvconfig b/.config/Kvantum/MaterialAdw/MaterialAdw.kvconfig index 85264e0d2..62faf0b55 100644 --- a/.config/Kvantum/MaterialAdw/MaterialAdw.kvconfig +++ b/.config/Kvantum/MaterialAdw/MaterialAdw.kvconfig @@ -10,7 +10,7 @@ group_toolbar_buttons=false toolbar_item_spacing=0 toolbar_interior_spacing=2 spread_progressbar=true -composite=false +composite=true menu_shadow_depth=6 spread_menuitems=false tooltip_shadow_depth=7 From 7297310bae7de53b2ab9a4c4fe0f5d753741c0eb Mon Sep 17 00:00:00 2001 From: "Celestial.y" Date: Tue, 15 Apr 2025 08:12:22 +0800 Subject: [PATCH 03/77] Fix PKGBUILD (#1228) --- arch-packages/illogical-impulse-agsv1/PKGBUILD | 1 + 1 file changed, 1 insertion(+) diff --git a/arch-packages/illogical-impulse-agsv1/PKGBUILD b/arch-packages/illogical-impulse-agsv1/PKGBUILD index 8728adaba..4952f222f 100644 --- a/arch-packages/illogical-impulse-agsv1/PKGBUILD +++ b/arch-packages/illogical-impulse-agsv1/PKGBUILD @@ -38,6 +38,7 @@ sha256sums=('962f99dcf202eef30e978d1daedc7cdf213e07a3b52413c1fb7b54abc7bd08e6' prepare() { cd "$srcdir/$_pkgname-$pkgver" + rm -rf subprojects/gvc mv -T "$srcdir"/libgnome-volume-control subprojects/gvc # Overwrite greetd.ts with fixed version From b492313c86f140e5b69ec11d0642f09d0ab7289a Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Thu, 17 Apr 2025 21:55:00 +0200 Subject: [PATCH 04/77] dont force no blur on all windows (#1230 ?) --- .config/hypr/hyprland/rules.conf | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.config/hypr/hyprland/rules.conf b/.config/hypr/hyprland/rules.conf index d67554148..81abf3a27 100644 --- a/.config/hypr/hyprland/rules.conf +++ b/.config/hypr/hyprland/rules.conf @@ -1,9 +1,5 @@ # ######## Window rules ######## -# General rule – disable blur for all windows. -# (Using "class:.*" as a catch-all field since at least one field is required) -windowrulev2 = noblur, class:.* - # Uncomment to apply global transparency to all windows: # windowrulev2 = opacity 0.89 override 0.89 override, class:.* @@ -69,8 +65,6 @@ layerrule = noanim, anyrun layerrule = noanim, indicator.* layerrule = noanim, osk layerrule = noanim, hyprpicker -layerrule = blur, shell:* -layerrule = ignorealpha 0.6, shell:* layerrule = noanim, noanim layerrule = blur, gtk-layer-shell From 6a6019dc5532e2a794dbe307d844dad53c9f5023 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Fri, 18 Apr 2025 09:34:46 +0200 Subject: [PATCH 05/77] force no blur on xwayland windows (#1230) --- .config/hypr/hyprland/rules.conf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.config/hypr/hyprland/rules.conf b/.config/hypr/hyprland/rules.conf index 81abf3a27..0f0a2e333 100644 --- a/.config/hypr/hyprland/rules.conf +++ b/.config/hypr/hyprland/rules.conf @@ -3,6 +3,9 @@ # Uncomment to apply global transparency to all windows: # windowrulev2 = opacity 0.89 override 0.89 override, class:.* +# Disable blur for XWayland windows (or context menus with shadow would look weird) +windowrulev2 = noblur, xwayland:1 + # Floating windowrulev2 = float, class:^(blueberry\.py)$ windowrulev2 = float, class:^(steam)$ From 8212a76660a2040ed50323e2d6de24d17d9d51df Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sat, 19 Apr 2025 11:30:21 +0200 Subject: [PATCH 06/77] remove unused func --- .config/ags/modules/.commonwidgets/notification.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.config/ags/modules/.commonwidgets/notification.js b/.config/ags/modules/.commonwidgets/notification.js index 567092392..8733aa117 100644 --- a/.config/ags/modules/.commonwidgets/notification.js +++ b/.config/ags/modules/.commonwidgets/notification.js @@ -38,10 +38,6 @@ function guessMessageType(summary) { return 'chat'; } -function exists(widget) { - return widget !== null; -} - function processNotificationBody(body, appEntry) { // Only process Chrome/Chromium notifications if (appEntry?.toLowerCase().includes('chrome')) { From 3ab00f73670aca146b3624ceaccb7542a5dc9f41 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sat, 19 Apr 2025 11:32:05 +0200 Subject: [PATCH 07/77] remove redundant "pls change wallpaper" in first run notif (that doesn't even work xd) --- .config/ags/services/messages.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/ags/services/messages.js b/.config/ags/services/messages.js index 12beeed9c..b2d3b05f3 100644 --- a/.config/ags/services/messages.js +++ b/.config/ags/services/messages.js @@ -12,7 +12,7 @@ const FIRST_RUN_PATH = `${GLib.get_user_state_dir()}/ags/user/${FIRST_RUN_FILE}` const FIRST_RUN_FILE_CONTENT = "Just a file to confirm that you have been greeted ;)"; const APP_NAME = "illogical-impulse"; const FIRST_RUN_NOTIF_TITLE = "Welcome!"; -const FIRST_RUN_NOTIF_BODY = `First run? 👀 CTRL+SUPER+T to pick a wallpaper (or styles will break!)\nFor a list of keybinds, hit Super + /.`; +const FIRST_RUN_NOTIF_BODY = `First run? For a list of keybinds, hit Super + /.`; var batteryWarned = false; async function batteryMessage() { From c8b513ad6e0c9f0b5f07e5a287f7dac0f2a4404b Mon Sep 17 00:00:00 2001 From: clsty Date: Thu, 24 Apr 2025 10:46:25 +0800 Subject: [PATCH 08/77] Use a git repo for agsv1 installing --- arch-packages/illogical-impulse-ags/.SRCINFO | 36 ------------------- .../.gitignore | 2 +- .../PKGBUILD | 28 ++++++++------- 3 files changed, 16 insertions(+), 50 deletions(-) delete mode 100644 arch-packages/illogical-impulse-ags/.SRCINFO rename arch-packages/{illogical-impulse-ags => illogical-impulse-agsv1-git}/.gitignore (70%) rename arch-packages/{illogical-impulse-ags => illogical-impulse-agsv1-git}/PKGBUILD (69%) diff --git a/arch-packages/illogical-impulse-ags/.SRCINFO b/arch-packages/illogical-impulse-ags/.SRCINFO deleted file mode 100644 index 8a36546b2..000000000 --- a/arch-packages/illogical-impulse-ags/.SRCINFO +++ /dev/null @@ -1,36 +0,0 @@ -pkgbase = ii-aylurs-gtk-shell-git - pkgdesc = Aylurs's Gtk Shell (AGS), version fixed for illogical-impulse dotfiles - pkgver = 1.8.2.r2.g1115022 - pkgrel = 1 - url = https://github.com/Aylur/ags - arch = x86_64 - license = GPL3 - makedepends = git - makedepends = gobject-introspection - makedepends = meson - makedepends = npm - makedepends = typescript - depends = gjs - depends = glib2 - depends = glib2-devel - depends = glibc - depends = gtk3 - depends = gtk-layer-shell - depends = libpulse - depends = pam - optdepends = gnome-bluetooth-3.0: required for bluetooth service - optdepends = greetd: required for greetd service - optdepends = libdbusmenu-gtk3: required for systemtray service - optdepends = libsoup3: required for the Utils.fetch feature - optdepends = libnotify: required for sending notifications - optdepends = networkmanager: required for network service - optdepends = power-profiles-daemon: required for powerprofiles service - optdepends = upower: required for battery service - conflicts = aylurs-gtk-shell - backup = etc/pam.d/ags - source = git+https://github.com/Aylur/ags - source = git+https://gitlab.gnome.org/GNOME/libgnome-volume-control - sha256sums = SKIP - sha256sums = SKIP - -pkgname = aylurs-gtk-shell-git diff --git a/arch-packages/illogical-impulse-ags/.gitignore b/arch-packages/illogical-impulse-agsv1-git/.gitignore similarity index 70% rename from arch-packages/illogical-impulse-ags/.gitignore rename to arch-packages/illogical-impulse-agsv1-git/.gitignore index 02b391b25..1faa43724 100644 --- a/arch-packages/illogical-impulse-ags/.gitignore +++ b/arch-packages/illogical-impulse-agsv1-git/.gitignore @@ -1,2 +1,2 @@ -/ags/ +/ii-agsv1/ /libgnome-volume-control/ diff --git a/arch-packages/illogical-impulse-ags/PKGBUILD b/arch-packages/illogical-impulse-agsv1-git/PKGBUILD similarity index 69% rename from arch-packages/illogical-impulse-ags/PKGBUILD rename to arch-packages/illogical-impulse-agsv1-git/PKGBUILD index 689dacc1d..71d0a9d20 100644 --- a/arch-packages/illogical-impulse-ags/PKGBUILD +++ b/arch-packages/illogical-impulse-agsv1-git/PKGBUILD @@ -1,12 +1,12 @@ # Modified from AUR package "aylurs-gtk-shell-git" maintained by kotontrion -pkgname=illogical-impulse-ags -_pkgname=ags -pkgver=r525.05e0f23 -pkgrel=3 -pkgdesc="Aylurs's Gtk Shell (AGS), version fixed for illogical-impulse dotfiles." +pkgname=illogical-impulse-agsv1-git +_pkgname=ii-agsv1 +pkgver=r2.897e59e +pkgrel=1 +pkgdesc="Aylurs's Gtk Shell (AGS), patched for illogical-impulse dotfiles." arch=('x86_64') -url="https://github.com/Aylur/ags" -license=('GPL3') +url="https://github.com/clsty/ii-agsv1" +license=('GPL-3.0-only') makedepends=('git' 'gobject-introspection' 'meson' 'npm' 'typescript') depends=('gvfs' 'gjs' 'glib2' 'glib2-devel' 'glibc' 'gtk3' 'gtk-layer-shell' 'libpulse' 'pam' 'gnome-bluetooth-3.0' 'gammastep') optdepends=('greetd: required for greetd service' @@ -16,9 +16,9 @@ optdepends=('greetd: required for greetd service' 'networkmanager: required for network service' 'power-profiles-daemon: required for powerprofiles service' 'upower: required for battery service') -conflicts=('aylurs-gtk-shell' 'aylurs-gtk-shell-git') +conflicts=('illogical-impulse-agsv1' 'aylurs-gtk-shell' 'aylurs-gtk-shell-git') backup=('etc/pam.d/ags') -source=("git+${url}.git#commit=05e0f23534fa30c1db2a142664ee8f71e38db260" +source=("git+${url}.git" "git+https://gitlab.gnome.org/GNOME/libgnome-volume-control") sha256sums=('SKIP' 'SKIP') @@ -30,9 +30,11 @@ pkgver(){ prepare() { cd $srcdir/$_pkgname - git submodule init - git config submodule.subprojects/gvc.url "$srcdir/libgnome-volume-control" - git -c protocol.file.allow=always submodule update + rm -rf subprojects/gvc + mv -T "$srcdir"/libgnome-volume-control subprojects/gvc + #git submodule init + #git config submodule.subprojects/gvc.url "$srcdir/libgnome-volume-control" + #git -c protocol.file.allow=always submodule update } build() { @@ -45,5 +47,5 @@ build() { package() { cd $srcdir/$_pkgname meson install -C build --destdir "$pkgdir" - ln -sf /usr/share/com.github.Aylur.ags/com.github.Aylur.ags ${pkgdir}/usr/bin/ags + ln -sf /usr/share/com.github.Aylur.ags/com.github.Aylur.ags ${pkgdir}/usr/bin/agsv1 } From 63a0e8cdfc2e42511f808a040180ae7e547ea428 Mon Sep 17 00:00:00 2001 From: clsty Date: Thu, 24 Apr 2025 10:49:12 +0800 Subject: [PATCH 09/77] Apply using PKGBUILD from agsv1-git --- install.sh | 2 +- scriptdata/installers | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index b852eb78a..6c1604c99 100755 --- a/install.sh +++ b/install.sh @@ -101,7 +101,7 @@ install-local-pkgbuild() { # Install core dependencies from the meta-packages metapkgs=(./arch-packages/illogical-impulse-{audio,python,backlight,basic,fonts-themes,gnome,gtk,portal,screencapture,widgets}) -metapkgs+=(./arch-packages/illogical-impulse-agsv1) +metapkgs+=(./arch-packages/illogical-impulse-agsv1-git) metapkgs+=(./arch-packages/illogical-impulse-hyprland) metapkgs+=(./arch-packages/illogical-impulse-microtex-git) metapkgs+=(./arch-packages/illogical-impulse-oneui4-icons-git) diff --git a/scriptdata/installers b/scriptdata/installers index 1aca57c15..1d8593ba5 100644 --- a/scriptdata/installers +++ b/scriptdata/installers @@ -158,7 +158,7 @@ install-python-packages (){ # Only for Arch(based) distro. handle-deprecated-dependencies (){ printf "\e[36m[$0]: Removing deprecated dependencies:\e[0m\n" - for i in illogical-impulse-{microtex,pymyc-aur,ags} {hyprutils,hyprpicker,hyprlang,hypridle,hyprland-qt-support,hyprland-qtutils,hyprlock,xdg-desktop-portal-hyprland,hyprcursor,hyprwayland-scanner,hyprland}-git;do try sudo pacman --noconfirm -Rdd $i;done + for i in illogical-impulse-{microtex,pymyc-aur,ags,agsv1} {hyprutils,hyprpicker,hyprlang,hypridle,hyprland-qt-support,hyprland-qtutils,hyprlock,xdg-desktop-portal-hyprland,hyprcursor,hyprwayland-scanner,hyprland}-git;do try sudo pacman --noconfirm -Rdd $i;done # Convert old dependencies to non explicit dependencies so that they can be orphaned if not in meta packages remove_bashcomments_emptylines ./scriptdata/previous_dependencies.conf ./cache/old_deps_stripped.conf readarray -t old_deps_list < ./cache/old_deps_stripped.conf From dca0e3d5e5995ccc82df5ce542a1ab5a3ce7bb4b Mon Sep 17 00:00:00 2001 From: clsty Date: Thu, 24 Apr 2025 10:52:49 +0800 Subject: [PATCH 10/77] Abort using recursive env vars. --- .config/hypr/hyprland/env.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.config/hypr/hyprland/env.conf b/.config/hypr/hyprland/env.conf index 91e483807..f388e4f7a 100644 --- a/.config/hypr/hyprland/env.conf +++ b/.config/hypr/hyprland/env.conf @@ -18,8 +18,8 @@ env = QT_QPA_PLATFORMTHEME, qt6ct # env = WLR_DRM_NO_ATOMIC, 1 # ######## Virtual envrionment ######### -env = XDG_STATE_HOME, $HOME/.local/state -env = ILLOGICAL_IMPULSE_VIRTUAL_ENV, $XDG_STATE_HOME/ags/.venv +env = XDG_STATE_HOME, ~/.local/state +env = ILLOGICAL_IMPULSE_VIRTUAL_ENV, ~/.local/state/ags/.venv # ############ Others ############# From 29432086de26bc46645713c3bffd7c3da4c1480f Mon Sep 17 00:00:00 2001 From: clsty Date: Thu, 24 Apr 2025 10:56:04 +0800 Subject: [PATCH 11/77] Add clang as dep (#1235) --- arch-packages/illogical-impulse-python/PKGBUILD | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch-packages/illogical-impulse-python/PKGBUILD b/arch-packages/illogical-impulse-python/PKGBUILD index fc51fb7fa..fc1ac1e05 100644 --- a/arch-packages/illogical-impulse-python/PKGBUILD +++ b/arch-packages/illogical-impulse-python/PKGBUILD @@ -1,10 +1,11 @@ pkgname=illogical-impulse-python pkgver=1.1 -pkgrel=3 +pkgrel=4 pkgdesc='Illogical Impulse Python Dependencies' arch=(any) license=(None) depends=( + clang uv gtk4 libadwaita From 3959fc83813b5e799b93d57cdbcd24d4c81ce185 Mon Sep 17 00:00:00 2001 From: clsty Date: Thu, 24 Apr 2025 11:11:24 +0800 Subject: [PATCH 12/77] Include gvc directly (#1192) --- arch-packages/illogical-impulse-agsv1-git/PKGBUILD | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/arch-packages/illogical-impulse-agsv1-git/PKGBUILD b/arch-packages/illogical-impulse-agsv1-git/PKGBUILD index 71d0a9d20..2b352470e 100644 --- a/arch-packages/illogical-impulse-agsv1-git/PKGBUILD +++ b/arch-packages/illogical-impulse-agsv1-git/PKGBUILD @@ -18,8 +18,7 @@ optdepends=('greetd: required for greetd service' 'upower: required for battery service') conflicts=('illogical-impulse-agsv1' 'aylurs-gtk-shell' 'aylurs-gtk-shell-git') backup=('etc/pam.d/ags') -source=("git+${url}.git" - "git+https://gitlab.gnome.org/GNOME/libgnome-volume-control") +source=("git+${url}.git") sha256sums=('SKIP' 'SKIP') @@ -30,11 +29,6 @@ pkgver(){ prepare() { cd $srcdir/$_pkgname - rm -rf subprojects/gvc - mv -T "$srcdir"/libgnome-volume-control subprojects/gvc - #git submodule init - #git config submodule.subprojects/gvc.url "$srcdir/libgnome-volume-control" - #git -c protocol.file.allow=always submodule update } build() { From 4880e3e617b8a9e2496a95c85e88f51943e86bca Mon Sep 17 00:00:00 2001 From: clsty Date: Thu, 24 Apr 2025 11:24:34 +0800 Subject: [PATCH 13/77] Fix sha256sum array length --- arch-packages/illogical-impulse-agsv1-git/PKGBUILD | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/arch-packages/illogical-impulse-agsv1-git/PKGBUILD b/arch-packages/illogical-impulse-agsv1-git/PKGBUILD index 2b352470e..c15c46baf 100644 --- a/arch-packages/illogical-impulse-agsv1-git/PKGBUILD +++ b/arch-packages/illogical-impulse-agsv1-git/PKGBUILD @@ -2,7 +2,7 @@ pkgname=illogical-impulse-agsv1-git _pkgname=ii-agsv1 pkgver=r2.897e59e -pkgrel=1 +pkgrel=2 pkgdesc="Aylurs's Gtk Shell (AGS), patched for illogical-impulse dotfiles." arch=('x86_64') url="https://github.com/clsty/ii-agsv1" @@ -19,8 +19,7 @@ optdepends=('greetd: required for greetd service' conflicts=('illogical-impulse-agsv1' 'aylurs-gtk-shell' 'aylurs-gtk-shell-git') backup=('etc/pam.d/ags') source=("git+${url}.git") -sha256sums=('SKIP' - 'SKIP') +sha256sums=('SKIP') pkgver(){ cd $srcdir/$_pkgname From d3f9464b7a9fc6f2304be866dc5c22667b0a0fbf Mon Sep 17 00:00:00 2001 From: clsty Date: Thu, 24 Apr 2025 11:27:40 +0800 Subject: [PATCH 14/77] Fix false conflicts --- arch-packages/illogical-impulse-agsv1-git/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch-packages/illogical-impulse-agsv1-git/PKGBUILD b/arch-packages/illogical-impulse-agsv1-git/PKGBUILD index c15c46baf..7b34165af 100644 --- a/arch-packages/illogical-impulse-agsv1-git/PKGBUILD +++ b/arch-packages/illogical-impulse-agsv1-git/PKGBUILD @@ -1,7 +1,7 @@ # Modified from AUR package "aylurs-gtk-shell-git" maintained by kotontrion pkgname=illogical-impulse-agsv1-git _pkgname=ii-agsv1 -pkgver=r2.897e59e +pkgver=r3.3e8d365 pkgrel=2 pkgdesc="Aylurs's Gtk Shell (AGS), patched for illogical-impulse dotfiles." arch=('x86_64') @@ -16,7 +16,7 @@ optdepends=('greetd: required for greetd service' 'networkmanager: required for network service' 'power-profiles-daemon: required for powerprofiles service' 'upower: required for battery service') -conflicts=('illogical-impulse-agsv1' 'aylurs-gtk-shell' 'aylurs-gtk-shell-git') +conflicts=('illogical-impulse-agsv1') backup=('etc/pam.d/ags') source=("git+${url}.git") sha256sums=('SKIP') From 6cb9d4f4273f43b50a92ed5aebaa1dea34666c74 Mon Sep 17 00:00:00 2001 From: clsty Date: Thu, 24 Apr 2025 11:30:40 +0800 Subject: [PATCH 15/77] Fix conflicting /usr/bin/ags --- arch-packages/illogical-impulse-agsv1-git/PKGBUILD | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch-packages/illogical-impulse-agsv1-git/PKGBUILD b/arch-packages/illogical-impulse-agsv1-git/PKGBUILD index 7b34165af..e634fa1ba 100644 --- a/arch-packages/illogical-impulse-agsv1-git/PKGBUILD +++ b/arch-packages/illogical-impulse-agsv1-git/PKGBUILD @@ -2,7 +2,7 @@ pkgname=illogical-impulse-agsv1-git _pkgname=ii-agsv1 pkgver=r3.3e8d365 -pkgrel=2 +pkgrel=3 pkgdesc="Aylurs's Gtk Shell (AGS), patched for illogical-impulse dotfiles." arch=('x86_64') url="https://github.com/clsty/ii-agsv1" @@ -40,5 +40,6 @@ build() { package() { cd $srcdir/$_pkgname meson install -C build --destdir "$pkgdir" + rm ${pkgdir}/usr/bin/ags ln -sf /usr/share/com.github.Aylur.ags/com.github.Aylur.ags ${pkgdir}/usr/bin/agsv1 } From 1ed45fa85c3bd6bab3f8e5dcc281ea416a95b6d2 Mon Sep 17 00:00:00 2001 From: Greyfeather Date: Wed, 23 Apr 2025 21:40:48 -0600 Subject: [PATCH 16/77] add a return --- .config/ags/modules/sideleft/apis/waifu.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/ags/modules/sideleft/apis/waifu.js b/.config/ags/modules/sideleft/apis/waifu.js index 85c104a35..5a1a2c019 100644 --- a/.config/ags/modules/sideleft/apis/waifu.js +++ b/.config/ags/modules/sideleft/apis/waifu.js @@ -14,7 +14,7 @@ import WaifuService from '../../../services/waifus.js'; import { darkMode } from '../../.miscutils/system.js'; async function getImageViewerApp(preferredApp) { - Utils.execAsync(['bash', '-c', `command -v ${preferredApp}`]) + return Utils.execAsync(['bash', '-c', `command -v ${preferredApp}`]) .then((output) => { if (output != '') return preferredApp; else return 'xdg-open'; From 174fa1769606d58af9aa91d52ca945d9f9afdc8c Mon Sep 17 00:00:00 2001 From: clsty Date: Thu, 24 Apr 2025 11:46:20 +0800 Subject: [PATCH 17/77] Fix STATE_DIR --- .config/hypr/hyprland/env.conf | 1 - .config/hypr/hyprland/~/.local/state/nvim/log | 0 2 files changed, 1 deletion(-) create mode 100644 .config/hypr/hyprland/~/.local/state/nvim/log diff --git a/.config/hypr/hyprland/env.conf b/.config/hypr/hyprland/env.conf index f388e4f7a..bddf37cff 100644 --- a/.config/hypr/hyprland/env.conf +++ b/.config/hypr/hyprland/env.conf @@ -18,7 +18,6 @@ env = QT_QPA_PLATFORMTHEME, qt6ct # env = WLR_DRM_NO_ATOMIC, 1 # ######## Virtual envrionment ######### -env = XDG_STATE_HOME, ~/.local/state env = ILLOGICAL_IMPULSE_VIRTUAL_ENV, ~/.local/state/ags/.venv # ############ Others ############# diff --git a/.config/hypr/hyprland/~/.local/state/nvim/log b/.config/hypr/hyprland/~/.local/state/nvim/log new file mode 100644 index 000000000..e69de29bb From d5b7496882af5e71ebd68a82d9bb2ba5437fd3fe Mon Sep 17 00:00:00 2001 From: clsty Date: Thu, 24 Apr 2025 11:53:13 +0800 Subject: [PATCH 18/77] Remove unused PKGBUILD --- .../illogical-impulse-agsv1/.gitignore | 2 - .../illogical-impulse-agsv1/PKGBUILD | 185 ------------------ 2 files changed, 187 deletions(-) delete mode 100644 arch-packages/illogical-impulse-agsv1/.gitignore delete mode 100644 arch-packages/illogical-impulse-agsv1/PKGBUILD diff --git a/arch-packages/illogical-impulse-agsv1/.gitignore b/arch-packages/illogical-impulse-agsv1/.gitignore deleted file mode 100644 index 02b391b25..000000000 --- a/arch-packages/illogical-impulse-agsv1/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/ags/ -/libgnome-volume-control/ diff --git a/arch-packages/illogical-impulse-agsv1/PKGBUILD b/arch-packages/illogical-impulse-agsv1/PKGBUILD deleted file mode 100644 index 4952f222f..000000000 --- a/arch-packages/illogical-impulse-agsv1/PKGBUILD +++ /dev/null @@ -1,185 +0,0 @@ -# Borrowed from https://github.com/kotontrion/PKGBUILDS/blob/main/agsv1/PKGBUILD -# -# Maintainer: kotontrion - -# This package is only intended to be used while migrating from ags v1.8.2 to ags v2.0.0. -# Many ags configs are quite big and it takes a while to migrate, therefore I made this package -# to install ags v1.8.2 as "agsv1", so both versions can be installed at the same time, making it -# possible to migrate bit by bit while still having a working v1 config around. -# -# First update the aylurs-gtk-shell package to v2, then install this one. -# -# This package won't receive any updates anymore, so as soon as you migrated, uninstall this one. - -pkgname=illogical-impulse-agsv1 -_pkgname=ags -pkgver=1.9.0 -pkgrel=1 -pkgdesc="Aylurs's Gtk Shell (AGS), An eww inspired gtk widget system." -arch=('x86_64') -url="https://github.com/Aylur/ags" -license=('GPL-3.0-only') -makedepends=('git' 'gobject-introspection' 'meson' 'glib2-devel' 'npm' 'typescript') -depends=('gvfs' 'gjs' 'glib2' 'glib2-devel' 'glibc' 'gtk3' 'gtk-layer-shell' 'libpulse' 'pam' 'gnome-bluetooth-3.0' 'gammastep') -optdepends=('gnome-bluetooth-3.0: required for bluetooth service' - 'greetd: required for greetd service' - 'libdbusmenu-gtk3: required for systemtray service' - 'libsoup3: required for the Utils.fetch feature' - 'libnotify: required for sending notifications' - 'networkmanager: required for network service' - 'power-profiles-daemon: required for powerprofiles service' - 'upower: required for battery service') -conflicts=('illogical-impulse-ags') -backup=('etc/pam.d/ags') -source=("$pkgname-$pkgver.tar.gz::https://github.com/Aylur/ags/archive/refs/tags/v${pkgver}.tar.gz" - "git+https://gitlab.gnome.org/GNOME/libgnome-volume-control") -sha256sums=('962f99dcf202eef30e978d1daedc7cdf213e07a3b52413c1fb7b54abc7bd08e6' - SKIP) - -prepare() { - cd "$srcdir/$_pkgname-$pkgver" - rm -rf subprojects/gvc - mv -T "$srcdir"/libgnome-volume-control subprojects/gvc - - # Overwrite greetd.ts with fixed version - cat > src/service/greetd.ts << 'EOF' -import App from '../app.js'; -import Service from '../service.js'; -import GLib from 'gi://GLib'; -import Gio from 'gi://Gio'; - -Gio._promisify(Gio.InputStream.prototype, 'read_bytes_async'); -const SOCK = GLib.getenv('GREETD_SOCK'); - -type Request = { - create_session: { - username: string - } - post_auth_message_response: { - response?: string - } - start_session: { - cmd: string[] - env: string[] - } - cancel_session: Record -} - -type Response = { - type: 'success' -} | { - type: 'error' - error_type: 'auth_error' | 'error' - description: string -} | { - type: 'auth_message' - auth_message_type: 'visible' | 'secret' | 'info' | 'error' - auth_message: string -} - -export class Greetd extends Service { - static { Service.register(this); } - - private _decoder = new TextDecoder; - - readonly login = async ( - username: string, - password: string, - cmd: string[] | string, - env: string[] = [], - ) => { - const session = await this.createSession(username); - if (session.type !== 'auth_message') { - this.cancelSession(); - throw session; - } - - const auth = await this.postAuth(password); - if (auth.type !== 'success') { - this.cancelSession(); - throw auth; - } - - const start = await this.startSession(cmd, env); - if (start.type !== 'success') { - this.cancelSession(); - throw start; - } - - App.quit(); - }; - - readonly createSession = (username: string) => { - return this._send('create_session', { username }); - }; - - readonly postAuth = (response?: string) => { - return this._send('post_auth_message_response', { response }); - }; - - readonly startSession = (cmd: string[] | string, env: string[] = []) => { - const cmdv = Array.isArray(cmd) - ? cmd - : GLib.shell_parse_argv(cmd)[1]; - - return this._send('start_session', { cmd: cmdv, env }); - }; - - readonly cancelSession = () => { - return this._send('cancel_session', {}); - }; - - private async _send(req: R, payload: Request[R]): Promise { - const connection = new Gio.SocketClient() - .connect(new Gio.UnixSocketAddress({ path: SOCK }), null); - - try { - const json = JSON.stringify({ type: req, ...payload }); - const ostream = new Gio.DataOutputStream({ - close_base_stream: true, - base_stream: connection.get_output_stream(), - byte_order: Gio.DataStreamByteOrder.HOST_ENDIAN, - }); - - const istream = connection.get_input_stream(); - - ostream.put_int32(json.length, null); - ostream.put_string(json, null); - - const data = await istream.read_bytes_async(4, GLib.PRIORITY_DEFAULT, null); - const raw = data.get_data(); - if (!raw) throw new Error("Failed to read length from greetd socket"); - const view = new DataView(raw.buffer, raw.byteOffset, raw.byteLength); - const length = view.getUint32(0, true); // true = little endian - - const res = await istream.read_bytes_async(length, GLib.PRIORITY_DEFAULT, null); - const resRaw = res.get_data(); - if (!resRaw) throw new Error("Failed to read response from greetd socket"); - - return JSON.parse(this._decoder.decode(resRaw)) as Response; - } finally { - connection.close(null); - } -} - -} - -export const greetd = new Greetd; -export default greetd; -EOF -} - - -build() { - cd "$srcdir/$_pkgname-$pkgver" - npm install - arch-meson build --libdir "lib/$_pkgname" -Dbuild_types=true - meson compile -C build -} - -package() { - cd "$srcdir/$_pkgname-$pkgver" - meson install -C build --destdir "$pkgdir" - rm ${pkgdir}/usr/bin/ags - ln -sf /usr/share/com.github.Aylur.ags/com.github.Aylur.ags ${pkgdir}/usr/bin/agsv1 -} From 764390eb9075854eed2a9ea6f59357cc2a719a3c Mon Sep 17 00:00:00 2001 From: clsty Date: Thu, 24 Apr 2025 12:00:09 +0800 Subject: [PATCH 19/77] Remove unexpected included file --- .config/hypr/hyprland/~/.local/state/nvim/log | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .config/hypr/hyprland/~/.local/state/nvim/log diff --git a/.config/hypr/hyprland/~/.local/state/nvim/log b/.config/hypr/hyprland/~/.local/state/nvim/log deleted file mode 100644 index e69de29bb..000000000 From 2e7420489891e95c2a82c72c2804e722f210c257 Mon Sep 17 00:00:00 2001 From: clsty Date: Thu, 24 Apr 2025 15:20:50 +0800 Subject: [PATCH 20/77] Use forked repo for ii-agsv1 --- arch-packages/illogical-impulse-agsv1-git/PKGBUILD | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch-packages/illogical-impulse-agsv1-git/PKGBUILD b/arch-packages/illogical-impulse-agsv1-git/PKGBUILD index e634fa1ba..54a28984c 100644 --- a/arch-packages/illogical-impulse-agsv1-git/PKGBUILD +++ b/arch-packages/illogical-impulse-agsv1-git/PKGBUILD @@ -1,11 +1,11 @@ # Modified from AUR package "aylurs-gtk-shell-git" maintained by kotontrion pkgname=illogical-impulse-agsv1-git _pkgname=ii-agsv1 -pkgver=r3.3e8d365 -pkgrel=3 +pkgver=r4.3e8d365 +pkgrel=4 pkgdesc="Aylurs's Gtk Shell (AGS), patched for illogical-impulse dotfiles." arch=('x86_64') -url="https://github.com/clsty/ii-agsv1" +url="https://github.com/end-4/ii-agsv1" license=('GPL-3.0-only') makedepends=('git' 'gobject-introspection' 'meson' 'npm' 'typescript') depends=('gvfs' 'gjs' 'glib2' 'glib2-devel' 'glibc' 'gtk3' 'gtk-layer-shell' 'libpulse' 'pam' 'gnome-bluetooth-3.0' 'gammastep') From 37dcf8eb9cd05e06f7de0c53de3c1923f43fa2d9 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Fri, 25 Apr 2025 17:20:10 +0200 Subject: [PATCH 21/77] hint about quickshell version --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 39213c596..33d56f87f 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,8 @@
Help improve these dotfiles - + + - New: Try the [Quickshell](https://quickshell.outfoxxed.me/)-powered version at [`ii-qs` branch](https://github.com/end-4/dots-hyprland/tree/ii-qs) - Join the [discussions](https://github.com/end-4/dots-hyprland/discussions) - If you'd like to suggest fixes or a new widget, feel free to [open an issue](https://github.com/end-4/dots-hyprland/issues/new/choose)
From c9b6339650d3cce7e823c52ab207935a9da7f25e Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Fri, 25 Apr 2025 17:39:14 +0200 Subject: [PATCH 22/77] osd values redesign --- .../ags/modules/indicators/indicatorvalues.js | 33 ++++++++++++------- .config/ags/scss/_osd.scss | 23 ++++++------- .config/ags/user_options.jsonc | 2 +- 3 files changed, 32 insertions(+), 26 deletions(-) diff --git a/.config/ags/modules/indicators/indicatorvalues.js b/.config/ags/modules/indicators/indicatorvalues.js index 4fde189b8..f8d08bfc3 100644 --- a/.config/ags/modules/indicators/indicatorvalues.js +++ b/.config/ags/modules/indicators/indicatorvalues.js @@ -5,9 +5,10 @@ const { Box, Label, ProgressBar } = Widget; import { MarginRevealer } from '../.widgethacks/advancedrevealers.js'; import Brightness from '../../services/brightness.js'; import Indicator from '../../services/indicator.js'; +import { MaterialIcon } from '../.commonwidgets/materialicon.js'; const OsdValue = ({ - name, nameSetup = undefined, labelSetup, progressSetup, + name, icon, nameSetup = undefined, labelSetup, progressSetup, extraClassName = '', extraProgressClassName = '', ...rest }) => { @@ -22,27 +23,33 @@ const OsdValue = ({ setup: labelSetup, }); return Box({ // Volume - vertical: true, hexpand: true, - className: `osd-bg osd-value ${extraClassName}`, + className: `osd-bg osd-value ${extraClassName} spacing-h-5`, attribute: { 'disable': () => { valueNumber.label = '󰖭'; } }, children: [ + MaterialIcon(icon, 'hugeass', {vpack: 'center'}), Box({ - vexpand: true, + vertical: true, + className: 'spacing-v-5', + vpack: 'center', children: [ - valueName, - valueNumber, + Box({ + children: [ + valueName, + valueNumber, + ] + }), + ProgressBar({ + className: `osd-progress ${extraProgressClassName}`, + hexpand: true, + vertical: false, + setup: progressSetup, + }) ] - }), - ProgressBar({ - className: `osd-progress ${extraProgressClassName}`, - hexpand: true, - vertical: false, - setup: progressSetup, }) ], ...rest, @@ -52,6 +59,7 @@ const OsdValue = ({ export default (monitor = 0) => { const brightnessIndicator = OsdValue({ name: 'Brightness', + icon: 'light_mode', extraClassName: 'osd-brightness', extraProgressClassName: 'osd-brightness-progress', labelSetup: (self) => self.hook(Brightness[monitor], self => { @@ -66,6 +74,7 @@ export default (monitor = 0) => { const volumeIndicator = OsdValue({ name: 'Volume', + icon: 'volume_up', extraClassName: 'osd-volume', extraProgressClassName: 'osd-volume-progress', attribute: { headphones: undefined , device: undefined}, diff --git a/.config/ags/scss/_osd.scss b/.config/ags/scss/_osd.scss index ef21f435c..44b808120 100644 --- a/.config/ags/scss/_osd.scss +++ b/.config/ags/scss/_osd.scss @@ -4,28 +4,27 @@ .osd-bg { min-width: 8.864rem; - min-height: 3.409rem; } .osd-value { @include elevation-border; @include elevation2; + @include full-rounding; background-color: $layer0; - border-radius: 1.023rem; - padding: 0.625rem 1.023rem; - padding-top: 0.313rem; + padding: 0.341rem 1.023rem 0.341rem 0.682rem; + min-width: 9.545rem; } .osd-progress { - min-height: 0.955rem; - min-width: 0.068rem; + min-height: 0.682rem; + min-width: 8.182rem; padding: 0rem; border-radius: 10rem; @include fluent_decel; trough { - min-height: 0.954rem; - min-width: 0.068rem; + min-height: 0.682rem; + min-width: 8.182rem; border-radius: 10rem; background-color: $layer2; // border: 0.068rem solid $onSecondaryContainer; @@ -33,8 +32,8 @@ progress { @include fluent_decel; - min-height: 0.680rem; - min-width: 0.680rem; + min-height: 0.409rem; + min-width: 0.409rem; margin: 0rem 0.137rem; border-radius: 10rem; background-color: $onLayer2; @@ -44,12 +43,10 @@ .osd-label { font-size: 1.023rem; font-weight: 500; - margin-top: 0.341rem; } .osd-value-txt { - @include titlefont; - font-size: 1.688rem; + font-size: 1.023rem; font-weight: 500; color: $onLayer0; } diff --git a/.config/ags/user_options.jsonc b/.config/ags/user_options.jsonc index 9cd094f75..4c44fe01c 100644 --- a/.config/ags/user_options.jsonc +++ b/.config/ags/user_options.jsonc @@ -2,7 +2,7 @@ // ~/.config/ags/modules/.configuration/default_options.jsonc // // vscode: ctrl+click this: file://./modules/.configuration/default_options.jsonc -// vim : `:vsp` to split window, move cursor to the path, press `gf`. +// vim: `:vsp` to split window, move cursor to the path, press `gf`. // `Ctrl-w` twice to switch between the files // // Limitations of this file: From 1985966022e609e5d7a5aad8952347f6b7a0d804 Mon Sep 17 00:00:00 2001 From: Estela ad Astra Date: Sat, 26 Apr 2025 04:47:14 +0200 Subject: [PATCH 23/77] add -A to makepkg --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 6c1604c99..3852e4378 100755 --- a/install.sh +++ b/install.sh @@ -94,7 +94,7 @@ install-local-pkgbuild() { source ./PKGBUILD x yay -S $installflags --asdeps "${depends[@]}" - x makepkg -si --noconfirm + x makepkg -Asi --noconfirm x popd } From 0b5a59bfbc7306774bde7c9d289088cbc52e7246 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sat, 26 Apr 2025 09:23:54 +0200 Subject: [PATCH 24/77] remove debug flag from keybind script shebang (#1234?) --- .config/ags/scripts/hyprland/get_keybinds.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/ags/scripts/hyprland/get_keybinds.py b/.config/ags/scripts/hyprland/get_keybinds.py index 3e4dcd140..559ba8a47 100755 --- a/.config/ags/scripts/hyprland/get_keybinds.py +++ b/.config/ags/scripts/hyprland/get_keybinds.py @@ -1,4 +1,4 @@ -#!/usr/bin/env -S\_/bin/sh\_-xc\_"source\_\$(eval\_echo\_\$ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate&&exec\_python\_-E\_"\$0"\_"\$@"" +#!/usr/bin/env -S\_/bin/sh\_-c\_"source\_\$(eval\_echo\_\$ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate&&exec\_python\_-E\_"\$0"\_"\$@"" import argparse import re import os From d63fb4051fe38d2e5f783829b346528e6331cce2 Mon Sep 17 00:00:00 2001 From: MarcoMadera Date: Sun, 27 Apr 2025 21:18:06 -0700 Subject: [PATCH 25/77] fix(bluetooth): sync toggle state with device connection --- .../ags/modules/sideright/centermodules/bluetooth.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.config/ags/modules/sideright/centermodules/bluetooth.js b/.config/ags/modules/sideright/centermodules/bluetooth.js index b0f410aa8..86648be28 100644 --- a/.config/ags/modules/sideright/centermodules/bluetooth.js +++ b/.config/ags/modules/sideright/centermodules/bluetooth.js @@ -56,9 +56,13 @@ const BluetoothDevice = (device) => { onChange: (self, newValue) => { device.setConnection(newValue); }, - extraSetup: (self) => self.hook(device, (self) => { - Utils.timeout(200, () => self.enabled.value = device.connected); - }), + extraSetup: (self) => { + self.hook(device, () => { + const enabledState = self.attribute.enabled; + if (enabledState.value !== device.connected) + enabledState.value = device.connected; + }); + }, }) const deviceRemoveButton = Button({ vpack: 'center', From 2d45a9e9f6878a2c4cf6c27f510fb78250ce9155 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 29 Apr 2025 19:30:54 +0200 Subject: [PATCH 26/77] ai: add null check (#1254) --- .config/ags/services/gpt.js | 1 + 1 file changed, 1 insertion(+) diff --git a/.config/ags/services/gpt.js b/.config/ags/services/gpt.js index b28e4ed98..4ea8316e2 100644 --- a/.config/ags/services/gpt.js +++ b/.config/ags/services/gpt.js @@ -143,6 +143,7 @@ class GPTMessage extends Service { } addDelta(delta) { + if (delta == null) return; if (this.thinking) { this.thinking = false; this.content = delta; From 0a72b05992d199fdee085a79731a3ce667417e81 Mon Sep 17 00:00:00 2001 From: Yuvan Michael Vivenzi Date: Wed, 30 Apr 2025 07:47:36 +0530 Subject: [PATCH 27/77] Create material-theme.el Material colors based emacs theme that syncs with wallpaper! --- Extras/emacs/material-theme.el | 366 +++++++++++++++++++++++++++++++++ 1 file changed, 366 insertions(+) create mode 100644 Extras/emacs/material-theme.el diff --git a/Extras/emacs/material-theme.el b/Extras/emacs/material-theme.el new file mode 100644 index 000000000..41c6bdcbc --- /dev/null +++ b/Extras/emacs/material-theme.el @@ -0,0 +1,366 @@ +;;; material-theme.el --- Theme using Matugen SCSS variables + +;; Copyright (C) 2025 + +;; Author: Generated (Improved) +;; Version: 1.2 +;; Package-Requires: ((emacs "24.1")) +;; Keywords: faces + +;;; Commentary: + +;; A theme using Matugen SCSS variables with quality of life improvements: +;; - Better source block distinction +;; - Improved text visibility when selected +;; - Refined org-mode styling with hidden asterisks +;; - Enhanced contrast and readability +;; - Seamless integration of source blocks with consistent styling + +;;; Code: + +(deftheme material "Theme using Matugen SCSS variables with quality of life improvements.") + +;; Define function to read SCSS variables +(defun material-get-color-from-scss (var-name) + "Extract color value for VAR-NAME from material_colors.scss file." + (let* ((scss-file (expand-file-name "~/.cache/ags/user/generated/material_colors.scss")) + (scss-content (with-temp-buffer + (insert-file-contents scss-file) + (buffer-string))) + (var-pattern (concat "\\$" var-name ":\\s-+\\(#[0-9a-fA-F]\\{6\\}\\);")) + (match (string-match var-pattern scss-content))) + (if match + (match-string 1 scss-content) + (message "Could not find color variable: %s" var-name) + "#000000"))) + +;; Define function to adjust color brightness +(defun material-adjust-color (hex-color factor) + "Adjust HEX-COLOR brightness by FACTOR (0-2). +Values < 1 darken, values > 1 lighten." + (let* ((r (string-to-number (substring hex-color 1 3) 16)) + (g (string-to-number (substring hex-color 3 5) 16)) + (b (string-to-number (substring hex-color 5 7) 16)) + (adjust-channel (lambda (channel) + (max 0 (min 255 (round (* channel factor)))))) + (new-r (funcall adjust-channel r)) + (new-g (funcall adjust-channel g)) + (new-b (funcall adjust-channel b))) + (format "#%02x%02x%02x" new-r new-g new-b))) + +;; Define all the color variables +(let* ((bg (material-get-color-from-scss "background")) + (err (material-get-color-from-scss "error")) + (err-container (material-get-color-from-scss "errorContainer")) + (inverse-on-surface (material-get-color-from-scss "inverseOnSurface")) + (inverse-primary (material-get-color-from-scss "inversePrimary")) + (inverse-surface (material-get-color-from-scss "inverseSurface")) + (on-background (material-get-color-from-scss "onBackground")) + (on-err (material-get-color-from-scss "onError")) + (on-err-container (material-get-color-from-scss "onErrorContainer")) + (on-primary (material-get-color-from-scss "onPrimary")) + (on-primary-container (material-get-color-from-scss "onPrimaryContainer")) + (on-primary-fixed (material-get-color-from-scss "onPrimaryFixed")) + (on-primary-fixed-variant (material-get-color-from-scss "onPrimaryFixedVariant")) + (on-secondary (material-get-color-from-scss "onSecondary")) + (on-secondary-container (material-get-color-from-scss "onSecondaryContainer")) + (on-secondary-fixed (material-get-color-from-scss "onSecondaryFixed")) + (on-secondary-fixed-variant (material-get-color-from-scss "onSecondaryFixedVariant")) + (on-surface (material-get-color-from-scss "onSurface")) + (on-surface-variant (material-get-color-from-scss "onSurfaceVariant")) + (on-tertiary (material-get-color-from-scss "onTertiary")) + (on-tertiary-container (material-get-color-from-scss "onTertiaryContainer")) + (on-tertiary-fixed (material-get-color-from-scss "onTertiaryFixed")) + (on-tertiary-fixed-variant (material-get-color-from-scss "onTertiaryFixedVariant")) + (outline-color (material-get-color-from-scss "outline")) + (outline-variant (material-get-color-from-scss "outlineVariant")) + (primary (material-get-color-from-scss "primary")) + (primary-container (material-get-color-from-scss "primaryContainer")) + (primary-fixed (material-get-color-from-scss "primaryFixed")) + (primary-fixed-dim (material-get-color-from-scss "primaryFixedDim")) + (scrim (material-get-color-from-scss "scrim")) + (secondary (material-get-color-from-scss "secondary")) + (secondary-container (material-get-color-from-scss "secondaryContainer")) + (secondary-fixed (material-get-color-from-scss "secondaryFixed")) + (secondary-fixed-dim (material-get-color-from-scss "secondaryFixedDim")) + (shadow (material-get-color-from-scss "shadow")) + (surface (material-get-color-from-scss "surface")) + (surface-bright (material-get-color-from-scss "surfaceBright")) + (surface-container (material-get-color-from-scss "surfaceContainer")) + (surface-container-high (material-get-color-from-scss "surfaceContainerHigh")) + (surface-container-highest (material-get-color-from-scss "surfaceContainerHighest")) + (surface-container-low (material-get-color-from-scss "surfaceContainerLow")) + (surface-container-lowest (material-get-color-from-scss "surfaceContainerLowest")) + (surface-dim (material-get-color-from-scss "surfaceDim")) + (surface-tint (material-get-color-from-scss "surfaceTint")) + (surface-variant (material-get-color-from-scss "surfaceVariant")) + (tertiary (material-get-color-from-scss "tertiary")) + (tertiary-container (material-get-color-from-scss "tertiaryContainer")) + (tertiary-fixed (material-get-color-from-scss "tertiaryFixed")) + (tertiary-fixed-dim (material-get-color-from-scss "tertiaryFixedDim")) + (success (material-get-color-from-scss "success")) + (on-success (material-get-color-from-scss "onSuccess")) + (success-container (material-get-color-from-scss "successContainer")) + (on-success-container (material-get-color-from-scss "onSuccessContainer")) + (term0 (material-get-color-from-scss "term0")) + (term1 (material-get-color-from-scss "term1")) + (term2 (material-get-color-from-scss "term2")) + (term3 (material-get-color-from-scss "term3")) + (term4 (material-get-color-from-scss "term4")) + (term5 (material-get-color-from-scss "term5")) + (term6 (material-get-color-from-scss "term6")) + (term7 (material-get-color-from-scss "term7")) + (term8 (material-get-color-from-scss "term8")) + (term9 (material-get-color-from-scss "term9")) + (term10 (material-get-color-from-scss "term10")) + (term11 (material-get-color-from-scss "term11")) + (term12 (material-get-color-from-scss "term12")) + (term13 (material-get-color-from-scss "term13")) + (term14 (material-get-color-from-scss "term14")) + (term15 (material-get-color-from-scss "term15"))) + + (custom-theme-set-faces + 'material + ;; Basic faces + `(default ((t (:background ,bg :foreground ,on-background)))) + `(cursor ((t (:background ,primary)))) + `(highlight ((t (:background ,primary-container :foreground ,on-primary-container)))) + `(region ((t (:background ,primary-container :foreground ,on-primary-container :extend t)))) + `(secondary-selection ((t (:background ,secondary-container :foreground ,on-secondary-container :extend t)))) + `(isearch ((t (:background ,tertiary-container :foreground ,on-tertiary-container :weight bold)))) + `(lazy-highlight ((t (:background ,secondary-container :foreground ,on-secondary-container)))) + `(vertical-border ((t (:foreground ,surface-variant)))) + `(border ((t (:background ,surface-variant :foreground ,surface-variant)))) + `(fringe ((t (:background ,surface :foreground ,outline-variant)))) + `(shadow ((t (:foreground ,outline-variant)))) + `(link ((t (:foreground ,primary :underline t)))) + `(link-visited ((t (:foreground ,tertiary :underline t)))) + `(success ((t (:foreground ,success)))) + `(warning ((t (:foreground ,secondary)))) + `(error ((t (:foreground ,err)))) + `(match ((t (:background ,secondary-container :foreground ,on-secondary-container)))) + + ;; Font-lock + `(font-lock-builtin-face ((t (:foreground ,primary)))) + `(font-lock-comment-face ((t (:foreground ,outline-color :slant italic)))) + `(font-lock-comment-delimiter-face ((t (:foreground ,outline-variant)))) + `(font-lock-constant-face ((t (:foreground ,tertiary :weight bold)))) + `(font-lock-doc-face ((t (:foreground ,on-surface-variant :slant italic)))) + `(font-lock-function-name-face ((t (:foreground ,primary :weight bold)))) + `(font-lock-keyword-face ((t (:foreground ,secondary :weight bold)))) + `(font-lock-string-face ((t (:foreground ,tertiary)))) + `(font-lock-type-face ((t (:foreground ,primary-fixed)))) + `(font-lock-variable-name-face ((t (:foreground ,on-surface)))) + `(font-lock-warning-face ((t (:foreground ,err :weight bold)))) + `(font-lock-preprocessor-face ((t (:foreground ,secondary-fixed-dim)))) + `(font-lock-negation-char-face ((t (:foreground ,tertiary-fixed)))) + + ;; Show paren + `(show-paren-match ((t (:background ,primary-container :foreground ,on-primary-container :weight bold)))) + `(show-paren-mismatch ((t (:background ,err-container :foreground ,on-err-container :weight bold)))) + + ;; Mode line - improved status bar styling + `(mode-line ((t (:background ,surface-container :foreground ,on-surface :box nil)))) + `(mode-line-inactive ((t (:background ,surface :foreground ,on-surface-variant :box nil)))) + `(mode-line-buffer-id ((t (:foreground ,primary :weight bold)))) + `(mode-line-emphasis ((t (:foreground ,primary :weight bold)))) + `(mode-line-highlight ((t (:foreground ,primary :box nil)))) + + ;; Improved Source blocks - make them integrated with the theme + `(org-block ((t (:background ,surface-container-low :extend t :inherit fixed-pitch)))) + `(org-block-begin-line ((t (:background ,surface-container-low :foreground ,primary-fixed-dim :extend t :slant italic :inherit fixed-pitch)))) + `(org-block-end-line ((t (:background ,surface-container-low :foreground ,primary-fixed-dim :extend t :slant italic :inherit fixed-pitch)))) + `(org-code ((t (:background ,surface-container-low :foreground ,tertiary-fixed :inherit fixed-pitch)))) + `(org-verbatim ((t (:background ,surface-container-low :foreground ,primary-fixed :inherit fixed-pitch)))) + `(org-meta-line ((t (:foreground ,outline-color :slant italic)))) + + ;; Org mode with hidden asterisks + `(org-level-1 ((t (:foreground ,primary :weight bold :height 1.2)))) + `(org-level-2 ((t (:foreground ,primary-container :weight bold :height 1.1)))) + `(org-level-3 ((t (:foreground ,secondary :weight bold)))) + `(org-level-4 ((t (:foreground ,secondary-container :weight bold)))) + `(org-level-5 ((t (:foreground ,tertiary :weight bold)))) + `(org-level-6 ((t (:foreground ,tertiary-container :weight bold)))) + `(org-level-7 ((t (:foreground ,primary-fixed :weight bold)))) + `(org-level-8 ((t (:foreground ,primary-fixed-dim :weight bold)))) + `(org-document-title ((t (:foreground ,primary :weight bold :height 1.3)))) + `(org-document-info ((t (:foreground ,primary-container)))) + `(org-todo ((t (:foreground ,err :weight bold)))) + `(org-done ((t (:foreground ,success :weight bold)))) + `(org-headline-done ((t (:foreground ,on-surface-variant)))) + `(org-hide ((t (:foreground ,bg)))) ;; Hide leading asterisks + `(org-ellipsis ((t (:foreground ,tertiary :underline nil)))) ;; Style for folded content indicator + `(org-table ((t (:foreground ,secondary-fixed :inherit fixed-pitch)))) + `(org-formula ((t (:foreground ,tertiary :inherit fixed-pitch)))) + `(org-checkbox ((t (:foreground ,primary :weight bold :inherit fixed-pitch)))) + `(org-date ((t (:foreground ,secondary-fixed :underline t)))) + `(org-special-keyword ((t (:foreground ,on-surface-variant :slant italic)))) + `(org-tag ((t (:foreground ,outline-color :weight normal)))) + + ;; Magit + `(magit-section-highlight ((t (:background ,surface-container-low)))) + `(magit-diff-hunk-heading ((t (:background ,surface-container :foreground ,on-surface-variant)))) + `(magit-diff-hunk-heading-highlight ((t (:background ,surface-container-high :foreground ,on-surface)))) + `(magit-diff-context ((t (:foreground ,on-surface-variant)))) + `(magit-diff-context-highlight ((t (:background ,surface-container-low :foreground ,on-surface)))) + `(magit-diff-added ((t (:background ,success-container :foreground ,on-success-container)))) + `(magit-diff-added-highlight ((t (:background ,success-container :foreground ,on-success-container :weight bold)))) + `(magit-diff-removed ((t (:background ,err-container :foreground ,on-err-container)))) + `(magit-diff-removed-highlight ((t (:background ,err-container :foreground ,on-err-container :weight bold)))) + `(magit-hash ((t (:foreground ,outline-color)))) + `(magit-branch-local ((t (:foreground ,tertiary :weight bold)))) + `(magit-branch-remote ((t (:foreground ,primary :weight bold)))) + + ;; Company + `(company-tooltip ((t (:background ,surface-container :foreground ,on-surface)))) + `(company-tooltip-selection ((t (:background ,primary-container :foreground ,on-primary-container)))) + `(company-tooltip-common ((t (:foreground ,primary)))) + `(company-tooltip-common-selection ((t (:foreground ,on-primary-container :weight bold)))) + `(company-tooltip-annotation ((t (:foreground ,tertiary)))) + `(company-scrollbar-fg ((t (:background ,primary)))) + `(company-scrollbar-bg ((t (:background ,surface-variant)))) + `(company-preview ((t (:foreground ,on-surface-variant :slant italic)))) + `(company-preview-common ((t (:foreground ,primary :slant italic)))) + + ;; Ido + `(ido-first-match ((t (:foreground ,primary :weight bold)))) + `(ido-only-match ((t (:foreground ,tertiary :weight bold)))) + `(ido-subdir ((t (:foreground ,secondary)))) + `(ido-indicator ((t (:foreground ,err)))) + `(ido-virtual ((t (:foreground ,outline-color)))) + + ;; Helm + `(helm-selection ((t (:background ,primary-container :foreground ,on-primary-container)))) + `(helm-match ((t (:foreground ,primary :weight bold)))) + `(helm-source-header ((t (:background ,surface-container-high :foreground ,primary :weight bold :height 1.1)))) + `(helm-candidate-number ((t (:foreground ,tertiary :weight bold)))) + `(helm-ff-directory ((t (:foreground ,primary :weight bold)))) + `(helm-ff-file ((t (:foreground ,on-surface)))) + `(helm-ff-executable ((t (:foreground ,tertiary)))) + + ;; Which-key + `(which-key-key-face ((t (:foreground ,primary :weight bold)))) + `(which-key-separator-face ((t (:foreground ,outline-variant)))) + `(which-key-command-description-face ((t (:foreground ,on-surface)))) + `(which-key-group-description-face ((t (:foreground ,secondary)))) + `(which-key-special-key-face ((t (:foreground ,tertiary :weight bold)))) + + ;; Line numbers + `(line-number ((t (:foreground ,outline-variant :inherit fixed-pitch)))) + `(line-number-current-line ((t (:foreground ,primary :weight bold :inherit fixed-pitch)))) + + ;; Parenthesis matching + `(sp-show-pair-match-face ((t (:background ,primary-container :foreground ,on-primary-container)))) + `(sp-show-pair-mismatch-face ((t (:background ,err-container :foreground ,on-err-container)))) + + ;; Rainbow delimiters + `(rainbow-delimiters-depth-1-face ((t (:foreground ,primary)))) + `(rainbow-delimiters-depth-2-face ((t (:foreground ,secondary)))) + `(rainbow-delimiters-depth-3-face ((t (:foreground ,tertiary)))) + `(rainbow-delimiters-depth-4-face ((t (:foreground ,primary-fixed)))) + `(rainbow-delimiters-depth-5-face ((t (:foreground ,secondary-fixed)))) + `(rainbow-delimiters-depth-6-face ((t (:foreground ,tertiary-fixed)))) + `(rainbow-delimiters-depth-7-face ((t (:foreground ,primary-fixed-dim)))) + `(rainbow-delimiters-depth-8-face ((t (:foreground ,secondary-fixed-dim)))) + `(rainbow-delimiters-depth-9-face ((t (:foreground ,tertiary-fixed-dim)))) + `(rainbow-delimiters-mismatched-face ((t (:foreground ,err :weight bold)))) + `(rainbow-delimiters-unmatched-face ((t (:foreground ,err :weight bold)))) + + ;; Dired + `(dired-directory ((t (:foreground ,primary :weight bold)))) + `(dired-ignored ((t (:foreground ,outline-variant)))) + `(dired-flagged ((t (:foreground ,err)))) + `(dired-marked ((t (:foreground ,tertiary :weight bold)))) + `(dired-symlink ((t (:foreground ,secondary :slant italic)))) + `(dired-header ((t (:foreground ,primary :weight bold :height 1.1)))) + + ;; Terminal colors + `(term-color-black ((t (:foreground ,term0 :background ,term0)))) + `(term-color-red ((t (:foreground ,term1 :background ,term1)))) + `(term-color-green ((t (:foreground ,term2 :background ,term2)))) + `(term-color-yellow ((t (:foreground ,term3 :background ,term3)))) + `(term-color-blue ((t (:foreground ,term4 :background ,term4)))) + `(term-color-magenta ((t (:foreground ,term5 :background ,term5)))) + `(term-color-cyan ((t (:foreground ,term6 :background ,term6)))) + `(term-color-white ((t (:foreground ,term7 :background ,term7)))) + + ;; EShell + `(eshell-prompt ((t (:foreground ,primary :weight bold)))) + `(eshell-ls-directory ((t (:foreground ,primary :weight bold)))) + `(eshell-ls-symlink ((t (:foreground ,secondary :slant italic)))) + `(eshell-ls-executable ((t (:foreground ,tertiary)))) + `(eshell-ls-archive ((t (:foreground ,on-tertiary-container)))) + `(eshell-ls-backup ((t (:foreground ,outline-variant)))) + `(eshell-ls-clutter ((t (:foreground ,err)))) + `(eshell-ls-missing ((t (:foreground ,err)))) + `(eshell-ls-product ((t (:foreground ,on-surface-variant)))) + `(eshell-ls-readonly ((t (:foreground ,on-surface-variant)))) + `(eshell-ls-special ((t (:foreground ,secondary-fixed)))) + `(eshell-ls-unreadable ((t (:foreground ,outline-variant)))) + + ;; Improved markdown mode + `(markdown-header-face ((t (:foreground ,primary :weight bold)))) + `(markdown-header-face-1 ((t (:foreground ,primary :weight bold :height 1.2)))) + `(markdown-header-face-2 ((t (:foreground ,primary-container :weight bold :height 1.1)))) + `(markdown-header-face-3 ((t (:foreground ,secondary :weight bold)))) + `(markdown-header-face-4 ((t (:foreground ,secondary-container :weight bold)))) + `(markdown-inline-code-face ((t (:foreground ,tertiary-fixed :background ,surface-container-low :inherit fixed-pitch)))) + `(markdown-code-face ((t (:background ,surface-container-low :extend t :inherit fixed-pitch)))) + `(markdown-pre-face ((t (:background ,surface-container-low :inherit fixed-pitch)))) + `(markdown-table-face ((t (:foreground ,secondary-fixed :inherit fixed-pitch)))) + + ;; Web mode + `(web-mode-html-tag-face ((t (:foreground ,primary)))) + `(web-mode-html-tag-bracket-face ((t (:foreground ,on-surface-variant)))) + `(web-mode-html-attr-name-face ((t (:foreground ,secondary)))) + `(web-mode-html-attr-value-face ((t (:foreground ,tertiary)))) + `(web-mode-css-selector-face ((t (:foreground ,primary)))) + `(web-mode-css-property-name-face ((t (:foreground ,secondary)))) + `(web-mode-css-string-face ((t (:foreground ,tertiary)))) + + ;; Flycheck + `(flycheck-error ((t (:underline (:style wave :color ,err))))) + `(flycheck-warning ((t (:underline (:style wave :color ,secondary))))) + `(flycheck-info ((t (:underline (:style wave :color ,tertiary))))) + `(flycheck-fringe-error ((t (:foreground ,err)))) + `(flycheck-fringe-warning ((t (:foreground ,secondary)))) + `(flycheck-fringe-info ((t (:foreground ,tertiary)))) + + ;; Mini-buffer customization + `(minibuffer-prompt ((t (:foreground ,primary :weight bold)))) + + ;; Improved search highlighting + `(lsp-face-highlight-textual ((t (:background ,primary-container :foreground ,on-primary-container :weight bold)))) + `(lsp-face-highlight-read ((t (:background ,secondary-container :foreground ,on-secondary-container :weight bold)))) + `(lsp-face-highlight-write ((t (:background ,tertiary-container :foreground ,on-tertiary-container :weight bold)))) + + ;; Info and help modes + `(info-title-1 ((t (:foreground ,primary :weight bold :height 1.3)))) + `(info-title-2 ((t (:foreground ,primary-container :weight bold :height 1.2)))) + `(info-title-3 ((t (:foreground ,secondary :weight bold :height 1.1)))) + `(info-title-4 ((t (:foreground ,secondary-container :weight bold)))) + `(Info-quoted ((t (:foreground ,tertiary)))) + `(info-menu-header ((t (:foreground ,primary :weight bold)))) + `(info-menu-star ((t (:foreground ,primary)))) + `(info-node ((t (:foreground ,tertiary :weight bold)))) + + ;; Fixed-pitch faces + `(fixed-pitch ((t (:family "monospace")))) + `(fixed-pitch-serif ((t (:family "monospace serif")))) + + ;; Variable-pitch face + `(variable-pitch ((t (:family "sans serif")))) + )) + +;; Add org-mode hooks for hiding leading stars +(with-eval-after-load 'org + (setq org-hide-leading-stars t) + (setq org-startup-indented t)) + +;;;###autoload +(when load-file-name + (add-to-list 'custom-theme-load-path + (file-name-as-directory (file-name-directory load-file-name)))) + +(provide-theme 'material) +;;; material-theme.el ends here From dd6e94c208697421e9899c5c8e6102a37f77210f Mon Sep 17 00:00:00 2001 From: Chiron <135429057+Chiron8@users.noreply.github.com> Date: Wed, 30 Apr 2025 16:38:03 +0100 Subject: [PATCH 28/77] Fix spelling mistake in install.sh Changed "firstrun" on line 298 to "first run" --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 3852e4378..f3b262800 100755 --- a/install.sh +++ b/install.sh @@ -295,7 +295,7 @@ case $existed_ags_opt in # printf "\e[33mPlease use \"$XDG_CONFIG_HOME/ags/user_options.jsonc.new\" as a reference for a proper format.\e[0m\n" ;;esac case $existed_hypr_conf_firstrun in - y) printf "\n\e[33m[$0]: Warning: \"$XDG_CONFIG_HOME/hypr/hyprland.conf\" already existed before. As it seems it is your firstrun, we replaced it with a new one. \e[0m\n" + y) printf "\n\e[33m[$0]: Warning: \"$XDG_CONFIG_HOME/hypr/hyprland.conf\" already existed before. As it seems it is your first run, we replaced it with a new one. \e[0m\n" printf "\e[33mAs it seems it is your first run, we replaced it with a new one. The old one has been renamed to \"$XDG_CONFIG_HOME/hypr/hyprland.conf.old\".\e[0m\n" ;;esac case $existed_hypr_conf in From 20ab96d5c96de3ab659d0dfb6b91d2a7e2e77e4a Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sat, 3 May 2025 23:48:54 +0200 Subject: [PATCH 29/77] ai: add thinking block for online deepseek r1 (#1254) --- .config/ags/services/gpt.js | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/.config/ags/services/gpt.js b/.config/ags/services/gpt.js index 4ea8316e2..7de1631f1 100644 --- a/.config/ags/services/gpt.js +++ b/.config/ags/services/gpt.js @@ -105,6 +105,8 @@ class GPTMessage extends Service { _role = ''; _content = ''; + _hasReasoningContent = false; + _parsedReasoningContent = false; _lastContentLength = 0; _thinking; _done = false; @@ -112,6 +114,8 @@ class GPTMessage extends Service { constructor(role, content, thinking = true, done = false) { super(); this._role = role; + this._hasReasoningContent = false; + this._parsedReasoningContent = false; this._content = content; this._thinking = thinking; this._done = done; @@ -123,6 +127,18 @@ class GPTMessage extends Service { get role() { return this._role } set role(role) { this._role = role; this.emit('changed') } + get hasReasoningContent() { return this._hasReasoningContent } + set hasReasoningContent(value) { + this._hasReasoningContent = value; + this.emit('changed') + } + + get parsedReasoningContent() { return this._parsedReasoningContent } + set parsedReasoningContent(value) { + this._parsedReasoningContent = value; + this.emit('changed') + } + get content() { return this._content } set content(content) { this._content = content; @@ -251,8 +267,24 @@ class GPTService extends Service { aiResponse.done = true; return; } - aiResponse.addDelta(result.choices[0].delta.content); - // print(result.choices[0]) + + // aiResponse.addDelta(result.choices[0].delta.content); + if (!result.choices[0].delta.content && result.choices[0].delta.reasoning_content) { + if (!aiResponse.hasReasoningContent) { + aiResponse.hasReasoningContent = true; + aiResponse.addDelta(`\n${result.choices[0].delta.reasoning_content}`); + } + else { + aiResponse.addDelta(`\n${result.choices[0].delta.reasoning_content}`); + } + } + else { + if (aiResponse.hasReasoningContent) { + aiResponse.parsedReasoningContent = true; + aiResponse.addDelta(`\n\n`); + } + aiResponse.addDelta(result.choices[0].delta.content); + } } catch { aiResponse.addDelta(line + '\n'); From 4024d914fd5c14fe356947d99b6a71d39afaabaa Mon Sep 17 00:00:00 2001 From: clsty Date: Sun, 4 May 2025 15:31:00 +0800 Subject: [PATCH 30/77] Try to fix #1261 --- scriptdata/installers | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scriptdata/installers b/scriptdata/installers index 1d8593ba5..91015ce68 100644 --- a/scriptdata/installers +++ b/scriptdata/installers @@ -127,7 +127,7 @@ install-python-packages (){ x mkdir -p $ILLOGICAL_IMPULSE_VIRTUAL_ENV # we need python 3.12 https://github.com/python-pillow/Pillow/issues/8089 x uv venv --prompt .venv $ILLOGICAL_IMPULSE_VIRTUAL_ENV -p 3.12 - x source $ILLOGICAL_IMPULSE_VIRTUAL_ENV/bin/activate + x source $(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate x uv pip install -r scriptdata/requirements.txt x mkdir -p $base/cache/blueprint-compiler && cd $base/cache/blueprint-compiler From b03e8745104b48508c2600542943f114e8a5a450 Mon Sep 17 00:00:00 2001 From: clsty Date: Sun, 4 May 2025 20:31:07 +0800 Subject: [PATCH 31/77] Prevent VENV path not expanding --- scriptdata/installers | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scriptdata/installers b/scriptdata/installers index 91015ce68..d74dada92 100644 --- a/scriptdata/installers +++ b/scriptdata/installers @@ -124,9 +124,9 @@ install-uv (){ install-python-packages (){ UV_NO_MODIFY_PATH=1 ILLOGICAL_IMPULSE_VIRTUAL_ENV=$XDG_STATE_HOME/ags/.venv - x mkdir -p $ILLOGICAL_IMPULSE_VIRTUAL_ENV + x mkdir -p $(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV) # we need python 3.12 https://github.com/python-pillow/Pillow/issues/8089 - x uv venv --prompt .venv $ILLOGICAL_IMPULSE_VIRTUAL_ENV -p 3.12 + x uv venv --prompt .venv $(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV) -p 3.12 x source $(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate x uv pip install -r scriptdata/requirements.txt From a592a83be3cb5723211c216fbdfd0130879a9128 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 4 May 2025 16:55:00 +0200 Subject: [PATCH 32/77] make applying gtk colors not depend on gradience --- .../scripts/color_generation/applycolor.sh | 27 ++++++++----------- .../ags/scripts/templates/gtk/gtk-colors.css | 21 +++++++++++++++ 2 files changed, 32 insertions(+), 16 deletions(-) create mode 100644 .config/ags/scripts/templates/gtk/gtk-colors.css diff --git a/.config/ags/scripts/color_generation/applycolor.sh b/.config/ags/scripts/color_generation/applycolor.sh index 9bf56d392..144ac882b 100755 --- a/.config/ags/scripts/color_generation/applycolor.sh +++ b/.config/ags/scripts/color_generation/applycolor.sh @@ -151,30 +151,25 @@ apply_lightdark() { 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" +apply_gtk() { + # Check if template exists + if [ ! -f "scripts/templates/gtk/gtk-colors.css" ]; then + echo "Template file not found for gtk colors. Skipping that." return fi - # Copy template - mkdir -p "$CACHE_DIR"/user/generated/gradience - cp "scripts/templates/gradience/preset.json" "$CACHE_DIR"/user/generated/gradience/preset.json - + mkdir -p "$CACHE_DIR"/user/generated/gtk/ + cp "scripts/templates/gtk/gtk-colors.css" "$CACHE_DIR"/user/generated/gtk/gtk-colors.css # Apply colors for i in "${!colorlist[@]}"; do - sed -i "s/{{ ${colorlist[$i]} }}/${colorvalues[$i]}/g" "$CACHE_DIR"/user/generated/gradience/preset.json + sed -i "s/{{ ${colorlist[$i]} }}/#${colorvalues[$i]#\#}/g" "$CACHE_DIR"/user/generated/gtk/gtk-colors.css 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 + # Apply to both gtk3 and gtk4 + cp "$CACHE_DIR"/user/generated/gtk/gtk-colors.css "$XDG_CONFIG_HOME"/gtk-3.0/gtk.css + cp "$CACHE_DIR"/user/generated/gtk/gtk-colors.css "$XDG_CONFIG_HOME"/gtk-4.0/gtk.css - # And set GTK theme manually as Gradience defaults to light adw-gtk3 - # (which is unreadable when broken when you use dark mode) + # And set the right variant of adw gtk3 lightdark=$(get_light_dark) if [ "$lightdark" = "light" ]; then gsettings set org.gnome.desktop.interface gtk-theme 'adw-gtk3' diff --git a/.config/ags/scripts/templates/gtk/gtk-colors.css b/.config/ags/scripts/templates/gtk/gtk-colors.css new file mode 100644 index 000000000..b8ed1a4c7 --- /dev/null +++ b/.config/ags/scripts/templates/gtk/gtk-colors.css @@ -0,0 +1,21 @@ +/* +* GTK Colors +*/ + +@define-color accent_color {{ $primary }}; +@define-color accent_fg_color {{ $onPrimary }}; +@define-color accent_bg_color {{ $primary }}; +@define-color window_bg_color {{ $background }}; +@define-color window_fg_color {{ $onBackground }}; +@define-color headerbar_bg_color {{ $surfaceDim }}; +@define-color headerbar_fg_color {{ $onSurface }}; +@define-color popover_bg_color {{ $surfaceDim }}; +@define-color popover_fg_color {{ $onSurface }}; +@define-color view_bg_color {{ $surface }}; +@define-color view_fg_color {{ $onSurface }}; +@define-color card_bg_color {{ $surface }}; +@define-color card_fg_color {{ $onSurface }}; +@define-color sidebar_bg_color @window_bg_color; +@define-color sidebar_fg_color @window_fg_color; +@define-color sidebar_border_color @window_bg_color; +@define-color sidebar_backdrop_color @window_bg_color; From f7a3862c7d204236545a08a5c7d4a2183370a239 Mon Sep 17 00:00:00 2001 From: clsty Date: Sun, 4 May 2025 23:11:27 +0800 Subject: [PATCH 33/77] Remove gradience from deps install --- diagnose | 2 +- scriptdata/installers | 22 +--------------------- 2 files changed, 2 insertions(+), 22 deletions(-) diff --git a/diagnose b/diagnose index b5d607a02..5e6eef73b 100755 --- a/diagnose +++ b/diagnose @@ -35,7 +35,7 @@ ii_check_distro() { } ii_check_venv() { source $(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate - which gradience-cli + which python deactivate } ii_check_ags() { diff --git a/scriptdata/installers b/scriptdata/installers index d74dada92..6a04e1ac2 100644 --- a/scriptdata/installers +++ b/scriptdata/installers @@ -129,28 +129,8 @@ install-python-packages (){ x uv venv --prompt .venv $(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV) -p 3.12 x source $(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate x uv pip install -r scriptdata/requirements.txt - - x mkdir -p $base/cache/blueprint-compiler && cd $base/cache/blueprint-compiler - try git init -b main - try git remote add origin https://github.com/end-4/ii-blueprint-compiler.git - x git pull origin main && git submodule update --init --recursive - x meson setup build --prefix=$VIRTUAL_ENV - x meson compile -C build - x meson install -C build - x cd - - - x mkdir -p $base/cache/gradience && cd $base/cache/gradience - try git init -b main - try git remote add origin https://github.com/end-4/ii-gradience.git - x git pull origin main && git submodule update --init --recursive - x uv pip install -r requirements.txt - x meson setup build --prefix=$VIRTUAL_ENV - x meson compile -C build - x meson install -C build - x cd - - x deactivate # We don't need the virtual environment anymore - for i in "glib-2.0" "gradience"; do + for i in "glib-2.0"; do x rsync -av "$ILLOGICAL_IMPULSE_VIRTUAL_ENV"/share/$i/ "$XDG_DATA_HOME"/$i/ done } From bc51df3f10de191e16bfb5087c5ac59189282819 Mon Sep 17 00:00:00 2001 From: clsty Date: Sun, 4 May 2025 23:15:57 +0800 Subject: [PATCH 34/77] Also remove rsync glib-2.0 --- scriptdata/installers | 3 --- 1 file changed, 3 deletions(-) diff --git a/scriptdata/installers b/scriptdata/installers index 6a04e1ac2..842ca9375 100644 --- a/scriptdata/installers +++ b/scriptdata/installers @@ -130,9 +130,6 @@ install-python-packages (){ x source $(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate x uv pip install -r scriptdata/requirements.txt x deactivate # We don't need the virtual environment anymore - for i in "glib-2.0"; do - x rsync -av "$ILLOGICAL_IMPULSE_VIRTUAL_ENV"/share/$i/ "$XDG_DATA_HOME"/$i/ - done } # Only for Arch(based) distro. From 1bb79ae0cf065a43717cb4454da61c7a16a39e85 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 4 May 2025 17:23:12 +0200 Subject: [PATCH 35/77] remove gradience toggle from color menu --- .config/ags/modules/indicators/colorscheme.js | 28 ------------------- 1 file changed, 28 deletions(-) diff --git a/.config/ags/modules/indicators/colorscheme.js b/.config/ags/modules/indicators/colorscheme.js index db6501e07..f43a41fa4 100644 --- a/.config/ags/modules/indicators/colorscheme.js +++ b/.config/ags/modules/indicators/colorscheme.js @@ -142,34 +142,6 @@ const ColorSchemeSettings = () => Widget.Box({ .catch(print); }, }), - 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({ From a714e283ccad457ee62b9d822a113ee06d939bda Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 4 May 2025 17:23:21 +0200 Subject: [PATCH 36/77] remove gradience-related launcher actions --- .config/ags/modules/overview/miscfunctions.js | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/.config/ags/modules/overview/miscfunctions.js b/.config/ags/modules/overview/miscfunctions.js index 18abdd2c4..f7a289347 100644 --- a/.config/ags/modules/overview/miscfunctions.js +++ b/.config/ags/modules/overview/miscfunctions.js @@ -44,19 +44,6 @@ export function launchCustomCommand(command) { .then(execAsync(['bash', '-c', `${App.configDir}/scripts/color_generation/switchcolor.sh`])) .catch(print); } - else if (args[0] == '>adw' || args[0] == '>adwaita') { - const ADWAITA_BLUE = "#3584E4"; - execAsync([`bash`, `-c`, `${App.configDir}/scripts/color_generation/switchcolor.sh "${ADWAITA_BLUE}" --no-gradience`, `&`]) - .catch(print); - } - else if (args[0] == '>grad' || args[0] == '>gradience') { - execAsync([`bash`, `-c`, `${App.configDir}/scripts/color_generation/switchcolor.sh - --yes-gradience`, `&`]) - .catch(print); - } - else if (args[0] == '>nograd' || args[0] == '>nogradience') { - execAsync([`bash`, `-c`, `${App.configDir}/scripts/color_generation/switchcolor.sh - --no-gradience`, `&`]) - .catch(print); - } else if (args[0] == '>material') { // Use material colors execAsync([`bash`, `-c`, `mkdir -p ${GLib.get_user_state_dir()}/ags/user && echo "material" > ${GLib.get_user_state_dir()}/ags/user/colorbackend.txt`]).catch(print) .then(execAsync(['bash', '-c', `${App.configDir}/scripts/color_generation/switchwall.sh --noswitch`]).catch(print)) From b3b8d3276d6d9ba244fea52fa449f4c9eff559c6 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 4 May 2025 17:23:36 +0200 Subject: [PATCH 37/77] color mode file: don't care about gradience --- .config/ags/scripts/color_generation/colorgen.sh | 1 - .../ags/scripts/color_generation/switchcolor.sh | 16 ---------------- 2 files changed, 17 deletions(-) diff --git a/.config/ags/scripts/color_generation/colorgen.sh b/.config/ags/scripts/color_generation/colorgen.sh index 40c445b9f..faa932132 100755 --- a/.config/ags/scripts/color_generation/colorgen.sh +++ b/.config/ags/scripts/color_generation/colorgen.sh @@ -28,7 +28,6 @@ elif [[ $(wc -l < $colormodefile) -ne 4 || $(wc -w < $colormodefile) -ne 4 ]]; t echo "dark" > $colormodefile echo "opaque" >> $colormodefile echo "vibrant" >> $colormodefile - echo "yesgradience" >> $colormodefile else lightdark=$(sed -n '1p' $colormodefile) transparency=$(sed -n '2p' $colormodefile) diff --git a/.config/ags/scripts/color_generation/switchcolor.sh b/.config/ags/scripts/color_generation/switchcolor.sh index 183efc7c9..172774b55 100755 --- a/.config/ags/scripts/color_generation/switchcolor.sh +++ b/.config/ags/scripts/color_generation/switchcolor.sh @@ -19,21 +19,5 @@ 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 From 5ce8b2a5da98a33a4ccaa7d63be22d9e9129362b Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 4 May 2025 17:23:50 +0200 Subject: [PATCH 38/77] translations: remove "Use Gradience" --- .config/ags/i18n/locales/Default.json | 1 - .config/ags/i18n/locales/fa_IR.json | 1 - .config/ags/i18n/locales/fr_FR.json | 1 - .config/ags/i18n/locales/it_IT.json | 1 - .config/ags/i18n/locales/zh_CN.json | 1 - 5 files changed, 5 deletions(-) diff --git a/.config/ags/i18n/locales/Default.json b/.config/ags/i18n/locales/Default.json index b9c15503f..4b1debd6c 100644 --- a/.config/ags/i18n/locales/Default.json +++ b/.config/ags/i18n/locales/Default.json @@ -145,7 +145,6 @@ "Options": "Options", "Dark Mode": "Dark Mode", "Ya should go to sleep!": "Ya should go to sleep!", - "Use Gradience": "Use Gradience", "Theme GTK apps using accent color\n(drawback: dark/light mode switching requires restart)": "Theme GTK apps using accent color\n(drawback: dark/light mode switching requires restart)", "Scheme styles": "Scheme styles", "Vibrant": "Vibrant", diff --git a/.config/ags/i18n/locales/fa_IR.json b/.config/ags/i18n/locales/fa_IR.json index 17a4e40b0..1ff44b553 100644 --- a/.config/ags/i18n/locales/fa_IR.json +++ b/.config/ags/i18n/locales/fa_IR.json @@ -134,7 +134,6 @@ "Options": "گزینه‌ها", "Dark Mode": "حالت تاریک", "Ya should go to sleep!": "پاشو برو بخواب!", - "Use Gradience": "بکارگیری رنگ شیب دار(Gradience)", "Theme GTK apps using accent color\n(drawback: dark/light mode switching requires restart)": "برنامه‌های GTK را با بکارگیری رنگ تأکید پوسته گذاری کنید\n(معایب: تغییر حالت تاریک/روشن نیاز به باز راه‌اندازی دارد)", "Scheme styles": "سبک‌های طرح", "Vibrant": "زنده", diff --git a/.config/ags/i18n/locales/fr_FR.json b/.config/ags/i18n/locales/fr_FR.json index 9e42757ab..4c9a8e80f 100644 --- a/.config/ags/i18n/locales/fr_FR.json +++ b/.config/ags/i18n/locales/fr_FR.json @@ -134,7 +134,6 @@ "Options": "Options", "Dark Mode": "Mode sombre", "Ya should go to sleep!": "Tu devrais aller dormir !", - "Use Gradience": "Utiliser Gradience", "Theme GTK apps using accent color\n(drawback: dark/light mode switching requires restart)": "Thématiser les applications GTK avec la couleur d'accent\n(inconvénient : le changement de mode sombre/clair nécessite un redémarrage)", "Scheme styles": "Styles de schéma", "Vibrant": "Vibrant", diff --git a/.config/ags/i18n/locales/it_IT.json b/.config/ags/i18n/locales/it_IT.json index 79e8277ea..b572d1b92 100644 --- a/.config/ags/i18n/locales/it_IT.json +++ b/.config/ags/i18n/locales/it_IT.json @@ -134,7 +134,6 @@ "Options": "Opzioni", "Dark Mode": "Modalità scura", "Ya should go to sleep!": "Dovresti andare a dormire!", - "Use Gradience": "Usa Gradience", "Theme GTK apps using accent color\n(drawback: dark/light mode switching requires restart)": "Tema le app GTK usando il colore di accento\n(svantaggio: il passaggio tra modalità scura/chiara richiede un riavvio)", "Scheme styles": "Stili dello schema", "Vibrant": "Vivace", diff --git a/.config/ags/i18n/locales/zh_CN.json b/.config/ags/i18n/locales/zh_CN.json index 5fadb11cb..906090be5 100644 --- a/.config/ags/i18n/locales/zh_CN.json +++ b/.config/ags/i18n/locales/zh_CN.json @@ -134,7 +134,6 @@ "Options": "选项", "Dark Mode": "深色模式", "Ya should go to sleep!": "你应该去睡觉!", - "Use Gradience": "GTK 主题", "Theme GTK apps using accent color\n(drawback: dark/light mode switching requires restart)": "使用强调色对 GTK 应用程序进行主题化\n(缺点:深色/浅色模式切换需要重启)", "Scheme styles": "样式方案", "Vibrant": "鲜艳", From 6d7e6d1dd3e251260c765661b71308f4bf59aca5 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 4 May 2025 17:47:43 +0200 Subject: [PATCH 39/77] fix light/dark switching --- .config/ags/scripts/color_generation/colorgen.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.config/ags/scripts/color_generation/colorgen.sh b/.config/ags/scripts/color_generation/colorgen.sh index faa932132..3b44dbbc4 100755 --- a/.config/ags/scripts/color_generation/colorgen.sh +++ b/.config/ags/scripts/color_generation/colorgen.sh @@ -24,10 +24,6 @@ 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 "dark" > $colormodefile - echo "opaque" >> $colormodefile - echo "vibrant" >> $colormodefile else lightdark=$(sed -n '1p' $colormodefile) transparency=$(sed -n '2p' $colormodefile) From d8c638ebb59cc8aaf5de94c32f92ad8d954dfe0a Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 4 May 2025 17:50:06 +0200 Subject: [PATCH 40/77] diagnose script: remove gradience --- diagnose | 2 -- 1 file changed, 2 deletions(-) diff --git a/diagnose b/diagnose index 5e6eef73b..5bbbb2a49 100755 --- a/diagnose +++ b/diagnose @@ -66,9 +66,7 @@ x declare -p ILLOGICAL_IMPULSE_VIRTUAL_ENV # $XDG_STATE_HOME/ags/.venv e "Checking directories/files" x ls -l ~/.local/state/ags/.venv -x ls -l $ILLOGICAL_IMPULSE_VIRTUAL_ENV/bin/gradience-cli x ls $XDG_DATA_HOME/glib-2.0/schemas -x ls $XDG_DATA_HOME/gradience #x cat ~/.config/ags/ #e "Checking command existence" From ba18c5fc44827cf0e200283e1890f57464d11e6f Mon Sep 17 00:00:00 2001 From: clsty Date: Mon, 5 May 2025 07:09:10 +0800 Subject: [PATCH 41/77] Remove glib from diagnose --- diagnose | 1 - 1 file changed, 1 deletion(-) diff --git a/diagnose b/diagnose index 5bbbb2a49..50c2cc000 100755 --- a/diagnose +++ b/diagnose @@ -66,7 +66,6 @@ x declare -p ILLOGICAL_IMPULSE_VIRTUAL_ENV # $XDG_STATE_HOME/ags/.venv e "Checking directories/files" x ls -l ~/.local/state/ags/.venv -x ls $XDG_DATA_HOME/glib-2.0/schemas #x cat ~/.config/ags/ #e "Checking command existence" From 08a14c051b4912ade81c5a78fb417339dcb0ff3a Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 6 May 2025 09:44:13 +0200 Subject: [PATCH 42/77] fix chain of thought (#1254) --- .config/ags/services/gpt.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/ags/services/gpt.js b/.config/ags/services/gpt.js index 7de1631f1..ab4851e5a 100644 --- a/.config/ags/services/gpt.js +++ b/.config/ags/services/gpt.js @@ -275,7 +275,7 @@ class GPTService extends Service { aiResponse.addDelta(`\n${result.choices[0].delta.reasoning_content}`); } else { - aiResponse.addDelta(`\n${result.choices[0].delta.reasoning_content}`); + aiResponse.addDelta(`${result.choices[0].delta.reasoning_content}`); } } else { From 890a8ee323bf3436add6f8a6c714a9ab5a3d4352 Mon Sep 17 00:00:00 2001 From: fabio-garavini Date: Wed, 7 May 2025 10:26:10 +0200 Subject: [PATCH 43/77] zen browser icon substitution --- .config/ags/modules/.configuration/default_options.jsonc | 1 + 1 file changed, 1 insertion(+) diff --git a/.config/ags/modules/.configuration/default_options.jsonc b/.config/ags/modules/.configuration/default_options.jsonc index e20975e1b..85f1f96b7 100644 --- a/.config/ags/modules/.configuration/default_options.jsonc +++ b/.config/ags/modules/.configuration/default_options.jsonc @@ -241,6 +241,7 @@ "wps": "wps-office2019-kprometheus", "wpsoffice": "wps-office2019-kprometheus", "footclient": "foot", + "zen": "zen-browser", "": "image-missing" }, "regexSubstitutions": [ From e22bca8097979b7803c72f6a84e244417c59edb3 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Thu, 8 May 2025 21:25:15 +0200 Subject: [PATCH 44/77] make paused music not hide resources (#1285) --- .config/ags/modules/bar/normal/music.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/ags/modules/bar/normal/music.js b/.config/ags/modules/bar/normal/music.js index dbdc40943..e43d7e4a0 100644 --- a/.config/ags/modules/bar/normal/music.js +++ b/.config/ags/modules/bar/normal/music.js @@ -210,7 +210,7 @@ export default () => { }), setup: (self) => self.hook(Mpris, label => { const mpris = Mpris.getPlayer(''); - self.revealChild = (!mpris || userOptions.bar.alwaysShowFullResources); + self.revealChild = (!mpris || mpris.playBackStatus !== 'Playing' || userOptions.bar.alwaysShowFullResources); }), }) ], From af076f83c4fe2ed9f4759ad3f1b00a0417b6ef64 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Thu, 8 May 2025 23:28:52 +0200 Subject: [PATCH 45/77] hyprlock: add capslock indicator (#1280) --- .config/ags/scripts/templates/hypr/hyprlock.conf | 11 +++++++++++ .config/hypr/hyprlock.conf | 14 ++++++++++++-- .config/hypr/hyprlock/check-capslock.sh | 9 +++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100755 .config/hypr/hyprlock/check-capslock.sh diff --git a/.config/ags/scripts/templates/hypr/hyprlock.conf b/.config/ags/scripts/templates/hypr/hyprlock.conf index 1bb5e79f5..41342ef35 100644 --- a/.config/ags/scripts/templates/hypr/hyprlock.conf +++ b/.config/ags/scripts/templates/hypr/hyprlock.conf @@ -30,6 +30,17 @@ input-field { valign = center } +label { # Caps Lock Warning + monitor = + text = cmd[update:250] ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/hyprlock/check-capslock.sh + color = $text_color + font_size = 13 + font_family = $font_family + position = 0, -25 + halign = center + valign = center +} + label { # Clock monitor = text = $TIME diff --git a/.config/hypr/hyprlock.conf b/.config/hypr/hyprlock.conf index cd4c90e7b..1e936ce58 100644 --- a/.config/hypr/hyprlock.conf +++ b/.config/hypr/hyprlock.conf @@ -30,6 +30,18 @@ input-field { valign = center } +label { # Caps Lock Warning + monitor = + text = cmd[update:250] ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/hyprlock/check-capslock.sh + color = $text_color + font_size = 13 + font_family = $font_family + position = 0, -25 + halign = center + valign = center +} + + label { # Clock monitor = text = $TIME @@ -57,8 +69,6 @@ label { # User monitor = text =  $USER color = $text_color - shadow_passes = 1 - shadow_boost = 0.35 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 diff --git a/.config/hypr/hyprlock/check-capslock.sh b/.config/hypr/hyprlock/check-capslock.sh new file mode 100755 index 000000000..ca56178a2 --- /dev/null +++ b/.config/hypr/hyprlock/check-capslock.sh @@ -0,0 +1,9 @@ +#!/bin/env bash + +MAIN_KB_CAPS=$(hyprctl devices | grep -B 6 "main: yes" | grep "capsLock" | head -1 | awk '{print $2}') + +if [ "$MAIN_KB_CAPS" = "yes" ]; then + echo "Caps Lock active" +else + echo "" +fi From cb552d317f19bc31d84f84d0b1b829947f7db736 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Fri, 9 May 2025 20:02:49 +0200 Subject: [PATCH 46/77] ai: gemini: allow searching --- .config/ags/services/gemini.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.config/ags/services/gemini.js b/.config/ags/services/gemini.js index 6775173c7..38ae4e744 100644 --- a/.config/ags/services/gemini.js +++ b/.config/ags/services/gemini.js @@ -299,14 +299,17 @@ class GeminiService extends Service { "generationConfig": { "temperature": this._temperature, }, - // "key": this._key, - // "apiKey": this._key, + "tools": [ + { + "google_search": {} + } + ] }; const proxyResolver = new Gio.SimpleProxyResolver({ 'default-proxy': userOptions.ai.proxyUrl }); const session = new Soup.Session({ 'proxy-resolver': proxyResolver }); const message = new Soup.Message({ method: 'POST', - uri: GLib.Uri.parse(replaceapidom(`https://generativelanguage.googleapis.com/v1/models/${this.modelName}:streamGenerateContent?key=${this._key}`), GLib.UriFlags.NONE), + uri: GLib.Uri.parse(replaceapidom(`https://generativelanguage.googleapis.com/v1beta/models/${this.modelName}:streamGenerateContent?key=${this._key}`), GLib.UriFlags.NONE), }); message.request_headers.append('Content-Type', `application/json`); message.set_request_body_from_bytes('application/json', new GLib.Bytes(JSON.stringify(body))); From c8273e71ef4e722845118221e809c008b1391d8f Mon Sep 17 00:00:00 2001 From: RllyNotDev <88280211+rllynotfox@users.noreply.github.com> Date: Sat, 10 May 2025 00:44:24 +0300 Subject: [PATCH 47/77] Fix title on workspace change --- .config/ags/modules/bar/normal/spaceleft.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.config/ags/modules/bar/normal/spaceleft.js b/.config/ags/modules/bar/normal/spaceleft.js index 377d64cd3..d7f861271 100644 --- a/.config/ags/modules/bar/normal/spaceleft.js +++ b/.config/ags/modules/bar/normal/spaceleft.js @@ -29,9 +29,14 @@ const WindowTitle = async () => { truncate: 'end', maxWidthChars: 1, // Doesn't matter, just needs to be non negative className: 'txt-smallie bar-wintitle-txt', - setup: (self) => self.hook(Hyprland.active.client, label => { // Hyprland.active.client - label.label = Hyprland.active.client.title.length === 0 ? `Workspace ${Hyprland.active.workspace.id}` : Hyprland.active.client.title; - }), + setup: (self) => { + self.hook(Hyprland.active.client, label => { // Hyprland.active.client + label.label = Hyprland.active.client.title.length === 0 ? `Workspace ${Hyprland.active.workspace.id}` : Hyprland.active.client.title; + }); + self.hook(Hyprland.active.workspace, label => { // Hyprland.active.client + label.label = Hyprland.active.client.title.length === 0 ? `Workspace ${Hyprland.active.workspace.id}` : Hyprland.active.client.title; + }); + } }) ] }) From 1a2284234aa4c7ba71c6a2c451ec38b5c5476ec7 Mon Sep 17 00:00:00 2001 From: obsidrielle <1049617132@qq.com> Date: Mon, 12 May 2025 22:36:16 +0800 Subject: [PATCH 48/77] Feat: switch to video background and colorgen --- .../scripts/color_generation/switchwall.sh | 141 ++++++++++++++++-- 1 file changed, 131 insertions(+), 10 deletions(-) diff --git a/.config/ags/scripts/color_generation/switchwall.sh b/.config/ags/scripts/color_generation/switchwall.sh index b41304112..2caa3ccab 100755 --- a/.config/ags/scripts/color_generation/switchwall.sh +++ b/.config/ags/scripts/color_generation/switchwall.sh @@ -3,6 +3,81 @@ XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" CONFIG_DIR="$XDG_CONFIG_HOME/ags" +THUMBNAIL_DIR="/tmp/mpvpaper_thumbnails" +CUSTOM_DIR="$XDG_CONFIG_HOME/hypr/custom" +RESTORE_SCRIPT_DIR="$CUSTOM_DIR/scripts" +RESTORE_SCRIPT="$RESTORE_SCRIPT_DIR/__restore_video_wallpaper.sh" +EXECS_CONF="$CUSTOM_DIR/execs.conf" + +mkdir -p "$THUMBNAIL_DIR" +mkdir -p "$RESTORE_SCRIPT_DIR" + +is_video() { + local extension="${1##*.}" + [[ "$extension" == "mp4" || "$extension" == "mkv" || "$extension" == "webm" ]] && return 0 || return 1 +} + +kill_existing_mpvpaper() { + # Abort all mpvpapers' instance + pkill -f -9 mpvpaper || true +} + +create_restore_script() { + local video_path=$1 + local video_opts=${2:-"no-audio loop"} + + cat > "$RESTORE_SCRIPT" << EOF +#!/bin/bash +# Generated by switchwall.sh - Don't modify it by yourself. +# Time: $(date) + +pkill -f -9 mpvpaper + +for monitor in \$(hyprctl monitors -j | jq -r '.[] | .name'); do + mpvpaper -f -o "$video_opts" "\$monitor" "$video_path" & + sleep 0.1 +done +EOF + + chmod +x "$RESTORE_SCRIPT" +} + +ensure_restore_exec() { + local restore_line="exec-once=bash $RESTORE_SCRIPT" + + if [ ! -f "$EXECS_CONF" ]; then + echo "$restore_line" >> "$EXECS_CONF" + fi + + if ! grep -q "$restore_line" "$EXECS_CONF"; then + echo "$restore_line" >> "$EXECS_CONF" + fi +} + +remove_restore() { + if [ -f "$RESTORE_SCRIPT" ]; then + rm "$RESTORE_SCRIPT" + fi + + if [ -f "$EXECS_CONF" ]; then + grep -v "exec-once=bash $RESTORE_SCRIPT" "$EXECS_CONF" > "$EXECS_CONF.tmp" + mv "$EXECS_CONF.tmp" "$EXECS_CONF" + fi +} + +save_video_config() { + local path=$1 + local opts=$2 + local exec_cmd=$3 + + echo "VIDEO_PATH=$path" > "$VIDEO_CONFIG" + echo "VIDEO_OPTS=$opts" >> "$VIDEO_CONFIG" + + if [ -n "$exec_cmd" ]; then + echo "EXEC_CMD=$exec_cmd" >> "$VIDEO_CONFIG" + fi +} + switch() { imgpath=$1 read scale screenx screeny screensizey < <(hyprctl monitors -j | jq '.[] | select(.focused) | .scale, .x, .y, .height' | xargs) @@ -17,16 +92,65 @@ switch() { exit 0 fi - # 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" + kill_existing_mpvpaper + + if is_video "$imgpath"; then + missing_deps=() + if ! command -v mpvpaper &> /dev/null; then + missing_deps+=("mpvpaper") + fi + + if ! command -v ffmpeg &> /dev/null; then + missing_deps+=("ffmpeg") + fi + + if [ ${#missing_deps[@]} -gt 0 ]; then + echo "Missing deps: ${missing_deps[*]}" + echo "Arch: " + echo " yay -S ${missing_deps[*]}" + exit 0 + fi + + local video_path=$1 + local video_opts=${2:-"no-audio loop hwdec=auto scale=bilinear interpolation=no video-sync=display-resample panscan=1.0 video-scale-x=1.0 video-scale-y=1.0 video-align-x=0.5 video-align-y=0.5"} + + monitors=$(hyprctl monitors -j | jq -r '.[] | .name') + + for monitor in $monitors; do + mpvpaper -o "$video_opts" "$monitor" "$video_path" & + sleep 0.1 + done + + # We take the first frame of video to colorgen + thumbnail="$THUMBNAIL_DIR/$(basename $"imgpath").jpg" + ffmpeg -y -i "$imgpath" -vframes 1 "$thumbnail" 2>/dev/null + + if [ -f "$thumbnail" ]; then + "$CONFIG_DIR"/scripts/color_generation/colorgen.sh "$thumbnail" --apply --smart + create_restore_script "$video_path" "$video_opts" + ensure_restore_exec + else + echo "Cannot create image to colorgen" + fi + else + # 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" + + "$CONFIG_DIR"/scripts/color_generation/colorgen.sh "$imgpath" --apply --smart + remove_restore + fi } if [ "$1" == "--noswitch" ]; then - imgpath=$(swww query | awk -F 'image: ' '{print $2}') - # imgpath=$(agsv1 run-js 'wallpaper.get(0)') + if pgrep -f mpvpaper > /dev/null; then + imgpath=$(ps -eo cmd | grep mpvpaper | grep -v grep | awk '{for(i=NF;i>0;i--) if($i!~/^-/) {print $i; break}}') + else + imgpath=$(swww query | awk -F 'image: ' '{print $2}') + # imgpath=$(agsv1 run-js 'wallpaper.get(0)') + fi elif [[ "$1" ]]; then switch "$1" else @@ -35,6 +159,3 @@ else cd "$(xdg-user-dir PICTURES)/Wallpapers" || 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 From cd9167344f9d8954051c6f8152655181e32bd6e1 Mon Sep 17 00:00:00 2001 From: obsidrielle <1049617132@qq.com> Date: Tue, 13 May 2025 08:39:30 +0800 Subject: [PATCH 49/77] Feat: switch to video background and colorgen --- .config/ags/scripts/color_generation/switchwall.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.config/ags/scripts/color_generation/switchwall.sh b/.config/ags/scripts/color_generation/switchwall.sh index 2caa3ccab..144616f59 100755 --- a/.config/ags/scripts/color_generation/switchwall.sh +++ b/.config/ags/scripts/color_generation/switchwall.sh @@ -49,6 +49,7 @@ ensure_restore_exec() { echo "$restore_line" >> "$EXECS_CONF" fi + # Add `exec-once = bash $RESTORE_SCRIPT` if not exists if ! grep -q "$restore_line" "$EXECS_CONF"; then echo "$restore_line" >> "$EXECS_CONF" fi @@ -59,9 +60,10 @@ remove_restore() { rm "$RESTORE_SCRIPT" fi + # Delete `exec-once = bach $RESTORE_SCRIPT` if exists if [ -f "$EXECS_CONF" ]; then grep -v "exec-once=bash $RESTORE_SCRIPT" "$EXECS_CONF" > "$EXECS_CONF.tmp" - mv "$EXECS_CONF.tmp" "$EXECS_CONF" + mv "$EXECS_CONF.tmp" "$EXECS_CONF" fi } From a544f09114c62a0845f1469bbaeb93a5c0a6e59d Mon Sep 17 00:00:00 2001 From: obsidrielle <1049617132@qq.com> Date: Wed, 14 May 2025 10:35:11 +0800 Subject: [PATCH 50/77] Refactor: rewrite startup script without modifying config --- .../scripts/color_generation/switchwall.sh | 50 ++++--------------- .../scripts/__restore_video_wallpaper.sh | 2 + .config/hypr/hyprland.conf | 1 - .config/hypr/hyprland/execs.conf | 1 + 4 files changed, 13 insertions(+), 41 deletions(-) create mode 100644 .config/hypr/custom/scripts/__restore_video_wallpaper.sh diff --git a/.config/ags/scripts/color_generation/switchwall.sh b/.config/ags/scripts/color_generation/switchwall.sh index 144616f59..783288d70 100755 --- a/.config/ags/scripts/color_generation/switchwall.sh +++ b/.config/ags/scripts/color_generation/switchwall.sh @@ -9,6 +9,8 @@ RESTORE_SCRIPT_DIR="$CUSTOM_DIR/scripts" RESTORE_SCRIPT="$RESTORE_SCRIPT_DIR/__restore_video_wallpaper.sh" EXECS_CONF="$CUSTOM_DIR/execs.conf" +VIDEO_OPTS="no-audio loop hwdec=auto scale=bilinear interpolation=no video-sync=display-resample panscan=1.0 video-scale-x=1.0 video-scale-y=1.0 video-align-x=0.5 video-align-y=0.5" + mkdir -p "$THUMBNAIL_DIR" mkdir -p "$RESTORE_SCRIPT_DIR" @@ -24,7 +26,6 @@ kill_existing_mpvpaper() { create_restore_script() { local video_path=$1 - local video_opts=${2:-"no-audio loop"} cat > "$RESTORE_SCRIPT" << EOF #!/bin/bash @@ -34,7 +35,7 @@ create_restore_script() { pkill -f -9 mpvpaper for monitor in \$(hyprctl monitors -j | jq -r '.[] | .name'); do - mpvpaper -f -o "$video_opts" "\$monitor" "$video_path" & + mpvpaper -o "$VIDEO_OPTS" "\$monitor" "$video_path" & sleep 0.1 done EOF @@ -42,42 +43,13 @@ EOF chmod +x "$RESTORE_SCRIPT" } -ensure_restore_exec() { - local restore_line="exec-once=bash $RESTORE_SCRIPT" - - if [ ! -f "$EXECS_CONF" ]; then - echo "$restore_line" >> "$EXECS_CONF" - fi - - # Add `exec-once = bash $RESTORE_SCRIPT` if not exists - if ! grep -q "$restore_line" "$EXECS_CONF"; then - echo "$restore_line" >> "$EXECS_CONF" - fi -} - remove_restore() { - if [ -f "$RESTORE_SCRIPT" ]; then - rm "$RESTORE_SCRIPT" - fi + cat > "$RESTORE_SCRIPT.tmp" << EOF +#!/bin/bash +# The content of this script will be generated by switchwall.sh - Don't modify it by yourself. +EOF - # Delete `exec-once = bach $RESTORE_SCRIPT` if exists - if [ -f "$EXECS_CONF" ]; then - grep -v "exec-once=bash $RESTORE_SCRIPT" "$EXECS_CONF" > "$EXECS_CONF.tmp" - mv "$EXECS_CONF.tmp" "$EXECS_CONF" - fi -} - -save_video_config() { - local path=$1 - local opts=$2 - local exec_cmd=$3 - - echo "VIDEO_PATH=$path" > "$VIDEO_CONFIG" - echo "VIDEO_OPTS=$opts" >> "$VIDEO_CONFIG" - - if [ -n "$exec_cmd" ]; then - echo "EXEC_CMD=$exec_cmd" >> "$VIDEO_CONFIG" - fi + mv "$RESTORE_SCRIPT.tmp" $RESTORE_SCRIPT } switch() { @@ -114,12 +86,11 @@ switch() { fi local video_path=$1 - local video_opts=${2:-"no-audio loop hwdec=auto scale=bilinear interpolation=no video-sync=display-resample panscan=1.0 video-scale-x=1.0 video-scale-y=1.0 video-align-x=0.5 video-align-y=0.5"} - + monitors=$(hyprctl monitors -j | jq -r '.[] | .name') for monitor in $monitors; do - mpvpaper -o "$video_opts" "$monitor" "$video_path" & + mpvpaper -o "$VIDEO_OPTS" "$monitor" "$video_path" & sleep 0.1 done @@ -130,7 +101,6 @@ switch() { if [ -f "$thumbnail" ]; then "$CONFIG_DIR"/scripts/color_generation/colorgen.sh "$thumbnail" --apply --smart create_restore_script "$video_path" "$video_opts" - ensure_restore_exec else echo "Cannot create image to colorgen" fi diff --git a/.config/hypr/custom/scripts/__restore_video_wallpaper.sh b/.config/hypr/custom/scripts/__restore_video_wallpaper.sh new file mode 100644 index 000000000..ea4b4fbd3 --- /dev/null +++ b/.config/hypr/custom/scripts/__restore_video_wallpaper.sh @@ -0,0 +1,2 @@ +#!/bin/bash +# The content of this script will be generated by switchwall.sh - Don't modify it by yourself. diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf index aa7c076c8..b34a3fb97 100644 --- a/.config/hypr/hyprland.conf +++ b/.config/hypr/hyprland.conf @@ -15,4 +15,3 @@ source=~/.config/hypr/custom/execs.conf source=~/.config/hypr/custom/general.conf source=~/.config/hypr/custom/rules.conf source=~/.config/hypr/custom/keybinds.conf - diff --git a/.config/hypr/hyprland/execs.conf b/.config/hypr/hyprland/execs.conf index 232f7e1da..1c3ab3b14 100644 --- a/.config/hypr/hyprland/execs.conf +++ b/.config/hypr/hyprland/execs.conf @@ -1,5 +1,6 @@ # Bar, wallpaper exec-once = swww-daemon --format xrgb +exec-once = bash ~/.config/hypr/custom/scripts/__restore_video_wallpaper.sh exec-once = /usr/lib/geoclue-2.0/demos/agent & gammastep exec-once = agsv1 & From 8c62520666e9f60b713e8fbff3b04fd535fcf132 Mon Sep 17 00:00:00 2001 From: obsidrielle <1049617132@qq.com> Date: Wed, 14 May 2025 10:45:01 +0800 Subject: [PATCH 51/77] Refactor: consistently use temporary files and mv (atomic operation) --- .config/ags/scripts/color_generation/switchwall.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.config/ags/scripts/color_generation/switchwall.sh b/.config/ags/scripts/color_generation/switchwall.sh index 783288d70..1d295ff48 100755 --- a/.config/ags/scripts/color_generation/switchwall.sh +++ b/.config/ags/scripts/color_generation/switchwall.sh @@ -27,7 +27,7 @@ kill_existing_mpvpaper() { create_restore_script() { local video_path=$1 - cat > "$RESTORE_SCRIPT" << EOF + cat > "$RESTORE_SCRIPT.tmp" << EOF #!/bin/bash # Generated by switchwall.sh - Don't modify it by yourself. # Time: $(date) @@ -40,6 +40,7 @@ for monitor in \$(hyprctl monitors -j | jq -r '.[] | .name'); do done EOF + mv "$RESTORE_SCRIPT.tmp" $RESTORE_SCRIPT chmod +x "$RESTORE_SCRIPT" } From def2d6f3839671e2c5369fcf947066e5d259a1f6 Mon Sep 17 00:00:00 2001 From: obsidrielle <1049617132@qq.com> Date: Wed, 14 May 2025 12:01:51 +0800 Subject: [PATCH 52/77] Style: remove unused variables and args --- .config/ags/scripts/color_generation/switchwall.sh | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.config/ags/scripts/color_generation/switchwall.sh b/.config/ags/scripts/color_generation/switchwall.sh index 1d295ff48..e3ab24ded 100755 --- a/.config/ags/scripts/color_generation/switchwall.sh +++ b/.config/ags/scripts/color_generation/switchwall.sh @@ -7,7 +7,6 @@ THUMBNAIL_DIR="/tmp/mpvpaper_thumbnails" CUSTOM_DIR="$XDG_CONFIG_HOME/hypr/custom" RESTORE_SCRIPT_DIR="$CUSTOM_DIR/scripts" RESTORE_SCRIPT="$RESTORE_SCRIPT_DIR/__restore_video_wallpaper.sh" -EXECS_CONF="$CUSTOM_DIR/execs.conf" VIDEO_OPTS="no-audio loop hwdec=auto scale=bilinear interpolation=no video-sync=display-resample panscan=1.0 video-scale-x=1.0 video-scale-y=1.0 video-align-x=0.5 video-align-y=0.5" @@ -40,7 +39,7 @@ for monitor in \$(hyprctl monitors -j | jq -r '.[] | .name'); do done EOF - mv "$RESTORE_SCRIPT.tmp" $RESTORE_SCRIPT + mv "$RESTORE_SCRIPT.tmp" "$RESTORE_SCRIPT" chmod +x "$RESTORE_SCRIPT" } @@ -50,7 +49,7 @@ remove_restore() { # The content of this script will be generated by switchwall.sh - Don't modify it by yourself. EOF - mv "$RESTORE_SCRIPT.tmp" $RESTORE_SCRIPT + mv "$RESTORE_SCRIPT.tmp" "$RESTORE_SCRIPT" } switch() { @@ -96,12 +95,12 @@ switch() { done # We take the first frame of video to colorgen - thumbnail="$THUMBNAIL_DIR/$(basename $"imgpath").jpg" + thumbnail="$THUMBNAIL_DIR/$(basename "$imgpath").jpg" ffmpeg -y -i "$imgpath" -vframes 1 "$thumbnail" 2>/dev/null if [ -f "$thumbnail" ]; then "$CONFIG_DIR"/scripts/color_generation/colorgen.sh "$thumbnail" --apply --smart - create_restore_script "$video_path" "$video_opts" + create_restore_script "$video_path" else echo "Cannot create image to colorgen" fi From 09696d9fdb966409af1c2f43833cb6b93948efbc Mon Sep 17 00:00:00 2001 From: Samuel Leutner Date: Fri, 16 May 2025 17:57:24 -0300 Subject: [PATCH 53/77] Fix: Prevent raw HTML rendering in notifications Notifications were occasionally displaying raw HTML content, including tags, instead of the intended plain text message. This commit introduces a regex to strip all HTML tags from notification content before display, ensuring a proper user experience. --- .config/ags/modules/.commonwidgets/notification.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.config/ags/modules/.commonwidgets/notification.js b/.config/ags/modules/.commonwidgets/notification.js index 8733aa117..b9486a2f0 100644 --- a/.config/ags/modules/.commonwidgets/notification.js +++ b/.config/ags/modules/.commonwidgets/notification.js @@ -39,12 +39,12 @@ function guessMessageType(summary) { } function processNotificationBody(body, appEntry) { - // Only process Chrome/Chromium notifications + let processedBody = body; if (appEntry?.toLowerCase().includes('chrome')) { - // Remove the first line - return body.split('\n\n').slice(1).join('\n\n'); + processedBody = body.split('\n\n').slice(1).join('\n\n'); } - return body; + processedBody = processedBody.replace(/<[^>]*>/g, ''); + return processedBody; } const getFriendlyNotifTimeString = (timeObject) => { From 7428da255203d87b3ec8d9380cb94ac9f303796b Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 18 May 2025 21:22:48 +0200 Subject: [PATCH 54/77] dont filter native mpris from firefox & chrome --- .config/ags/modules/indicators/musiccontrols.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.config/ags/modules/indicators/musiccontrols.js b/.config/ags/modules/indicators/musiccontrols.js index 6f07c7f50..6b3db7cce 100644 --- a/.config/ags/modules/indicators/musiccontrols.js +++ b/.config/ags/modules/indicators/musiccontrols.js @@ -22,8 +22,8 @@ var lastCoverPath = ''; function isRealPlayer(player) { return ( // Remove unecessary native buses from browsers if there's plasma integration - !(hasPlasmaIntegration && player.busName.startsWith('org.mpris.MediaPlayer2.firefox')) && - !(hasPlasmaIntegration && player.busName.startsWith('org.mpris.MediaPlayer2.chromium')) && + // !(hasPlasmaIntegration && player.busName.startsWith('org.mpris.MediaPlayer2.firefox')) && + // !(hasPlasmaIntegration && player.busName.startsWith('org.mpris.MediaPlayer2.chromium')) && // playerctld just copies other buses and we don't need duplicates !player.busName.startsWith('org.mpris.MediaPlayer2.playerctld') && // Non-instance mpd bus From d365ede358a7f5da6119dab04e796540d54d8f67 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 18 May 2025 21:24:20 +0200 Subject: [PATCH 55/77] don't prompt plasma browser integration installation --- install.sh | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/install.sh b/install.sh index f3b262800..9836bb846 100755 --- a/install.sh +++ b/install.sh @@ -119,24 +119,24 @@ showfun install-python-packages v install-python-packages ## Optional dependencies -if pacman -Qs ^plasma-browser-integration$ ;then SKIP_PLASMAINTG=true;fi -case $SKIP_PLASMAINTG in - true) sleep 0;; - *) - if $ask;then - echo -e "\e[33m[$0]: NOTE: The size of \"plasma-browser-integration\" is about 250 MiB.\e[0m" - echo -e "\e[33mIt is needed if you want playtime of media in Firefox to be shown on the music controls widget.\e[0m" - echo -e "\e[33mInstall it? [y/N]\e[0m" - read -p "====> " p - else - p=y - fi - case $p in - y) x sudo pacman -S --needed --noconfirm plasma-browser-integration ;; - *) echo "Ok, won't install" - esac - ;; -esac +# if pacman -Qs ^plasma-browser-integration$ ;then SKIP_PLASMAINTG=true;fi +# case $SKIP_PLASMAINTG in +# true) sleep 0;; +# *) +# if $ask;then +# echo -e "\e[33m[$0]: NOTE: The size of \"plasma-browser-integration\" is about 250 MiB.\e[0m" +# echo -e "\e[33mIt is needed if you want playtime of media in Firefox to be shown on the music controls widget.\e[0m" +# echo -e "\e[33mInstall it? [y/N]\e[0m" +# read -p "====> " p +# else +# p=y +# fi +# case $p in +# y) x sudo pacman -S --needed --noconfirm plasma-browser-integration ;; +# *) echo "Ok, won't install" +# esac +# ;; +# esac v sudo usermod -aG video,i2c,input "$(whoami)" v bash -c "echo i2c-dev | sudo tee /etc/modules-load.d/i2c-dev.conf" From 6281c3a23c1d3b77cc8102c9c1ba10d0c25ad880 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Mon, 19 May 2025 11:31:55 +0200 Subject: [PATCH 56/77] no more pywal --- .config/ags/modules/indicators/musiccontrols.js | 10 ++++++++-- .config/ags/scss/_music.scss | 3 +++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.config/ags/modules/indicators/musiccontrols.js b/.config/ags/modules/indicators/musiccontrols.js index 6b3db7cce..5f5183462 100644 --- a/.config/ags/modules/indicators/musiccontrols.js +++ b/.config/ags/modules/indicators/musiccontrols.js @@ -209,8 +209,14 @@ const CoverArt = ({ player, ...rest }) => { execAsync(['bash', '-c', `${App.configDir}/scripts/color_generation/generate_colors_material.py --path '${coverPath}' --mode ${darkMode.value ? 'dark' : 'light'} > ${GLib.get_user_state_dir()}/ags/scss/_musicmaterial.scss`]) .then(() => { - exec(`${App.configDir}/scripts/color_generation/pywal.sh -i "${player.coverPath}" -n -t -s -e -q ${darkMode.value ? '' : '-l'}`) - exec(`cp ${GLib.get_user_cache_dir()}/wal/colors.scss ${GLib.get_user_state_dir()}/ags/scss/_musicwal.scss`); + const dominantColor = `#${Utils.exec(`sh -c "magick '${coverPath}' -scale 1x1\\! -format '%[fx:int(255*r+.5)],%[fx:int(255*g+.5)],%[fx:int(255*b+.5)]' info: | sed 's/,/\\n/g' | xargs -L 1 printf '%02x' ; echo"`)}` + // exec(`${App.configDir}/scripts/color_generation/pywal.sh -i "${player.coverPath}" -n -t -s -e -q ${darkMode.value ? '' : '-l'}`) + // exec(`cp ${GLib.get_user_cache_dir()}/wal/colors.scss ${GLib.get_user_state_dir()}/ags/scss/_musicwal.scss`); + exec(`cp '${App.configDir}/scripts/templates/wal/_musicwal.scss' '${GLib.get_user_state_dir()}/ags/scss/_musicwal.scss'`); + exec(`sed -i 's/{{dominantColor}}/${dominantColor}/g' '${GLib.get_user_state_dir()}/ags/scss/_musicwal.scss'`) + exec(`sed -i 's/{{backgroundColor}}/${darkMode.value ? "#0E1415" : "#EEF4F4"}/g' '${GLib.get_user_state_dir()}/ags/scss/_musicwal.scss'`) + exec(`sed -i 's/{{foregroundColor}}/${darkMode.value ? "#EEF4F4" : "#0E1415"}/g' '${GLib.get_user_state_dir()}/ags/scss/_musicwal.scss'`) + exec(`sass -I "${GLib.get_user_state_dir()}/ags/scss" -I "${App.configDir}/scss/fallback" "${App.configDir}/scss/_music.scss" "${stylePath}"`); Utils.timeout(200, () => { // self.attribute.showImage(self, coverPath) diff --git a/.config/ags/scss/_music.scss b/.config/ags/scss/_music.scss index 473a855e8..7450c5041 100644 --- a/.config/ags/scss/_music.scss +++ b/.config/ags/scss/_music.scss @@ -20,8 +20,11 @@ $secondaryContainer: transparentize(mix(mix($background, $color2, 50%), $color6, $onSecondaryContainer: mix($color7, $color2, 90%); @if $darkmode == False { $onSecondaryContainer: mix($onSecondaryContainer, black, 50%); +} @else { + $onSecondaryContainer: mix($onSecondaryContainer, white, 50%); } + .osd-music { @include menu_decel; @include elevation2; From 086451951adc38850b3995c8cd182eef34524c38 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Mon, 19 May 2025 11:34:18 +0200 Subject: [PATCH 57/77] remove >pywal launcher action --- .config/ags/modules/overview/miscfunctions.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.config/ags/modules/overview/miscfunctions.js b/.config/ags/modules/overview/miscfunctions.js index f7a289347..196f5a7f0 100644 --- a/.config/ags/modules/overview/miscfunctions.js +++ b/.config/ags/modules/overview/miscfunctions.js @@ -49,11 +49,6 @@ export function launchCustomCommand(command) { .then(execAsync(['bash', '-c', `${App.configDir}/scripts/color_generation/switchwall.sh --noswitch`]).catch(print)) .catch(print); } - else if (args[0] == '>pywal') { // Use Pywal (ik it looks shit but I'm not removing) - execAsync([`bash`, `-c`, `mkdir -p ${GLib.get_user_state_dir()}/ags/user && echo "pywal" > ${GLib.get_user_state_dir()}/ags/user/colorbackend.txt`]).catch(print) - .then(execAsync(['bash', '-c', `${App.configDir}/scripts/color_generation/switchwall.sh --noswitch`]).catch(print)) - .catch(print); - } else if (args[0] == '>todo') { // Todo Todo.add(args.slice(1).join(' ')); } From d8dc1c7d69da4162089039b0f75b6c72033afc7d Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Mon, 19 May 2025 11:34:30 +0200 Subject: [PATCH 58/77] remove pywal from requirements --- scriptdata/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scriptdata/requirements.txt b/scriptdata/requirements.txt index 4f4c5dc7b..8c923e9c3 100644 --- a/scriptdata/requirements.txt +++ b/scriptdata/requirements.txt @@ -26,7 +26,7 @@ pycparser==2.22 # via cffi pyproject-hooks==1.2.0 # via build -pywal==3.3.0 +# pywal==3.3.0 # via -r scriptdata/requirements.in pywayland==0.4.18 # via -r scriptdata/requirements.in From 0e2252995c73983748dfad28a976a779aedbb6a8 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Mon, 19 May 2025 11:35:25 +0200 Subject: [PATCH 59/77] Update requirements.in --- scriptdata/requirements.in | 1 - 1 file changed, 1 deletion(-) diff --git a/scriptdata/requirements.in b/scriptdata/requirements.in index 3112fc73c..0b4ac323e 100644 --- a/scriptdata/requirements.in +++ b/scriptdata/requirements.in @@ -1,6 +1,5 @@ build pillow -pywal setuptools-scm wheel pywayland From a149abf9fe65c39c99001be4eaf35cb02af9169e Mon Sep 17 00:00:00 2001 From: LOSEARDES77 Date: Mon, 19 May 2025 15:43:22 +0200 Subject: [PATCH 60/77] Add option to ignore certain apps in dock --- .../ags/modules/.configuration/default_options.jsonc | 1 + .config/ags/modules/dock/dock.js | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/.config/ags/modules/.configuration/default_options.jsonc b/.config/ags/modules/.configuration/default_options.jsonc index 85f1f96b7..ef19f14e4 100644 --- a/.config/ags/modules/.configuration/default_options.jsonc +++ b/.config/ags/modules/.configuration/default_options.jsonc @@ -199,6 +199,7 @@ "firefox", "org.gnome.Nautilus" ], + "ignoredAppsRegex": [], "layer": "top", "monitorExclusivity": true, // Dock will move to other monitor along with focus if enabled "searchPinnedAppIcons": false, // Try to search for the correct icon if the app class isn't an icon name diff --git a/.config/ags/modules/dock/dock.js b/.config/ags/modules/dock/dock.js index 8e318410f..c5c7c222f 100755 --- a/.config/ags/modules/dock/dock.js +++ b/.config/ags/modules/dock/dock.js @@ -119,6 +119,17 @@ const Taskbar = (monitor) => Widget.Box({ const client = Hyprland.clients[i]; if (client["pid"] == -1) return; const appClass = substitute(client.class); + const ignoredAppsRegex = userOptions.dock.ignoredAppsRegex; + const isIgnored = false; + + for (const regex of ignoredAppsRegex) { + if (!appClass.match(regex)) continue; + isIgnored = true; + break; + } + + if (isIgnored) continue; + // for (const appName of userOptions.dock.pinnedApps) { // if (appClass.includes(appName.toLowerCase())) // return null; From d4603c6b8a0d66dc9e5948520d78bee82f5b70c7 Mon Sep 17 00:00:00 2001 From: LOSEARDES77 Date: Mon, 19 May 2025 15:52:47 +0200 Subject: [PATCH 61/77] Fix it not working --- .config/ags/modules/dock/dock.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.config/ags/modules/dock/dock.js b/.config/ags/modules/dock/dock.js index c5c7c222f..bd8297f93 100755 --- a/.config/ags/modules/dock/dock.js +++ b/.config/ags/modules/dock/dock.js @@ -119,13 +119,17 @@ const Taskbar = (monitor) => Widget.Box({ const client = Hyprland.clients[i]; if (client["pid"] == -1) return; const appClass = substitute(client.class); - const ignoredAppsRegex = userOptions.dock.ignoredAppsRegex; - const isIgnored = false; + const ignoredAppsRegex = userOptions.dock.ignoredAppsRegex || []; + let isIgnored = false; for (const regex of ignoredAppsRegex) { - if (!appClass.match(regex)) continue; - isIgnored = true; - break; + try { + const pattern = new RegExp(regex); + if (pattern.test(appClass)) { + isIgnored = true; + break; + } + } catch (e) {} } if (isIgnored) continue; From a65363c60f292b5b623bc5bbc811124bb0749260 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Mon, 19 May 2025 21:48:41 +0200 Subject: [PATCH 62/77] fix #1300 --- .config/ags/modules/cheatsheet/data_periodictable.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/ags/modules/cheatsheet/data_periodictable.js b/.config/ags/modules/cheatsheet/data_periodictable.js index 47eb8da21..f7f47a0e0 100644 --- a/.config/ags/modules/cheatsheet/data_periodictable.js +++ b/.config/ags/modules/cheatsheet/data_periodictable.js @@ -62,7 +62,7 @@ export const periodicTable = [ { name: 'Argon', symbol: 'Ar', number: 18, weight: 39.95, type: 'noblegas' }, ], [ - { name: 'Kalium', symbol: 'K', number: 19, weight: 39.098, type: 'metal' }, + { name: 'Potassium', symbol: 'K', number: 19, weight: 39.098, type: 'metal' }, { name: 'Calcium', symbol: 'Ca', number: 20, weight: 40.078, type: 'metal' }, { name: 'Scandium', symbol: 'Sc', number: 21, weight: 44.956, type: 'metal' }, { name: 'Titanium', symbol: 'Ti', number: 22, weight: 47.87, type: 'metal' }, From cfe48fb0a15ee9ddf37f9e53562f5fbc13bbc598 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 20 May 2025 23:17:47 +0200 Subject: [PATCH 63/77] use bettercontrol for settings app (#1278) --- .config/ags/modules/.configuration/default_options.jsonc | 6 +++--- arch-packages/illogical-impulse-gnome/PKGBUILD | 2 +- arch-packages/illogical-impulse-widgets/PKGBUILD | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.config/ags/modules/.configuration/default_options.jsonc b/.config/ags/modules/.configuration/default_options.jsonc index ef19f14e4..c9912c938 100644 --- a/.config/ags/modules/.configuration/default_options.jsonc +++ b/.config/ags/modules/.configuration/default_options.jsonc @@ -46,10 +46,10 @@ "fakeScreenRounding": 2 // 0: None | 1: Always | 2: When not fullscreen }, "apps": { - "bluetooth": "blueberry", + "bluetooth": "better-control --bluetooth", "imageViewer": "loupe", - "network": "XDG_CURRENT_DESKTOP=\"gnome\" gnome-control-center wifi", - "settings": "XDG_CURRENT_DESKTOP=\"gnome\" gnome-control-center", + "network": "better-control --wifi", + "settings": "better-control", "taskManager": "gnome-usage", "terminal": "foot" // This is only for shell actions }, diff --git a/arch-packages/illogical-impulse-gnome/PKGBUILD b/arch-packages/illogical-impulse-gnome/PKGBUILD index 33af4b8ba..529ff0b14 100644 --- a/arch-packages/illogical-impulse-gnome/PKGBUILD +++ b/arch-packages/illogical-impulse-gnome/PKGBUILD @@ -8,5 +8,5 @@ depends=( polkit-gnome gnome-keyring gnome-control-center - blueberry networkmanager + networkmanager ) diff --git a/arch-packages/illogical-impulse-widgets/PKGBUILD b/arch-packages/illogical-impulse-widgets/PKGBUILD index cdff28667..f7413656d 100644 --- a/arch-packages/illogical-impulse-widgets/PKGBUILD +++ b/arch-packages/illogical-impulse-widgets/PKGBUILD @@ -7,10 +7,11 @@ license=(None) depends=( dart-sass hypridle - hyprutils + hyprutils hyprlock wlogout wl-clipboard hyprpicker nm-connection-editor + better-control-git ) From 13cb540e49865475637e8461ce5c47e86bb7bef6 Mon Sep 17 00:00:00 2001 From: Souyama Date: Wed, 21 May 2025 08:20:05 +0530 Subject: [PATCH 64/77] Update switchwall.sh Updated video image --- .../scripts/color_generation/switchwall.sh | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/.config/ags/scripts/color_generation/switchwall.sh b/.config/ags/scripts/color_generation/switchwall.sh index e3ab24ded..e7440889a 100755 --- a/.config/ags/scripts/color_generation/switchwall.sh +++ b/.config/ags/scripts/color_generation/switchwall.sh @@ -1,16 +1,16 @@ #!/usr/bin/env bash XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" +XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}" CONFIG_DIR="$XDG_CONFIG_HOME/ags" +CACHE_DIR="$XDG_CACHE_HOME/ags" -THUMBNAIL_DIR="/tmp/mpvpaper_thumbnails" CUSTOM_DIR="$XDG_CONFIG_HOME/hypr/custom" RESTORE_SCRIPT_DIR="$CUSTOM_DIR/scripts" RESTORE_SCRIPT="$RESTORE_SCRIPT_DIR/__restore_video_wallpaper.sh" VIDEO_OPTS="no-audio loop hwdec=auto scale=bilinear interpolation=no video-sync=display-resample panscan=1.0 video-scale-x=1.0 video-scale-y=1.0 video-align-x=0.5 video-align-y=0.5" -mkdir -p "$THUMBNAIL_DIR" mkdir -p "$RESTORE_SCRIPT_DIR" is_video() { @@ -19,8 +19,8 @@ is_video() { } kill_existing_mpvpaper() { - # Abort all mpvpapers' instance - pkill -f -9 mpvpaper || true + # Abort all mpvpapers' instance + pkill -f -9 mpvpaper || true } create_restore_script() { @@ -34,8 +34,8 @@ create_restore_script() { pkill -f -9 mpvpaper for monitor in \$(hyprctl monitors -j | jq -r '.[] | .name'); do - mpvpaper -o "$VIDEO_OPTS" "\$monitor" "$video_path" & - sleep 0.1 + mpvpaper -o "$VIDEO_OPTS" "\$monitor" "$video_path" & + sleep 0.1 done EOF @@ -94,12 +94,17 @@ switch() { sleep 0.1 done - # We take the first frame of video to colorgen - thumbnail="$THUMBNAIL_DIR/$(basename "$imgpath").jpg" + # We take the first frame of video to colorgen and swww + thumbnail="$CACHE_DIR"/user/generated/mpvpaper_thumbnail.jpg ffmpeg -y -i "$imgpath" -vframes 1 "$thumbnail" 2>/dev/null if [ -f "$thumbnail" ]; then + # Apply swww wallpaper using the thumbnail + swww img "$thumbnail" --transition-step 100 --transition-fps 120 \ + --transition-type grow --transition-angle 30 --transition-duration 1 \ + --transition-pos "$cursorposx, $cursorposy_inverted" "$CONFIG_DIR"/scripts/color_generation/colorgen.sh "$thumbnail" --apply --smart + create_restore_script "$video_path" else echo "Cannot create image to colorgen" @@ -128,6 +133,6 @@ elif [[ "$1" ]]; then else # Select and set image (hyprland) - cd "$(xdg-user-dir PICTURES)/Wallpapers" || cd "$(xdg-user-dir PICTURES)" || return 1 + cd "$(xdg-user-dir PICTURES)/Wallpapers" || cd "$(xdg-user-dir PICTURES)" || return 1 switch "$(yad --width 1200 --height 800 --file --add-preview --large-preview --title='Choose wallpaper')" fi From e85822c811f1ec5af2a60c68409a46a78f76376b Mon Sep 17 00:00:00 2001 From: Nakii46 <114650371+Nakii46@users.noreply.github.com> Date: Wed, 21 May 2025 15:32:30 +0200 Subject: [PATCH 65/77] Fix ddcutil to fall back to binary serial number Fix ddcutil to fall back to binary serial number if no serial number is found for a display. Also it will ignore duplicate entries that can happen when a monitor is connected via DisplayPort (More info: https://www.ddcutil.com/faq/#duplicate_displayport) --- .config/ags/services/brightness.js | 37 ++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/.config/ags/services/brightness.js b/.config/ags/services/brightness.js index 4f0e59761..86962d83c 100644 --- a/.config/ags/services/brightness.js +++ b/.config/ags/services/brightness.js @@ -90,27 +90,44 @@ class BrightnessDdcService extends BrightnessServiceBase { async function listDdcMonitorsSnBus() { let ddcSnBus = {}; try { - const out = await Utils.execAsync('ddcutil detect --brief'); + // Its' better not to use --brief. This way if a serial number is not + // found we can still use the binary serial number as an alternative + const out = await Utils.execAsync('ddcutil detect'); const displays = out.split('\n\n'); displays.forEach(display => { - const reg = /^Display \d+/; - if (!reg.test(display)) + const reg = /[Dd]isplay/; + if (!reg.test(display)) { return; + } const lines = display.split('\n'); let sn, busNum; + let unresponsive = false; for (let line of lines) { line = line.trim() - if (line.startsWith('Monitor:')) { - sn = line.split(':')[3]; + + // Sometimes ddcutils will report a DP monitor twice, one of the + // two copies of the monitor will "not support DDC/CI". Just ignore it + // See https://www.ddcutil.com/faq/#duplicate_displayport + if (line.includes('unresponsive')) { + unresponsive = true; + } + if (line.startsWith('Serial')) { + sn = line.split(':')[1].trim(); + // Sometimes sn can be empty. In this cases let's relay on binary sn + } else if (line.startsWith('Binary') && !sn) { + // Make the serial number upper case except for the leading '0x' since Hyperland + // seems to use upper case for the rest of the string and ddcutil uses + // lower case for all the binary sn + sn = '0x'+line.split('(')[1].slice(2,-1).toUpperCase(); } else if (line.startsWith('I2C bus:')) { busNum = line.split('/dev/i2c-')[1]; } } - if (sn && busNum) + if (sn && busNum && !unresponsive){ ddcSnBus[sn] = busNum; + } }); } catch (err) { - print(err); } return ddcSnBus; } @@ -133,10 +150,12 @@ for (let i = 0; i < service.length; i++) { service[i] = new BrightnessDdcService(ddcSnBus[monitorSn]); break; case "auto": - if (monitorSn in ddcSnBus && !!exec(`bash -c 'command -v ddcutil'`)) + if (monitorSn in ddcSnBus && !!exec(`bash -c 'command -v ddcutil'`)){ service[i] = new BrightnessDdcService(ddcSnBus[monitorSn]); - else + } + else { service[i] = new BrightnessCtlService(); + } break; default: throw new Error(`Unknown brightness controller ${preferredController}`); From 24276cdf932efda23e11ae53e2acea720971e614 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Wed, 21 May 2025 22:14:02 +0200 Subject: [PATCH 66/77] keybinds: replace gnome settings with better control --- .config/hypr/hyprland/keybinds.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/hypr/hyprland/keybinds.conf b/.config/hypr/hyprland/keybinds.conf index 5d3b89ece..c2ce766d7 100644 --- a/.config/hypr/hyprland/keybinds.conf +++ b/.config/hypr/hyprland/keybinds.conf @@ -206,12 +206,12 @@ bind = Super, W, exec, google-chrome-stable || firefox # [hidden] Let's not give bind = Ctrl+Super, W, exec, firefox # Launch Firefox (browser) bind = Super, X, exec, gnome-text-editor --new-window # Launch GNOME Text Editor bind = Super+Shift, W, exec, wps # Launch WPS Office -bind = Super, I, exec, XDG_CURRENT_DESKTOP="gnome" gnome-control-center # Launch GNOME Settings bind = Ctrl+Super, V, exec, pavucontrol # Launch pavucontrol (volume mixer) bind = Ctrl+Super+Shift, V, exec, easyeffects # Launch EasyEffects (equalizer & other audio effects) bind = Ctrl+Shift, Escape, exec, gnome-system-monitor # Launch GNOME System monitor bind = Ctrl+Super, Slash, exec, pkill anyrun || anyrun # Toggle fallback launcher: anyrun bind = Super+Alt, Slash, exec, pkill fuzzel || fuzzel # Toggle fallback launcher: fuzzel +bind = Super, I, exec, better-control # Better Control (settings app) # Cursed stuff ## Make window not amogus large From 51b285b831ad7c9934be256090449839b3305712 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Thu, 22 May 2025 00:49:34 +0200 Subject: [PATCH 67/77] add qt6ct config --- .config/qt6ct/qt6ct.conf | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .config/qt6ct/qt6ct.conf diff --git a/.config/qt6ct/qt6ct.conf b/.config/qt6ct/qt6ct.conf new file mode 100644 index 000000000..e8163baa7 --- /dev/null +++ b/.config/qt6ct/qt6ct.conf @@ -0,0 +1,32 @@ +[Appearance] +color_scheme_path=/home/end/.config/qt6ct/style-colors.conf +custom_palette=true +icon_theme=OneUI +standard_dialogs=default +style=kvantum + +[Fonts] +fixed="JetBrainsMono Nerd Font,11,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular" +general="Rubik,11,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular" + +[Interface] +activate_item_on_single_click=1 +buttonbox_layout=0 +cursor_flash_time=1000 +dialog_buttons_have_icons=1 +double_click_interval=400 +gui_effects=@Invalid() +keyboard_scheme=2 +menus_have_icons=true +show_shortcuts_in_context_menus=true +stylesheets=@Invalid() +toolbutton_style=4 +underline_shortcut=1 +wheel_scroll_lines=3 + +[SettingsWindow] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\as\0\0\x4\x3\0\0\0\0\0\0\0\0\0\0\as\0\0\x4\x3\0\0\0\0\x2\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\as\0\0\x4\x3) + +[Troubleshooting] +force_raster_widgets=1 +ignored_applications=@Invalid() From b3e339c60f549cd12927fd75605d4708305164b7 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sat, 24 May 2025 10:05:54 +0200 Subject: [PATCH 68/77] fix hyprland spelling --- .config/ags/services/brightness.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/ags/services/brightness.js b/.config/ags/services/brightness.js index 86962d83c..1800d162d 100644 --- a/.config/ags/services/brightness.js +++ b/.config/ags/services/brightness.js @@ -115,7 +115,7 @@ async function listDdcMonitorsSnBus() { sn = line.split(':')[1].trim(); // Sometimes sn can be empty. In this cases let's relay on binary sn } else if (line.startsWith('Binary') && !sn) { - // Make the serial number upper case except for the leading '0x' since Hyperland + // Make the serial number upper case except for the leading '0x' since Hyprland // seems to use upper case for the rest of the string and ddcutil uses // lower case for all the binary sn sn = '0x'+line.split('(')[1].slice(2,-1).toUpperCase(); From 5afc4bc41e2b35d369ea057f805a74d3ed2ccf5f Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 25 May 2025 07:46:27 +0200 Subject: [PATCH 69/77] hypridle: allow suspending when steam is running (fixes #1319) --- .config/hypr/hypridle.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/hypr/hypridle.conf b/.config/hypr/hypridle.conf index a11179d01..db2ea6082 100644 --- a/.config/hypr/hypridle.conf +++ b/.config/hypr/hypridle.conf @@ -1,5 +1,5 @@ $lock_cmd = pidof hyprlock || hyprlock -$suspend_cmd = pidof steam || systemctl suspend || loginctl suspend # fuck nvidia +$suspend_cmd = systemctl suspend || loginctl suspend general { lock_cmd = $lock_cmd From 9cce9edf17462ce4c98fc9638209a054da171f3a Mon Sep 17 00:00:00 2001 From: Greyfeather Date: Sun, 25 May 2025 02:13:33 -0600 Subject: [PATCH 70/77] remove redundant null check on music.js --- .config/ags/modules/bar/normal/music.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.config/ags/modules/bar/normal/music.js b/.config/ags/modules/bar/normal/music.js index e43d7e4a0..88c9bf816 100644 --- a/.config/ags/modules/bar/normal/music.js +++ b/.config/ags/modules/bar/normal/music.js @@ -2,7 +2,7 @@ const { GLib } = imports.gi; import Widget from 'resource:///com/github/Aylur/ags/widget.js'; import * as Utils from 'resource:///com/github/Aylur/ags/utils.js'; import Mpris from 'resource:///com/github/Aylur/ags/service/mpris.js'; -const { Box, Button, EventBox, Label, Overlay, Revealer, Scrollable } = Widget; +const { Box, Button, EventBox, Label, Overlay, Revealer } = Widget; const { execAsync, exec } = Utils; import { AnimatedCircProg } from "../../.commonwidgets/cairo_circularprogress.js"; import { MaterialIcon } from '../../.commonwidgets/materialicon.js'; @@ -136,8 +136,8 @@ export default () => { setup: (self) => self.hook(Mpris, label => { const mpris = Mpris.getPlayer(''); if (!mpris) return; - label.toggleClassName('bar-music-playstate-playing', mpris !== null && mpris.playBackStatus == 'Playing'); - label.toggleClassName('bar-music-playstate', mpris !== null || mpris.playBackStatus == 'Paused'); + label.toggleClassName('bar-music-playstate-playing', mpris.playBackStatus == 'Playing'); + label.toggleClassName('bar-music-playstate', mpris.playBackStatus == 'Paused'); }), }), overlays: [ From c6ff825aa59323a8cc36c3da586fd02f106d3576 Mon Sep 17 00:00:00 2001 From: Et3rnos <57318423+Et3rnos@users.noreply.github.com> Date: Mon, 26 May 2025 21:42:11 +0100 Subject: [PATCH 71/77] fixed gpt (openrouter) service logic --- .config/ags/services/gpt.js | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/.config/ags/services/gpt.js b/.config/ags/services/gpt.js index ab4851e5a..02d487564 100644 --- a/.config/ags/services/gpt.js +++ b/.config/ags/services/gpt.js @@ -76,7 +76,7 @@ installedOllamaModels.forEach(model => { // Custom prompt const initMessages = [ - { role: "user", content: getString("You are an assistant on a sidebar of a Wayland Linux desktop. Please always use a casual tone when answering your questions, unless requested otherwise or making writing suggestions. These are the steps you should take to respond to the user's queries:\n1. If it's a writing- or grammar-related question or a sentence in quotation marks, Please point out errors and correct when necessary using underlines, and make the writing more natural where appropriate without making too major changes. If you're given a sentence in quotes but is grammatically correct, explain briefly concepts that are uncommon.\n2. If it's a question about system tasks, give a bash command in a code block with brief explanation.\n3. Otherwise, when asked to summarize information or explaining concepts, you are should use bullet points and headings. For mathematics expressions, you *have to* use LaTeX within a code block with the language set as \"latex\". \nNote: Use casual language, be short, while ensuring the factual correctness of your response. If you are unsure or don’t have enough information to provide a confident answer, simply say “I don’t know” or “I’m not sure.”. \nThanks!"), }, + { role: "user", content: getString("You are an assistant on a sidebar of a Wayland Linux desktop. Please always use a casual tone when answering your questions, unless requested otherwise or making writing suggestions. These are the steps you should take to respond to the user's queries:\n1. If it's a writing- or grammar-related question or a sentence in quotation marks, Please point out errors and correct when necessary using underlines, and make the writing more natural where appropriate without making too major changes. If you're given a sentence in quotes but is grammatically correct, explain briefly concepts that are uncommon.\n2. If it's a question about system tasks, give a bash command in a code block with brief explanation.\n3. Otherwise, when asked to summarize information or explaining concepts, you are should use bullet points and headings. For mathematics expressions, you *have to* use LaTeX within a code block with the language set as \"latex\". \nNote: Use casual language, be short, while ensuring the factual correctness of your response. If you are unsure or don't have enough information to provide a confident answer, simply say \"I don't know\" or \"I'm not sure.\". \nThanks!") }, { role: "assistant", content: "- Got it!", }, { role: "user", content: "\"He rushed to where the event was supposed to be hold, he didn't know it got canceled\"", }, { role: "assistant", content: "## Grammar correction\nErrors:\n\"He rushed to where the event was supposed to be __hold____,__ he didn't know it got canceled\"\nCorrection + minor improvements:\n\"He rushed to the place where the event was supposed to be __held____, but__ he didn't know that it got canceled\"", }, @@ -259,11 +259,22 @@ class GPTService extends Service { const [bytes] = stream.read_line_finish(res); const line = this._decoder.decode(bytes); if (line && line != '') { + + // Ignore SSE comments (lines starting with ":") + if (line.startsWith(':')) { + this.readResponse(stream, aiResponse); + return; + } + let data = line.substr(6); if (data == '[DONE]') return; try { const result = JSON.parse(data); if (result.choices[0].finish_reason === 'stop') { + // If the stop payload has content, add it to the response + if (result.choices[0].delta.content) { + aiResponse.addDelta(result.choices[0].delta.content); + } aiResponse.done = true; return; } @@ -333,17 +344,4 @@ class GPTService extends Service { } } -export default new GPTService(); - - - - - - - - - - - - - +export default new GPTService(); \ No newline at end of file From adce55865ec560c3040a383384b74b82dd48bb07 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 27 May 2025 22:24:48 +0200 Subject: [PATCH 72/77] Revert "use bettercontrol for settings app (#1278)" This reverts commit cfe48fb0a15ee9ddf37f9e53562f5fbc13bbc598. --- .config/ags/modules/.configuration/default_options.jsonc | 6 +++--- arch-packages/illogical-impulse-gnome/PKGBUILD | 2 +- arch-packages/illogical-impulse-widgets/PKGBUILD | 3 +-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/.config/ags/modules/.configuration/default_options.jsonc b/.config/ags/modules/.configuration/default_options.jsonc index c9912c938..ef19f14e4 100644 --- a/.config/ags/modules/.configuration/default_options.jsonc +++ b/.config/ags/modules/.configuration/default_options.jsonc @@ -46,10 +46,10 @@ "fakeScreenRounding": 2 // 0: None | 1: Always | 2: When not fullscreen }, "apps": { - "bluetooth": "better-control --bluetooth", + "bluetooth": "blueberry", "imageViewer": "loupe", - "network": "better-control --wifi", - "settings": "better-control", + "network": "XDG_CURRENT_DESKTOP=\"gnome\" gnome-control-center wifi", + "settings": "XDG_CURRENT_DESKTOP=\"gnome\" gnome-control-center", "taskManager": "gnome-usage", "terminal": "foot" // This is only for shell actions }, diff --git a/arch-packages/illogical-impulse-gnome/PKGBUILD b/arch-packages/illogical-impulse-gnome/PKGBUILD index 529ff0b14..33af4b8ba 100644 --- a/arch-packages/illogical-impulse-gnome/PKGBUILD +++ b/arch-packages/illogical-impulse-gnome/PKGBUILD @@ -8,5 +8,5 @@ depends=( polkit-gnome gnome-keyring gnome-control-center - networkmanager + blueberry networkmanager ) diff --git a/arch-packages/illogical-impulse-widgets/PKGBUILD b/arch-packages/illogical-impulse-widgets/PKGBUILD index f7413656d..cdff28667 100644 --- a/arch-packages/illogical-impulse-widgets/PKGBUILD +++ b/arch-packages/illogical-impulse-widgets/PKGBUILD @@ -7,11 +7,10 @@ license=(None) depends=( dart-sass hypridle - hyprutils + hyprutils hyprlock wlogout wl-clipboard hyprpicker nm-connection-editor - better-control-git ) From e9485f0b8a87dab5bbb1853c1a3b332910775fda Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 27 May 2025 22:25:50 +0200 Subject: [PATCH 73/77] Revert "keybinds: replace gnome settings with better control" This reverts commit 24276cdf932efda23e11ae53e2acea720971e614. --- .config/hypr/hyprland/keybinds.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/hypr/hyprland/keybinds.conf b/.config/hypr/hyprland/keybinds.conf index c2ce766d7..5d3b89ece 100644 --- a/.config/hypr/hyprland/keybinds.conf +++ b/.config/hypr/hyprland/keybinds.conf @@ -206,12 +206,12 @@ bind = Super, W, exec, google-chrome-stable || firefox # [hidden] Let's not give bind = Ctrl+Super, W, exec, firefox # Launch Firefox (browser) bind = Super, X, exec, gnome-text-editor --new-window # Launch GNOME Text Editor bind = Super+Shift, W, exec, wps # Launch WPS Office +bind = Super, I, exec, XDG_CURRENT_DESKTOP="gnome" gnome-control-center # Launch GNOME Settings bind = Ctrl+Super, V, exec, pavucontrol # Launch pavucontrol (volume mixer) bind = Ctrl+Super+Shift, V, exec, easyeffects # Launch EasyEffects (equalizer & other audio effects) bind = Ctrl+Shift, Escape, exec, gnome-system-monitor # Launch GNOME System monitor bind = Ctrl+Super, Slash, exec, pkill anyrun || anyrun # Toggle fallback launcher: anyrun bind = Super+Alt, Slash, exec, pkill fuzzel || fuzzel # Toggle fallback launcher: fuzzel -bind = Super, I, exec, better-control # Better Control (settings app) # Cursed stuff ## Make window not amogus large From f1cee494942d566e55922a548f048b20519dcf3b Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Wed, 28 May 2025 08:55:08 +0200 Subject: [PATCH 74/77] ai: remove openai (addresses #1335) --- .config/ags/services/gpt.js | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/.config/ags/services/gpt.js b/.config/ags/services/gpt.js index 02d487564..9279af0b1 100644 --- a/.config/ags/services/gpt.js +++ b/.config/ags/services/gpt.js @@ -44,16 +44,6 @@ const PROVIDERS = Object.assign({ "key_file": "openrouter_key.txt", "model": "meta-llama/llama-3-70b-instruct", }, - "openai": { - "name": "OpenAI - GPT-3.5", - "logo_name": "openai-symbolic", - "description": getString('Official OpenAI API.\nPricing: Free for the first $5 or 3 months, whichever is less.'), - "base_url": "https://api.openai.com/v1/chat/completions", - "key_get_url": "https://platform.openai.com/api-keys", - "requires_key": true, - "key_file": "openai_key.txt", - "model": "gpt-3.5-turbo", - }, }, userOptions.ai.extraGptModels) const installedOllamaModels = JSON.parse( From e08230cf699b38bb552cda9b452a9f759d83a3c6 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 1 Jun 2025 20:28:50 +0200 Subject: [PATCH 75/77] readme: more emphasis on new quickshell version and less on reporting issues with ags version --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 33d56f87f..06fb93979 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,8 @@
Help improve these dotfiles - - New: Try the [Quickshell](https://quickshell.outfoxxed.me/)-powered version at [`ii-qs` branch](https://github.com/end-4/dots-hyprland/tree/ii-qs) - - Join the [discussions](https://github.com/end-4/dots-hyprland/discussions) - - If you'd like to suggest fixes or a new widget, feel free to [open an issue](https://github.com/end-4/dots-hyprland/issues/new/choose) + - New: Try the Quickshell-powered version at [`ii-qs` branch](https://github.com/end-4/dots-hyprland/tree/ii-qs) - It comes with major improvements, and you're free to make suggestions 👉 [#1276](https://github.com/end-4/dots-hyprland/pull/1276) +
From ea8f06b632060afe602a51237f43004800b4f7e1 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 1 Jun 2025 20:29:28 +0200 Subject: [PATCH 76/77] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 06fb93979..0c3a78267 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@
Help improve these dotfiles - - New: Try the Quickshell-powered version at [`ii-qs` branch](https://github.com/end-4/dots-hyprland/tree/ii-qs) - It comes with major improvements, and you're free to make suggestions 👉 [#1276](https://github.com/end-4/dots-hyprland/pull/1276) + - Try the Quickshell-powered version at [`ii-qs` branch](https://github.com/end-4/dots-hyprland/tree/ii-qs) - It comes with major improvements, and you're free to make suggestions 👉 [#1276](https://github.com/end-4/dots-hyprland/pull/1276)
From e5b920550b6c155c3bdc560008f207028eba0e36 Mon Sep 17 00:00:00 2001 From: D7OM <61534551+d7omdev@users.noreply.github.com> Date: Sun, 1 Jun 2025 22:07:28 +0300 Subject: [PATCH 77/77] fix: correct ags package name in uninstall.sh --- uninstall.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uninstall.sh b/uninstall.sh index a2fbbfcc2..390092bf7 100755 --- a/uninstall.sh +++ b/uninstall.sh @@ -54,6 +54,6 @@ v sudo rm /etc/modules-load.d/i2c-dev.conf read -p "Do you want to uninstall packages used by the dotfiles?\nCtrl+C to exit, or press Enter to proceed" # Removing installed yay packages and dependencies -v yay -Rns illogical-impulse-{ags,audio,backlight,basic,bibata-modern-classic-bin,fonts-themes,gnome,gtk,hyprland,microtex-git,oneui4-icons-git,portal,python,screencapture,widgets} plasma-browser-integration +v yay -Rns illogical-impulse-{agsv1,audio,backlight,basic,bibata-modern-classic-bin,fonts-themes,gnome,gtk,hyprland,microtex-git,oneui4-icons-git,portal,python,screencapture,widgets} plasma-browser-integration printf '\e[36mUninstall Complete.\n\e[97m'