From a6f1560bcebb7538aee20452575de62e49c21691 Mon Sep 17 00:00:00 2001 From: jwihardi Date: Tue, 4 Nov 2025 01:17:33 -0500 Subject: [PATCH 001/107] added songrec --- .../illogical-impulse-widgets-1.0-r2.ebuild | 25 ------- .../illogical-impulse-widgets-1.0-r3.ebuild | 67 +++++++++++++++++++ 2 files changed, 67 insertions(+), 25 deletions(-) delete mode 100644 sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r2.ebuild create mode 100644 sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r3.ebuild diff --git a/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r2.ebuild b/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r2.ebuild deleted file mode 100644 index fe6109223..000000000 --- a/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r2.ebuild +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -DESCRIPTION="Illogicall Impulse Widget Dependencies" -HOMEPAGE="" - -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="~amd64 ~arm64 ~x86" -RESTRICT="strip" - -DEPEND="" -RDEPEND=" - gui-apps/fuzzel - dev-libs/glib - media-gfx/imagemagick - gui-apps/hypridle - gui-libs/hyprutils - gui-apps/hyprlock - gui-apps/hyprpicker - app-i18n/translate-shell - gui-apps/wlogout -" diff --git a/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r3.ebuild b/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r3.ebuild new file mode 100644 index 000000000..c54730525 --- /dev/null +++ b/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r3.ebuild @@ -0,0 +1,67 @@ +# Copyright 2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +SONGREC_VER="0.4.3" + +DESCRIPTION="Illogicall Impulse Widget Dependencies" +HOMEPAGE="" +SRC_URI="https://github.com/marin-m/SongRec/archive/${SONGREC_VER}.tar.gz -> ${P}-SongRec.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +# need for cargo fetch, idk how to get around it if possible +RESTRICT="strip network-sandbox" + +DEPEND="" +RDEPEND=" + gui-apps/fuzzel + dev-libs/glib + media-gfx/imagemagick + gui-apps/hypridle + gui-libs/hyprutils + gui-apps/hyprlock + gui-apps/hyprpicker + app-i18n/translate-shell + gui-apps/wlogout +" + +S="${WORKDIR}/SongRec-${SONGREC_VER}" + +src_prepare() { + default + export CARGO_HOME="${WORKDIR}/cargo" + cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')" +} + +src_compile() { + export CARGO_HOME="${WORKDIR}/cargo" + cargo build --release --frozen --offline + +} + +src_install() { + dobin target/release/songrec + insinto /usr/share/applications + + doins packaging/rootfs/usr/share/applications/com.github.marinm.songrec.desktop + + insinto /usr/share/icons/hicolor/scalable/apps + doins packaging/rootfs/usr/share/icons/hicolor/scalable/apps/com.github.marinm.songrec.svg + + insinto /usr/share/metainfo + doins packaging/rootfs/usr/share/metainfo/com.github.marinm.songrec.metainfo.xml + + insinto /usr/share/songrec/translations + doins -r translations/* + + dodoc README.md +} + + + + + + From 90a4e2128b438cf119de15e9c9fff2700a56537a Mon Sep 17 00:00:00 2001 From: jwihardi Date: Tue, 4 Nov 2025 01:20:03 -0500 Subject: [PATCH 002/107] fixed spacing --- .../illogical-impulse-widgets-1.0-r3.ebuild | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r3.ebuild b/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r3.ebuild index c54730525..e773dae6f 100644 --- a/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r3.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r3.ebuild @@ -46,7 +46,7 @@ src_install() { dobin target/release/songrec insinto /usr/share/applications - doins packaging/rootfs/usr/share/applications/com.github.marinm.songrec.desktop + doins packaging/rootfs/usr/share/applications/com.github.marinm.songrec.desktop insinto /usr/share/icons/hicolor/scalable/apps doins packaging/rootfs/usr/share/icons/hicolor/scalable/apps/com.github.marinm.songrec.svg From 1924111d6b4bb0a2a831e1b1e01b7b684ef772fc Mon Sep 17 00:00:00 2001 From: jwihardi Date: Wed, 5 Nov 2025 00:06:08 -0500 Subject: [PATCH 003/107] added some font ebuilds --- .../local-pkgs/breeze-plus-6.2.5-r1.ebuild | 22 ++++++++ .../local-pkgs/darkly-0.5.24-r1.ebuild | 54 +++++++++++++++++++ .../local-pkgs/gabarito-9999.ebuild | 22 ++++++++ .../local-pkgs/readex-pro-1.0.ebuild | 21 ++++++++ .../local-pkgs/rubik-vf-1.0.ebuild | 26 +++++++++ 5 files changed, 145 insertions(+) create mode 100644 sdata/dist-gentoo/local-pkgs/breeze-plus-6.2.5-r1.ebuild create mode 100644 sdata/dist-gentoo/local-pkgs/darkly-0.5.24-r1.ebuild create mode 100644 sdata/dist-gentoo/local-pkgs/gabarito-9999.ebuild create mode 100644 sdata/dist-gentoo/local-pkgs/readex-pro-1.0.ebuild create mode 100644 sdata/dist-gentoo/local-pkgs/rubik-vf-1.0.ebuild diff --git a/sdata/dist-gentoo/local-pkgs/breeze-plus-6.2.5-r1.ebuild b/sdata/dist-gentoo/local-pkgs/breeze-plus-6.2.5-r1.ebuild new file mode 100644 index 000000000..78e3a1a7a --- /dev/null +++ b/sdata/dist-gentoo/local-pkgs/breeze-plus-6.2.5-r1.ebuild @@ -0,0 +1,22 @@ +# Copyright 2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="Breeze styled extra icon theme for KDE" +HOMEPAGE="https://github.com/mjkim0727/breeze-plus" +SRC_URI="https://github.com/mjkim0727/breeze-plus/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="LGPL-2.1" +SLOT="0" +KEYWORDS="~amd64 ~x86" +RDEPEND="kde-plasma/breeze" +BDEPEND="" + +S="${WORKDIR}/${PN}-${PV}" + +src_install() { + insinto /usr/share/icons + doins -r src/breeze-plus* +} + diff --git a/sdata/dist-gentoo/local-pkgs/darkly-0.5.24-r1.ebuild b/sdata/dist-gentoo/local-pkgs/darkly-0.5.24-r1.ebuild new file mode 100644 index 000000000..828c7b976 --- /dev/null +++ b/sdata/dist-gentoo/local-pkgs/darkly-0.5.24-r1.ebuild @@ -0,0 +1,54 @@ +# Copyright 2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# NOTE: Did not include QT5 backwards compatibility + +inherit cmake + +DESCRIPTION="Fork of Lightly - A modern style for Qt applications" +HOMEPAGE="https://github.com/Bali10050/Darkly" +SRC_URI="https://github.com/Bali10050/darkly/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="GPL-2+" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" + +DEPEND=" + kde-frameworks/kcoreaddons:6 + kde-frameworks/kconfig:6 + kde-frameworks/kguiaddons:6 + kde-frameworks/ki18n:6 + kde-frameworks/kiconthemes:6 + kde-frameworks/kwindowsystem:6 + kde-frameworks/kcmutils:6 + kde-frameworks/frameworkintegration:6 + kde-frameworks/kconfigwidgets:6 + kde-plasma/kdecoration:6 + dev-qt/qtdeclarative:6 +" +RDEPEND="${DEPEND}" + +BDEPEND=" + dev-build/cmake + kde-frameworks/extra-cmake-modules + dev-vcs/git +" + +S="${WORKDIR}/Darkly-${PV}" + +src_configure() { + local mycmakeargs=( + -DBUILD_TESTING=OFF + -DBUILD_QT5=OFF + -DBUILD_QT6=ON + ) + cmake_src_configure +} + +src_install() { + cmake_src_install + rm -rf "${ED}/usr/$(get_libdir)/cmake" || die +} + diff --git a/sdata/dist-gentoo/local-pkgs/gabarito-9999.ebuild b/sdata/dist-gentoo/local-pkgs/gabarito-9999.ebuild new file mode 100644 index 000000000..b0813dcb0 --- /dev/null +++ b/sdata/dist-gentoo/local-pkgs/gabarito-9999.ebuild @@ -0,0 +1,22 @@ +# Copyright 2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit font git-r3 + +DESCRIPTION="Illogical Impulse Fonts and Theming Dependencies" +HOMEPAGE="" +EGIT_REPO_URI="https://github.com/naipefoundry/gabarito" + +LICENSE="OFL-1.1" +SLOT="0" +KEYWORDS="" + +FONT_S="${S}/fonts/ttf" +FONT_SUFFIX="ttf" + +src_install() { + font_src_install + dodoc OFL.txt +} diff --git a/sdata/dist-gentoo/local-pkgs/readex-pro-1.0.ebuild b/sdata/dist-gentoo/local-pkgs/readex-pro-1.0.ebuild new file mode 100644 index 000000000..e09c6752c --- /dev/null +++ b/sdata/dist-gentoo/local-pkgs/readex-pro-1.0.ebuild @@ -0,0 +1,21 @@ +# Copyright 2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit font + +DESCRIPTION="Illogical Impulse Fonts and Theming Dependencies" +HOMEPAGE="" +SRC_URI="https://github.com/ThomasJockin/readexpro/archive/refs/heads/master.tar.gz -> ${P}-readexpro.tar.gz" +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +RESTRICT="strip" + +S="${WORKDIR}/readexpro-master" + +src_install() { + insinto /usr/share/fonts/ttf-readex-pro + doins "${S_READEXPRO}"/fonts/ttf/*.ttf +} diff --git a/sdata/dist-gentoo/local-pkgs/rubik-vf-1.0.ebuild b/sdata/dist-gentoo/local-pkgs/rubik-vf-1.0.ebuild new file mode 100644 index 000000000..e93b4df12 --- /dev/null +++ b/sdata/dist-gentoo/local-pkgs/rubik-vf-1.0.ebuild @@ -0,0 +1,26 @@ +# Copyright 2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +COMMIT="e337a5f69a9bea30e58d05bd40184d79cc099628" + +inherit font + +DESCRIPTION="A sans serif font family with slightly rounded corners: variable font version" +HOMEPAGE="https://github.com/googlefonts/rubik" +SRC_URI="https://github.com/googlefonts/rubik/archive/${COMMIT}.tar.gz -> ${P}.tar.gz" + +LICENSE="OFL-1.1" +SLOT="0" + +S="${WORKDIR}/rubik-${COMMIT}" + +FONT_S="${S}/fonts/variable" +FONT_SUFFIX="ttf" + +src_install() { + font_src_install + dodoc OFL.txt AUTHORS.txt CONTRIBUTORS.txt +} + From fa08f972d650bae8c38ed7ca77447abd128261fc Mon Sep 17 00:00:00 2001 From: jwihardi Date: Fri, 7 Nov 2025 01:27:45 -0500 Subject: [PATCH 004/107] use new ebuilds --- ...-bibata-modern-classic-bin-2.0.6-r1.ebuild | 3 +- ...logical-impulse-fonts-themes-1.0-r1.ebuild | 86 ++++--------------- ...logical-impulse-microtex-git-1.0-r1.ebuild | 3 +- ...cal-impulse-oneui4-icons-git-1.0-r1.ebuild | 2 +- .../illogical-impulse-widgets-1.0-r3.ebuild | 47 +--------- sdata/dist-gentoo/import-local-pkgs.sh | 33 +++++++ sdata/dist-gentoo/install-deps.sh | 26 +----- sdata/dist-gentoo/keywords | 7 ++ .../breeze-plus-6.2.5-r1.ebuild | 2 +- .../darkly-0.5.24-r1.ebuild | 0 .../gabarito-9999.ebuild | 0 .../material-symbols-variable-9999.ebuild | 40 +++++++++ .../readex-pro-1.0-r1.ebuild} | 2 +- .../rubik-vf-1.0-r1.ebuild} | 1 + .../space-grotesk-1.1.4-r1.ebuild | 28 ++++++ .../hyprland}/hyprgraphics-9999.ebuild | 0 .../hyprland}/hyprland-qt-support-9999.ebuild | 0 .../hyprland}/hyprland-qtutils-9999.ebuild | 0 .../hyprland}/hyprlang-9999.ebuild | 0 .../hyprland}/hyprwayland-scanner-9999.ebuild | 0 .../widgets/songrec-0.4.3-r1.ebuild | 48 +++++++++++ 21 files changed, 186 insertions(+), 142 deletions(-) create mode 100644 sdata/dist-gentoo/import-local-pkgs.sh rename sdata/dist-gentoo/local-pkgs/{ => fonts-and-themes}/breeze-plus-6.2.5-r1.ebuild (94%) rename sdata/dist-gentoo/local-pkgs/{ => fonts-and-themes}/darkly-0.5.24-r1.ebuild (100%) rename sdata/dist-gentoo/local-pkgs/{ => fonts-and-themes}/gabarito-9999.ebuild (100%) create mode 100644 sdata/dist-gentoo/local-pkgs/fonts-and-themes/material-symbols-variable-9999.ebuild rename sdata/dist-gentoo/local-pkgs/{readex-pro-1.0.ebuild => fonts-and-themes/readex-pro-1.0-r1.ebuild} (92%) rename sdata/dist-gentoo/local-pkgs/{rubik-vf-1.0.ebuild => fonts-and-themes/rubik-vf-1.0-r1.ebuild} (95%) create mode 100644 sdata/dist-gentoo/local-pkgs/fonts-and-themes/space-grotesk-1.1.4-r1.ebuild rename sdata/dist-gentoo/{illogical-impulse-hyprland => local-pkgs/hyprland}/hyprgraphics-9999.ebuild (100%) rename sdata/dist-gentoo/{illogical-impulse-hyprland => local-pkgs/hyprland}/hyprland-qt-support-9999.ebuild (100%) rename sdata/dist-gentoo/{illogical-impulse-hyprland => local-pkgs/hyprland}/hyprland-qtutils-9999.ebuild (100%) rename sdata/dist-gentoo/{illogical-impulse-hyprland => local-pkgs/hyprland}/hyprlang-9999.ebuild (100%) rename sdata/dist-gentoo/{illogical-impulse-hyprland => local-pkgs/hyprland}/hyprwayland-scanner-9999.ebuild (100%) create mode 100644 sdata/dist-gentoo/local-pkgs/widgets/songrec-0.4.3-r1.ebuild diff --git a/sdata/dist-gentoo/illogical-impulse-bibata-modern-classic-bin/illogical-impulse-bibata-modern-classic-bin-2.0.6-r1.ebuild b/sdata/dist-gentoo/illogical-impulse-bibata-modern-classic-bin/illogical-impulse-bibata-modern-classic-bin-2.0.6-r1.ebuild index e2a70d6d2..cc2147fa1 100644 --- a/sdata/dist-gentoo/illogical-impulse-bibata-modern-classic-bin/illogical-impulse-bibata-modern-classic-bin-2.0.6-r1.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-bibata-modern-classic-bin/illogical-impulse-bibata-modern-classic-bin-2.0.6-r1.ebuild @@ -2,11 +2,10 @@ # Distributed under the terms of the GNU General Public License v2 EAPI=8 -Bibata_VER=2.0.6 DESCRIPTION="Material Based Cursor Theme, installed for illogical-impulse dotfiles" HOMEPAGE="" -SRC_URI="https://github.com/ful1e5/Bibata_Cursor/releases/download/v${Bibata_VER}/Bibata-Modern-Classic.tar.xz -> bibata-modern-classic.tar.xz" +SRC_URI="https://github.com/ful1e5/Bibata_Cursor/releases/download/v${PV}/Bibata-Modern-Classic.tar.xz -> bibata-modern-classic.tar.xz" LICENSE="GPL-2" SLOT="0" diff --git a/sdata/dist-gentoo/illogical-impulse-fonts-themes/illogical-impulse-fonts-themes-1.0-r1.ebuild b/sdata/dist-gentoo/illogical-impulse-fonts-themes/illogical-impulse-fonts-themes-1.0-r1.ebuild index d220350cd..2747067b7 100644 --- a/sdata/dist-gentoo/illogical-impulse-fonts-themes/illogical-impulse-fonts-themes-1.0-r1.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-fonts-themes/illogical-impulse-fonts-themes-1.0-r1.ebuild @@ -2,23 +2,9 @@ # Distributed under the terms of the GNU General Public License v2 EAPI=8 -DART_SASS_VER=1.78.0 -SPACE_GROTESK_VER=1.1.4 DESCRIPTION="Illogical Impulse Fonts and Theming Dependencies" -HOMEPAGE="" -SRC_URI=" -https://github.com/Bali10050/Darkly/archive/refs/heads/main.tar.gz -> ${P}-darkly.tar.gz -https://github.com/naipefoundry/gabarito/archive/refs/heads/main.tar.gz -> ${P}-gabarito.tar.gz -https://github.com/googlefonts/rubik/archive/refs/heads/main.tar.gz -> ${P}-rubik.tar.gz -https://github.com/ThomasJockin/readexpro/archive/refs/heads/master.tar.gz -> ${P}-readexpro.tar.gz -https://github.com/mjkim0727/breeze-plus/archive/refs/heads/main.tar.gz -> ${P}-breeze-plus.tar.gz -https://github.com/lassekongo83/adw-gtk3/archive/refs/heads/main.tar.gz -> ${P}-adw-gtk3.tar.gz -https://github.com/google/material-design-icons/raw/refs/heads/master/variablefont/MaterialSymbolsOutlined%5BFILL,GRAD,opsz,wght%5D.ttf -> MaterialSymbolsOutlined.ttf - https://github.com/google/material-design-icons/raw/refs/heads/master/variablefont/MaterialSymbolsRounded%5BFILL,GRAD,opsz,wght%5D.ttf -> MaterialSymbolsRounded.ttf - https://github.com/google/material-design-icons/raw/refs/heads/master/variablefont/MaterialSymbolsSharp%5BFILL,GRAD,opsz,wght%5D.ttf -> MaterialSymbolsSharp.ttf -https://github.com/floriankarsten/space-grotesk/archive/refs/tags/${SPACE_GROTESK_VER}.tar.gz -> ${P}-space-grotesk-${SPACE_GROTESK_VER}.tar.gz -" + LICENSE="GPL-2" SLOT="0" KEYWORDS="~amd64 ~arm64 ~x86" @@ -26,66 +12,30 @@ RESTRICT="strip" DEPEND="" RDEPEND=" + x11-themes/adw-gtk3 kde-plasma/breeze + kde-plasma/breeze-plus + app-misc/darkly sys-apps/eza app-shells/fish media-libs/fontconfig x11-terms/kitty x11-misc/matugen + media-fonts/space-grotesk app-shells/starship + media-fonts/gabarito media-fonts/jetbrains-mono + media-fonts/material-symbols-variable + media-fonts/readex-pro + + media-fonts/rubik-vf media-fonts/twemoji " - -# Source directories -S="${WORKDIR}" -S_DARKLY="${S}/Darkly-main" -S_GABARITO="${S}/gabarito-main" -S_RUBIK="${S}/rubik-main" -S_READEXPRO="${S}/readexpro-master" -S_ADW_GTK3="${S}/adw-gtk3-main" -S_BREEZE_PLUS="${S}/breeze-plus-main" -S_SPACE_GROTESK="${S}/space-grotesk-${SPACE_GROTESK_VER}" - -src_unpack() { - default - - mv "${WORKDIR}/dart-sass-${DART_SASS_VER}-linux-x64" "${S_DART_SASS}" -} - -src_compile() { - cd "${S_DARKLY}" - mkdir -p build - cd build - cmake .. -DBUILD_QT5=OFF -DBUILD_QT6=ON - cmake --build . --parallel=$(nproc) - - cd "${S_ADW_GTK3}" - meson setup build - meson compile -C build -} - -src_install() { - cd "${S_DARKLY}/build" - cmake --install . --destdir="${D}" - - insinto /usr/share/fonts/ttf-gabarito - doins "${S_GABARITO}"/fonts/ttf/*.ttf - - insinto /usr/share/fonts/ttf-readex-pro - doins "${S_READEXPRO}"/fonts/ttf/*.ttf - - insinto /usr/share/fonts/material-symbols - doins "${DISTDIR}"/MaterialSymbols*.ttf - - insinto /usr/share/fonts/OTF - doins "${S_SPACE_GROTESK}"/fonts/otf/*.otf - - insinto /usr/share/themes - doins -r "${S_BREEZE_PLUS}"/src/breeze-plus* - - cd "${S_ADW_GTK3}" - meson install -C build --destdir="${D}" - - fc-cache -f -} +##### CUSTOM EBUILDS +# x11-themes/adw-gtk3 +# app-misc/darkly +# media-fonts/space-grotesk +# media-fonts/gabarito +# media-fonts/material-symbols-variable +# media-fonts/readex-pro +# media-fonts/rubik-vf diff --git a/sdata/dist-gentoo/illogical-impulse-microtex-git/illogical-impulse-microtex-git-1.0-r1.ebuild b/sdata/dist-gentoo/illogical-impulse-microtex-git/illogical-impulse-microtex-git-1.0-r1.ebuild index 7a8aafdde..b95e5c9b3 100644 --- a/sdata/dist-gentoo/illogical-impulse-microtex-git/illogical-impulse-microtex-git-1.0-r1.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-microtex-git/illogical-impulse-microtex-git-1.0-r1.ebuild @@ -21,7 +21,6 @@ RDEPEND=" dev-cpp/cairomm " -# Use WORKDIR directly after stripping top-level folder S="${WORKDIR}" src_unpack() { @@ -38,7 +37,7 @@ src_prepare() { } src_compile() { - cd "${S}" || die + cd "${S}" mkdir -p build cmake -B build -S . -DCMAKE_BUILD_TYPE=None cmake --build build diff --git a/sdata/dist-gentoo/illogical-impulse-oneui4-icons-git/illogical-impulse-oneui4-icons-git-1.0-r1.ebuild b/sdata/dist-gentoo/illogical-impulse-oneui4-icons-git/illogical-impulse-oneui4-icons-git-1.0-r1.ebuild index 563b450b1..6d93e7058 100644 --- a/sdata/dist-gentoo/illogical-impulse-oneui4-icons-git/illogical-impulse-oneui4-icons-git-1.0-r1.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-oneui4-icons-git/illogical-impulse-oneui4-icons-git-1.0-r1.ebuild @@ -9,7 +9,7 @@ SRC_URI="https://github.com/end-4/OneUI4-Icons/archive/main.tar.gz -> ${P}.tar.g LICENSE="GPL-2" SLOT="0" -KEYWORDS="~amd64" +KEYWORDS="~amd64 ~arm64 ~x86" RESTRICT="strip" DEPEND="" diff --git a/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r3.ebuild b/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r3.ebuild index e773dae6f..df8a113bd 100644 --- a/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r3.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r3.ebuild @@ -3,17 +3,12 @@ EAPI=8 -SONGREC_VER="0.4.3" - DESCRIPTION="Illogicall Impulse Widget Dependencies" HOMEPAGE="" -SRC_URI="https://github.com/marin-m/SongRec/archive/${SONGREC_VER}.tar.gz -> ${P}-SongRec.tar.gz" LICENSE="GPL-2" SLOT="0" KEYWORDS="~amd64 ~arm64 ~x86" -# need for cargo fetch, idk how to get around it if possible -RESTRICT="strip network-sandbox" DEPEND="" RDEPEND=" @@ -21,47 +16,11 @@ RDEPEND=" dev-libs/glib media-gfx/imagemagick gui-apps/hypridle - gui-libs/hyprutils gui-apps/hyprlock gui-apps/hyprpicker + app-misc/songrec app-i18n/translate-shell gui-apps/wlogout " - -S="${WORKDIR}/SongRec-${SONGREC_VER}" - -src_prepare() { - default - export CARGO_HOME="${WORKDIR}/cargo" - cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')" -} - -src_compile() { - export CARGO_HOME="${WORKDIR}/cargo" - cargo build --release --frozen --offline - -} - -src_install() { - dobin target/release/songrec - insinto /usr/share/applications - - doins packaging/rootfs/usr/share/applications/com.github.marinm.songrec.desktop - - insinto /usr/share/icons/hicolor/scalable/apps - doins packaging/rootfs/usr/share/icons/hicolor/scalable/apps/com.github.marinm.songrec.svg - - insinto /usr/share/metainfo - doins packaging/rootfs/usr/share/metainfo/com.github.marinm.songrec.metainfo.xml - - insinto /usr/share/songrec/translations - doins -r translations/* - - dodoc README.md -} - - - - - - +##### CUSTOM EBUILDS +# app-misc/songrec diff --git a/sdata/dist-gentoo/import-local-pkgs.sh b/sdata/dist-gentoo/import-local-pkgs.sh new file mode 100644 index 000000000..5435065bc --- /dev/null +++ b/sdata/dist-gentoo/import-local-pkgs.sh @@ -0,0 +1,33 @@ +HYPR_DIR="local-pkgs/hyprland" +FT_DIR="local-pkgs/fonts-and-themes" +WIDGETS_DIR="local-pkgs/widgets" + +function import_ebuild(){ + from_dir="$1" + to_dir="$2" + ename="$3" + x sudo rm -rf "${ebuild_dir}/${to_dir}/${ename}" + x sudo mkdir -p "${ebuild_dir}/${to_dir}/${ename}" + v sudo cp ./sdata/dist-gentoo/${from_dir}/${ename}*.ebuild "${ebuild_dir}/${to_dir}/${ename}" + v sudo ebuild "${ebuild_dir}/${to_dir}/${ename}/${ename}"*.ebuild digest +} + +############### HYPRLAND +import_ebuild "${HYPR_DIR}" "dev-libs" "hyprgraphics" +import_ebuild "${HYPR_DIR}" "gui-libs" "hyprland-qt-support" +import_ebuild "${HYPR_DIR}" "gui-libs" "hyprland-qtutils" +import_ebuild "${HYPR_DIR}" "dev-libs" "hyprlang" +import_ebuild "${HYPR_DIR}" "dev-util" "hyprwayland-scanner" + +############### FONTS AND THEMES +import_ebuild "${HYPR_DIR}" "dev-libs" "hyprgraphics" +import_ebuild "${FT_DIR}" "media-fonts" "gabarito" +import_ebuild "${FT_DIR}" "media-fonts" "material-symbols-variable" +import_ebuild "${FT_DIR}" "media-fonts" "readex-pro" +import_ebuild "${FT_DIR}" "media-fonts" "rubik-vf" +import_ebuild "${FT_DIR}" "media-fonts" "space-grotesk" +import_ebuild "${FT_DIR}" "kde-plasma" "breeze-plus" +import_ebuild "${FT_DIR}" "x11-themes" "darkly" + +############### WIDGETS +import_ebuild "${WIDGETS_DIR}" "app-misc" "songrec" diff --git a/sdata/dist-gentoo/install-deps.sh b/sdata/dist-gentoo/install-deps.sh index 7c7dcd58d..b2cd548d3 100644 --- a/sdata/dist-gentoo/install-deps.sh +++ b/sdata/dist-gentoo/install-deps.sh @@ -18,8 +18,8 @@ printf "${STY_RST}" pause printf "${STY_YELLOW}" -printf "https://github.com/end-4/dots-hyprland/blob/main/sdata/dist-gentoo/README.md" -printf "Checkout the above README for potential bug fixes or additional information" +printf "https://github.com/end-4/dots-hyprland/blob/main/sdata/dist-gentoo/README.md\n" +printf "Checkout the above README for potential bug fixes or additional information\n\n" printf "${STY_RST}" pause @@ -60,27 +60,7 @@ v sudo emerge --depclean # Remove old ebuilds (if this isn't done the wildcard will fuck upon a version change) x sudo rm -fr ${ebuild_dir}/app-misc/illogical-impulse-* -###### LIVE EBUILDS START -HYPR_DIR="illogical-impulse-hyprland" -x sudo mkdir -p ${ebuild_dir}/dev-libs/hyprgraphics/ -x sudo mkdir -p ${ebuild_dir}/gui-libs/hyprland-qt-support -x sudo mkdir -p ${ebuild_dir}/gui-libs/hyprland-qtutils -x sudo mkdir -p ${ebuild_dir}/dev-libs/hyprlang -x sudo mkdir -p ${ebuild_dir}/dev-libs/hyprlang -x sudo mkdir -p ${ebuild_dir}/dev-util/hyprwayland-scanner - -v sudo cp ./sdata/dist-gentoo/${HYPR_DIR}/hyprgraphics*.ebuild ${ebuild_dir}/dev-libs/hyprgraphics -v sudo cp ./sdata/dist-gentoo/${HYPR_DIR}/hyprland-qt-support*.ebuild ${ebuild_dir}/gui-libs/hyprland-qt-support -v sudo cp ./sdata/dist-gentoo/${HYPR_DIR}/hyprland-qtutils*.ebuild ${ebuild_dir}/gui-libs/hyprland-qtutils -v sudo cp ./sdata/dist-gentoo/${HYPR_DIR}/hyprlang*.ebuild ${ebuild_dir}/dev-libs/hyprlang -v sudo cp ./sdata/dist-gentoo/${HYPR_DIR}/hyprwayland-scanner*.ebuild ${ebuild_dir}/dev-util/hyprwayland-scanner - -v sudo ebuild ${ebuild_dir}/dev-libs/hyprgraphics/hyprgraphics*9999.ebuild digest -v sudo ebuild ${ebuild_dir}/gui-libs/hyprland-qt-support/hyprland-qt-support*9999.ebuild digest -v sudo ebuild ${ebuild_dir}/gui-libs/hyprland-qtutils/hyprland-qtutils*9999.ebuild digest -v sudo ebuild ${ebuild_dir}/dev-libs/hyprlang/hyprlang*9999.ebuild digest -v sudo ebuild ${ebuild_dir}/dev-util/hyprwayland-scanner/hyprwayland-scanner*9999.ebuild digest -###### LIVE EBUILDS END +source ./sdata/dist-gentoo/import-local-pkgs.sh # Install dependencies for i in "${metapkgs[@]}"; do diff --git a/sdata/dist-gentoo/keywords b/sdata/dist-gentoo/keywords index a10d1111e..b96b99847 100644 --- a/sdata/dist-gentoo/keywords +++ b/sdata/dist-gentoo/keywords @@ -43,3 +43,10 @@ x11-libs/libxkbcommon dev-util/breakpad dev-libs/linux-syscall-support dev-embedded/libdisasm +kde-plasma/breeze-plus +media-fonts/space-grotesk +media-fonts/gabarito ** +media-fonts/material-symbols-variable ** +media-fonts/readex-pro +media-fonts/rubik-vf +app-misc/songrec diff --git a/sdata/dist-gentoo/local-pkgs/breeze-plus-6.2.5-r1.ebuild b/sdata/dist-gentoo/local-pkgs/fonts-and-themes/breeze-plus-6.2.5-r1.ebuild similarity index 94% rename from sdata/dist-gentoo/local-pkgs/breeze-plus-6.2.5-r1.ebuild rename to sdata/dist-gentoo/local-pkgs/fonts-and-themes/breeze-plus-6.2.5-r1.ebuild index 78e3a1a7a..07dd0d129 100644 --- a/sdata/dist-gentoo/local-pkgs/breeze-plus-6.2.5-r1.ebuild +++ b/sdata/dist-gentoo/local-pkgs/fonts-and-themes/breeze-plus-6.2.5-r1.ebuild @@ -9,7 +9,7 @@ SRC_URI="https://github.com/mjkim0727/breeze-plus/archive/refs/tags/${PV}.tar.gz LICENSE="LGPL-2.1" SLOT="0" -KEYWORDS="~amd64 ~x86" +KEYWORDS="~amd64 ~arm64 ~x86" RDEPEND="kde-plasma/breeze" BDEPEND="" diff --git a/sdata/dist-gentoo/local-pkgs/darkly-0.5.24-r1.ebuild b/sdata/dist-gentoo/local-pkgs/fonts-and-themes/darkly-0.5.24-r1.ebuild similarity index 100% rename from sdata/dist-gentoo/local-pkgs/darkly-0.5.24-r1.ebuild rename to sdata/dist-gentoo/local-pkgs/fonts-and-themes/darkly-0.5.24-r1.ebuild diff --git a/sdata/dist-gentoo/local-pkgs/gabarito-9999.ebuild b/sdata/dist-gentoo/local-pkgs/fonts-and-themes/gabarito-9999.ebuild similarity index 100% rename from sdata/dist-gentoo/local-pkgs/gabarito-9999.ebuild rename to sdata/dist-gentoo/local-pkgs/fonts-and-themes/gabarito-9999.ebuild diff --git a/sdata/dist-gentoo/local-pkgs/fonts-and-themes/material-symbols-variable-9999.ebuild b/sdata/dist-gentoo/local-pkgs/fonts-and-themes/material-symbols-variable-9999.ebuild new file mode 100644 index 000000000..2ec5550b6 --- /dev/null +++ b/sdata/dist-gentoo/local-pkgs/fonts-and-themes/material-symbols-variable-9999.ebuild @@ -0,0 +1,40 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit font + +DESCRIPTION="Material Design icons by Google - variable fonts" +HOMEPAGE="https://github.com/google/material-design-icons" + +BASE_URL="https://github.com/google/material-design-icons/raw/refs/heads/master" + +SRC_URI=" + ${BASE_URL}/variablefont/MaterialSymbolsOutlined%5BFILL,GRAD,opsz,wght%5D.ttf -> MaterialSymbolsOutlined-FILL-GRAD-opsz-wght.ttf + ${BASE_URL}/variablefont/MaterialSymbolsRounded%5BFILL,GRAD,opsz,wght%5D.ttf -> MaterialSymbolsRounded-FILL-GRAD-opsz-wght.ttf + ${BASE_URL}/variablefont/MaterialSymbolsSharp%5BFILL,GRAD,opsz,wght%5D.ttf -> MaterialSymbolsSharp-FILL-GRAD-opsz-wght.ttf +" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="" + +S="${WORKDIR}" + +FONT_SUFFIX="ttf" + +src_unpack() { + mkdir -p "${S}" + cp "${DISTDIR}/MaterialSymbolsOutlined-FILL-GRAD-opsz-wght.ttf" \ + "${S}/MaterialSymbolsOutlined[FILL,GRAD,opsz,wght].ttf" + cp "${DISTDIR}/MaterialSymbolsRounded-FILL-GRAD-opsz-wght.ttf" + "${S}/MaterialSymbolsRounded[FILL,GRAD,opsz,wght].ttf" + cp "${DISTDIR}/MaterialSymbolsSharp-FILL-GRAD-opsz-wght.ttf" \ + "${S}/MaterialSymbolsSharp[FILL,GRAD,opsz,wght].ttf" +} + +src_install() { + font_src_install +} + diff --git a/sdata/dist-gentoo/local-pkgs/readex-pro-1.0.ebuild b/sdata/dist-gentoo/local-pkgs/fonts-and-themes/readex-pro-1.0-r1.ebuild similarity index 92% rename from sdata/dist-gentoo/local-pkgs/readex-pro-1.0.ebuild rename to sdata/dist-gentoo/local-pkgs/fonts-and-themes/readex-pro-1.0-r1.ebuild index e09c6752c..0e17cec74 100644 --- a/sdata/dist-gentoo/local-pkgs/readex-pro-1.0.ebuild +++ b/sdata/dist-gentoo/local-pkgs/fonts-and-themes/readex-pro-1.0-r1.ebuild @@ -17,5 +17,5 @@ S="${WORKDIR}/readexpro-master" src_install() { insinto /usr/share/fonts/ttf-readex-pro - doins "${S_READEXPRO}"/fonts/ttf/*.ttf + doins "${S}"/fonts/ttf/*.ttf } diff --git a/sdata/dist-gentoo/local-pkgs/rubik-vf-1.0.ebuild b/sdata/dist-gentoo/local-pkgs/fonts-and-themes/rubik-vf-1.0-r1.ebuild similarity index 95% rename from sdata/dist-gentoo/local-pkgs/rubik-vf-1.0.ebuild rename to sdata/dist-gentoo/local-pkgs/fonts-and-themes/rubik-vf-1.0-r1.ebuild index e93b4df12..ef66f6c93 100644 --- a/sdata/dist-gentoo/local-pkgs/rubik-vf-1.0.ebuild +++ b/sdata/dist-gentoo/local-pkgs/fonts-and-themes/rubik-vf-1.0-r1.ebuild @@ -13,6 +13,7 @@ SRC_URI="https://github.com/googlefonts/rubik/archive/${COMMIT}.tar.gz -> ${P}.t LICENSE="OFL-1.1" SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" S="${WORKDIR}/rubik-${COMMIT}" diff --git a/sdata/dist-gentoo/local-pkgs/fonts-and-themes/space-grotesk-1.1.4-r1.ebuild b/sdata/dist-gentoo/local-pkgs/fonts-and-themes/space-grotesk-1.1.4-r1.ebuild new file mode 100644 index 000000000..64bed0c30 --- /dev/null +++ b/sdata/dist-gentoo/local-pkgs/fonts-and-themes/space-grotesk-1.1.4-r1.ebuild @@ -0,0 +1,28 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit font + +DESCRIPTION="Space Grotesk OTF font from 38C3 styleguide" +HOMEPAGE="https://events.ccc.de/congress/2024/infos/styleguide.html" +SRC_URI="https://events.ccc.de/congress/2024/infos/styleguide/38c3-styleguide-full-v2.zip" + +LICENSE="OFL-1.1" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" + +BDEPEND="app-arch/unzip" + +S="${WORKDIR}/fonts/space-grotesk-${PV}" + +FONT_S="${S}/otf" +FONT_SUFFIX="otf" + +src_install() { + font_src_install + + dodoc OFL.txt +} + diff --git a/sdata/dist-gentoo/illogical-impulse-hyprland/hyprgraphics-9999.ebuild b/sdata/dist-gentoo/local-pkgs/hyprland/hyprgraphics-9999.ebuild similarity index 100% rename from sdata/dist-gentoo/illogical-impulse-hyprland/hyprgraphics-9999.ebuild rename to sdata/dist-gentoo/local-pkgs/hyprland/hyprgraphics-9999.ebuild diff --git a/sdata/dist-gentoo/illogical-impulse-hyprland/hyprland-qt-support-9999.ebuild b/sdata/dist-gentoo/local-pkgs/hyprland/hyprland-qt-support-9999.ebuild similarity index 100% rename from sdata/dist-gentoo/illogical-impulse-hyprland/hyprland-qt-support-9999.ebuild rename to sdata/dist-gentoo/local-pkgs/hyprland/hyprland-qt-support-9999.ebuild diff --git a/sdata/dist-gentoo/illogical-impulse-hyprland/hyprland-qtutils-9999.ebuild b/sdata/dist-gentoo/local-pkgs/hyprland/hyprland-qtutils-9999.ebuild similarity index 100% rename from sdata/dist-gentoo/illogical-impulse-hyprland/hyprland-qtutils-9999.ebuild rename to sdata/dist-gentoo/local-pkgs/hyprland/hyprland-qtutils-9999.ebuild diff --git a/sdata/dist-gentoo/illogical-impulse-hyprland/hyprlang-9999.ebuild b/sdata/dist-gentoo/local-pkgs/hyprland/hyprlang-9999.ebuild similarity index 100% rename from sdata/dist-gentoo/illogical-impulse-hyprland/hyprlang-9999.ebuild rename to sdata/dist-gentoo/local-pkgs/hyprland/hyprlang-9999.ebuild diff --git a/sdata/dist-gentoo/illogical-impulse-hyprland/hyprwayland-scanner-9999.ebuild b/sdata/dist-gentoo/local-pkgs/hyprland/hyprwayland-scanner-9999.ebuild similarity index 100% rename from sdata/dist-gentoo/illogical-impulse-hyprland/hyprwayland-scanner-9999.ebuild rename to sdata/dist-gentoo/local-pkgs/hyprland/hyprwayland-scanner-9999.ebuild diff --git a/sdata/dist-gentoo/local-pkgs/widgets/songrec-0.4.3-r1.ebuild b/sdata/dist-gentoo/local-pkgs/widgets/songrec-0.4.3-r1.ebuild new file mode 100644 index 000000000..fa5f1e6b3 --- /dev/null +++ b/sdata/dist-gentoo/local-pkgs/widgets/songrec-0.4.3-r1.ebuild @@ -0,0 +1,48 @@ +# Copyright 2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="Illogicall Impulse Widget Dependencies" +HOMEPAGE="" +SRC_URI="https://github.com/marin-m/SongRec/archive/${PV}.tar.gz -> ${P}-SongRec.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" +# need for cargo fetch, idk how to get around it if possible +RESTRICT="strip network-sandbox" + +DEPEND="" +RDEPEND="" + +S="${WORKDIR}/SongRec-${PV}" + +src_prepare() { + default + export CARGO_HOME="${WORKDIR}/cargo" + cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')" +} + +src_compile() { + export CARGO_HOME="${WORKDIR}/cargo" + cargo build --release --frozen --offline +} + +src_install() { + dobin target/release/songrec + insinto /usr/share/applications + + doins packaging/rootfs/usr/share/applications/com.github.marinm.songrec.desktop + + insinto /usr/share/icons/hicolor/scalable/apps + doins packaging/rootfs/usr/share/icons/hicolor/scalable/apps/com.github.marinm.songrec.svg + + insinto /usr/share/metainfo + doins packaging/rootfs/usr/share/metainfo/com.github.marinm.songrec.metainfo.xml + + insinto /usr/share/songrec/translations + doins -r translations/* + + dodoc README.md +} From fe3c50245988ed3f132291024f86248989ae516f Mon Sep 17 00:00:00 2001 From: jwihardi Date: Fri, 7 Nov 2025 02:08:40 -0500 Subject: [PATCH 005/107] updated ebuilds + licenses --- .../illogical-impulse-audio-1.0-r1.ebuild | 2 +- .../illogical-impulse-backlight-1.0-r1.ebuild | 2 +- .../illogical-impulse-basic-1.0-r2.ebuild | 6 ++---- ...-bibata-modern-classic-bin-2.0.6-r1.ebuild | 2 +- ...logical-impulse-fonts-themes-1.0-r1.ebuild | 6 +++--- ... illogical-impulse-hyprland-1.0-r2.ebuild} | 9 --------- ...cal-impulse-oneui4-icons-git-1.0-r1.ebuild | 2 +- .../illogical-impulse-portal-1.0-r1.ebuild | 2 +- .../illogical-impulse-python-1.1-r1.ebuild | 4 +--- ...ogical-impulse-screencapture-1.0-r1.ebuild | 3 +-- .../illogical-impulse-toolkit-1.0-r1.ebuild | 20 ++----------------- .../illogical-impulse-widgets-1.0-r3.ebuild | 2 +- sdata/dist-gentoo/install-deps.sh | 14 ++++++------- sdata/dist-gentoo/keywords | 1 + 14 files changed, 23 insertions(+), 52 deletions(-) rename sdata/dist-gentoo/illogical-impulse-hyprland/{illogical-impulse-hyprland-1.0-r1.ebuild => illogical-impulse-hyprland-1.0-r2.ebuild} (66%) diff --git a/sdata/dist-gentoo/illogical-impulse-audio/illogical-impulse-audio-1.0-r1.ebuild b/sdata/dist-gentoo/illogical-impulse-audio/illogical-impulse-audio-1.0-r1.ebuild index f36834a4d..a5cccd625 100644 --- a/sdata/dist-gentoo/illogical-impulse-audio/illogical-impulse-audio-1.0-r1.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-audio/illogical-impulse-audio-1.0-r1.ebuild @@ -6,7 +6,7 @@ EAPI=8 DESCRIPTION="Illogical Impulse Audio Dependencies" HOMEPAGE="" -LICENSE="GPL-2" +LICENSE="metapackage" SLOT="0" KEYWORDS="~amd64 ~arm64 ~x86" RESTRICT="strip" diff --git a/sdata/dist-gentoo/illogical-impulse-backlight/illogical-impulse-backlight-1.0-r1.ebuild b/sdata/dist-gentoo/illogical-impulse-backlight/illogical-impulse-backlight-1.0-r1.ebuild index 0b7243111..d9a196e75 100644 --- a/sdata/dist-gentoo/illogical-impulse-backlight/illogical-impulse-backlight-1.0-r1.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-backlight/illogical-impulse-backlight-1.0-r1.ebuild @@ -6,7 +6,7 @@ EAPI=8 DESCRIPTION="Illogical Impulse Backlight Dependencies" HOMEPAGE="" -LICENSE="GPL-2" +LICENSE="metapackage" SLOT="0" KEYWORDS="~amd64 ~arm64 ~x86" RESTRICT="strip" diff --git a/sdata/dist-gentoo/illogical-impulse-basic/illogical-impulse-basic-1.0-r2.ebuild b/sdata/dist-gentoo/illogical-impulse-basic/illogical-impulse-basic-1.0-r2.ebuild index eeae5c57b..cb3308c77 100644 --- a/sdata/dist-gentoo/illogical-impulse-basic/illogical-impulse-basic-1.0-r2.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-basic/illogical-impulse-basic-1.0-r2.ebuild @@ -6,24 +6,22 @@ EAPI=8 DESCRIPTION="Illogical Impulse Basic Dependencies" HOMEPAGE="" -LICENSE="GPL-2" +LICENSE="metapackage" SLOT="0" KEYWORDS="~amd64 ~arm64 ~x86" RESTRICT="strip" DEPEND="" RDEPEND=" - net-misc/axel sys-devel/bc sys-apps/coreutils app-misc/cliphist dev-build/cmake net-misc/curl - net-misc/rsync net-misc/wget sys-apps/ripgrep dev-python/jq - dev-build/meson x11-misc/xdg-user-dirs + net-misc/rsync app-misc/yq-go " diff --git a/sdata/dist-gentoo/illogical-impulse-bibata-modern-classic-bin/illogical-impulse-bibata-modern-classic-bin-2.0.6-r1.ebuild b/sdata/dist-gentoo/illogical-impulse-bibata-modern-classic-bin/illogical-impulse-bibata-modern-classic-bin-2.0.6-r1.ebuild index cc2147fa1..07ff29108 100644 --- a/sdata/dist-gentoo/illogical-impulse-bibata-modern-classic-bin/illogical-impulse-bibata-modern-classic-bin-2.0.6-r1.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-bibata-modern-classic-bin/illogical-impulse-bibata-modern-classic-bin-2.0.6-r1.ebuild @@ -7,7 +7,7 @@ DESCRIPTION="Material Based Cursor Theme, installed for illogical-impulse dotfil HOMEPAGE="" SRC_URI="https://github.com/ful1e5/Bibata_Cursor/releases/download/v${PV}/Bibata-Modern-Classic.tar.xz -> bibata-modern-classic.tar.xz" -LICENSE="GPL-2" +LICENSE="GPL-3+" SLOT="0" KEYWORDS="~amd64 ~arm64 ~x86" RESTRICT="strip" diff --git a/sdata/dist-gentoo/illogical-impulse-fonts-themes/illogical-impulse-fonts-themes-1.0-r1.ebuild b/sdata/dist-gentoo/illogical-impulse-fonts-themes/illogical-impulse-fonts-themes-1.0-r1.ebuild index 2747067b7..f5efb322e 100644 --- a/sdata/dist-gentoo/illogical-impulse-fonts-themes/illogical-impulse-fonts-themes-1.0-r1.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-fonts-themes/illogical-impulse-fonts-themes-1.0-r1.ebuild @@ -5,7 +5,7 @@ EAPI=8 DESCRIPTION="Illogical Impulse Fonts and Theming Dependencies" -LICENSE="GPL-2" +LICENSE="metapackage" SLOT="0" KEYWORDS="~amd64 ~arm64 ~x86" RESTRICT="strip" @@ -15,7 +15,7 @@ RDEPEND=" x11-themes/adw-gtk3 kde-plasma/breeze kde-plasma/breeze-plus - app-misc/darkly + x11-themes/darkly sys-apps/eza app-shells/fish media-libs/fontconfig @@ -33,7 +33,7 @@ RDEPEND=" " ##### CUSTOM EBUILDS # x11-themes/adw-gtk3 -# app-misc/darkly +# x11-themes/darkly # media-fonts/space-grotesk # media-fonts/gabarito # media-fonts/material-symbols-variable diff --git a/sdata/dist-gentoo/illogical-impulse-hyprland/illogical-impulse-hyprland-1.0-r1.ebuild b/sdata/dist-gentoo/illogical-impulse-hyprland/illogical-impulse-hyprland-1.0-r2.ebuild similarity index 66% rename from sdata/dist-gentoo/illogical-impulse-hyprland/illogical-impulse-hyprland-1.0-r1.ebuild rename to sdata/dist-gentoo/illogical-impulse-hyprland/illogical-impulse-hyprland-1.0-r2.ebuild index e86b04a2d..25ee3aefc 100644 --- a/sdata/dist-gentoo/illogical-impulse-hyprland/illogical-impulse-hyprland-1.0-r1.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-hyprland/illogical-impulse-hyprland-1.0-r2.ebuild @@ -14,19 +14,10 @@ RESTRICT="strip" DEPEND="" RDEPEND=" gui-apps/hypridle - gui-libs/hyprcursor - gui-libs/hyprland-qtutils - gui-libs/hyprland-qt-support - dev-libs/hyprlang gui-apps/hyprlock gui-apps/hyprpicker gui-apps/hyprsunset - gui-libs/hyprutils - dev-libs/hyprland-protocols - dev-libs/hyprgraphics - gui-libs/aquamarine gui-wm/hyprland - dev-util/hyprwayland-scanner gui-libs/xdg-desktop-portal-hyprland gui-apps/wl-clipboard " diff --git a/sdata/dist-gentoo/illogical-impulse-oneui4-icons-git/illogical-impulse-oneui4-icons-git-1.0-r1.ebuild b/sdata/dist-gentoo/illogical-impulse-oneui4-icons-git/illogical-impulse-oneui4-icons-git-1.0-r1.ebuild index 6d93e7058..4e38d2e8b 100644 --- a/sdata/dist-gentoo/illogical-impulse-oneui4-icons-git/illogical-impulse-oneui4-icons-git-1.0-r1.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-oneui4-icons-git/illogical-impulse-oneui4-icons-git-1.0-r1.ebuild @@ -7,7 +7,7 @@ DESCRIPTION="A fork of mjkim0727/OneUI4-Icons for illogical-impulse dotfiles" HOMEPAGE="" SRC_URI="https://github.com/end-4/OneUI4-Icons/archive/main.tar.gz -> ${P}.tar.gz" -LICENSE="GPL-2" +LICENSE="GPL-3" SLOT="0" KEYWORDS="~amd64 ~arm64 ~x86" RESTRICT="strip" diff --git a/sdata/dist-gentoo/illogical-impulse-portal/illogical-impulse-portal-1.0-r1.ebuild b/sdata/dist-gentoo/illogical-impulse-portal/illogical-impulse-portal-1.0-r1.ebuild index e93a2fa2b..01a3d6a78 100644 --- a/sdata/dist-gentoo/illogical-impulse-portal/illogical-impulse-portal-1.0-r1.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-portal/illogical-impulse-portal-1.0-r1.ebuild @@ -6,7 +6,7 @@ EAPI=8 DESCRIPTION="Illogical Impulse XDG Desktop Portals" HOMEPAGE="" -LICENSE="GPL-2" +LICENSE="metapackage" SLOT="0" KEYWORDS="~amd64 ~arm64 ~x86" RESTRICT="strip" diff --git a/sdata/dist-gentoo/illogical-impulse-python/illogical-impulse-python-1.1-r1.ebuild b/sdata/dist-gentoo/illogical-impulse-python/illogical-impulse-python-1.1-r1.ebuild index 4b01ad269..a7bce2e89 100644 --- a/sdata/dist-gentoo/illogical-impulse-python/illogical-impulse-python-1.1-r1.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-python/illogical-impulse-python-1.1-r1.ebuild @@ -6,12 +6,10 @@ EAPI=8 DESCRIPTION="Illogical Impulse Python Dependencies" HOMEPAGE="" -LICENSE="GPL-2" +LICENSE="metapackage" SLOT="0" KEYWORDS="~amd64 ~arm64 ~x86" -RESTRICT="strip" -# SASSC is not needed here, pkgbuild is capping DEPEND="" RDEPEND=" dev-python/clang diff --git a/sdata/dist-gentoo/illogical-impulse-screencapture/illogical-impulse-screencapture-1.0-r1.ebuild b/sdata/dist-gentoo/illogical-impulse-screencapture/illogical-impulse-screencapture-1.0-r1.ebuild index 1630b6689..e3b32109e 100644 --- a/sdata/dist-gentoo/illogical-impulse-screencapture/illogical-impulse-screencapture-1.0-r1.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-screencapture/illogical-impulse-screencapture-1.0-r1.ebuild @@ -6,10 +6,9 @@ EAPI=8 DESCRIPTION="Illogical Impulse Screenshot and Recording Dependencies" HOMEPAGE="" -LICENSE="GPL-2" +LICENSE="metapackage" SLOT="0" KEYWORDS="~amd64 ~arm64 ~x86" -RESTRICT="strip" DEPEND="" RDEPEND=" diff --git a/sdata/dist-gentoo/illogical-impulse-toolkit/illogical-impulse-toolkit-1.0-r1.ebuild b/sdata/dist-gentoo/illogical-impulse-toolkit/illogical-impulse-toolkit-1.0-r1.ebuild index b7e8868c6..fe6d1cb80 100644 --- a/sdata/dist-gentoo/illogical-impulse-toolkit/illogical-impulse-toolkit-1.0-r1.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-toolkit/illogical-impulse-toolkit-1.0-r1.ebuild @@ -3,31 +3,15 @@ EAPI=8 -DESCRIPTION="Illogical Impulse GTK/Qt Dependencies" +DESCRIPTION="Illogical Impulse Toolkit Dependencies" HOMEPAGE="" -LICENSE="GPL-2" +LICENSE="metapackage" SLOT="0" KEYWORDS="~amd64 ~arm64 ~x86" -RESTRICT="strip" DEPEND="" RDEPEND=" - kde-apps/kdialog - dev-qt/qt5compat - dev-qt/qtbase - dev-qt/qtdeclarative - dev-qt/qtimageformats - dev-qt/qtmultimedia - dev-qt/qtpositioning - dev-qt/qtquicktimeline - dev-qt/qtsensors - dev-qt/qtsvg - dev-qt/qttools - dev-qt/qttranslations - dev-qt/qtvirtualkeyboard - dev-qt/qtwayland - kde-frameworks/syntax-highlighting sys-power/upower gui-apps/wtype x11-misc/ydotool diff --git a/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r3.ebuild b/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r3.ebuild index df8a113bd..95ffeffba 100644 --- a/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r3.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-widgets/illogical-impulse-widgets-1.0-r3.ebuild @@ -6,7 +6,7 @@ EAPI=8 DESCRIPTION="Illogicall Impulse Widget Dependencies" HOMEPAGE="" -LICENSE="GPL-2" +LICENSE="metapackage" SLOT="0" KEYWORDS="~amd64 ~arm64 ~x86" diff --git a/sdata/dist-gentoo/install-deps.sh b/sdata/dist-gentoo/install-deps.sh index b2cd548d3..b6057c2db 100644 --- a/sdata/dist-gentoo/install-deps.sh +++ b/sdata/dist-gentoo/install-deps.sh @@ -23,12 +23,12 @@ printf "Checkout the above README for potential bug fixes or additional informat printf "${STY_RST}" pause -x sudo emerge --noreplace --quiet app-eselect/eselect-repository -x sudo emerge --noreplace --quiet app-portage/smart-live-rebuild +x sudo emerge --update --quiet app-eselect/eselect-repository +x sudo emerge --update --quiet app-portage/smart-live-rebuild -if [[ -z $(eselect repository list | grep localrepo) ]]; then - v sudo eselect repository create localrepo - v sudo eselect repository enable localrepo +if [[ -z $(eselect repository list | grep ii-dots) ]]; then + v sudo eselect repository create ii-dots + v sudo eselect repository enable ii-dots fi if [[ -z $(eselect repository list | grep -E ".*guru \*.*") ]]; then @@ -40,7 +40,7 @@ arch=$(portageq envvar ACCEPT_KEYWORDS) # Exclude hyprland, will deal with that separately metapkgs=(illogical-impulse-{audio,backlight,basic,bibata-modern-classic-bin,fonts-themes,hyprland,kde,microtex-git,oneui4-icons-git,portal,python,quickshell-git,screencapture,toolkit,widgets}) -ebuild_dir="/var/db/repos/localrepo" +ebuild_dir="/var/db/repos/ii-dots" # Unmasks x sudo cp ./sdata/dist-gentoo/keywords ./sdata/dist-gentoo/keywords-user @@ -67,7 +67,7 @@ for i in "${metapkgs[@]}"; do x sudo mkdir -p ${ebuild_dir}/app-misc/${i} v sudo cp ./sdata/dist-gentoo/${i}/${i}*.ebuild ${ebuild_dir}/app-misc/${i}/ v sudo ebuild ${ebuild_dir}/app-misc/${i}/*.ebuild digest - v sudo emerge --quiet app-misc/${i} + v sudo emerge --update --quiet app-misc/${i} done # Currently using 3.12 python, this doesn't need to be default though diff --git a/sdata/dist-gentoo/keywords b/sdata/dist-gentoo/keywords index b96b99847..665a9819c 100644 --- a/sdata/dist-gentoo/keywords +++ b/sdata/dist-gentoo/keywords @@ -44,6 +44,7 @@ dev-util/breakpad dev-libs/linux-syscall-support dev-embedded/libdisasm kde-plasma/breeze-plus +x11-themes/darkly media-fonts/space-grotesk media-fonts/gabarito ** media-fonts/material-symbols-variable ** From fe06c1891f7471042adcac1b9a843564e6db7eda Mon Sep 17 00:00:00 2001 From: jwihardi Date: Fri, 7 Nov 2025 15:21:22 -0500 Subject: [PATCH 006/107] added qt unmasks and keywords --- ...ical-impulse-quickshell-git-9999-r3.ebuild | 2 +- sdata/dist-gentoo/install-deps.sh | 24 ++++++++++++----- sdata/dist-gentoo/qt-keywords | 27 +++++++++++++++++++ sdata/dist-gentoo/qt-unmasks | 27 +++++++++++++++++++ 4 files changed, 72 insertions(+), 8 deletions(-) create mode 100644 sdata/dist-gentoo/qt-keywords create mode 100644 sdata/dist-gentoo/qt-unmasks diff --git a/sdata/dist-gentoo/illogical-impulse-quickshell-git/illogical-impulse-quickshell-git-9999-r3.ebuild b/sdata/dist-gentoo/illogical-impulse-quickshell-git/illogical-impulse-quickshell-git-9999-r3.ebuild index 8ba94cb9b..6d04ccb1f 100644 --- a/sdata/dist-gentoo/illogical-impulse-quickshell-git/illogical-impulse-quickshell-git-9999-r3.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-quickshell-git/illogical-impulse-quickshell-git-9999-r3.ebuild @@ -60,7 +60,7 @@ BDEPEND=" src_configure(){ mycmakeargs=( -DCMAKE_BUILD_TYPE=RelWithDebInfo - -DDISTRIBUTOR="Gentoo GURU" + -DDISTRIBUTOR="Gentoo Illogical-Impulses" -DINSTALL_QML_PREFIX="lib64/qt6/qml" -DCRASH_REPORTER=$(usex breakpad ON OFF) -DUSE_JEMALLOC=$(usex jemalloc ON OFF) diff --git a/sdata/dist-gentoo/install-deps.sh b/sdata/dist-gentoo/install-deps.sh index b6057c2db..0aadbf81b 100644 --- a/sdata/dist-gentoo/install-deps.sh +++ b/sdata/dist-gentoo/install-deps.sh @@ -25,6 +25,8 @@ pause x sudo emerge --update --quiet app-eselect/eselect-repository x sudo emerge --update --quiet app-portage/smart-live-rebuild +# Currently using 3.12 python, this doesn't need to be default though +x sudo emerge --update --quiet dev-lang/python:3.12 if [[ -z $(eselect repository list | grep ii-dots) ]]; then v sudo eselect repository create ii-dots @@ -42,16 +44,27 @@ metapkgs=(illogical-impulse-{audio,backlight,basic,bibata-modern-classic-bin,fon ebuild_dir="/var/db/repos/ii-dots" -# Unmasks + +########## IMPORT KEYWORDS (START) +# Illogical-Impulse x sudo cp ./sdata/dist-gentoo/keywords ./sdata/dist-gentoo/keywords-user x sed -i "s/$/ ~${arch}/" ./sdata/dist-gentoo/keywords-user v sudo cp ./sdata/dist-gentoo/keywords-user /etc/portage/package.accept_keywords/illogical-impulse -# Use Flags +# QT +x sudo cp ./sdata/dist-gentoo/qt-keywords ./sdata/dist-gentoo/qt-keywords-user +x sed -i "s/$/ ~${arch}/" ./sdata/dist-gentoo/qt-keywords-user +v sudo cp ./sdata/dist-gentoo/qt-keywords-user /etc/portage/package.accept_keywords/qt + +########## IMPORT UNMASKS +sudo mkdir -p /etc/portage/package.unmask/ +v sudo cp ./sdata/dist-gentoo/qt-unmasks /etc/portage/package.unmask/qt + +########## IMPORT USEFLAGS v sudo cp ./sdata/dist-gentoo/useflags /etc/portage/package.use/illogical-impulse v sudo sh -c 'cat ./sdata/dist-gentoo/additional-useflags >> /etc/portage/package.use/illogical-impulse' -# Update system +########## UPDATE SYSTEM v sudo emerge --sync v sudo emerge --quiet --newuse --update --deep @world v sudo emerge --quiet @smart-live-rebuild @@ -62,13 +75,10 @@ x sudo rm -fr ${ebuild_dir}/app-misc/illogical-impulse-* source ./sdata/dist-gentoo/import-local-pkgs.sh -# Install dependencies +########## INSTALL ILLOGICAL-IMPUSEL EBUILDS for i in "${metapkgs[@]}"; do x sudo mkdir -p ${ebuild_dir}/app-misc/${i} v sudo cp ./sdata/dist-gentoo/${i}/${i}*.ebuild ${ebuild_dir}/app-misc/${i}/ v sudo ebuild ${ebuild_dir}/app-misc/${i}/*.ebuild digest v sudo emerge --update --quiet app-misc/${i} done - -# Currently using 3.12 python, this doesn't need to be default though -v sudo emerge --noreplace --quiet dev-lang/python:3.12 diff --git a/sdata/dist-gentoo/qt-keywords b/sdata/dist-gentoo/qt-keywords new file mode 100644 index 000000000..71e812c54 --- /dev/null +++ b/sdata/dist-gentoo/qt-keywords @@ -0,0 +1,27 @@ +dev-qt/qtbase +dev-qt/qtdeclarative +dev-qt/qtlanguageserver +dev-qt/qtsvg +dev-qt/qtshadertools +dev-qt/qttranslations +dev-qt/qttools +dev-qt/qt5compat +dev-qt/qtcore +dev-qt/qtdbus +dev-qt/qtgraphicaleffects +dev-qt/qtgui +dev-qt/qtimageformats +dev-qt/qtlocation +dev-qt/qtmultimedia +dev-qt/qtnetwork +dev-qt/qtpositioning +dev-qt/qtquick3d +dev-qt/qtquickcontrols2 +dev-qt/qtquicktimeline +dev-qt/qtsensors +dev-qt/qtspeech +dev-qt/qttest +dev-qt/qtvirtualkeyboard +dev-qt/qtwayland +dev-qt/qtwayland +dev-qt/qtwidgets diff --git a/sdata/dist-gentoo/qt-unmasks b/sdata/dist-gentoo/qt-unmasks new file mode 100644 index 000000000..71e812c54 --- /dev/null +++ b/sdata/dist-gentoo/qt-unmasks @@ -0,0 +1,27 @@ +dev-qt/qtbase +dev-qt/qtdeclarative +dev-qt/qtlanguageserver +dev-qt/qtsvg +dev-qt/qtshadertools +dev-qt/qttranslations +dev-qt/qttools +dev-qt/qt5compat +dev-qt/qtcore +dev-qt/qtdbus +dev-qt/qtgraphicaleffects +dev-qt/qtgui +dev-qt/qtimageformats +dev-qt/qtlocation +dev-qt/qtmultimedia +dev-qt/qtnetwork +dev-qt/qtpositioning +dev-qt/qtquick3d +dev-qt/qtquickcontrols2 +dev-qt/qtquicktimeline +dev-qt/qtsensors +dev-qt/qtspeech +dev-qt/qttest +dev-qt/qtvirtualkeyboard +dev-qt/qtwayland +dev-qt/qtwayland +dev-qt/qtwidgets From 9aa869af77ec0b1875e1413d388c992efa166de6 Mon Sep 17 00:00:00 2001 From: jwihardi Date: Fri, 7 Nov 2025 15:31:48 -0500 Subject: [PATCH 007/107] updated hyprland to not use live ebuild --- sdata/dist-gentoo/keywords | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdata/dist-gentoo/keywords b/sdata/dist-gentoo/keywords index 665a9819c..388d10f38 100644 --- a/sdata/dist-gentoo/keywords +++ b/sdata/dist-gentoo/keywords @@ -38,7 +38,7 @@ dev-libs/hyprgraphics ** gui-libs/hyprcursor ** gui-libs/hyprland-qt-support ** gui-libs/hyprland-qtutils ** -gui-wm/hyprland ** +gui-wm/hyprland x11-libs/libxkbcommon dev-util/breakpad dev-libs/linux-syscall-support From c1f84c77dd0c08728f5efed95c12eb9a07c8a162 Mon Sep 17 00:00:00 2001 From: jwihardi Date: Sat, 8 Nov 2025 22:22:32 -0500 Subject: [PATCH 008/107] roboto-flex font --- sdata/dist-gentoo/import-local-pkgs.sh | 1 + sdata/dist-gentoo/keywords | 1 + .../fonts-and-themes/roboto-flex-3.200.ebuild | 29 +++++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 sdata/dist-gentoo/local-pkgs/fonts-and-themes/roboto-flex-3.200.ebuild diff --git a/sdata/dist-gentoo/import-local-pkgs.sh b/sdata/dist-gentoo/import-local-pkgs.sh index 5435065bc..1e52ebf28 100644 --- a/sdata/dist-gentoo/import-local-pkgs.sh +++ b/sdata/dist-gentoo/import-local-pkgs.sh @@ -28,6 +28,7 @@ import_ebuild "${FT_DIR}" "media-fonts" "rubik-vf" import_ebuild "${FT_DIR}" "media-fonts" "space-grotesk" import_ebuild "${FT_DIR}" "kde-plasma" "breeze-plus" import_ebuild "${FT_DIR}" "x11-themes" "darkly" +import_ebuild "${FT_DIR}" "media-fonts" "roboto-flex" ############### WIDGETS import_ebuild "${WIDGETS_DIR}" "app-misc" "songrec" diff --git a/sdata/dist-gentoo/keywords b/sdata/dist-gentoo/keywords index 388d10f38..71aa965db 100644 --- a/sdata/dist-gentoo/keywords +++ b/sdata/dist-gentoo/keywords @@ -50,4 +50,5 @@ media-fonts/gabarito ** media-fonts/material-symbols-variable ** media-fonts/readex-pro media-fonts/rubik-vf +media-fonts/roboto-flex app-misc/songrec diff --git a/sdata/dist-gentoo/local-pkgs/fonts-and-themes/roboto-flex-3.200.ebuild b/sdata/dist-gentoo/local-pkgs/fonts-and-themes/roboto-flex-3.200.ebuild new file mode 100644 index 000000000..520e74895 --- /dev/null +++ b/sdata/dist-gentoo/local-pkgs/fonts-and-themes/roboto-flex-3.200.ebuild @@ -0,0 +1,29 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit font + +DESCRIPTION="Upgrades Roboto to become a more powerful typeface system" +HOMEPAGE="https://github.com/googlefonts/roboto-flex" +SRC_URI=" + https://github.com/googlefonts/roboto-flex/releases/download/${PV}/roboto-flex-fonts.zip -> ${P}.zip + https://github.com/googlefonts/roboto-flex/raw/main/OFL.txt -> ${P}-OFL.txt +" + +LICENSE="OFL-1.1" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" + +BDEPEND="app-arch/unzip" + +S="${WORKDIR}/roboto-flex-fonts" + +FONT_SUFFIX="ttf" +FONT_S="${S}/fonts/variable" + +src_install() { + font_src_install + dodoc "${DISTDIR}/${P}-OFL.txt" +} From 09fd61c71d856f97c95eace635a1991250e95bf7 Mon Sep 17 00:00:00 2001 From: jwihardi Date: Sat, 8 Nov 2025 23:07:51 -0500 Subject: [PATCH 009/107] added roboto-flex dependency --- .../illogical-impulse-fonts-themes-1.0-r1.ebuild | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdata/dist-gentoo/illogical-impulse-fonts-themes/illogical-impulse-fonts-themes-1.0-r1.ebuild b/sdata/dist-gentoo/illogical-impulse-fonts-themes/illogical-impulse-fonts-themes-1.0-r1.ebuild index f5efb322e..5442d5d68 100644 --- a/sdata/dist-gentoo/illogical-impulse-fonts-themes/illogical-impulse-fonts-themes-1.0-r1.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-fonts-themes/illogical-impulse-fonts-themes-1.0-r1.ebuild @@ -27,7 +27,7 @@ RDEPEND=" media-fonts/jetbrains-mono media-fonts/material-symbols-variable media-fonts/readex-pro - + media-fonts/roboto-flex media-fonts/rubik-vf media-fonts/twemoji " From dda0a228cf6cb55c2f8f32ffac53b4ecdbabbbc2 Mon Sep 17 00:00:00 2001 From: Elysia <1391048988@qq.com> Date: Sun, 9 Nov 2025 13:47:41 +0800 Subject: [PATCH 010/107] Re-add version lock. --- sdata/dist-fedora/install-deps.sh | 3 +++ sdata/dist-fedora/install-setups.sh | 1 + 2 files changed, 4 insertions(+) diff --git a/sdata/dist-fedora/install-deps.sh b/sdata/dist-fedora/install-deps.sh index 7a4da7138..1106c55bb 100644 --- a/sdata/dist-fedora/install-deps.sh +++ b/sdata/dist-fedora/install-deps.sh @@ -12,6 +12,9 @@ case $SKIP_SYSUPDATE in *) v sudo dnf upgrade --refresh -y;; esac +# Remove version lock +v sudo dnf versionlock delete quickshell-git 2>/dev/null + # Development-tools installation v sudo dnf install @development-tools fedora-packager rpmdevtools fonts-rpm-macros qt6-rpm-macros -y diff --git a/sdata/dist-fedora/install-setups.sh b/sdata/dist-fedora/install-setups.sh index 6364ca3f5..633bff3f7 100644 --- a/sdata/dist-fedora/install-setups.sh +++ b/sdata/dist-fedora/install-setups.sh @@ -17,3 +17,4 @@ v sudo systemctl enable bluetooth --now v gsettings set org.gnome.desktop.interface font-name 'Rubik 11' v gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' v kwriteconfig6 --file kdeglobals --group KDE --key widgetStyle Darkly +v sudo dnf versionlock add quickshell-git From 53768a6885473554e519762fc8796189aefb90ed Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 9 Nov 2025 08:58:56 +0100 Subject: [PATCH 011/107] qs: move panels into modules/ii --- .../{ => ii}/background/Background.qml | 6 +-- .../widgets/AbstractBackgroundWidget.qml | 0 .../background/widgets/clock/ClockWidget.qml | 2 +- .../background/widgets/clock/CookieClock.qml | 4 +- .../background/widgets/clock/CookieQuote.qml | 0 .../background/widgets/clock/HourHand.qml | 0 .../background/widgets/clock/HourMarks.qml | 0 .../background/widgets/clock/MinuteHand.qml | 0 .../background/widgets/clock/SecondHand.qml | 0 .../background/widgets/clock/TimeColumn.qml | 0 .../clock/dateIndicator/BubbleDate.qml | 0 .../clock/dateIndicator/DateIndicator.qml | 0 .../clock/dateIndicator/RectangleDate.qml | 0 .../clock/dateIndicator/RotatingDate.qml | 0 .../clock/minuteMarks/BigHourNumbers.qml | 0 .../widgets/clock/minuteMarks/Dots.qml | 0 .../widgets/clock/minuteMarks/Lines.qml | 0 .../widgets/clock/minuteMarks/MinuteMarks.qml | 0 .../widgets/weather/WeatherWidget.qml | 2 +- .../ii/modules/{ => ii}/bar/ActiveWindow.qml | 0 .../ii/modules/{ => ii}/bar/Bar.qml | 0 .../ii/modules/{ => ii}/bar/BarContent.qml | 2 +- .../ii/modules/{ => ii}/bar/BarGroup.qml | 0 .../modules/{ => ii}/bar/BatteryIndicator.qml | 0 .../ii/modules/{ => ii}/bar/BatteryPopup.qml | 0 .../modules/{ => ii}/bar/CircleUtilButton.qml | 0 .../ii/modules/{ => ii}/bar/ClockWidget.qml | 0 .../modules/{ => ii}/bar/ClockWidgetPopup.qml | 0 .../{ => ii}/bar/HyprlandXkbIndicator.qml | 0 .../{ => ii}/bar/LeftSidebarButton.qml | 0 .../ii/modules/{ => ii}/bar/Media.qml | 0 .../{ => ii}/bar/NotificationUnreadCount.qml | 0 .../ii/modules/{ => ii}/bar/Resource.qml | 0 .../ii/modules/{ => ii}/bar/Resources.qml | 0 .../modules/{ => ii}/bar/ResourcesPopup.qml | 0 .../ii/modules/{ => ii}/bar/ScrollHint.qml | 0 .../ii/modules/{ => ii}/bar/StyledPopup.qml | 0 .../{ => ii}/bar/StyledPopupHeaderRow.qml | 0 .../{ => ii}/bar/StyledPopupValueRow.qml | 0 .../ii/modules/{ => ii}/bar/SysTray.qml | 0 .../ii/modules/{ => ii}/bar/SysTrayItem.qml | 0 .../ii/modules/{ => ii}/bar/SysTrayMenu.qml | 0 .../modules/{ => ii}/bar/SysTrayMenuEntry.qml | 0 .../ii/modules/{ => ii}/bar/UtilButtons.qml | 0 .../ii/modules/{ => ii}/bar/Workspaces.qml | 0 .../{ => ii}/bar/weather/WeatherBar.qml | 0 .../{ => ii}/bar/weather/WeatherCard.qml | 0 .../{ => ii}/bar/weather/WeatherPopup.qml | 2 +- .../{ => ii}/cheatsheet/Cheatsheet.qml | 0 .../cheatsheet/CheatsheetKeybinds.qml | 0 .../cheatsheet/CheatsheetPeriodicTable.qml | 0 .../{ => ii}/cheatsheet/ElementTile.qml | 0 .../{ => ii}/cheatsheet/periodic_table.js | 0 .../ii/modules/{ => ii}/dock/Dock.qml | 0 .../modules/{ => ii}/dock/DockAppButton.qml | 0 .../ii/modules/{ => ii}/dock/DockApps.qml | 0 .../ii/modules/{ => ii}/dock/DockButton.qml | 0 .../modules/{ => ii}/dock/DockSeparator.qml | 0 .../ii/modules/{ => ii}/lock/Lock.qml | 1 - .../ii/modules/{ => ii}/lock/LockContext.qml | 0 .../ii/modules/{ => ii}/lock/LockSurface.qml | 2 +- .../modules/{ => ii}/lock/PasswordChars.qml | 0 .../ii/modules/{ => ii}/lock/pam/fprintd.conf | 0 .../{ => ii}/mediaControls/MediaControls.qml | 4 +- .../{ => ii}/mediaControls/PlayerControl.qml | 0 .../notificationPopup/NotificationPopup.qml | 1 - .../onScreenDisplay/OnScreenDisplay.qml | 0 .../onScreenDisplay/OsdValueIndicator.qml | 0 .../indicators/BrightnessIndicator.qml | 2 +- .../indicators/VolumeIndicator.qml | 2 +- .../onScreenKeyboard/OnScreenKeyboard.qml | 0 .../{ => ii}/onScreenKeyboard/OskContent.qml | 0 .../{ => ii}/onScreenKeyboard/OskKey.qml | 0 .../{ => ii}/onScreenKeyboard/layouts.js | 0 .../ii/modules/{ => ii}/overlay/Overlay.qml | 0 .../{ => ii}/overlay/OverlayContent.qml | 2 - .../{ => ii}/overlay/OverlayContext.qml | 0 .../{ => ii}/overlay/OverlayTaskbar.qml | 0 .../overlay/OverlayWidgetDelegateChooser.qml | 10 ++--- .../{ => ii}/overlay/StyledOverlayWidget.qml | 0 .../{ => ii}/overlay/crosshair/Crosshair.qml | 2 +- .../overlay/crosshair/CrosshairContent.qml | 0 .../overlay/fpsLimiter/FpsLimiter.qml | 2 +- .../overlay/fpsLimiter/FpsLimiterContent.qml | 0 .../{ => ii}/overlay/recorder/Recorder.qml | 2 +- .../{ => ii}/overlay/resources/Resources.qml | 2 +- .../overlay/volumeMixer/VolumeMixer.qml | 4 +- .../ii/modules/{ => ii}/overview/Overview.qml | 0 .../{ => ii}/overview/OverviewWidget.qml | 0 .../{ => ii}/overview/OverviewWindow.qml | 0 .../modules/{ => ii}/overview/SearchBar.qml | 0 .../modules/{ => ii}/overview/SearchItem.qml | 0 .../{ => ii}/overview/SearchWidget.qml | 0 .../ii/modules/{ => ii}/polkit/Polkit.qml | 0 .../modules/{ => ii}/polkit/PolkitContent.qml | 0 .../regionSelector/CircleSelectionDetails.qml | 0 .../regionSelector/OptionsToolbar.qml | 0 .../RectCornersSelectionDetails.qml | 0 .../regionSelector/RegionFunctions.qml | 0 .../regionSelector/RegionSelection.qml | 0 .../regionSelector/RegionSelector.qml | 0 .../{ => ii}/regionSelector/TargetRegion.qml | 0 .../{ => ii}/screenCorners/ScreenCorners.qml | 0 .../sessionScreen/SessionActionButton.qml | 0 .../{ => ii}/sessionScreen/SessionScreen.qml | 0 .../modules/{ => ii}/sidebarLeft/AiChat.qml | 2 +- .../ii/modules/{ => ii}/sidebarLeft/Anime.qml | 2 +- .../{ => ii}/sidebarLeft/ApiCommandButton.qml | 0 .../sidebarLeft/ApiInputBoxIndicator.qml | 0 .../{ => ii}/sidebarLeft/DescriptionBox.qml | 0 .../sidebarLeft/ScrollToBottomButton.qml | 0 .../{ => ii}/sidebarLeft/SidebarLeft.qml | 0 .../sidebarLeft/SidebarLeftContent.qml | 0 .../{ => ii}/sidebarLeft/Translator.qml | 2 +- .../{ => ii}/sidebarLeft/aiChat/AiMessage.qml | 0 .../aiChat/AiMessageControlButton.qml | 0 .../aiChat/AnnotationSourceButton.qml | 0 .../aiChat/AttachedFileIndicator.qml | 0 .../sidebarLeft/aiChat/MessageCodeBlock.qml | 0 .../sidebarLeft/aiChat/MessageTextBlock.qml | 0 .../sidebarLeft/aiChat/MessageThinkBlock.qml | 0 .../sidebarLeft/aiChat/SearchQueryButton.qml | 2 +- .../{ => ii}/sidebarLeft/anime/BooruImage.qml | 0 .../sidebarLeft/anime/BooruResponse.qml | 2 +- .../translator/LanguageSelectorButton.qml | 0 .../sidebarLeft/translator/TextCanvas.qml | 0 .../sidebarRight/BottomWidgetGroup.qml | 6 +-- .../sidebarRight/CenterWidgetGroup.qml | 3 +- .../{ => ii}/sidebarRight/QuickSliders.qml | 0 .../{ => ii}/sidebarRight/SidebarRight.qml | 0 .../sidebarRight/SidebarRightContent.qml | 12 +++--- .../bluetoothDevices/BluetoothDeviceItem.qml | 0 .../bluetoothDevices/BluetoothDialog.qml | 0 .../calendar/CalendarDayButton.qml | 0 .../calendar/CalendarHeaderButton.qml | 0 .../sidebarRight/calendar/CalendarWidget.qml | 0 .../sidebarRight/calendar/calendar_layout.js | 0 .../nightLight/NightLightDialog.qml | 0 .../notifications/NotificationList.qml | 0 .../NotificationStatusButton.qml | 0 .../sidebarRight/pomodoro/PomodoroTimer.qml | 0 .../sidebarRight/pomodoro/PomodoroWidget.qml | 0 .../sidebarRight/pomodoro/Stopwatch.qml | 0 .../quickToggles/AbstractQuickPanel.qml | 0 .../quickToggles/AndroidQuickPanel.qml | 2 +- .../quickToggles/ClassicQuickPanel.qml | 2 +- .../AndroidAntiFlashbangToggle.qml | 0 .../androidStyle/AndroidAudioToggle.qml | 0 .../androidStyle/AndroidBluetoothToggle.qml | 0 .../AndroidCloudflareWarpToggle.qml | 0 .../androidStyle/AndroidColorPickerToggle.qml | 0 .../androidStyle/AndroidDarkModeToggle.qml | 0 .../androidStyle/AndroidEasyEffectsToggle.qml | 0 .../androidStyle/AndroidGameModeToggle.qml | 0 .../AndroidIdleInhibitorToggle.qml | 0 .../androidStyle/AndroidMicToggle.qml | 0 .../androidStyle/AndroidMusicRecognition.qml | 0 .../androidStyle/AndroidNetworkToggle.qml | 0 .../androidStyle/AndroidNightLightToggle.qml | 0 .../AndroidNotificationToggle.qml | 0 .../AndroidOnScreenKeyboardToggle.qml | 0 .../AndroidPowerProfileToggle.qml | 0 .../androidStyle/AndroidQuickToggleButton.qml | 0 .../androidStyle/AndroidScreenSnipToggle.qml | 0 .../AndroidToggleDelegateChooser.qml | 0 .../classicStyle/BluetoothToggle.qml | 0 .../classicStyle/CloudflareWarp.qml | 0 .../classicStyle/EasyEffectsToggle.qml | 0 .../quickToggles/classicStyle/GameMode.qml | 0 .../classicStyle/IdleInhibitor.qml | 0 .../classicStyle/NetworkToggle.qml | 2 +- .../quickToggles/classicStyle/NightLight.qml | 0 .../classicStyle/QuickToggleButton.qml | 0 .../{ => ii}/sidebarRight/todo/TaskList.qml | 0 .../todo/TodoItemActionButton.qml | 0 .../{ => ii}/sidebarRight/todo/TodoWidget.qml | 0 .../volumeMixer/AudioDeviceSelectorButton.qml | 0 .../sidebarRight/volumeMixer/VolumeDialog.qml | 0 .../volumeMixer/VolumeDialogContent.qml | 0 .../volumeMixer/VolumeMixerEntry.qml | 0 .../sidebarRight/wifiNetworks/WifiDialog.qml | 0 .../wifiNetworks/WifiNetworkItem.qml | 0 .../{ => ii}/verticalBar/BatteryIndicator.qml | 2 +- .../modules/{ => ii}/verticalBar/Resource.qml | 0 .../{ => ii}/verticalBar/Resources.qml | 2 +- .../{ => ii}/verticalBar/VerticalBar.qml | 0 .../verticalBar/VerticalBarContent.qml | 2 +- .../verticalBar/VerticalClockWidget.qml | 2 +- .../verticalBar/VerticalDateWidget.qml | 2 +- .../{ => ii}/verticalBar/VerticalMedia.qml | 2 +- .../WallpaperDirectoryItem.qml | 0 .../wallpaperSelector/WallpaperSelector.qml | 0 .../WallpaperSelectorContent.qml | 0 dots/.config/quickshell/ii/shell.qml | 38 +++++++++---------- 194 files changed, 68 insertions(+), 73 deletions(-) rename dots/.config/quickshell/ii/modules/{ => ii}/background/Background.qml (99%) rename dots/.config/quickshell/ii/modules/{ => ii}/background/widgets/AbstractBackgroundWidget.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/background/widgets/clock/ClockWidget.qml (99%) rename dots/.config/quickshell/ii/modules/{ => ii}/background/widgets/clock/CookieClock.qml (98%) rename dots/.config/quickshell/ii/modules/{ => ii}/background/widgets/clock/CookieQuote.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/background/widgets/clock/HourHand.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/background/widgets/clock/HourMarks.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/background/widgets/clock/MinuteHand.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/background/widgets/clock/SecondHand.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/background/widgets/clock/TimeColumn.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/background/widgets/clock/dateIndicator/BubbleDate.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/background/widgets/clock/dateIndicator/DateIndicator.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/background/widgets/clock/dateIndicator/RectangleDate.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/background/widgets/clock/dateIndicator/RotatingDate.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/background/widgets/clock/minuteMarks/BigHourNumbers.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/background/widgets/clock/minuteMarks/Dots.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/background/widgets/clock/minuteMarks/Lines.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/background/widgets/clock/minuteMarks/MinuteMarks.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/background/widgets/weather/WeatherWidget.qml (97%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/ActiveWindow.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/Bar.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/BarContent.qml (99%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/BarGroup.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/BatteryIndicator.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/BatteryPopup.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/CircleUtilButton.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/ClockWidget.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/ClockWidgetPopup.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/HyprlandXkbIndicator.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/LeftSidebarButton.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/Media.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/NotificationUnreadCount.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/Resource.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/Resources.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/ResourcesPopup.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/ScrollHint.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/StyledPopup.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/StyledPopupHeaderRow.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/StyledPopupValueRow.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/SysTray.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/SysTrayItem.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/SysTrayMenu.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/SysTrayMenuEntry.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/UtilButtons.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/Workspaces.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/weather/WeatherBar.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/weather/WeatherCard.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/bar/weather/WeatherPopup.qml (99%) rename dots/.config/quickshell/ii/modules/{ => ii}/cheatsheet/Cheatsheet.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/cheatsheet/CheatsheetKeybinds.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/cheatsheet/CheatsheetPeriodicTable.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/cheatsheet/ElementTile.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/cheatsheet/periodic_table.js (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/dock/Dock.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/dock/DockAppButton.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/dock/DockApps.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/dock/DockButton.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/dock/DockSeparator.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/lock/Lock.qml (99%) rename dots/.config/quickshell/ii/modules/{ => ii}/lock/LockContext.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/lock/LockSurface.qml (99%) rename dots/.config/quickshell/ii/modules/{ => ii}/lock/PasswordChars.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/lock/pam/fprintd.conf (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/mediaControls/MediaControls.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/mediaControls/PlayerControl.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/notificationPopup/NotificationPopup.qml (98%) rename dots/.config/quickshell/ii/modules/{ => ii}/onScreenDisplay/OnScreenDisplay.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/onScreenDisplay/OsdValueIndicator.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/onScreenDisplay/indicators/BrightnessIndicator.qml (92%) rename dots/.config/quickshell/ii/modules/{ => ii}/onScreenDisplay/indicators/VolumeIndicator.qml (85%) rename dots/.config/quickshell/ii/modules/{ => ii}/onScreenKeyboard/OnScreenKeyboard.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/onScreenKeyboard/OskContent.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/onScreenKeyboard/OskKey.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/onScreenKeyboard/layouts.js (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/overlay/Overlay.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/overlay/OverlayContent.qml (98%) rename dots/.config/quickshell/ii/modules/{ => ii}/overlay/OverlayContext.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/overlay/OverlayTaskbar.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/overlay/OverlayWidgetDelegateChooser.qml (73%) rename dots/.config/quickshell/ii/modules/{ => ii}/overlay/StyledOverlayWidget.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/overlay/crosshair/Crosshair.qml (93%) rename dots/.config/quickshell/ii/modules/{ => ii}/overlay/crosshair/CrosshairContent.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/overlay/fpsLimiter/FpsLimiter.qml (89%) rename dots/.config/quickshell/ii/modules/{ => ii}/overlay/fpsLimiter/FpsLimiterContent.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/overlay/recorder/Recorder.qml (99%) rename dots/.config/quickshell/ii/modules/{ => ii}/overlay/resources/Resources.qml (99%) rename dots/.config/quickshell/ii/modules/{ => ii}/overlay/volumeMixer/VolumeMixer.qml (96%) rename dots/.config/quickshell/ii/modules/{ => ii}/overview/Overview.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/overview/OverviewWidget.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/overview/OverviewWindow.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/overview/SearchBar.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/overview/SearchItem.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/overview/SearchWidget.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/polkit/Polkit.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/polkit/PolkitContent.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/regionSelector/CircleSelectionDetails.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/regionSelector/OptionsToolbar.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/regionSelector/RectCornersSelectionDetails.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/regionSelector/RegionFunctions.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/regionSelector/RegionSelection.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/regionSelector/RegionSelector.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/regionSelector/TargetRegion.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/screenCorners/ScreenCorners.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sessionScreen/SessionActionButton.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sessionScreen/SessionScreen.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarLeft/AiChat.qml (99%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarLeft/Anime.qml (99%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarLeft/ApiCommandButton.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarLeft/ApiInputBoxIndicator.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarLeft/DescriptionBox.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarLeft/ScrollToBottomButton.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarLeft/SidebarLeft.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarLeft/SidebarLeftContent.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarLeft/Translator.qml (99%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarLeft/aiChat/AiMessage.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarLeft/aiChat/AiMessageControlButton.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarLeft/aiChat/AnnotationSourceButton.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarLeft/aiChat/AttachedFileIndicator.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarLeft/aiChat/MessageCodeBlock.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarLeft/aiChat/MessageTextBlock.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarLeft/aiChat/MessageThinkBlock.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarLeft/aiChat/SearchQueryButton.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarLeft/anime/BooruImage.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarLeft/anime/BooruResponse.qml (99%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarLeft/translator/LanguageSelectorButton.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarLeft/translator/TextCanvas.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/BottomWidgetGroup.qml (98%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/CenterWidgetGroup.qml (80%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/QuickSliders.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/SidebarRight.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/SidebarRightContent.qml (97%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/bluetoothDevices/BluetoothDeviceItem.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/bluetoothDevices/BluetoothDialog.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/calendar/CalendarDayButton.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/calendar/CalendarHeaderButton.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/calendar/CalendarWidget.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/calendar/calendar_layout.js (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/nightLight/NightLightDialog.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/notifications/NotificationList.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/notifications/NotificationStatusButton.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/pomodoro/PomodoroTimer.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/pomodoro/PomodoroWidget.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/pomodoro/Stopwatch.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/AbstractQuickPanel.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/AndroidQuickPanel.qml (99%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/ClassicQuickPanel.qml (93%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/androidStyle/AndroidAntiFlashbangToggle.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/androidStyle/AndroidAudioToggle.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/androidStyle/AndroidBluetoothToggle.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/androidStyle/AndroidCloudflareWarpToggle.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/androidStyle/AndroidColorPickerToggle.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/androidStyle/AndroidDarkModeToggle.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/androidStyle/AndroidEasyEffectsToggle.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/androidStyle/AndroidGameModeToggle.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/androidStyle/AndroidIdleInhibitorToggle.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/androidStyle/AndroidMicToggle.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/androidStyle/AndroidMusicRecognition.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/androidStyle/AndroidNetworkToggle.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/androidStyle/AndroidNightLightToggle.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/androidStyle/AndroidNotificationToggle.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/androidStyle/AndroidOnScreenKeyboardToggle.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/androidStyle/AndroidPowerProfileToggle.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/androidStyle/AndroidQuickToggleButton.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/androidStyle/AndroidScreenSnipToggle.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/androidStyle/AndroidToggleDelegateChooser.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/classicStyle/BluetoothToggle.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/classicStyle/CloudflareWarp.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/classicStyle/EasyEffectsToggle.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/classicStyle/GameMode.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/classicStyle/IdleInhibitor.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/classicStyle/NetworkToggle.qml (93%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/classicStyle/NightLight.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/quickToggles/classicStyle/QuickToggleButton.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/todo/TaskList.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/todo/TodoItemActionButton.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/todo/TodoWidget.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/volumeMixer/AudioDeviceSelectorButton.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/volumeMixer/VolumeDialog.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/volumeMixer/VolumeDialogContent.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/volumeMixer/VolumeMixerEntry.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/wifiNetworks/WifiDialog.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/sidebarRight/wifiNetworks/WifiNetworkItem.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/verticalBar/BatteryIndicator.qml (98%) rename dots/.config/quickshell/ii/modules/{ => ii}/verticalBar/Resource.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/verticalBar/Resources.qml (97%) rename dots/.config/quickshell/ii/modules/{ => ii}/verticalBar/VerticalBar.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/verticalBar/VerticalBarContent.qml (99%) rename dots/.config/quickshell/ii/modules/{ => ii}/verticalBar/VerticalClockWidget.qml (97%) rename dots/.config/quickshell/ii/modules/{ => ii}/verticalBar/VerticalDateWidget.qml (98%) rename dots/.config/quickshell/ii/modules/{ => ii}/verticalBar/VerticalMedia.qml (98%) rename dots/.config/quickshell/ii/modules/{ => ii}/wallpaperSelector/WallpaperDirectoryItem.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/wallpaperSelector/WallpaperSelector.qml (100%) rename dots/.config/quickshell/ii/modules/{ => ii}/wallpaperSelector/WallpaperSelectorContent.qml (100%) diff --git a/dots/.config/quickshell/ii/modules/background/Background.qml b/dots/.config/quickshell/ii/modules/ii/background/Background.qml similarity index 99% rename from dots/.config/quickshell/ii/modules/background/Background.qml rename to dots/.config/quickshell/ii/modules/ii/background/Background.qml index bb0e1a42f..68d8b1698 100644 --- a/dots/.config/quickshell/ii/modules/background/Background.qml +++ b/dots/.config/quickshell/ii/modules/ii/background/Background.qml @@ -14,9 +14,9 @@ import Quickshell.Io import Quickshell.Wayland import Quickshell.Hyprland -import qs.modules.background.widgets -import qs.modules.background.widgets.clock -import qs.modules.background.widgets.weather +import qs.modules.ii.background.widgets +import qs.modules.ii.background.widgets.clock +import qs.modules.ii.background.widgets.weather Variants { id: root diff --git a/dots/.config/quickshell/ii/modules/background/widgets/AbstractBackgroundWidget.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/AbstractBackgroundWidget.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/background/widgets/AbstractBackgroundWidget.qml rename to dots/.config/quickshell/ii/modules/ii/background/widgets/AbstractBackgroundWidget.qml diff --git a/dots/.config/quickshell/ii/modules/background/widgets/clock/ClockWidget.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/ClockWidget.qml similarity index 99% rename from dots/.config/quickshell/ii/modules/background/widgets/clock/ClockWidget.qml rename to dots/.config/quickshell/ii/modules/ii/background/widgets/clock/ClockWidget.qml index 84cc7e01b..149ce169e 100644 --- a/dots/.config/quickshell/ii/modules/background/widgets/clock/ClockWidget.qml +++ b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/ClockWidget.qml @@ -6,7 +6,7 @@ import qs.modules.common import qs.modules.common.functions import qs.modules.common.widgets import qs.modules.common.widgets.widgetCanvas -import qs.modules.background.widgets +import qs.modules.ii.background.widgets AbstractBackgroundWidget { id: root diff --git a/dots/.config/quickshell/ii/modules/background/widgets/clock/CookieClock.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/CookieClock.qml similarity index 98% rename from dots/.config/quickshell/ii/modules/background/widgets/clock/CookieClock.qml rename to dots/.config/quickshell/ii/modules/ii/background/widgets/clock/CookieClock.qml index 1284e4299..7eaa04b98 100644 --- a/dots/.config/quickshell/ii/modules/background/widgets/clock/CookieClock.qml +++ b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/CookieClock.qml @@ -9,8 +9,8 @@ import QtQuick.Layouts import Qt5Compat.GraphicalEffects import Quickshell.Io -import qs.modules.background.widgets.clock.dateIndicator -import qs.modules.background.widgets.clock.minuteMarks +import qs.modules.ii.background.widgets.clock.dateIndicator +import qs.modules.ii.background.widgets.clock.minuteMarks Item { id: root diff --git a/dots/.config/quickshell/ii/modules/background/widgets/clock/CookieQuote.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/CookieQuote.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/background/widgets/clock/CookieQuote.qml rename to dots/.config/quickshell/ii/modules/ii/background/widgets/clock/CookieQuote.qml diff --git a/dots/.config/quickshell/ii/modules/background/widgets/clock/HourHand.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/HourHand.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/background/widgets/clock/HourHand.qml rename to dots/.config/quickshell/ii/modules/ii/background/widgets/clock/HourHand.qml diff --git a/dots/.config/quickshell/ii/modules/background/widgets/clock/HourMarks.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/HourMarks.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/background/widgets/clock/HourMarks.qml rename to dots/.config/quickshell/ii/modules/ii/background/widgets/clock/HourMarks.qml diff --git a/dots/.config/quickshell/ii/modules/background/widgets/clock/MinuteHand.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/MinuteHand.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/background/widgets/clock/MinuteHand.qml rename to dots/.config/quickshell/ii/modules/ii/background/widgets/clock/MinuteHand.qml diff --git a/dots/.config/quickshell/ii/modules/background/widgets/clock/SecondHand.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/SecondHand.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/background/widgets/clock/SecondHand.qml rename to dots/.config/quickshell/ii/modules/ii/background/widgets/clock/SecondHand.qml diff --git a/dots/.config/quickshell/ii/modules/background/widgets/clock/TimeColumn.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/TimeColumn.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/background/widgets/clock/TimeColumn.qml rename to dots/.config/quickshell/ii/modules/ii/background/widgets/clock/TimeColumn.qml diff --git a/dots/.config/quickshell/ii/modules/background/widgets/clock/dateIndicator/BubbleDate.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/dateIndicator/BubbleDate.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/background/widgets/clock/dateIndicator/BubbleDate.qml rename to dots/.config/quickshell/ii/modules/ii/background/widgets/clock/dateIndicator/BubbleDate.qml diff --git a/dots/.config/quickshell/ii/modules/background/widgets/clock/dateIndicator/DateIndicator.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/dateIndicator/DateIndicator.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/background/widgets/clock/dateIndicator/DateIndicator.qml rename to dots/.config/quickshell/ii/modules/ii/background/widgets/clock/dateIndicator/DateIndicator.qml diff --git a/dots/.config/quickshell/ii/modules/background/widgets/clock/dateIndicator/RectangleDate.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/dateIndicator/RectangleDate.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/background/widgets/clock/dateIndicator/RectangleDate.qml rename to dots/.config/quickshell/ii/modules/ii/background/widgets/clock/dateIndicator/RectangleDate.qml diff --git a/dots/.config/quickshell/ii/modules/background/widgets/clock/dateIndicator/RotatingDate.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/dateIndicator/RotatingDate.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/background/widgets/clock/dateIndicator/RotatingDate.qml rename to dots/.config/quickshell/ii/modules/ii/background/widgets/clock/dateIndicator/RotatingDate.qml diff --git a/dots/.config/quickshell/ii/modules/background/widgets/clock/minuteMarks/BigHourNumbers.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/minuteMarks/BigHourNumbers.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/background/widgets/clock/minuteMarks/BigHourNumbers.qml rename to dots/.config/quickshell/ii/modules/ii/background/widgets/clock/minuteMarks/BigHourNumbers.qml diff --git a/dots/.config/quickshell/ii/modules/background/widgets/clock/minuteMarks/Dots.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/minuteMarks/Dots.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/background/widgets/clock/minuteMarks/Dots.qml rename to dots/.config/quickshell/ii/modules/ii/background/widgets/clock/minuteMarks/Dots.qml diff --git a/dots/.config/quickshell/ii/modules/background/widgets/clock/minuteMarks/Lines.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/minuteMarks/Lines.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/background/widgets/clock/minuteMarks/Lines.qml rename to dots/.config/quickshell/ii/modules/ii/background/widgets/clock/minuteMarks/Lines.qml diff --git a/dots/.config/quickshell/ii/modules/background/widgets/clock/minuteMarks/MinuteMarks.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/minuteMarks/MinuteMarks.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/background/widgets/clock/minuteMarks/MinuteMarks.qml rename to dots/.config/quickshell/ii/modules/ii/background/widgets/clock/minuteMarks/MinuteMarks.qml diff --git a/dots/.config/quickshell/ii/modules/background/widgets/weather/WeatherWidget.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/weather/WeatherWidget.qml similarity index 97% rename from dots/.config/quickshell/ii/modules/background/widgets/weather/WeatherWidget.qml rename to dots/.config/quickshell/ii/modules/ii/background/widgets/weather/WeatherWidget.qml index 322772cbe..ef626700e 100644 --- a/dots/.config/quickshell/ii/modules/background/widgets/weather/WeatherWidget.qml +++ b/dots/.config/quickshell/ii/modules/ii/background/widgets/weather/WeatherWidget.qml @@ -5,7 +5,7 @@ import qs.modules.common import qs.modules.common.functions import qs.modules.common.widgets import qs.modules.common.widgets.widgetCanvas -import qs.modules.background.widgets +import qs.modules.ii.background.widgets AbstractBackgroundWidget { id: root diff --git a/dots/.config/quickshell/ii/modules/bar/ActiveWindow.qml b/dots/.config/quickshell/ii/modules/ii/bar/ActiveWindow.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/ActiveWindow.qml rename to dots/.config/quickshell/ii/modules/ii/bar/ActiveWindow.qml diff --git a/dots/.config/quickshell/ii/modules/bar/Bar.qml b/dots/.config/quickshell/ii/modules/ii/bar/Bar.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/Bar.qml rename to dots/.config/quickshell/ii/modules/ii/bar/Bar.qml diff --git a/dots/.config/quickshell/ii/modules/bar/BarContent.qml b/dots/.config/quickshell/ii/modules/ii/bar/BarContent.qml similarity index 99% rename from dots/.config/quickshell/ii/modules/bar/BarContent.qml rename to dots/.config/quickshell/ii/modules/ii/bar/BarContent.qml index 03e01aa99..186d76040 100644 --- a/dots/.config/quickshell/ii/modules/bar/BarContent.qml +++ b/dots/.config/quickshell/ii/modules/ii/bar/BarContent.qml @@ -1,4 +1,4 @@ -import qs.modules.bar.weather +import qs.modules.ii.bar.weather import QtQuick import QtQuick.Layouts import Quickshell diff --git a/dots/.config/quickshell/ii/modules/bar/BarGroup.qml b/dots/.config/quickshell/ii/modules/ii/bar/BarGroup.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/BarGroup.qml rename to dots/.config/quickshell/ii/modules/ii/bar/BarGroup.qml diff --git a/dots/.config/quickshell/ii/modules/bar/BatteryIndicator.qml b/dots/.config/quickshell/ii/modules/ii/bar/BatteryIndicator.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/BatteryIndicator.qml rename to dots/.config/quickshell/ii/modules/ii/bar/BatteryIndicator.qml diff --git a/dots/.config/quickshell/ii/modules/bar/BatteryPopup.qml b/dots/.config/quickshell/ii/modules/ii/bar/BatteryPopup.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/BatteryPopup.qml rename to dots/.config/quickshell/ii/modules/ii/bar/BatteryPopup.qml diff --git a/dots/.config/quickshell/ii/modules/bar/CircleUtilButton.qml b/dots/.config/quickshell/ii/modules/ii/bar/CircleUtilButton.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/CircleUtilButton.qml rename to dots/.config/quickshell/ii/modules/ii/bar/CircleUtilButton.qml diff --git a/dots/.config/quickshell/ii/modules/bar/ClockWidget.qml b/dots/.config/quickshell/ii/modules/ii/bar/ClockWidget.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/ClockWidget.qml rename to dots/.config/quickshell/ii/modules/ii/bar/ClockWidget.qml diff --git a/dots/.config/quickshell/ii/modules/bar/ClockWidgetPopup.qml b/dots/.config/quickshell/ii/modules/ii/bar/ClockWidgetPopup.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/ClockWidgetPopup.qml rename to dots/.config/quickshell/ii/modules/ii/bar/ClockWidgetPopup.qml diff --git a/dots/.config/quickshell/ii/modules/bar/HyprlandXkbIndicator.qml b/dots/.config/quickshell/ii/modules/ii/bar/HyprlandXkbIndicator.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/HyprlandXkbIndicator.qml rename to dots/.config/quickshell/ii/modules/ii/bar/HyprlandXkbIndicator.qml diff --git a/dots/.config/quickshell/ii/modules/bar/LeftSidebarButton.qml b/dots/.config/quickshell/ii/modules/ii/bar/LeftSidebarButton.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/LeftSidebarButton.qml rename to dots/.config/quickshell/ii/modules/ii/bar/LeftSidebarButton.qml diff --git a/dots/.config/quickshell/ii/modules/bar/Media.qml b/dots/.config/quickshell/ii/modules/ii/bar/Media.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/Media.qml rename to dots/.config/quickshell/ii/modules/ii/bar/Media.qml diff --git a/dots/.config/quickshell/ii/modules/bar/NotificationUnreadCount.qml b/dots/.config/quickshell/ii/modules/ii/bar/NotificationUnreadCount.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/NotificationUnreadCount.qml rename to dots/.config/quickshell/ii/modules/ii/bar/NotificationUnreadCount.qml diff --git a/dots/.config/quickshell/ii/modules/bar/Resource.qml b/dots/.config/quickshell/ii/modules/ii/bar/Resource.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/Resource.qml rename to dots/.config/quickshell/ii/modules/ii/bar/Resource.qml diff --git a/dots/.config/quickshell/ii/modules/bar/Resources.qml b/dots/.config/quickshell/ii/modules/ii/bar/Resources.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/Resources.qml rename to dots/.config/quickshell/ii/modules/ii/bar/Resources.qml diff --git a/dots/.config/quickshell/ii/modules/bar/ResourcesPopup.qml b/dots/.config/quickshell/ii/modules/ii/bar/ResourcesPopup.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/ResourcesPopup.qml rename to dots/.config/quickshell/ii/modules/ii/bar/ResourcesPopup.qml diff --git a/dots/.config/quickshell/ii/modules/bar/ScrollHint.qml b/dots/.config/quickshell/ii/modules/ii/bar/ScrollHint.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/ScrollHint.qml rename to dots/.config/quickshell/ii/modules/ii/bar/ScrollHint.qml diff --git a/dots/.config/quickshell/ii/modules/bar/StyledPopup.qml b/dots/.config/quickshell/ii/modules/ii/bar/StyledPopup.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/StyledPopup.qml rename to dots/.config/quickshell/ii/modules/ii/bar/StyledPopup.qml diff --git a/dots/.config/quickshell/ii/modules/bar/StyledPopupHeaderRow.qml b/dots/.config/quickshell/ii/modules/ii/bar/StyledPopupHeaderRow.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/StyledPopupHeaderRow.qml rename to dots/.config/quickshell/ii/modules/ii/bar/StyledPopupHeaderRow.qml diff --git a/dots/.config/quickshell/ii/modules/bar/StyledPopupValueRow.qml b/dots/.config/quickshell/ii/modules/ii/bar/StyledPopupValueRow.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/StyledPopupValueRow.qml rename to dots/.config/quickshell/ii/modules/ii/bar/StyledPopupValueRow.qml diff --git a/dots/.config/quickshell/ii/modules/bar/SysTray.qml b/dots/.config/quickshell/ii/modules/ii/bar/SysTray.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/SysTray.qml rename to dots/.config/quickshell/ii/modules/ii/bar/SysTray.qml diff --git a/dots/.config/quickshell/ii/modules/bar/SysTrayItem.qml b/dots/.config/quickshell/ii/modules/ii/bar/SysTrayItem.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/SysTrayItem.qml rename to dots/.config/quickshell/ii/modules/ii/bar/SysTrayItem.qml diff --git a/dots/.config/quickshell/ii/modules/bar/SysTrayMenu.qml b/dots/.config/quickshell/ii/modules/ii/bar/SysTrayMenu.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/SysTrayMenu.qml rename to dots/.config/quickshell/ii/modules/ii/bar/SysTrayMenu.qml diff --git a/dots/.config/quickshell/ii/modules/bar/SysTrayMenuEntry.qml b/dots/.config/quickshell/ii/modules/ii/bar/SysTrayMenuEntry.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/SysTrayMenuEntry.qml rename to dots/.config/quickshell/ii/modules/ii/bar/SysTrayMenuEntry.qml diff --git a/dots/.config/quickshell/ii/modules/bar/UtilButtons.qml b/dots/.config/quickshell/ii/modules/ii/bar/UtilButtons.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/UtilButtons.qml rename to dots/.config/quickshell/ii/modules/ii/bar/UtilButtons.qml diff --git a/dots/.config/quickshell/ii/modules/bar/Workspaces.qml b/dots/.config/quickshell/ii/modules/ii/bar/Workspaces.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/Workspaces.qml rename to dots/.config/quickshell/ii/modules/ii/bar/Workspaces.qml diff --git a/dots/.config/quickshell/ii/modules/bar/weather/WeatherBar.qml b/dots/.config/quickshell/ii/modules/ii/bar/weather/WeatherBar.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/weather/WeatherBar.qml rename to dots/.config/quickshell/ii/modules/ii/bar/weather/WeatherBar.qml diff --git a/dots/.config/quickshell/ii/modules/bar/weather/WeatherCard.qml b/dots/.config/quickshell/ii/modules/ii/bar/weather/WeatherCard.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/bar/weather/WeatherCard.qml rename to dots/.config/quickshell/ii/modules/ii/bar/weather/WeatherCard.qml diff --git a/dots/.config/quickshell/ii/modules/bar/weather/WeatherPopup.qml b/dots/.config/quickshell/ii/modules/ii/bar/weather/WeatherPopup.qml similarity index 99% rename from dots/.config/quickshell/ii/modules/bar/weather/WeatherPopup.qml rename to dots/.config/quickshell/ii/modules/ii/bar/weather/WeatherPopup.qml index 0c06932f7..85d9c1bac 100644 --- a/dots/.config/quickshell/ii/modules/bar/weather/WeatherPopup.qml +++ b/dots/.config/quickshell/ii/modules/ii/bar/weather/WeatherPopup.qml @@ -4,7 +4,7 @@ import qs.modules.common.widgets import QtQuick import QtQuick.Layouts -import qs.modules.bar +import qs.modules.ii.bar StyledPopup { id: root diff --git a/dots/.config/quickshell/ii/modules/cheatsheet/Cheatsheet.qml b/dots/.config/quickshell/ii/modules/ii/cheatsheet/Cheatsheet.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/cheatsheet/Cheatsheet.qml rename to dots/.config/quickshell/ii/modules/ii/cheatsheet/Cheatsheet.qml diff --git a/dots/.config/quickshell/ii/modules/cheatsheet/CheatsheetKeybinds.qml b/dots/.config/quickshell/ii/modules/ii/cheatsheet/CheatsheetKeybinds.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/cheatsheet/CheatsheetKeybinds.qml rename to dots/.config/quickshell/ii/modules/ii/cheatsheet/CheatsheetKeybinds.qml diff --git a/dots/.config/quickshell/ii/modules/cheatsheet/CheatsheetPeriodicTable.qml b/dots/.config/quickshell/ii/modules/ii/cheatsheet/CheatsheetPeriodicTable.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/cheatsheet/CheatsheetPeriodicTable.qml rename to dots/.config/quickshell/ii/modules/ii/cheatsheet/CheatsheetPeriodicTable.qml diff --git a/dots/.config/quickshell/ii/modules/cheatsheet/ElementTile.qml b/dots/.config/quickshell/ii/modules/ii/cheatsheet/ElementTile.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/cheatsheet/ElementTile.qml rename to dots/.config/quickshell/ii/modules/ii/cheatsheet/ElementTile.qml diff --git a/dots/.config/quickshell/ii/modules/cheatsheet/periodic_table.js b/dots/.config/quickshell/ii/modules/ii/cheatsheet/periodic_table.js similarity index 100% rename from dots/.config/quickshell/ii/modules/cheatsheet/periodic_table.js rename to dots/.config/quickshell/ii/modules/ii/cheatsheet/periodic_table.js diff --git a/dots/.config/quickshell/ii/modules/dock/Dock.qml b/dots/.config/quickshell/ii/modules/ii/dock/Dock.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/dock/Dock.qml rename to dots/.config/quickshell/ii/modules/ii/dock/Dock.qml diff --git a/dots/.config/quickshell/ii/modules/dock/DockAppButton.qml b/dots/.config/quickshell/ii/modules/ii/dock/DockAppButton.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/dock/DockAppButton.qml rename to dots/.config/quickshell/ii/modules/ii/dock/DockAppButton.qml diff --git a/dots/.config/quickshell/ii/modules/dock/DockApps.qml b/dots/.config/quickshell/ii/modules/ii/dock/DockApps.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/dock/DockApps.qml rename to dots/.config/quickshell/ii/modules/ii/dock/DockApps.qml diff --git a/dots/.config/quickshell/ii/modules/dock/DockButton.qml b/dots/.config/quickshell/ii/modules/ii/dock/DockButton.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/dock/DockButton.qml rename to dots/.config/quickshell/ii/modules/ii/dock/DockButton.qml diff --git a/dots/.config/quickshell/ii/modules/dock/DockSeparator.qml b/dots/.config/quickshell/ii/modules/ii/dock/DockSeparator.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/dock/DockSeparator.qml rename to dots/.config/quickshell/ii/modules/ii/dock/DockSeparator.qml diff --git a/dots/.config/quickshell/ii/modules/lock/Lock.qml b/dots/.config/quickshell/ii/modules/ii/lock/Lock.qml similarity index 99% rename from dots/.config/quickshell/ii/modules/lock/Lock.qml rename to dots/.config/quickshell/ii/modules/ii/lock/Lock.qml index 4266d03f7..e942f4fda 100644 --- a/dots/.config/quickshell/ii/modules/lock/Lock.qml +++ b/dots/.config/quickshell/ii/modules/ii/lock/Lock.qml @@ -3,7 +3,6 @@ import qs import qs.services import qs.modules.common import qs.modules.common.functions -import qs.modules.lock import QtQuick import Quickshell import Quickshell.Io diff --git a/dots/.config/quickshell/ii/modules/lock/LockContext.qml b/dots/.config/quickshell/ii/modules/ii/lock/LockContext.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/lock/LockContext.qml rename to dots/.config/quickshell/ii/modules/ii/lock/LockContext.qml diff --git a/dots/.config/quickshell/ii/modules/lock/LockSurface.qml b/dots/.config/quickshell/ii/modules/ii/lock/LockSurface.qml similarity index 99% rename from dots/.config/quickshell/ii/modules/lock/LockSurface.qml rename to dots/.config/quickshell/ii/modules/ii/lock/LockSurface.qml index 526a7d3b4..ff354ea70 100644 --- a/dots/.config/quickshell/ii/modules/lock/LockSurface.qml +++ b/dots/.config/quickshell/ii/modules/ii/lock/LockSurface.qml @@ -7,7 +7,7 @@ import qs.services import qs.modules.common import qs.modules.common.widgets import qs.modules.common.functions -import qs.modules.bar as Bar +import qs.modules.ii.bar as Bar import Quickshell import Quickshell.Services.SystemTray diff --git a/dots/.config/quickshell/ii/modules/lock/PasswordChars.qml b/dots/.config/quickshell/ii/modules/ii/lock/PasswordChars.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/lock/PasswordChars.qml rename to dots/.config/quickshell/ii/modules/ii/lock/PasswordChars.qml diff --git a/dots/.config/quickshell/ii/modules/lock/pam/fprintd.conf b/dots/.config/quickshell/ii/modules/ii/lock/pam/fprintd.conf similarity index 100% rename from dots/.config/quickshell/ii/modules/lock/pam/fprintd.conf rename to dots/.config/quickshell/ii/modules/ii/lock/pam/fprintd.conf diff --git a/dots/.config/quickshell/ii/modules/mediaControls/MediaControls.qml b/dots/.config/quickshell/ii/modules/ii/mediaControls/MediaControls.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/mediaControls/MediaControls.qml rename to dots/.config/quickshell/ii/modules/ii/mediaControls/MediaControls.qml index 75dca5926..fa60e0474 100644 --- a/dots/.config/quickshell/ii/modules/mediaControls/MediaControls.qml +++ b/dots/.config/quickshell/ii/modules/ii/mediaControls/MediaControls.qml @@ -1,8 +1,8 @@ pragma ComponentBehavior: Bound +import qs +import qs.services import qs.modules.common import qs.modules.common.widgets -import qs.services -import qs import qs.modules.common.functions import QtQuick import QtQuick.Layouts diff --git a/dots/.config/quickshell/ii/modules/mediaControls/PlayerControl.qml b/dots/.config/quickshell/ii/modules/ii/mediaControls/PlayerControl.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/mediaControls/PlayerControl.qml rename to dots/.config/quickshell/ii/modules/ii/mediaControls/PlayerControl.qml diff --git a/dots/.config/quickshell/ii/modules/notificationPopup/NotificationPopup.qml b/dots/.config/quickshell/ii/modules/ii/notificationPopup/NotificationPopup.qml similarity index 98% rename from dots/.config/quickshell/ii/modules/notificationPopup/NotificationPopup.qml rename to dots/.config/quickshell/ii/modules/ii/notificationPopup/NotificationPopup.qml index d954cbfb1..6ce998146 100644 --- a/dots/.config/quickshell/ii/modules/notificationPopup/NotificationPopup.qml +++ b/dots/.config/quickshell/ii/modules/ii/notificationPopup/NotificationPopup.qml @@ -4,7 +4,6 @@ import qs.modules.common.widgets import qs.services import QtQuick import QtQuick.Controls -import QtQuick.Layouts import Quickshell import Quickshell.Wayland import Quickshell.Hyprland diff --git a/dots/.config/quickshell/ii/modules/onScreenDisplay/OnScreenDisplay.qml b/dots/.config/quickshell/ii/modules/ii/onScreenDisplay/OnScreenDisplay.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/onScreenDisplay/OnScreenDisplay.qml rename to dots/.config/quickshell/ii/modules/ii/onScreenDisplay/OnScreenDisplay.qml diff --git a/dots/.config/quickshell/ii/modules/onScreenDisplay/OsdValueIndicator.qml b/dots/.config/quickshell/ii/modules/ii/onScreenDisplay/OsdValueIndicator.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/onScreenDisplay/OsdValueIndicator.qml rename to dots/.config/quickshell/ii/modules/ii/onScreenDisplay/OsdValueIndicator.qml diff --git a/dots/.config/quickshell/ii/modules/onScreenDisplay/indicators/BrightnessIndicator.qml b/dots/.config/quickshell/ii/modules/ii/onScreenDisplay/indicators/BrightnessIndicator.qml similarity index 92% rename from dots/.config/quickshell/ii/modules/onScreenDisplay/indicators/BrightnessIndicator.qml rename to dots/.config/quickshell/ii/modules/ii/onScreenDisplay/indicators/BrightnessIndicator.qml index 6041f8cfa..fbdbd7152 100644 --- a/dots/.config/quickshell/ii/modules/onScreenDisplay/indicators/BrightnessIndicator.qml +++ b/dots/.config/quickshell/ii/modules/ii/onScreenDisplay/indicators/BrightnessIndicator.qml @@ -2,7 +2,7 @@ import qs.services import QtQuick import Quickshell import Quickshell.Hyprland -import qs.modules.onScreenDisplay +import qs.modules.ii.onScreenDisplay OsdValueIndicator { id: root diff --git a/dots/.config/quickshell/ii/modules/onScreenDisplay/indicators/VolumeIndicator.qml b/dots/.config/quickshell/ii/modules/ii/onScreenDisplay/indicators/VolumeIndicator.qml similarity index 85% rename from dots/.config/quickshell/ii/modules/onScreenDisplay/indicators/VolumeIndicator.qml rename to dots/.config/quickshell/ii/modules/ii/onScreenDisplay/indicators/VolumeIndicator.qml index 487befdac..da8a690b4 100644 --- a/dots/.config/quickshell/ii/modules/onScreenDisplay/indicators/VolumeIndicator.qml +++ b/dots/.config/quickshell/ii/modules/ii/onScreenDisplay/indicators/VolumeIndicator.qml @@ -1,6 +1,6 @@ import qs.services import QtQuick -import qs.modules.onScreenDisplay +import qs.modules.ii.onScreenDisplay OsdValueIndicator { id: osdValues diff --git a/dots/.config/quickshell/ii/modules/onScreenKeyboard/OnScreenKeyboard.qml b/dots/.config/quickshell/ii/modules/ii/onScreenKeyboard/OnScreenKeyboard.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/onScreenKeyboard/OnScreenKeyboard.qml rename to dots/.config/quickshell/ii/modules/ii/onScreenKeyboard/OnScreenKeyboard.qml diff --git a/dots/.config/quickshell/ii/modules/onScreenKeyboard/OskContent.qml b/dots/.config/quickshell/ii/modules/ii/onScreenKeyboard/OskContent.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/onScreenKeyboard/OskContent.qml rename to dots/.config/quickshell/ii/modules/ii/onScreenKeyboard/OskContent.qml diff --git a/dots/.config/quickshell/ii/modules/onScreenKeyboard/OskKey.qml b/dots/.config/quickshell/ii/modules/ii/onScreenKeyboard/OskKey.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/onScreenKeyboard/OskKey.qml rename to dots/.config/quickshell/ii/modules/ii/onScreenKeyboard/OskKey.qml diff --git a/dots/.config/quickshell/ii/modules/onScreenKeyboard/layouts.js b/dots/.config/quickshell/ii/modules/ii/onScreenKeyboard/layouts.js similarity index 100% rename from dots/.config/quickshell/ii/modules/onScreenKeyboard/layouts.js rename to dots/.config/quickshell/ii/modules/ii/onScreenKeyboard/layouts.js diff --git a/dots/.config/quickshell/ii/modules/overlay/Overlay.qml b/dots/.config/quickshell/ii/modules/ii/overlay/Overlay.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/overlay/Overlay.qml rename to dots/.config/quickshell/ii/modules/ii/overlay/Overlay.qml diff --git a/dots/.config/quickshell/ii/modules/overlay/OverlayContent.qml b/dots/.config/quickshell/ii/modules/ii/overlay/OverlayContent.qml similarity index 98% rename from dots/.config/quickshell/ii/modules/overlay/OverlayContent.qml rename to dots/.config/quickshell/ii/modules/ii/overlay/OverlayContent.qml index 546962185..9c8340c9c 100644 --- a/dots/.config/quickshell/ii/modules/overlay/OverlayContent.qml +++ b/dots/.config/quickshell/ii/modules/ii/overlay/OverlayContent.qml @@ -8,8 +8,6 @@ import qs.modules.common import qs.modules.common.widgets import qs.modules.common.widgets.widgetCanvas -import qs.modules.overlay.crosshair - Item { id: root focus: true diff --git a/dots/.config/quickshell/ii/modules/overlay/OverlayContext.qml b/dots/.config/quickshell/ii/modules/ii/overlay/OverlayContext.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/overlay/OverlayContext.qml rename to dots/.config/quickshell/ii/modules/ii/overlay/OverlayContext.qml diff --git a/dots/.config/quickshell/ii/modules/overlay/OverlayTaskbar.qml b/dots/.config/quickshell/ii/modules/ii/overlay/OverlayTaskbar.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/overlay/OverlayTaskbar.qml rename to dots/.config/quickshell/ii/modules/ii/overlay/OverlayTaskbar.qml diff --git a/dots/.config/quickshell/ii/modules/overlay/OverlayWidgetDelegateChooser.qml b/dots/.config/quickshell/ii/modules/ii/overlay/OverlayWidgetDelegateChooser.qml similarity index 73% rename from dots/.config/quickshell/ii/modules/overlay/OverlayWidgetDelegateChooser.qml rename to dots/.config/quickshell/ii/modules/ii/overlay/OverlayWidgetDelegateChooser.qml index fc75d1455..d69c76719 100644 --- a/dots/.config/quickshell/ii/modules/overlay/OverlayWidgetDelegateChooser.qml +++ b/dots/.config/quickshell/ii/modules/ii/overlay/OverlayWidgetDelegateChooser.qml @@ -6,11 +6,11 @@ import QtQuick import QtQuick.Layouts import Quickshell import Quickshell.Bluetooth -import qs.modules.overlay.crosshair -import qs.modules.overlay.volumeMixer -import qs.modules.overlay.fpsLimiter -import qs.modules.overlay.recorder -import qs.modules.overlay.resources +import qs.modules.ii.overlay.crosshair +import qs.modules.ii.overlay.volumeMixer +import qs.modules.ii.overlay.fpsLimiter +import qs.modules.ii.overlay.recorder +import qs.modules.ii.overlay.resources DelegateChooser { id: root diff --git a/dots/.config/quickshell/ii/modules/overlay/StyledOverlayWidget.qml b/dots/.config/quickshell/ii/modules/ii/overlay/StyledOverlayWidget.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/overlay/StyledOverlayWidget.qml rename to dots/.config/quickshell/ii/modules/ii/overlay/StyledOverlayWidget.qml diff --git a/dots/.config/quickshell/ii/modules/overlay/crosshair/Crosshair.qml b/dots/.config/quickshell/ii/modules/ii/overlay/crosshair/Crosshair.qml similarity index 93% rename from dots/.config/quickshell/ii/modules/overlay/crosshair/Crosshair.qml rename to dots/.config/quickshell/ii/modules/ii/overlay/crosshair/Crosshair.qml index ea2f5a1ad..b68884421 100644 --- a/dots/.config/quickshell/ii/modules/overlay/crosshair/Crosshair.qml +++ b/dots/.config/quickshell/ii/modules/ii/overlay/crosshair/Crosshair.qml @@ -2,7 +2,7 @@ import QtQuick import QtQuick.Layouts import Quickshell import qs.modules.common -import qs.modules.overlay +import qs.modules.ii.overlay StyledOverlayWidget { id: root diff --git a/dots/.config/quickshell/ii/modules/overlay/crosshair/CrosshairContent.qml b/dots/.config/quickshell/ii/modules/ii/overlay/crosshair/CrosshairContent.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/overlay/crosshair/CrosshairContent.qml rename to dots/.config/quickshell/ii/modules/ii/overlay/crosshair/CrosshairContent.qml diff --git a/dots/.config/quickshell/ii/modules/overlay/fpsLimiter/FpsLimiter.qml b/dots/.config/quickshell/ii/modules/ii/overlay/fpsLimiter/FpsLimiter.qml similarity index 89% rename from dots/.config/quickshell/ii/modules/overlay/fpsLimiter/FpsLimiter.qml rename to dots/.config/quickshell/ii/modules/ii/overlay/fpsLimiter/FpsLimiter.qml index 65711c6d2..857a423df 100644 --- a/dots/.config/quickshell/ii/modules/overlay/fpsLimiter/FpsLimiter.qml +++ b/dots/.config/quickshell/ii/modules/ii/overlay/fpsLimiter/FpsLimiter.qml @@ -1,7 +1,7 @@ import QtQuick import Quickshell import qs.modules.common -import qs.modules.overlay +import qs.modules.ii.overlay StyledOverlayWidget { id: root diff --git a/dots/.config/quickshell/ii/modules/overlay/fpsLimiter/FpsLimiterContent.qml b/dots/.config/quickshell/ii/modules/ii/overlay/fpsLimiter/FpsLimiterContent.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/overlay/fpsLimiter/FpsLimiterContent.qml rename to dots/.config/quickshell/ii/modules/ii/overlay/fpsLimiter/FpsLimiterContent.qml diff --git a/dots/.config/quickshell/ii/modules/overlay/recorder/Recorder.qml b/dots/.config/quickshell/ii/modules/ii/overlay/recorder/Recorder.qml similarity index 99% rename from dots/.config/quickshell/ii/modules/overlay/recorder/Recorder.qml rename to dots/.config/quickshell/ii/modules/ii/overlay/recorder/Recorder.qml index 05c0fa680..83e25cdc7 100644 --- a/dots/.config/quickshell/ii/modules/overlay/recorder/Recorder.qml +++ b/dots/.config/quickshell/ii/modules/ii/overlay/recorder/Recorder.qml @@ -5,7 +5,7 @@ import Quickshell import qs import qs.modules.common import qs.modules.common.widgets -import qs.modules.overlay +import qs.modules.ii.overlay StyledOverlayWidget { id: root diff --git a/dots/.config/quickshell/ii/modules/overlay/resources/Resources.qml b/dots/.config/quickshell/ii/modules/ii/overlay/resources/Resources.qml similarity index 99% rename from dots/.config/quickshell/ii/modules/overlay/resources/Resources.qml rename to dots/.config/quickshell/ii/modules/ii/overlay/resources/Resources.qml index 0dcd6d0f6..8af7aa79f 100644 --- a/dots/.config/quickshell/ii/modules/overlay/resources/Resources.qml +++ b/dots/.config/quickshell/ii/modules/ii/overlay/resources/Resources.qml @@ -10,7 +10,7 @@ import qs import qs.services import qs.modules.common import qs.modules.common.widgets -import qs.modules.overlay +import qs.modules.ii.overlay StyledOverlayWidget { id: root diff --git a/dots/.config/quickshell/ii/modules/overlay/volumeMixer/VolumeMixer.qml b/dots/.config/quickshell/ii/modules/ii/overlay/volumeMixer/VolumeMixer.qml similarity index 96% rename from dots/.config/quickshell/ii/modules/overlay/volumeMixer/VolumeMixer.qml rename to dots/.config/quickshell/ii/modules/ii/overlay/volumeMixer/VolumeMixer.qml index 228ea575d..2bc1581d1 100644 --- a/dots/.config/quickshell/ii/modules/overlay/volumeMixer/VolumeMixer.qml +++ b/dots/.config/quickshell/ii/modules/ii/overlay/volumeMixer/VolumeMixer.qml @@ -5,8 +5,8 @@ import Quickshell import qs.services import qs.modules.common import qs.modules.common.widgets -import qs.modules.overlay -import qs.modules.sidebarRight.volumeMixer +import qs.modules.ii.overlay +import qs.modules.ii.sidebarRight.volumeMixer StyledOverlayWidget { id: root diff --git a/dots/.config/quickshell/ii/modules/overview/Overview.qml b/dots/.config/quickshell/ii/modules/ii/overview/Overview.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/overview/Overview.qml rename to dots/.config/quickshell/ii/modules/ii/overview/Overview.qml diff --git a/dots/.config/quickshell/ii/modules/overview/OverviewWidget.qml b/dots/.config/quickshell/ii/modules/ii/overview/OverviewWidget.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/overview/OverviewWidget.qml rename to dots/.config/quickshell/ii/modules/ii/overview/OverviewWidget.qml diff --git a/dots/.config/quickshell/ii/modules/overview/OverviewWindow.qml b/dots/.config/quickshell/ii/modules/ii/overview/OverviewWindow.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/overview/OverviewWindow.qml rename to dots/.config/quickshell/ii/modules/ii/overview/OverviewWindow.qml diff --git a/dots/.config/quickshell/ii/modules/overview/SearchBar.qml b/dots/.config/quickshell/ii/modules/ii/overview/SearchBar.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/overview/SearchBar.qml rename to dots/.config/quickshell/ii/modules/ii/overview/SearchBar.qml diff --git a/dots/.config/quickshell/ii/modules/overview/SearchItem.qml b/dots/.config/quickshell/ii/modules/ii/overview/SearchItem.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/overview/SearchItem.qml rename to dots/.config/quickshell/ii/modules/ii/overview/SearchItem.qml diff --git a/dots/.config/quickshell/ii/modules/overview/SearchWidget.qml b/dots/.config/quickshell/ii/modules/ii/overview/SearchWidget.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/overview/SearchWidget.qml rename to dots/.config/quickshell/ii/modules/ii/overview/SearchWidget.qml diff --git a/dots/.config/quickshell/ii/modules/polkit/Polkit.qml b/dots/.config/quickshell/ii/modules/ii/polkit/Polkit.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/polkit/Polkit.qml rename to dots/.config/quickshell/ii/modules/ii/polkit/Polkit.qml diff --git a/dots/.config/quickshell/ii/modules/polkit/PolkitContent.qml b/dots/.config/quickshell/ii/modules/ii/polkit/PolkitContent.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/polkit/PolkitContent.qml rename to dots/.config/quickshell/ii/modules/ii/polkit/PolkitContent.qml diff --git a/dots/.config/quickshell/ii/modules/regionSelector/CircleSelectionDetails.qml b/dots/.config/quickshell/ii/modules/ii/regionSelector/CircleSelectionDetails.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/regionSelector/CircleSelectionDetails.qml rename to dots/.config/quickshell/ii/modules/ii/regionSelector/CircleSelectionDetails.qml diff --git a/dots/.config/quickshell/ii/modules/regionSelector/OptionsToolbar.qml b/dots/.config/quickshell/ii/modules/ii/regionSelector/OptionsToolbar.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/regionSelector/OptionsToolbar.qml rename to dots/.config/quickshell/ii/modules/ii/regionSelector/OptionsToolbar.qml diff --git a/dots/.config/quickshell/ii/modules/regionSelector/RectCornersSelectionDetails.qml b/dots/.config/quickshell/ii/modules/ii/regionSelector/RectCornersSelectionDetails.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/regionSelector/RectCornersSelectionDetails.qml rename to dots/.config/quickshell/ii/modules/ii/regionSelector/RectCornersSelectionDetails.qml diff --git a/dots/.config/quickshell/ii/modules/regionSelector/RegionFunctions.qml b/dots/.config/quickshell/ii/modules/ii/regionSelector/RegionFunctions.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/regionSelector/RegionFunctions.qml rename to dots/.config/quickshell/ii/modules/ii/regionSelector/RegionFunctions.qml diff --git a/dots/.config/quickshell/ii/modules/regionSelector/RegionSelection.qml b/dots/.config/quickshell/ii/modules/ii/regionSelector/RegionSelection.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/regionSelector/RegionSelection.qml rename to dots/.config/quickshell/ii/modules/ii/regionSelector/RegionSelection.qml diff --git a/dots/.config/quickshell/ii/modules/regionSelector/RegionSelector.qml b/dots/.config/quickshell/ii/modules/ii/regionSelector/RegionSelector.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/regionSelector/RegionSelector.qml rename to dots/.config/quickshell/ii/modules/ii/regionSelector/RegionSelector.qml diff --git a/dots/.config/quickshell/ii/modules/regionSelector/TargetRegion.qml b/dots/.config/quickshell/ii/modules/ii/regionSelector/TargetRegion.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/regionSelector/TargetRegion.qml rename to dots/.config/quickshell/ii/modules/ii/regionSelector/TargetRegion.qml diff --git a/dots/.config/quickshell/ii/modules/screenCorners/ScreenCorners.qml b/dots/.config/quickshell/ii/modules/ii/screenCorners/ScreenCorners.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/screenCorners/ScreenCorners.qml rename to dots/.config/quickshell/ii/modules/ii/screenCorners/ScreenCorners.qml diff --git a/dots/.config/quickshell/ii/modules/sessionScreen/SessionActionButton.qml b/dots/.config/quickshell/ii/modules/ii/sessionScreen/SessionActionButton.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sessionScreen/SessionActionButton.qml rename to dots/.config/quickshell/ii/modules/ii/sessionScreen/SessionActionButton.qml diff --git a/dots/.config/quickshell/ii/modules/sessionScreen/SessionScreen.qml b/dots/.config/quickshell/ii/modules/ii/sessionScreen/SessionScreen.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sessionScreen/SessionScreen.qml rename to dots/.config/quickshell/ii/modules/ii/sessionScreen/SessionScreen.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/AiChat.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/AiChat.qml similarity index 99% rename from dots/.config/quickshell/ii/modules/sidebarLeft/AiChat.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarLeft/AiChat.qml index e4ded1eeb..0e0eeb2b9 100644 --- a/dots/.config/quickshell/ii/modules/sidebarLeft/AiChat.qml +++ b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/AiChat.qml @@ -3,7 +3,7 @@ import qs.services import qs.modules.common import qs.modules.common.widgets import qs.modules.common.functions -import qs.modules.sidebarLeft.aiChat +import qs.modules.ii.sidebarLeft.aiChat import QtQuick import QtQuick.Controls import QtQuick.Layouts diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/Anime.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/Anime.qml similarity index 99% rename from dots/.config/quickshell/ii/modules/sidebarLeft/Anime.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarLeft/Anime.qml index ff4b22d42..a30b1ef15 100644 --- a/dots/.config/quickshell/ii/modules/sidebarLeft/Anime.qml +++ b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/Anime.qml @@ -3,7 +3,7 @@ import qs.services import qs.modules.common import qs.modules.common.widgets import qs.modules.common.functions -import qs.modules.sidebarLeft.anime +import qs.modules.ii.sidebarLeft.anime import QtQuick import QtQuick.Controls import QtQuick.Layouts diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/ApiCommandButton.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/ApiCommandButton.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarLeft/ApiCommandButton.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarLeft/ApiCommandButton.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/ApiInputBoxIndicator.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/ApiInputBoxIndicator.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarLeft/ApiInputBoxIndicator.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarLeft/ApiInputBoxIndicator.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/DescriptionBox.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/DescriptionBox.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarLeft/DescriptionBox.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarLeft/DescriptionBox.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/ScrollToBottomButton.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/ScrollToBottomButton.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarLeft/ScrollToBottomButton.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarLeft/ScrollToBottomButton.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/SidebarLeft.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/SidebarLeft.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarLeft/SidebarLeft.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarLeft/SidebarLeft.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/SidebarLeftContent.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/SidebarLeftContent.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarLeft/SidebarLeftContent.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarLeft/SidebarLeftContent.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/Translator.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/Translator.qml similarity index 99% rename from dots/.config/quickshell/ii/modules/sidebarLeft/Translator.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarLeft/Translator.qml index bde48f532..4cd25449c 100644 --- a/dots/.config/quickshell/ii/modules/sidebarLeft/Translator.qml +++ b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/Translator.qml @@ -2,7 +2,7 @@ import qs.services import qs.modules.common import qs.modules.common.widgets import qs.modules.common.functions -import qs.modules.sidebarLeft.translator +import qs.modules.ii.sidebarLeft.translator import QtQuick import QtQuick.Layouts import Quickshell diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/aiChat/AiMessage.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/AiMessage.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarLeft/aiChat/AiMessage.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/AiMessage.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/aiChat/AiMessageControlButton.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/AiMessageControlButton.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarLeft/aiChat/AiMessageControlButton.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/AiMessageControlButton.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/aiChat/AnnotationSourceButton.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/AnnotationSourceButton.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarLeft/aiChat/AnnotationSourceButton.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/AnnotationSourceButton.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/aiChat/AttachedFileIndicator.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/AttachedFileIndicator.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarLeft/aiChat/AttachedFileIndicator.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/AttachedFileIndicator.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/aiChat/MessageCodeBlock.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/MessageCodeBlock.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarLeft/aiChat/MessageCodeBlock.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/MessageCodeBlock.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/aiChat/MessageTextBlock.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/MessageTextBlock.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarLeft/aiChat/MessageTextBlock.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/MessageTextBlock.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/aiChat/MessageThinkBlock.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/MessageThinkBlock.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarLeft/aiChat/MessageThinkBlock.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/MessageThinkBlock.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/aiChat/SearchQueryButton.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/SearchQueryButton.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarLeft/aiChat/SearchQueryButton.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/SearchQueryButton.qml index 4ad60ac9c..1c1d03608 100644 --- a/dots/.config/quickshell/ii/modules/sidebarLeft/aiChat/SearchQueryButton.qml +++ b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/SearchQueryButton.qml @@ -1,7 +1,7 @@ import qs +import qs.services import qs.modules.common import qs.modules.common.widgets -import qs.services import qs.modules.common.functions import QtQuick import QtQuick.Layouts diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/anime/BooruImage.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/anime/BooruImage.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarLeft/anime/BooruImage.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarLeft/anime/BooruImage.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/anime/BooruResponse.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/anime/BooruResponse.qml similarity index 99% rename from dots/.config/quickshell/ii/modules/sidebarLeft/anime/BooruResponse.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarLeft/anime/BooruResponse.qml index 6b1711a40..f67db79b5 100644 --- a/dots/.config/quickshell/ii/modules/sidebarLeft/anime/BooruResponse.qml +++ b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/anime/BooruResponse.qml @@ -3,7 +3,7 @@ import qs.services import qs.modules.common import qs.modules.common.widgets import qs.modules.common.functions -import qs.modules.sidebarLeft +import qs.modules.ii.sidebarLeft import QtQuick import QtQuick.Controls import QtQuick.Layouts diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/translator/LanguageSelectorButton.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/translator/LanguageSelectorButton.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarLeft/translator/LanguageSelectorButton.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarLeft/translator/LanguageSelectorButton.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarLeft/translator/TextCanvas.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/translator/TextCanvas.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarLeft/translator/TextCanvas.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarLeft/translator/TextCanvas.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/BottomWidgetGroup.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/BottomWidgetGroup.qml similarity index 98% rename from dots/.config/quickshell/ii/modules/sidebarRight/BottomWidgetGroup.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/BottomWidgetGroup.qml index 244464069..f81e9db13 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/BottomWidgetGroup.qml +++ b/dots/.config/quickshell/ii/modules/ii/sidebarRight/BottomWidgetGroup.qml @@ -1,9 +1,9 @@ import qs.modules.common import qs.modules.common.widgets import qs.services -import qs.modules.sidebarRight.calendar -import qs.modules.sidebarRight.todo -import qs.modules.sidebarRight.pomodoro +import qs.modules.ii.sidebarRight.calendar +import qs.modules.ii.sidebarRight.todo +import qs.modules.ii.sidebarRight.pomodoro import QtQuick import QtQuick.Layouts diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/CenterWidgetGroup.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/CenterWidgetGroup.qml similarity index 80% rename from dots/.config/quickshell/ii/modules/sidebarRight/CenterWidgetGroup.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/CenterWidgetGroup.qml index 007006ca9..4e7747eb6 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/CenterWidgetGroup.qml +++ b/dots/.config/quickshell/ii/modules/ii/sidebarRight/CenterWidgetGroup.qml @@ -1,8 +1,7 @@ import qs.modules.common import qs.modules.common.widgets import qs.services -import qs.modules.sidebarRight.notifications -import qs.modules.sidebarRight.volumeMixer +import qs.modules.ii.sidebarRight.notifications import Qt5Compat.GraphicalEffects import QtQuick import QtQuick.Controls diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/QuickSliders.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/QuickSliders.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/QuickSliders.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/QuickSliders.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/SidebarRight.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/SidebarRight.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/SidebarRight.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/SidebarRight.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/SidebarRightContent.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/SidebarRightContent.qml similarity index 97% rename from dots/.config/quickshell/ii/modules/sidebarRight/SidebarRightContent.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/SidebarRightContent.qml index f2aee10fe..0f733ed82 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/SidebarRightContent.qml +++ b/dots/.config/quickshell/ii/modules/ii/sidebarRight/SidebarRightContent.qml @@ -9,13 +9,13 @@ import Quickshell import Quickshell.Bluetooth import Quickshell.Hyprland -import qs.modules.sidebarRight.quickToggles -import qs.modules.sidebarRight.quickToggles.classicStyle +import qs.modules.ii.sidebarRight.quickToggles +import qs.modules.ii.sidebarRight.quickToggles.classicStyle -import qs.modules.sidebarRight.bluetoothDevices -import qs.modules.sidebarRight.nightLight -import qs.modules.sidebarRight.volumeMixer -import qs.modules.sidebarRight.wifiNetworks +import qs.modules.ii.sidebarRight.bluetoothDevices +import qs.modules.ii.sidebarRight.nightLight +import qs.modules.ii.sidebarRight.volumeMixer +import qs.modules.ii.sidebarRight.wifiNetworks Item { id: root diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/bluetoothDevices/BluetoothDeviceItem.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/bluetoothDevices/BluetoothDeviceItem.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/bluetoothDevices/BluetoothDeviceItem.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/bluetoothDevices/BluetoothDeviceItem.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/bluetoothDevices/BluetoothDialog.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/bluetoothDevices/BluetoothDialog.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/bluetoothDevices/BluetoothDialog.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/bluetoothDevices/BluetoothDialog.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/calendar/CalendarDayButton.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/calendar/CalendarDayButton.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/calendar/CalendarDayButton.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/calendar/CalendarDayButton.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/calendar/CalendarHeaderButton.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/calendar/CalendarHeaderButton.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/calendar/CalendarHeaderButton.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/calendar/CalendarHeaderButton.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/calendar/CalendarWidget.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/calendar/CalendarWidget.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/calendar/CalendarWidget.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/calendar/CalendarWidget.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/calendar/calendar_layout.js b/dots/.config/quickshell/ii/modules/ii/sidebarRight/calendar/calendar_layout.js similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/calendar/calendar_layout.js rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/calendar/calendar_layout.js diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/nightLight/NightLightDialog.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/nightLight/NightLightDialog.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/nightLight/NightLightDialog.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/nightLight/NightLightDialog.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/notifications/NotificationList.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/notifications/NotificationList.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/notifications/NotificationList.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/notifications/NotificationList.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/notifications/NotificationStatusButton.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/notifications/NotificationStatusButton.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/notifications/NotificationStatusButton.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/notifications/NotificationStatusButton.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/pomodoro/PomodoroTimer.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/pomodoro/PomodoroTimer.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/pomodoro/PomodoroTimer.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/pomodoro/PomodoroTimer.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/pomodoro/PomodoroWidget.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/pomodoro/PomodoroWidget.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/pomodoro/PomodoroWidget.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/pomodoro/PomodoroWidget.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/pomodoro/Stopwatch.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/pomodoro/Stopwatch.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/pomodoro/Stopwatch.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/pomodoro/Stopwatch.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/AbstractQuickPanel.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/AbstractQuickPanel.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/AbstractQuickPanel.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/AbstractQuickPanel.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/AndroidQuickPanel.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/AndroidQuickPanel.qml similarity index 99% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/AndroidQuickPanel.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/AndroidQuickPanel.qml index f8c93bfff..8457b3cd3 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/AndroidQuickPanel.qml +++ b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/AndroidQuickPanel.qml @@ -6,7 +6,7 @@ import QtQuick.Layouts import Quickshell import Quickshell.Bluetooth -import qs.modules.sidebarRight.quickToggles.androidStyle +import qs.modules.ii.sidebarRight.quickToggles.androidStyle AbstractQuickPanel { id: root diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/ClassicQuickPanel.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/ClassicQuickPanel.qml similarity index 93% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/ClassicQuickPanel.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/ClassicQuickPanel.qml index cf52886a0..3aff842df 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/ClassicQuickPanel.qml +++ b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/ClassicQuickPanel.qml @@ -5,7 +5,7 @@ import QtQuick import QtQuick.Layouts import Quickshell.Bluetooth -import qs.modules.sidebarRight.quickToggles.classicStyle +import qs.modules.ii.sidebarRight.quickToggles.classicStyle AbstractQuickPanel { id: root diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidAntiFlashbangToggle.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidAntiFlashbangToggle.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidAntiFlashbangToggle.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidAntiFlashbangToggle.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidAudioToggle.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidAudioToggle.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidAudioToggle.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidAudioToggle.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidBluetoothToggle.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidBluetoothToggle.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidBluetoothToggle.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidBluetoothToggle.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidCloudflareWarpToggle.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidCloudflareWarpToggle.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidCloudflareWarpToggle.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidCloudflareWarpToggle.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidColorPickerToggle.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidColorPickerToggle.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidColorPickerToggle.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidColorPickerToggle.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidDarkModeToggle.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidDarkModeToggle.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidDarkModeToggle.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidDarkModeToggle.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidEasyEffectsToggle.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidEasyEffectsToggle.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidEasyEffectsToggle.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidEasyEffectsToggle.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidGameModeToggle.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidGameModeToggle.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidGameModeToggle.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidGameModeToggle.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidIdleInhibitorToggle.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidIdleInhibitorToggle.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidIdleInhibitorToggle.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidIdleInhibitorToggle.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidMicToggle.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidMicToggle.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidMicToggle.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidMicToggle.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidMusicRecognition.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidMusicRecognition.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidMusicRecognition.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidMusicRecognition.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidNetworkToggle.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidNetworkToggle.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidNetworkToggle.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidNetworkToggle.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidNightLightToggle.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidNightLightToggle.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidNightLightToggle.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidNightLightToggle.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidNotificationToggle.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidNotificationToggle.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidNotificationToggle.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidNotificationToggle.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidOnScreenKeyboardToggle.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidOnScreenKeyboardToggle.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidOnScreenKeyboardToggle.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidOnScreenKeyboardToggle.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidPowerProfileToggle.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidPowerProfileToggle.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidPowerProfileToggle.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidPowerProfileToggle.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidQuickToggleButton.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidQuickToggleButton.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidQuickToggleButton.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidQuickToggleButton.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidScreenSnipToggle.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidScreenSnipToggle.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidScreenSnipToggle.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidScreenSnipToggle.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidToggleDelegateChooser.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidToggleDelegateChooser.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/androidStyle/AndroidToggleDelegateChooser.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/androidStyle/AndroidToggleDelegateChooser.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/classicStyle/BluetoothToggle.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/classicStyle/BluetoothToggle.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/classicStyle/BluetoothToggle.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/classicStyle/BluetoothToggle.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/classicStyle/CloudflareWarp.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/classicStyle/CloudflareWarp.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/classicStyle/CloudflareWarp.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/classicStyle/CloudflareWarp.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/classicStyle/EasyEffectsToggle.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/classicStyle/EasyEffectsToggle.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/classicStyle/EasyEffectsToggle.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/classicStyle/EasyEffectsToggle.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/classicStyle/GameMode.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/classicStyle/GameMode.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/classicStyle/GameMode.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/classicStyle/GameMode.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/classicStyle/IdleInhibitor.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/classicStyle/IdleInhibitor.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/classicStyle/IdleInhibitor.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/classicStyle/IdleInhibitor.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/classicStyle/NetworkToggle.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/classicStyle/NetworkToggle.qml similarity index 93% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/classicStyle/NetworkToggle.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/classicStyle/NetworkToggle.qml index cc3ac3fca..63fdb85bc 100644 --- a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/classicStyle/NetworkToggle.qml +++ b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/classicStyle/NetworkToggle.qml @@ -2,7 +2,7 @@ import qs.services import qs.modules.common import qs.modules.common.widgets import qs.modules.common.functions -import qs.modules.sidebarRight.quickToggles +import qs.modules.ii.sidebarRight.quickToggles import qs import QtQuick import Quickshell diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/classicStyle/NightLight.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/classicStyle/NightLight.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/classicStyle/NightLight.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/classicStyle/NightLight.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/classicStyle/QuickToggleButton.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/classicStyle/QuickToggleButton.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/quickToggles/classicStyle/QuickToggleButton.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/quickToggles/classicStyle/QuickToggleButton.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/todo/TaskList.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/todo/TaskList.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/todo/TaskList.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/todo/TaskList.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/todo/TodoItemActionButton.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/todo/TodoItemActionButton.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/todo/TodoItemActionButton.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/todo/TodoItemActionButton.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/todo/TodoWidget.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/todo/TodoWidget.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/todo/TodoWidget.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/todo/TodoWidget.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/volumeMixer/AudioDeviceSelectorButton.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/volumeMixer/AudioDeviceSelectorButton.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/volumeMixer/AudioDeviceSelectorButton.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/volumeMixer/AudioDeviceSelectorButton.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/volumeMixer/VolumeDialog.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/volumeMixer/VolumeDialog.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/volumeMixer/VolumeDialog.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/volumeMixer/VolumeDialog.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/volumeMixer/VolumeDialogContent.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/volumeMixer/VolumeDialogContent.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/volumeMixer/VolumeDialogContent.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/volumeMixer/VolumeDialogContent.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/volumeMixer/VolumeMixerEntry.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/volumeMixer/VolumeMixerEntry.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/volumeMixer/VolumeMixerEntry.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/volumeMixer/VolumeMixerEntry.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/wifiNetworks/WifiDialog.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/wifiNetworks/WifiDialog.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/wifiNetworks/WifiDialog.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/wifiNetworks/WifiDialog.qml diff --git a/dots/.config/quickshell/ii/modules/sidebarRight/wifiNetworks/WifiNetworkItem.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/wifiNetworks/WifiNetworkItem.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/sidebarRight/wifiNetworks/WifiNetworkItem.qml rename to dots/.config/quickshell/ii/modules/ii/sidebarRight/wifiNetworks/WifiNetworkItem.qml diff --git a/dots/.config/quickshell/ii/modules/verticalBar/BatteryIndicator.qml b/dots/.config/quickshell/ii/modules/ii/verticalBar/BatteryIndicator.qml similarity index 98% rename from dots/.config/quickshell/ii/modules/verticalBar/BatteryIndicator.qml rename to dots/.config/quickshell/ii/modules/ii/verticalBar/BatteryIndicator.qml index b134b12fe..d2b729244 100644 --- a/dots/.config/quickshell/ii/modules/verticalBar/BatteryIndicator.qml +++ b/dots/.config/quickshell/ii/modules/ii/verticalBar/BatteryIndicator.qml @@ -3,7 +3,7 @@ import qs.modules.common.widgets import qs.services import QtQuick import QtQuick.Layouts -import qs.modules.bar as Bar +import qs.modules.ii.bar as Bar MouseArea { id: root diff --git a/dots/.config/quickshell/ii/modules/verticalBar/Resource.qml b/dots/.config/quickshell/ii/modules/ii/verticalBar/Resource.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/verticalBar/Resource.qml rename to dots/.config/quickshell/ii/modules/ii/verticalBar/Resource.qml diff --git a/dots/.config/quickshell/ii/modules/verticalBar/Resources.qml b/dots/.config/quickshell/ii/modules/ii/verticalBar/Resources.qml similarity index 97% rename from dots/.config/quickshell/ii/modules/verticalBar/Resources.qml rename to dots/.config/quickshell/ii/modules/ii/verticalBar/Resources.qml index ddbb1c399..353874723 100644 --- a/dots/.config/quickshell/ii/modules/verticalBar/Resources.qml +++ b/dots/.config/quickshell/ii/modules/ii/verticalBar/Resources.qml @@ -2,7 +2,7 @@ import qs.services import qs.modules.common import QtQuick import QtQuick.Layouts -import qs.modules.bar as Bar +import qs.modules.ii.bar as Bar MouseArea { id: root diff --git a/dots/.config/quickshell/ii/modules/verticalBar/VerticalBar.qml b/dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalBar.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/verticalBar/VerticalBar.qml rename to dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalBar.qml diff --git a/dots/.config/quickshell/ii/modules/verticalBar/VerticalBarContent.qml b/dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalBarContent.qml similarity index 99% rename from dots/.config/quickshell/ii/modules/verticalBar/VerticalBarContent.qml rename to dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalBarContent.qml index ac6be80cd..554da8b74 100644 --- a/dots/.config/quickshell/ii/modules/verticalBar/VerticalBarContent.qml +++ b/dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalBarContent.qml @@ -8,7 +8,7 @@ import qs.services import qs.modules.common import qs.modules.common.widgets import qs.modules.common.functions -import qs.modules.bar as Bar +import qs.modules.ii.bar as Bar Item { // Bar content region id: root diff --git a/dots/.config/quickshell/ii/modules/verticalBar/VerticalClockWidget.qml b/dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalClockWidget.qml similarity index 97% rename from dots/.config/quickshell/ii/modules/verticalBar/VerticalClockWidget.qml rename to dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalClockWidget.qml index 921f63603..15a49c5a5 100644 --- a/dots/.config/quickshell/ii/modules/verticalBar/VerticalClockWidget.qml +++ b/dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalClockWidget.qml @@ -3,7 +3,7 @@ import qs.modules.common.widgets import qs.services import QtQuick import QtQuick.Layouts -import qs.modules.bar as Bar +import qs.modules.ii.bar as Bar Item { id: root diff --git a/dots/.config/quickshell/ii/modules/verticalBar/VerticalDateWidget.qml b/dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalDateWidget.qml similarity index 98% rename from dots/.config/quickshell/ii/modules/verticalBar/VerticalDateWidget.qml rename to dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalDateWidget.qml index aaf17ca4f..bf76ebe67 100644 --- a/dots/.config/quickshell/ii/modules/verticalBar/VerticalDateWidget.qml +++ b/dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalDateWidget.qml @@ -4,7 +4,7 @@ import qs.services import QtQuick import QtQuick.Shapes import QtQuick.Layouts -import qs.modules.bar as Bar +import qs.modules.ii.bar as Bar Item { // Full hitbox id: root diff --git a/dots/.config/quickshell/ii/modules/verticalBar/VerticalMedia.qml b/dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalMedia.qml similarity index 98% rename from dots/.config/quickshell/ii/modules/verticalBar/VerticalMedia.qml rename to dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalMedia.qml index 677941d64..8d38caa76 100644 --- a/dots/.config/quickshell/ii/modules/verticalBar/VerticalMedia.qml +++ b/dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalMedia.qml @@ -8,7 +8,7 @@ import QtQuick import QtQuick.Layouts import Quickshell.Services.Mpris -import qs.modules.bar as Bar +import qs.modules.ii.bar as Bar MouseArea { id: root diff --git a/dots/.config/quickshell/ii/modules/wallpaperSelector/WallpaperDirectoryItem.qml b/dots/.config/quickshell/ii/modules/ii/wallpaperSelector/WallpaperDirectoryItem.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/wallpaperSelector/WallpaperDirectoryItem.qml rename to dots/.config/quickshell/ii/modules/ii/wallpaperSelector/WallpaperDirectoryItem.qml diff --git a/dots/.config/quickshell/ii/modules/wallpaperSelector/WallpaperSelector.qml b/dots/.config/quickshell/ii/modules/ii/wallpaperSelector/WallpaperSelector.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/wallpaperSelector/WallpaperSelector.qml rename to dots/.config/quickshell/ii/modules/ii/wallpaperSelector/WallpaperSelector.qml diff --git a/dots/.config/quickshell/ii/modules/wallpaperSelector/WallpaperSelectorContent.qml b/dots/.config/quickshell/ii/modules/ii/wallpaperSelector/WallpaperSelectorContent.qml similarity index 100% rename from dots/.config/quickshell/ii/modules/wallpaperSelector/WallpaperSelectorContent.qml rename to dots/.config/quickshell/ii/modules/ii/wallpaperSelector/WallpaperSelectorContent.qml diff --git a/dots/.config/quickshell/ii/shell.qml b/dots/.config/quickshell/ii/shell.qml index 209597fcf..81bd468b1 100644 --- a/dots/.config/quickshell/ii/shell.qml +++ b/dots/.config/quickshell/ii/shell.qml @@ -8,25 +8,25 @@ import qs.modules.common -import qs.modules.background -import qs.modules.bar -import qs.modules.cheatsheet -import qs.modules.dock -import qs.modules.lock -import qs.modules.mediaControls -import qs.modules.notificationPopup -import qs.modules.onScreenDisplay -import qs.modules.onScreenKeyboard -import qs.modules.overview -import qs.modules.polkit -import qs.modules.regionSelector -import qs.modules.screenCorners -import qs.modules.sessionScreen -import qs.modules.sidebarLeft -import qs.modules.sidebarRight -import qs.modules.overlay -import qs.modules.verticalBar -import qs.modules.wallpaperSelector +import qs.modules.ii.background +import qs.modules.ii.bar +import qs.modules.ii.cheatsheet +import qs.modules.ii.dock +import qs.modules.ii.lock +import qs.modules.ii.mediaControls +import qs.modules.ii.notificationPopup +import qs.modules.ii.onScreenDisplay +import qs.modules.ii.onScreenKeyboard +import qs.modules.ii.overview +import qs.modules.ii.polkit +import qs.modules.ii.regionSelector +import qs.modules.ii.screenCorners +import qs.modules.ii.sessionScreen +import qs.modules.ii.sidebarLeft +import qs.modules.ii.sidebarRight +import qs.modules.ii.overlay +import qs.modules.ii.verticalBar +import qs.modules.ii.wallpaperSelector import QtQuick import QtQuick.Window From f2462eb1b4a3f04b22e9f2b8c4992cefc0d49c62 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 9 Nov 2025 11:12:18 +0100 Subject: [PATCH 012/107] overlay: add battery level --- .../ii/modules/ii/bar/BarContent.qml | 2 +- .../ii/modules/ii/lock/LockSurface.qml | 2 +- .../ii/modules/ii/overlay/OverlayTaskbar.qml | 39 ++++++++++++++++++- .../ii/verticalBar/VerticalBarContent.qml | 4 +- 4 files changed, 42 insertions(+), 5 deletions(-) diff --git a/dots/.config/quickshell/ii/modules/ii/bar/BarContent.qml b/dots/.config/quickshell/ii/modules/ii/bar/BarContent.qml index 186d76040..997e0209b 100644 --- a/dots/.config/quickshell/ii/modules/ii/bar/BarContent.qml +++ b/dots/.config/quickshell/ii/modules/ii/bar/BarContent.qml @@ -178,7 +178,7 @@ Item { // Bar content region } BatteryIndicator { - visible: (root.useShortenedForm < 2 && UPower.displayDevice.isLaptopBattery) + visible: (root.useShortenedForm < 2 && Battery.available) Layout.alignment: Qt.AlignVCenter } } diff --git a/dots/.config/quickshell/ii/modules/ii/lock/LockSurface.qml b/dots/.config/quickshell/ii/modules/ii/lock/LockSurface.qml index ff354ea70..da3e17627 100644 --- a/dots/.config/quickshell/ii/modules/ii/lock/LockSurface.qml +++ b/dots/.config/quickshell/ii/modules/ii/lock/LockSurface.qml @@ -288,7 +288,7 @@ MouseArea { opacity: root.toolbarOpacity IconAndTextPair { - visible: UPower.displayDevice.isLaptopBattery + visible: Battery.available icon: Battery.isCharging ? "bolt" : "battery_android_full" text: Math.round(Battery.percentage * 100) color: (Battery.isLow && !Battery.isCharging) ? Appearance.colors.colError : Appearance.colors.colOnSurfaceVariant diff --git a/dots/.config/quickshell/ii/modules/ii/overlay/OverlayTaskbar.qml b/dots/.config/quickshell/ii/modules/ii/overlay/OverlayTaskbar.qml index 65bb2a27e..232903474 100644 --- a/dots/.config/quickshell/ii/modules/ii/overlay/OverlayTaskbar.qml +++ b/dots/.config/quickshell/ii/modules/ii/overlay/OverlayTaskbar.qml @@ -49,8 +49,13 @@ Rectangle { } Separator {} - TimeWidget {} + Separator { + visible: Battery.available + } + BatteryWidget { + visible: Battery.available + } } component Separator: Rectangle { @@ -67,12 +72,44 @@ Rectangle { Layout.rightMargin: 6 text: DateTime.time + color: Appearance.colors.colOnSurface font { family: Appearance.font.family.numbers variableAxes: Appearance.font.variableAxes.numbers pixelSize: 22 } } + + component BatteryWidget: Row { + id: batteryWidget + Layout.alignment: Qt.AlignVCenter + Layout.leftMargin: 6 + Layout.rightMargin: 6 + spacing: 2 + property color colText: Battery.isLowAndNotCharging ? Appearance.colors.colError : Appearance.colors.colOnSurface + + MaterialSymbol { + id: boltIcon + anchors.verticalCenter: parent.verticalCenter + fill: 1 + text: Battery.isCharging ? "bolt" : "battery_android_full" + color: batteryWidget.colText + iconSize: 24 + animateChange: true + } + + StyledText { + id: batteryText + anchors.verticalCenter: parent.verticalCenter + text: Math.round(Battery.percentage * 100) + "%" + color: batteryWidget.colText + font { + family: Appearance.font.family.numbers + variableAxes: Appearance.font.variableAxes.numbers + pixelSize: 18 + } + } + } component WidgetButton: RippleButton { id: widgetButton diff --git a/dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalBarContent.qml b/dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalBarContent.qml index 554da8b74..d3326188e 100644 --- a/dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalBarContent.qml +++ b/dots/.config/quickshell/ii/modules/ii/verticalBar/VerticalBarContent.qml @@ -148,11 +148,11 @@ Item { // Bar content region } HorizontalBarSeparator { - visible: UPower.displayDevice.isLaptopBattery + visible: Battery.available } BatteryIndicator { - visible: UPower.displayDevice.isLaptopBattery + visible: Battery.available Layout.fillWidth: true Layout.fillHeight: false } From 696ff4298fa4b34a2e109d9595f4776ae154b5e1 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 9 Nov 2025 12:57:05 +0100 Subject: [PATCH 013/107] BooruImage: refractor image downloader proc --- .../common/utils/ImageDownloaderProcess.qml | 31 +++++++++++++++++++ .../ii/sidebarLeft/anime/BooruImage.qml | 28 +++++++++-------- 2 files changed, 46 insertions(+), 13 deletions(-) create mode 100644 dots/.config/quickshell/ii/modules/common/utils/ImageDownloaderProcess.qml diff --git a/dots/.config/quickshell/ii/modules/common/utils/ImageDownloaderProcess.qml b/dots/.config/quickshell/ii/modules/common/utils/ImageDownloaderProcess.qml new file mode 100644 index 000000000..11ff92a6d --- /dev/null +++ b/dots/.config/quickshell/ii/modules/common/utils/ImageDownloaderProcess.qml @@ -0,0 +1,31 @@ +import QtQuick +import Quickshell +import Quickshell.Io +import qs.modules.common +import qs.modules.common.functions + +Process { + id: root + + signal done(string path, int width, int height); + required property string filePath; + required property string sourceUrl; + property string downloadUserAgent: Config.options?.networking.userAgent ?? "" + + function processFilePath() { + return StringUtils.shellSingleQuoteEscape(FileUtils.trimFileProtocol(filePath)); + } + + running: true + command: ["bash", "-c", + `mkdir -p $(dirname '${processFilePath(filePath)}'); [ -f '${processFilePath(filePath)}' ] || curl -sSL '${sourceUrl}' -o '${processFilePath(filePath)}' && magick identify -format '%w %h' '${processFilePath(filePath)}'[0]` + ] + stdout: StdioCollector { + id: imageSizeOutputCollector + onStreamFinished: { + const output = imageSizeOutputCollector.text.trim(); + const [width, height] = output.split(" ").map(Number); + root.done(root.filePath, width, height); + } + } +} diff --git a/dots/.config/quickshell/ii/modules/ii/sidebarLeft/anime/BooruImage.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/anime/BooruImage.qml index 99f6f1ab3..e403417ba 100644 --- a/dots/.config/quickshell/ii/modules/ii/sidebarLeft/anime/BooruImage.qml +++ b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/anime/BooruImage.qml @@ -1,7 +1,8 @@ import qs.services import qs.modules.common -import qs.modules.common.widgets import qs.modules.common.functions +import qs.modules.common.utils +import qs.modules.common.widgets import QtQml import QtQuick import QtQuick.Controls @@ -25,18 +26,19 @@ Button { property real imageRadius: Appearance.rounding.small property bool showActions: false - Process { - id: downloadProcess - running: false - command: ["bash", "-c", `mkdir -p '${root.previewDownloadPath}' && [ -f ${root.filePath} ] || curl -sSL '${root.imageData.preview_url ?? root.imageData.sample_url}' -o '${root.filePath}'`] - onExited: (exitCode, exitStatus) => { - imageObject.source = `${previewDownloadPath}/${root.fileName}` - } - } - - Component.onCompleted: { - if (root.manualDownload) { - downloadProcess.running = true + ImageDownloaderProcess { + id: imageDownloader + running: root.manualDownload + filePath: root.filePath + sourceUrl: root.imageData.preview_url ?? root.imageData.sample_url + onDone: (path, width, height) => { + imageObject.source = "" + imageObject.source = path + if (!modelData.width || !modelData.height) { + modelData.width = width + modelData.height = height + modelData.aspect_ratio = width / height + } } } From 8f4190a9399258162fcb5af76320d8b0c8321d88 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 9 Nov 2025 12:58:10 +0100 Subject: [PATCH 014/107] overlay: refractor widget background --- .../ii/modules/ii/overlay/OverlayBackground.qml | 8 ++++++++ .../modules/ii/overlay/fpsLimiter/FpsLimiterContent.qml | 5 ++--- .../ii/modules/ii/overlay/recorder/Recorder.qml | 4 +--- .../ii/modules/ii/overlay/resources/Resources.qml | 4 +--- .../ii/modules/ii/overlay/volumeMixer/VolumeMixer.qml | 4 +--- 5 files changed, 13 insertions(+), 12 deletions(-) create mode 100644 dots/.config/quickshell/ii/modules/ii/overlay/OverlayBackground.qml diff --git a/dots/.config/quickshell/ii/modules/ii/overlay/OverlayBackground.qml b/dots/.config/quickshell/ii/modules/ii/overlay/OverlayBackground.qml new file mode 100644 index 000000000..205307cab --- /dev/null +++ b/dots/.config/quickshell/ii/modules/ii/overlay/OverlayBackground.qml @@ -0,0 +1,8 @@ +import QtQuick +import qs.modules.common + +Rectangle { + id: contentItem + anchors.fill: parent + color: Appearance.m3colors.m3surfaceContainer +} diff --git a/dots/.config/quickshell/ii/modules/ii/overlay/fpsLimiter/FpsLimiterContent.qml b/dots/.config/quickshell/ii/modules/ii/overlay/fpsLimiter/FpsLimiterContent.qml index a67bf40c1..def4a6c60 100644 --- a/dots/.config/quickshell/ii/modules/ii/overlay/fpsLimiter/FpsLimiterContent.qml +++ b/dots/.config/quickshell/ii/modules/ii/overlay/fpsLimiter/FpsLimiterContent.qml @@ -6,16 +6,15 @@ import Quickshell import Quickshell.Io import qs.modules.common import qs.modules.common.widgets +import qs.modules.ii.overlay -Rectangle { +OverlayBackground { id: root enum State { Normal, Success, Error } - anchors.fill: parent property real padding: 16 property var currentState: FpsLimiterContent.State.Normal - color: Appearance.m3colors.m3surfaceContainer implicitWidth: content.implicitWidth + (padding * 2) implicitHeight: content.implicitHeight + (padding * 2) diff --git a/dots/.config/quickshell/ii/modules/ii/overlay/recorder/Recorder.qml b/dots/.config/quickshell/ii/modules/ii/overlay/recorder/Recorder.qml index 83e25cdc7..2c70b312e 100644 --- a/dots/.config/quickshell/ii/modules/ii/overlay/recorder/Recorder.qml +++ b/dots/.config/quickshell/ii/modules/ii/overlay/recorder/Recorder.qml @@ -12,11 +12,9 @@ StyledOverlayWidget { minimumWidth: 310 minimumHeight: 130 - contentItem: Rectangle { + contentItem: OverlayBackground { id: contentItem - anchors.fill: parent radius: root.contentRadius - color: Appearance.m3colors.m3surfaceContainer property real padding: 8 ColumnLayout { id: contentColumn diff --git a/dots/.config/quickshell/ii/modules/ii/overlay/resources/Resources.qml b/dots/.config/quickshell/ii/modules/ii/overlay/resources/Resources.qml index 8af7aa79f..8bec779bd 100644 --- a/dots/.config/quickshell/ii/modules/ii/overlay/resources/Resources.qml +++ b/dots/.config/quickshell/ii/modules/ii/overlay/resources/Resources.qml @@ -37,10 +37,8 @@ StyledOverlayWidget { }, ] - contentItem: Rectangle { + contentItem: OverlayBackground { id: contentItem - anchors.fill: parent - color: Appearance.m3colors.m3surfaceContainer radius: root.contentRadius property real padding: 4 ColumnLayout { diff --git a/dots/.config/quickshell/ii/modules/ii/overlay/volumeMixer/VolumeMixer.qml b/dots/.config/quickshell/ii/modules/ii/overlay/volumeMixer/VolumeMixer.qml index 2bc1581d1..9a93e80b5 100644 --- a/dots/.config/quickshell/ii/modules/ii/overlay/volumeMixer/VolumeMixer.qml +++ b/dots/.config/quickshell/ii/modules/ii/overlay/volumeMixer/VolumeMixer.qml @@ -13,9 +13,7 @@ StyledOverlayWidget { minimumWidth: 300 minimumHeight: 380 - contentItem: Rectangle { - anchors.fill: parent - color: Appearance.m3colors.m3surfaceContainer + contentItem: OverlayBackground { radius: root.contentRadius property real padding: 6 From baa3c2a773ee462ac6bab298b9dfd4f6cdf3d351 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 9 Nov 2025 12:58:48 +0100 Subject: [PATCH 015/107] overlay: add kurukuru --- .../quickshell/ii/modules/common/Config.qml | 4 + .../ii/modules/common/Directories.qml | 2 + .../ii/modules/common/Persistent.qml | 24 +++-- .../ii/modules/ii/overlay/OverlayContext.qml | 7 +- .../overlay/OverlayWidgetDelegateChooser.qml | 4 +- .../ii/overlay/StyledOverlayWidget.qml | 6 +- .../overlay/floatingImage/FloatingImage.qml | 95 +++++++++++++++++++ .../ii/modules/settings/InterfaceConfig.qml | 15 +++ 8 files changed, 142 insertions(+), 15 deletions(-) create mode 100644 dots/.config/quickshell/ii/modules/ii/overlay/floatingImage/FloatingImage.qml diff --git a/dots/.config/quickshell/ii/modules/common/Config.qml b/dots/.config/quickshell/ii/modules/common/Config.qml index 0ceb7dd1b..b6247237f 100644 --- a/dots/.config/quickshell/ii/modules/common/Config.qml +++ b/dots/.config/quickshell/ii/modules/common/Config.qml @@ -381,6 +381,10 @@ Singleton { property bool openingZoomAnimation: true property bool darkenScreen: true property real clickthroughOpacity: 0.7 + property JsonObject floatingImage: JsonObject { + property string imageSource: "https://cdn.discordapp.com/attachments/961693710968557598/1369635662390759434/image.gif?ex=6911cb1c&is=6910799c&hm=4450244066c0a7a6e5d2bdd195f47388eb5e7f9dd53d3931e99ad9642c638a00&" + property real scale: 0.5 + } } property JsonObject overview: JsonObject { diff --git a/dots/.config/quickshell/ii/modules/common/Directories.qml b/dots/.config/quickshell/ii/modules/common/Directories.qml index 59f3dab53..8e70506d3 100644 --- a/dots/.config/quickshell/ii/modules/common/Directories.qml +++ b/dots/.config/quickshell/ii/modules/common/Directories.qml @@ -24,6 +24,7 @@ Singleton { property string scriptPath: Quickshell.shellPath("scripts") property string favicons: FileUtils.trimFileProtocol(`${Directories.cache}/media/favicons`) property string coverArt: FileUtils.trimFileProtocol(`${Directories.cache}/media/coverart`) + property string tempImages: "/tmp/quickshell/media/images" property string booruPreviews: FileUtils.trimFileProtocol(`${Directories.cache}/media/boorus`) property string booruDownloads: FileUtils.trimFileProtocol(Directories.pictures + "/homework") property string booruDownloadsNsfw: FileUtils.trimFileProtocol(Directories.pictures + "/homework/🌶️") @@ -52,5 +53,6 @@ Singleton { Quickshell.execDetached(["bash", "-c", `rm -rf '${latexOutput}'; mkdir -p '${latexOutput}'`]) Quickshell.execDetached(["bash", "-c", `rm -rf '${cliphistDecode}'; mkdir -p '${cliphistDecode}'`]) Quickshell.execDetached(["mkdir", "-p", `${aiChats}`]) + Quickshell.execDetached(["rm", "-rf", `${tempImages}`]) } } diff --git a/dots/.config/quickshell/ii/modules/common/Persistent.qml b/dots/.config/quickshell/ii/modules/common/Persistent.qml index 171f150e6..212fc34b9 100644 --- a/dots/.config/quickshell/ii/modules/common/Persistent.qml +++ b/dots/.config/quickshell/ii/modules/common/Persistent.qml @@ -89,6 +89,22 @@ Singleton { property real width: 250 property real height: 100 } + property JsonObject floatingImage: JsonObject { + property bool pinned: false + property bool clickthrough: false + property real x: 1650 + property real y: 390 + property real width: 0 + property real height: 0 + } + property JsonObject fpsLimiter: JsonObject { + property bool pinned: false + property bool clickthrough: false + property real x: 1570 + property real y: 615 + property real width: 280 + property real height: 80 + } property JsonObject recorder: JsonObject { property bool pinned: false property bool clickthrough: false @@ -115,14 +131,6 @@ Singleton { property real height: 600 property int tabIndex: 0 } - property JsonObject fpsLimiter: JsonObject { - property bool pinned: false - property bool clickthrough: false - property real x: 1576 - property real y: 630 - property real width: 280 - property real height: 80 - } } property JsonObject timer: JsonObject { diff --git a/dots/.config/quickshell/ii/modules/ii/overlay/OverlayContext.qml b/dots/.config/quickshell/ii/modules/ii/overlay/OverlayContext.qml index b228deda6..15e1ef91b 100644 --- a/dots/.config/quickshell/ii/modules/ii/overlay/OverlayContext.qml +++ b/dots/.config/quickshell/ii/modules/ii/overlay/OverlayContext.qml @@ -6,11 +6,12 @@ Singleton { id: root readonly property list availableWidgets: [ - { identifier: "recorder", materialSymbol: "screen_record" }, - { identifier: "volumeMixer", materialSymbol: "volume_up" }, { identifier: "crosshair", materialSymbol: "point_scan" }, { identifier: "fpsLimiter", materialSymbol: "animation" }, - { identifier: "resources", materialSymbol: "browse_activity" } + { identifier: "floatingImage", materialSymbol: "imagesmode" }, + { identifier: "recorder", materialSymbol: "screen_record" }, + { identifier: "resources", materialSymbol: "browse_activity" }, + { identifier: "volumeMixer", materialSymbol: "volume_up" }, ] readonly property bool hasPinnedWidgets: root.pinnedWidgetIdentifiers.length > 0 diff --git a/dots/.config/quickshell/ii/modules/ii/overlay/OverlayWidgetDelegateChooser.qml b/dots/.config/quickshell/ii/modules/ii/overlay/OverlayWidgetDelegateChooser.qml index d69c76719..6e4bc6522 100644 --- a/dots/.config/quickshell/ii/modules/ii/overlay/OverlayWidgetDelegateChooser.qml +++ b/dots/.config/quickshell/ii/modules/ii/overlay/OverlayWidgetDelegateChooser.qml @@ -11,14 +11,16 @@ import qs.modules.ii.overlay.volumeMixer import qs.modules.ii.overlay.fpsLimiter import qs.modules.ii.overlay.recorder import qs.modules.ii.overlay.resources +import qs.modules.ii.overlay.floatingImage DelegateChooser { id: root role: "identifier" DelegateChoice { roleValue: "crosshair"; Crosshair {} } - DelegateChoice { roleValue: "volumeMixer"; VolumeMixer {} } + DelegateChoice { roleValue: "floatingImage"; FloatingImage {} } DelegateChoice { roleValue: "fpsLimiter"; FpsLimiter {} } DelegateChoice { roleValue: "recorder"; Recorder {} } DelegateChoice { roleValue: "resources"; Resources {} } + DelegateChoice { roleValue: "volumeMixer"; VolumeMixer {} } } diff --git a/dots/.config/quickshell/ii/modules/ii/overlay/StyledOverlayWidget.qml b/dots/.config/quickshell/ii/modules/ii/overlay/StyledOverlayWidget.qml index 9e13ca934..949cd2380 100644 --- a/dots/.config/quickshell/ii/modules/ii/overlay/StyledOverlayWidget.qml +++ b/dots/.config/quickshell/ii/modules/ii/overlay/StyledOverlayWidget.qml @@ -33,8 +33,8 @@ AbstractOverlayWidget { property string title: identifier.replace(/([A-Z])/g, " $1").replace(/^./, function(str){ return str.toUpperCase(); }) property var persistentStateEntry: Persistent.states.overlay[identifier] property real radius: Appearance.rounding.windowRounding - property real minimumWidth: 250 - property real minimumHeight: 100 + property real minimumWidth: contentItem.implicitWidth + property real minimumHeight: contentItem.implicitHeight property real resizeMargin: 8 property real padding: 6 property real contentRadius: radius - padding @@ -238,8 +238,8 @@ AbstractOverlayWidget { } StyledText { - text: root.title Layout.fillWidth: true + text: root.title elide: Text.ElideRight } diff --git a/dots/.config/quickshell/ii/modules/ii/overlay/floatingImage/FloatingImage.qml b/dots/.config/quickshell/ii/modules/ii/overlay/floatingImage/FloatingImage.qml new file mode 100644 index 000000000..86ffd54ff --- /dev/null +++ b/dots/.config/quickshell/ii/modules/ii/overlay/floatingImage/FloatingImage.qml @@ -0,0 +1,95 @@ +import QtQuick +import QtQuick.Layouts +import Qt5Compat.GraphicalEffects +import Quickshell +import qs.modules.common +import qs.modules.common.functions +import qs.modules.common.utils +import qs.modules.ii.overlay + +StyledOverlayWidget { + id: root + showClickabilityButton: false + resizable: false + + property string imageSource: Config.options.overlay.floatingImage.imageSource + property real scaleFactor: Config.options.overlay.floatingImage.scale + property int imageWidth: 0 + property int imageHeight: 0 + + // Override to always save 0 size + function savePosition(xPos = root.x, yPos = root.y, width = 0, height = 0) { + persistentStateEntry.x = Math.round(xPos); + persistentStateEntry.y = Math.round(yPos); + persistentStateEntry.width = 0 + persistentStateEntry.height = 0 + } + + onImageSourceChanged: { + imageDownloader.running = false; + imageDownloader.sourceUrl = root.imageSource; + imageDownloader.filePath = Qt.resolvedUrl(Directories.tempImages + "/" + Qt.md5(root.imageSource)) + imageDownloader.running = true; + } + onScaleFactorChanged: { + setSize(); + } + + function setSize() { + bg.implicitWidth = root.imageWidth * root.scaleFactor; + bg.implicitHeight = root.imageHeight * root.scaleFactor; + } + + contentItem: OverlayBackground { + id: bg + color: ColorUtils.transparentize(Appearance.m3colors.m3surfaceContainer, root.actuallyPinned ? 1 : 0) + radius: root.contentRadius + + WheelHandler { + onWheel: (event) => { + if (event.angleDelta.y < 0) { + Config.options.overlay.floatingImage.scale = Math.max(0.1, Config.options.overlay.floatingImage.scale - 0.1); + } + else if (event.angleDelta.y > 0) { + Config.options.overlay.floatingImage.scale = Math.min(5.0, Config.options.overlay.floatingImage.scale + 0.1); + } + } + acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad + } + + layer.enabled: true + layer.effect: OpacityMask { + maskSource: Rectangle { + width: bg.width + height: bg.height + radius: bg.radius + } + } + + AnimatedImage { + id: animatedImage + anchors.centerIn: parent + width: root.imageWidth * root.scaleFactor + height: root.imageHeight * root.scaleFactor + sourceSize.width: width + sourceSize.height: height + + playing: visible + asynchronous: true + source: "" + + ImageDownloaderProcess { + id: imageDownloader + filePath: Qt.resolvedUrl(Directories.tempImages + "/" + Qt.md5(root.imageSource)) + sourceUrl: root.imageSource + + onDone: (path, width, height) => { + root.imageWidth = width; + root.imageHeight = height; + root.setSize(); + animatedImage.source = path; + } + } + } + } +} diff --git a/dots/.config/quickshell/ii/modules/settings/InterfaceConfig.qml b/dots/.config/quickshell/ii/modules/settings/InterfaceConfig.qml index c57406a7f..738578585 100644 --- a/dots/.config/quickshell/ii/modules/settings/InterfaceConfig.qml +++ b/dots/.config/quickshell/ii/modules/settings/InterfaceConfig.qml @@ -328,6 +328,21 @@ ContentPage { } } + ContentSection { + icon: "point_scan" + title: Translation.tr("Overlay: Floating Image") + + MaterialTextArea { + Layout.fillWidth: true + placeholderText: Translation.tr("Image source") + text: Config.options.overlay.floatingImage.imageSource + wrapMode: TextEdit.Wrap + onTextChanged: { + Config.options.overlay.floatingImage.imageSource = text; + } + } + } + ContentSection { icon: "screenshot_frame_2" title: Translation.tr("Region selector (screen snipping/Google Lens)") From 781af1d42009f6ae3f1c9518e774fc79eea65305 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 9 Nov 2025 13:13:43 +0100 Subject: [PATCH 016/107] fix some unqualified access --- .../ii/overlay/floatingImage/FloatingImage.qml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dots/.config/quickshell/ii/modules/ii/overlay/floatingImage/FloatingImage.qml b/dots/.config/quickshell/ii/modules/ii/overlay/floatingImage/FloatingImage.qml index 86ffd54ff..081f9eaad 100644 --- a/dots/.config/quickshell/ii/modules/ii/overlay/floatingImage/FloatingImage.qml +++ b/dots/.config/quickshell/ii/modules/ii/overlay/floatingImage/FloatingImage.qml @@ -1,7 +1,6 @@ +pragma ComponentBehavior: Bound import QtQuick -import QtQuick.Layouts import Qt5Compat.GraphicalEffects -import Quickshell import qs.modules.common import qs.modules.common.functions import qs.modules.common.utils @@ -11,6 +10,7 @@ StyledOverlayWidget { id: root showClickabilityButton: false resizable: false + clickthrough: true property string imageSource: Config.options.overlay.floatingImage.imageSource property real scaleFactor: Config.options.overlay.floatingImage.scale @@ -19,10 +19,10 @@ StyledOverlayWidget { // Override to always save 0 size function savePosition(xPos = root.x, yPos = root.y, width = 0, height = 0) { - persistentStateEntry.x = Math.round(xPos); - persistentStateEntry.y = Math.round(yPos); - persistentStateEntry.width = 0 - persistentStateEntry.height = 0 + root.persistentStateEntry.x = Math.round(xPos); + root.persistentStateEntry.y = Math.round(yPos); + root.persistentStateEntry.width = 0 + root.persistentStateEntry.height = 0 } onImageSourceChanged: { From e6a19a6afbfa881eb8ff86b4d1459daa4746141c Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 9 Nov 2025 13:13:47 +0100 Subject: [PATCH 017/107] format --- .../ii/modules/ii/cheatsheet/CheatsheetKeybinds.qml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/dots/.config/quickshell/ii/modules/ii/cheatsheet/CheatsheetKeybinds.qml b/dots/.config/quickshell/ii/modules/ii/cheatsheet/CheatsheetKeybinds.qml index 1d7e3c4fe..e15a5b2ad 100644 --- a/dots/.config/quickshell/ii/modules/ii/cheatsheet/CheatsheetKeybinds.qml +++ b/dots/.config/quickshell/ii/modules/ii/cheatsheet/CheatsheetKeybinds.qml @@ -127,13 +127,12 @@ Item { const keybind = keybindSection.modelData.keybinds[i]; if (!Config.options.cheatsheet.splitButtons) { - - for (var j = 0; j < keybind.mods.length; j++) { - keybind.mods[j] = keySubstitutions[keybind.mods[j]] || keybind.mods[j]; - } - keybind.mods = [keybind.mods.join(' ') ] - keybind.mods[0] += !keyBlacklist.includes(keybind.key) && keybind.mods[0].length ? ' ' : '' - keybind.mods[0] += !keyBlacklist.includes(keybind.key) ? (keySubstitutions[keybind.key] || keybind.key) : '' + for (var j = 0; j < keybind.mods.length; j++) { + keybind.mods[j] = keySubstitutions[keybind.mods[j]] || keybind.mods[j]; + } + keybind.mods = [keybind.mods.join(' ') ] + keybind.mods[0] += !keyBlacklist.includes(keybind.key) && keybind.mods[0].length ? ' ' : '' + keybind.mods[0] += !keyBlacklist.includes(keybind.key) ? (keySubstitutions[keybind.key] || keybind.key) : '' } result.push({ From 8b5a790d54fbf0ef4885644e8c07d77815bc452f Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 9 Nov 2025 13:14:25 +0100 Subject: [PATCH 018/107] increase overlay clickthru opacity, disable cheatsheet split btns --- dots/.config/quickshell/ii/modules/common/Config.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dots/.config/quickshell/ii/modules/common/Config.qml b/dots/.config/quickshell/ii/modules/common/Config.qml index b6247237f..5e6a2afae 100644 --- a/dots/.config/quickshell/ii/modules/common/Config.qml +++ b/dots/.config/quickshell/ii/modules/common/Config.qml @@ -274,7 +274,7 @@ Singleton { // 10:  | 11:  | 12:  | 13:  | 14: 󱄛 property string superKey: "" property bool useMacSymbol: false - property bool splitButtons: true + property bool splitButtons: false property bool useMouseSymbol: false property bool useFnSymbol: false property JsonObject fontSize: JsonObject { @@ -380,7 +380,7 @@ Singleton { property JsonObject overlay: JsonObject { property bool openingZoomAnimation: true property bool darkenScreen: true - property real clickthroughOpacity: 0.7 + property real clickthroughOpacity: 0.8 property JsonObject floatingImage: JsonObject { property string imageSource: "https://cdn.discordapp.com/attachments/961693710968557598/1369635662390759434/image.gif?ex=6911cb1c&is=6910799c&hm=4450244066c0a7a6e5d2bdd195f47388eb5e7f9dd53d3931e99ad9642c638a00&" property real scale: 0.5 From 14c115f80a42d4a51dc8b7b860a08c4a30e2d886 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 9 Nov 2025 13:57:29 +0100 Subject: [PATCH 019/107] background: add option to only show clock when locked (#2387) --- dots/.config/quickshell/ii/modules/common/Config.qml | 1 + .../modules/ii/background/widgets/clock/ClockWidget.qml | 9 +++++---- .../quickshell/ii/modules/settings/BackgroundConfig.qml | 9 +++++++++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/dots/.config/quickshell/ii/modules/common/Config.qml b/dots/.config/quickshell/ii/modules/common/Config.qml index 5e6a2afae..f2d058a18 100644 --- a/dots/.config/quickshell/ii/modules/common/Config.qml +++ b/dots/.config/quickshell/ii/modules/common/Config.qml @@ -148,6 +148,7 @@ Singleton { property JsonObject widgets: JsonObject { property JsonObject clock: JsonObject { property bool enable: true + property bool showOnlyWhenLocked: false property string placementStrategy: "leastBusy" // "free", "leastBusy", "mostBusy" property real x: 100 property real y: 100 diff --git a/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/ClockWidget.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/ClockWidget.qml index 149ce169e..cf8c739e0 100644 --- a/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/ClockWidget.qml +++ b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/ClockWidget.qml @@ -16,8 +16,9 @@ AbstractBackgroundWidget { implicitHeight: contentColumn.implicitHeight implicitWidth: contentColumn.implicitWidth - property string clockStyle: Config.options.background.widgets.clock.style - property bool forceCenter: (GlobalStates.screenLocked && Config.options.lock.centerClock) + readonly property string clockStyle: Config.options.background.widgets.clock.style + readonly property bool forceCenter: (GlobalStates.screenLocked && Config.options.lock.centerClock) + readonly property bool shouldShow: (!Config.options.background.widgets.clock.showOnlyWhenLocked || GlobalStates.screenLocked) property bool wallpaperSafetyTriggered: false needsColText: clockStyle === "digital" x: forceCenter ? ((root.screenWidth - root.width) / 2) : targetX @@ -42,7 +43,7 @@ AbstractBackgroundWidget { FadeLoader { id: cookieClockLoader anchors.horizontalCenter: parent.horizontalCenter - shown: root.clockStyle === "cookie" + shown: root.clockStyle === "cookie" && (root.shouldShow) sourceComponent: Column { CookieClock { anchors.horizontalCenter: parent.horizontalCenter @@ -58,7 +59,7 @@ AbstractBackgroundWidget { FadeLoader { id: digitalClockLoader anchors.horizontalCenter: parent.horizontalCenter - shown: root.clockStyle === "digital" + shown: root.clockStyle === "digital" && (root.shouldShow) sourceComponent: ColumnLayout { id: clockColumn spacing: 6 diff --git a/dots/.config/quickshell/ii/modules/settings/BackgroundConfig.qml b/dots/.config/quickshell/ii/modules/settings/BackgroundConfig.qml index 3b388583f..ec9dc320d 100644 --- a/dots/.config/quickshell/ii/modules/settings/BackgroundConfig.qml +++ b/dots/.config/quickshell/ii/modules/settings/BackgroundConfig.qml @@ -97,6 +97,15 @@ ContentPage { } } + ConfigSwitch { + buttonIcon: "lock_clock" + text: Translation.tr("Show only when locked") + checked: Config.options.background.widgets.clock.showOnlyWhenLocked + onCheckedChanged: { + Config.options.background.widgets.clock.showOnlyWhenLocked = checked; + } + } + ContentSubsection { title: Translation.tr("Clock style") ConfigSelectionArray { From 284bb084c6801dcd894fd01df6351a023a88e81b Mon Sep 17 00:00:00 2001 From: "Celestial.y" Date: Mon, 10 Nov 2025 01:49:49 +0800 Subject: [PATCH 020/107] Update pkgrel in PKGBUILD --- sdata/dist-arch/illogical-impulse-hyprland/PKGBUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdata/dist-arch/illogical-impulse-hyprland/PKGBUILD b/sdata/dist-arch/illogical-impulse-hyprland/PKGBUILD index 8722c9246..b8473bb1d 100644 --- a/sdata/dist-arch/illogical-impulse-hyprland/PKGBUILD +++ b/sdata/dist-arch/illogical-impulse-hyprland/PKGBUILD @@ -1,6 +1,6 @@ pkgname=illogical-impulse-hyprland pkgver=1.0 -pkgrel=1 +pkgrel=2 pkgdesc='Illogical Impulse Hyprland relatated packages' arch=(any) license=(None) From 3a64eae028ef6a67820bdd595af3b8816389895b Mon Sep 17 00:00:00 2001 From: jwihardi Date: Sun, 9 Nov 2025 17:15:35 -0500 Subject: [PATCH 021/107] added adw-gtk3 keyword --- sdata/dist-gentoo/keywords | 1 + 1 file changed, 1 insertion(+) diff --git a/sdata/dist-gentoo/keywords b/sdata/dist-gentoo/keywords index 71aa965db..3703d9575 100644 --- a/sdata/dist-gentoo/keywords +++ b/sdata/dist-gentoo/keywords @@ -45,6 +45,7 @@ dev-libs/linux-syscall-support dev-embedded/libdisasm kde-plasma/breeze-plus x11-themes/darkly +x11-themes/adw-gtk3 media-fonts/space-grotesk media-fonts/gabarito ** media-fonts/material-symbols-variable ** From 2c4668bcb0a18669f93038158a09361e3119946d Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 9 Nov 2025 23:31:51 +0100 Subject: [PATCH 022/107] move panel enable/disable to config --- .../quickshell/ii/modules/common/Config.qml | 5 ++ dots/.config/quickshell/ii/shell.qml | 72 ++++++++----------- 2 files changed, 34 insertions(+), 43 deletions(-) diff --git a/dots/.config/quickshell/ii/modules/common/Config.qml b/dots/.config/quickshell/ii/modules/common/Config.qml index f2d058a18..1b13540ef 100644 --- a/dots/.config/quickshell/ii/modules/common/Config.qml +++ b/dots/.config/quickshell/ii/modules/common/Config.qml @@ -76,6 +76,11 @@ Singleton { JsonAdapter { id: configOptionsJsonAdapter + + property list enabledPanels: [ + "iiBar", "iiBackground", "iiCheatsheet", "iiDock", "iiLock", "iiMediaControls", "iiNotificationPopup", "iiOnScreenDisplay", "iiOnScreenKeyboard", "iiOverlay", "iiOverview", "iiPolkit", "iiRegionSelector", "iiReloadPopup", "iiScreenCorners", "iiSessionScreen", "iiSidebarLeft", "iiSidebarRight", "iiVerticalBar", "iiWallpaperSelector" + ] + property JsonObject policies: JsonObject { property int ai: 1 // 0: No | 1: Yes | 2: Local property int weeb: 1 // 0: No | 1: Open | 2: Closet diff --git a/dots/.config/quickshell/ii/shell.qml b/dots/.config/quickshell/ii/shell.qml index 81bd468b1..b497b6b5c 100644 --- a/dots/.config/quickshell/ii/shell.qml +++ b/dots/.config/quickshell/ii/shell.qml @@ -34,29 +34,6 @@ import Quickshell import qs.services ShellRoot { - // Enable/disable modules here. False = not loaded at all, so rest assured - // no unnecessary stuff will take up memory if you decide to only use, say, the overview. - property bool enableBar: true - property bool enableBackground: true - property bool enableCheatsheet: true - property bool enableDock: true - property bool enableLock: true - property bool enableMediaControls: true - property bool enableNotificationPopup: true - property bool enablePolkit: true - property bool enableOnScreenDisplay: true - property bool enableOnScreenKeyboard: true - property bool enableOverlay: true - property bool enableOverview: true - property bool enableRegionSelector: true - property bool enableReloadPopup: true - property bool enableScreenCorners: true - property bool enableSessionScreen: true - property bool enableSidebarLeft: true - property bool enableSidebarRight: true - property bool enableVerticalBar: true - property bool enableWallpaperSelector: true - // Force initialization of some singletons Component.onCompleted: { MaterialThemeLoader.reapplyTheme() @@ -67,25 +44,34 @@ ShellRoot { Wallpapers.load() } - LazyLoader { active: enableBar && Config.ready && !Config.options.bar.vertical; component: Bar {} } - LazyLoader { active: enableBackground; component: Background {} } - LazyLoader { active: enableCheatsheet; component: Cheatsheet {} } - LazyLoader { active: enableDock && Config.options.dock.enable; component: Dock {} } - LazyLoader { active: enableLock; component: Lock {} } - LazyLoader { active: enableMediaControls; component: MediaControls {} } - LazyLoader { active: enableNotificationPopup; component: NotificationPopup {} } - LazyLoader { active: enableOnScreenDisplay; component: OnScreenDisplay {} } - LazyLoader { active: enableOnScreenKeyboard; component: OnScreenKeyboard {} } - LazyLoader { active: enableOverlay; component: Overlay {} } - LazyLoader { active: enableOverview; component: Overview {} } - LazyLoader { active: enablePolkit; component: Polkit {} } - LazyLoader { active: enableRegionSelector; component: RegionSelector {} } - LazyLoader { active: enableReloadPopup; component: ReloadPopup {} } - LazyLoader { active: enableScreenCorners; component: ScreenCorners {} } - LazyLoader { active: enableSessionScreen; component: SessionScreen {} } - LazyLoader { active: enableSidebarLeft; component: SidebarLeft {} } - LazyLoader { active: enableSidebarRight; component: SidebarRight {} } - LazyLoader { active: enableVerticalBar && Config.ready && Config.options.bar.vertical; component: VerticalBar {} } - LazyLoader { active: enableWallpaperSelector; component: WallpaperSelector {} } + // Load enabled stuff + // Well, these loaders only *allow* them to be loaded, to always load or not is defined in each component + // The media controls for example is not loaded if it's not opened + PanelLoader { identifier: "iiBar"; extraCondition: !Config.options.bar.vertical; component: Bar {} } + PanelLoader { identifier: "iiBackground"; component: Background {} } + PanelLoader { identifier: "iiCheatsheet"; component: Cheatsheet {} } + PanelLoader { identifier: "iiDock"; component: Dock {} } + PanelLoader { identifier: "iiLock"; component: Lock {} } + PanelLoader { identifier: "iiMediaControls"; component: MediaControls {} } + PanelLoader { identifier: "iiNotificationPopup"; component: NotificationPopup {} } + PanelLoader { identifier: "iiOnScreenDisplay"; component: OnScreenDisplay {} } + PanelLoader { identifier: "iiOnScreenKeyboard"; component: OnScreenKeyboard {} } + PanelLoader { identifier: "iiOverlay"; component: Overlay {} } + PanelLoader { identifier: "iiOverview"; component: Overview {} } + PanelLoader { identifier: "iiPolkit"; component: Polkit {} } + PanelLoader { identifier: "iiRegionSelector"; component: RegionSelector {} } + PanelLoader { identifier: "iiReloadPopup"; component: ReloadPopup {} } + PanelLoader { identifier: "iiScreenCorners"; component: ScreenCorners {} } + PanelLoader { identifier: "iiSessionScreen"; component: SessionScreen {} } + PanelLoader { identifier: "iiSidebarLeft"; component: SidebarLeft {} } + PanelLoader { identifier: "iiSidebarRight"; component: SidebarRight {} } + PanelLoader { identifier: "iiVerticalBar"; extraCondition: Config.options.bar.vertical; component: VerticalBar {} } + PanelLoader { identifier: "iiWallpaperSelector"; component: WallpaperSelector {} } + + component PanelLoader: LazyLoader { + required property string identifier + property bool extraCondition: true + active: Config.ready && Config.options.enabledPanels.includes(identifier) && extraCondition + } } From fb7dbaa187227e54470fb44495b732039ee5428e Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Sun, 9 Nov 2025 23:33:39 +0100 Subject: [PATCH 023/107] add missing dock loading extra condition --- dots/.config/quickshell/ii/shell.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dots/.config/quickshell/ii/shell.qml b/dots/.config/quickshell/ii/shell.qml index b497b6b5c..ee2217bf7 100644 --- a/dots/.config/quickshell/ii/shell.qml +++ b/dots/.config/quickshell/ii/shell.qml @@ -50,7 +50,7 @@ ShellRoot { PanelLoader { identifier: "iiBar"; extraCondition: !Config.options.bar.vertical; component: Bar {} } PanelLoader { identifier: "iiBackground"; component: Background {} } PanelLoader { identifier: "iiCheatsheet"; component: Cheatsheet {} } - PanelLoader { identifier: "iiDock"; component: Dock {} } + PanelLoader { identifier: "iiDock"; extraCondition: Config.options.dock.enable; component: Dock {} } PanelLoader { identifier: "iiLock"; component: Lock {} } PanelLoader { identifier: "iiMediaControls"; component: MediaControls {} } PanelLoader { identifier: "iiNotificationPopup"; component: NotificationPopup {} } From 13892a01e1f38a99da8cf64708882c956a633a01 Mon Sep 17 00:00:00 2001 From: jwihardi Date: Sun, 9 Nov 2025 18:49:58 -0500 Subject: [PATCH 024/107] added quickshell dependencies --- ...gical-impulse-quickshell-git-9999-r3.ebuild | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/sdata/dist-gentoo/illogical-impulse-quickshell-git/illogical-impulse-quickshell-git-9999-r3.ebuild b/sdata/dist-gentoo/illogical-impulse-quickshell-git/illogical-impulse-quickshell-git-9999-r3.ebuild index 6d04ccb1f..c82f67d99 100644 --- a/sdata/dist-gentoo/illogical-impulse-quickshell-git/illogical-impulse-quickshell-git-9999-r3.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-quickshell-git/illogical-impulse-quickshell-git-9999-r3.ebuild @@ -20,6 +20,21 @@ IUSE="+breakpad +jemalloc +sockets +wayland +layer-shell +session-lock +toplevel RDEPEND=" dev-qt/qtbase:6 dev-qt/qtsvg:6 + dev-qt/qt5compat:6 + + dev-qt/qtimageformats:6 + dev-qt/qtmultimedia:6 + dev-qt/qtpositioning:6 + dev-qt/qtquicktimeline:6 + dev-qt/qtsensors:6 + dev-qt/qtsvg:6 + dev-qt/qttools:6 + dev-qt/qttranslations:6 + dev-qt/qtvirtualkeyboard:6 + dev-qt/qtwayland:6 + kde-apps/kdialog + kde-frameworks/syntax-highlighting:6 + jemalloc? ( dev-libs/jemalloc ) wayland? ( dev-libs/wayland @@ -34,9 +49,6 @@ RDEPEND=" mpris? ( dev-qt/qtdbus ) pam? ( sys-libs/pam ) bluetooth? ( net-wireless/bluez ) - - - " DEPEND="${RDEPEND}" BDEPEND=" From dbb8d015e84e2f05e1974fd0f51acb36953e174c Mon Sep 17 00:00:00 2001 From: jwihardi Date: Sun, 9 Nov 2025 18:57:56 -0500 Subject: [PATCH 025/107] removed hyprland custom ebuilds --- sdata/dist-gentoo/import-local-pkgs.sh | 7 ---- .../hyprland/hyprgraphics-9999.ebuild | 28 -------------- .../hyprland/hyprland-qt-support-9999.ebuild | 35 ------------------ .../hyprland/hyprland-qtutils-9999.ebuild | 26 ------------- .../local-pkgs/hyprland/hyprlang-9999.ebuild | 25 ------------- .../hyprland/hyprwayland-scanner-9999.ebuild | 37 ------------------- 6 files changed, 158 deletions(-) delete mode 100644 sdata/dist-gentoo/local-pkgs/hyprland/hyprgraphics-9999.ebuild delete mode 100644 sdata/dist-gentoo/local-pkgs/hyprland/hyprland-qt-support-9999.ebuild delete mode 100644 sdata/dist-gentoo/local-pkgs/hyprland/hyprland-qtutils-9999.ebuild delete mode 100644 sdata/dist-gentoo/local-pkgs/hyprland/hyprlang-9999.ebuild delete mode 100644 sdata/dist-gentoo/local-pkgs/hyprland/hyprwayland-scanner-9999.ebuild diff --git a/sdata/dist-gentoo/import-local-pkgs.sh b/sdata/dist-gentoo/import-local-pkgs.sh index 1e52ebf28..1a960db41 100644 --- a/sdata/dist-gentoo/import-local-pkgs.sh +++ b/sdata/dist-gentoo/import-local-pkgs.sh @@ -12,13 +12,6 @@ function import_ebuild(){ v sudo ebuild "${ebuild_dir}/${to_dir}/${ename}/${ename}"*.ebuild digest } -############### HYPRLAND -import_ebuild "${HYPR_DIR}" "dev-libs" "hyprgraphics" -import_ebuild "${HYPR_DIR}" "gui-libs" "hyprland-qt-support" -import_ebuild "${HYPR_DIR}" "gui-libs" "hyprland-qtutils" -import_ebuild "${HYPR_DIR}" "dev-libs" "hyprlang" -import_ebuild "${HYPR_DIR}" "dev-util" "hyprwayland-scanner" - ############### FONTS AND THEMES import_ebuild "${HYPR_DIR}" "dev-libs" "hyprgraphics" import_ebuild "${FT_DIR}" "media-fonts" "gabarito" diff --git a/sdata/dist-gentoo/local-pkgs/hyprland/hyprgraphics-9999.ebuild b/sdata/dist-gentoo/local-pkgs/hyprland/hyprgraphics-9999.ebuild deleted file mode 100644 index 95c36237c..000000000 --- a/sdata/dist-gentoo/local-pkgs/hyprland/hyprgraphics-9999.ebuild +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright 2023-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake git-r3 - -DESCRIPTION="Hyprland graphics / resource utilities (live/HEAD)" -HOMEPAGE="https://github.com/hyprwm/hyprgraphics" - -# For live ebuilds, Portage clones the git repo -EGIT_REPO_URI="https://github.com/hyprwm/hyprgraphics.git" - -LICENSE="BSD" -SLOT="0" -KEYWORDS="~amd64" - -RDEPEND=" - >=gui-libs/hyprutils-0.1.1:= - media-libs/libjpeg-turbo:= - media-libs/libjxl:= - media-libs/libspng - media-libs/libwebp:= - sys-apps/file - x11-libs/cairo -" -DEPEND="${RDEPEND}" - diff --git a/sdata/dist-gentoo/local-pkgs/hyprland/hyprland-qt-support-9999.ebuild b/sdata/dist-gentoo/local-pkgs/hyprland/hyprland-qt-support-9999.ebuild deleted file mode 100644 index 11b5d1aa2..000000000 --- a/sdata/dist-gentoo/local-pkgs/hyprland/hyprland-qt-support-9999.ebuild +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright 2023-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake git-r3 - -DESCRIPTION="QML style provider for hypr* Qt apps" -HOMEPAGE="https://github.com/hyprwm/hyprland-qt-support" -EGIT_REPO_URI="https://github.com/hyprwm/hyprland-qt-support.git" - -LICENSE="BSD" - -SLOT="0" -KEYWORDS="amd64" - -RDEPEND=" - dev-qt/qtbase:6 - dev-qt/qtdeclarative:6 - >=dev-libs/hyprlang-0.6.0 -" - -DEPEND="${RDEPEND}" - -BDEPEND=" - virtual/pkgconfig -" - -src_configure() { - local mycmakeargs=( - -DINSTALL_QML_PREFIX="${EPFREIX}/$(get_libdir)/qt6/qml" - ) - - cmake_src_configure -} diff --git a/sdata/dist-gentoo/local-pkgs/hyprland/hyprland-qtutils-9999.ebuild b/sdata/dist-gentoo/local-pkgs/hyprland/hyprland-qtutils-9999.ebuild deleted file mode 100644 index 15eaed2ec..000000000 --- a/sdata/dist-gentoo/local-pkgs/hyprland/hyprland-qtutils-9999.ebuild +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright 2023-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake git-r3 - -DESCRIPTION="Hyprland QT/qml utility apps" -HOMEPAGE="https://github.com/hyprwm/hyprland-qtutils" -EGIT_REPO_URI="https://github.com/hyprwm/hyprland-qtutils.git" - -LICENSE="BSD" - -SLOT="0" -KEYWORDS="~amd64 ~arm64 ~x86" - -RDEPEND=" - dev-qt/qtbase:6 - dev-qt/qtdeclarative:6 - dev-qt/qtwayland:6 - gui-libs/hyprutils:= - gui-libs/hyprland-qt-support - kde-frameworks/qqc2-desktop-style:6 -" - -DEPEND="${RDEPEND}" diff --git a/sdata/dist-gentoo/local-pkgs/hyprland/hyprlang-9999.ebuild b/sdata/dist-gentoo/local-pkgs/hyprland/hyprlang-9999.ebuild deleted file mode 100644 index aa1557128..000000000 --- a/sdata/dist-gentoo/local-pkgs/hyprland/hyprlang-9999.ebuild +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright 2023-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake toolchain-funcs git-r3 - -DESCRIPTION="Official implementation library for the hypr config language" -HOMEPAGE="https://github.com/hyprwm/hyprlang" -EGIT_REPO_URI="https://github.com/hyprwm/hyprlang.git" - -LICENSE="LGPL-3" -SLOT="0" -KEYWORDS="~amd64" - -RDEPEND=">=gui-libs/hyprutils-0.7.1:=" -DEPEND="${RDEPEND}" -BDEPEND="|| ( >=sys-devel/gcc-14:* >=llvm-core/clang-18:* )" - -pkg_setup() { - [[ ${MERGE_TYPE} == binary ]] && return - - tc-check-min_ver gcc 14 - tc-check-min_ver clang 18 -} diff --git a/sdata/dist-gentoo/local-pkgs/hyprland/hyprwayland-scanner-9999.ebuild b/sdata/dist-gentoo/local-pkgs/hyprland/hyprwayland-scanner-9999.ebuild deleted file mode 100644 index 1ee36c663..000000000 --- a/sdata/dist-gentoo/local-pkgs/hyprland/hyprwayland-scanner-9999.ebuild +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright 2024-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -inherit cmake toolchain-funcs - -DESCRIPTION="A Hyprland implementation of wayland-scanner, in and for C++" -HOMEPAGE="https://github.com/hyprwm/hyprwayland-scanner/" - -if [[ ${PV} == 9999 ]] ; then - EGIT_REPO_URI="https://github.com/hyprwm/hyprwayland-scanner.git" - inherit git-r3 -else - SRC_URI="https://github.com/hyprwm/hyprwayland-scanner/archive/v${PV}.tar.gz -> ${P}.gh.tar.gz" -fi - -LICENSE="BSD" -KEYWORDS="amd64 arm64 x86" -SLOT="0" - -RDEPEND=">=dev-libs/pugixml-1.14" -DEPEND="${RDEPEND}" - -pkg_setup() { - [[ ${MERGE_TYPE} == binary ]] && return - - if tc-is-gcc && ver_test $(gcc-version) -lt 13 ; then - eerror "Hyprland requires >=sys-devel/gcc-13 to build" - eerror "Please upgrade GCC: emerge -v1 sys-devel/gcc" - die "GCC version is too old to compile Hyprland!" - elif tc-is-clang && ver_test $(clang-version) -lt 16 ; then - eerror "Hyprland requires >=llvm-core/clang-16 to build" - eerror "Please upgrade Clang: emerge -v1 llvm-core/clang" - die "Clang version is too old to compile Hyprland!" - fi -} From 3dd1264a12b1ca6df09f51a8f4041b22d5d587d7 Mon Sep 17 00:00:00 2001 From: jwihardi Date: Sun, 9 Nov 2025 19:00:12 -0500 Subject: [PATCH 026/107] removed hyprland custom ebuilds - part 2 --- sdata/dist-gentoo/import-local-pkgs.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/sdata/dist-gentoo/import-local-pkgs.sh b/sdata/dist-gentoo/import-local-pkgs.sh index 1a960db41..bb1a5375f 100644 --- a/sdata/dist-gentoo/import-local-pkgs.sh +++ b/sdata/dist-gentoo/import-local-pkgs.sh @@ -13,7 +13,6 @@ function import_ebuild(){ } ############### FONTS AND THEMES -import_ebuild "${HYPR_DIR}" "dev-libs" "hyprgraphics" import_ebuild "${FT_DIR}" "media-fonts" "gabarito" import_ebuild "${FT_DIR}" "media-fonts" "material-symbols-variable" import_ebuild "${FT_DIR}" "media-fonts" "readex-pro" From cf1ea9e3d9762ef50aab14794c6aec0ac7282b24 Mon Sep 17 00:00:00 2001 From: jwihardi Date: Sun, 9 Nov 2025 19:01:36 -0500 Subject: [PATCH 027/107] updated useflags to not be live for hypr stuff --- sdata/dist-gentoo/keywords | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/sdata/dist-gentoo/keywords b/sdata/dist-gentoo/keywords index 3703d9575..512705188 100644 --- a/sdata/dist-gentoo/keywords +++ b/sdata/dist-gentoo/keywords @@ -29,15 +29,15 @@ gui-apps/fuzzel gui-apps/quickshell ** gui-apps/wlogout dev-cpp/sdbus-c++ -dev-libs/hyprland-protocols ** -gui-libs/aquamarine ** -gui-libs/hyprutils ** -dev-util/hyprwayland-scanner ** -dev-libs/hyprlang ** -dev-libs/hyprgraphics ** -gui-libs/hyprcursor ** -gui-libs/hyprland-qt-support ** -gui-libs/hyprland-qtutils ** +dev-libs/hyprland-protocols +gui-libs/aquamarine +gui-libs/hyprutils +dev-util/hyprwayland-scanner +dev-libs/hyprlang +dev-libs/hyprgraphics +gui-libs/hyprcursor +gui-libs/hyprland-qt-support +gui-libs/hyprland-qtutils gui-wm/hyprland x11-libs/libxkbcommon dev-util/breakpad From 74941d15bf44e4119418540b46e34784eca58e68 Mon Sep 17 00:00:00 2001 From: clsty Date: Mon, 10 Nov 2025 08:56:07 +0800 Subject: [PATCH 028/107] Not use setups-selector but 2.setups.sh --- sdata/dist-arch/install-setups.sh | 15 ---- sdata/dist-fallback/install-setups.sh | 15 ---- sdata/dist-fedora/install-setups.sh | 19 ----- sdata/dist-gentoo/install-setups.sh | 39 ---------- sdata/dist-nix/install-setups.sh | 39 ---------- sdata/subcmd-install/2.setups-selector.sh | 95 ----------------------- sdata/subcmd-install/2.setups.sh | 64 +++++++++++++++ setup | 4 +- 8 files changed, 66 insertions(+), 224 deletions(-) delete mode 100644 sdata/dist-arch/install-setups.sh delete mode 100644 sdata/dist-fallback/install-setups.sh delete mode 100644 sdata/dist-fedora/install-setups.sh delete mode 100644 sdata/dist-gentoo/install-setups.sh delete mode 100644 sdata/dist-nix/install-setups.sh delete mode 100644 sdata/subcmd-install/2.setups-selector.sh create mode 100644 sdata/subcmd-install/2.setups.sh diff --git a/sdata/dist-arch/install-setups.sh b/sdata/dist-arch/install-setups.sh deleted file mode 100644 index 923ac2bc5..000000000 --- a/sdata/dist-arch/install-setups.sh +++ /dev/null @@ -1,15 +0,0 @@ -# This script is meant to be sourced. -# It's not for directly running. - -##################################################################################### -# These python packages are installed using uv into the venv (virtual environment). Once the folder of the venv gets deleted, they are all gone cleanly. So it's considered as setups, not dependencies. -showfun install-python-packages -v install-python-packages - -v sudo usermod -aG video,i2c,input "$(whoami)" -v bash -c "echo i2c-dev | sudo tee /etc/modules-load.d/i2c-dev.conf" -v systemctl --user enable ydotool --now -v sudo systemctl enable bluetooth --now -v gsettings set org.gnome.desktop.interface font-name 'Rubik 11' -v gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' -v kwriteconfig6 --file kdeglobals --group KDE --key widgetStyle Darkly diff --git a/sdata/dist-fallback/install-setups.sh b/sdata/dist-fallback/install-setups.sh deleted file mode 100644 index 923ac2bc5..000000000 --- a/sdata/dist-fallback/install-setups.sh +++ /dev/null @@ -1,15 +0,0 @@ -# This script is meant to be sourced. -# It's not for directly running. - -##################################################################################### -# These python packages are installed using uv into the venv (virtual environment). Once the folder of the venv gets deleted, they are all gone cleanly. So it's considered as setups, not dependencies. -showfun install-python-packages -v install-python-packages - -v sudo usermod -aG video,i2c,input "$(whoami)" -v bash -c "echo i2c-dev | sudo tee /etc/modules-load.d/i2c-dev.conf" -v systemctl --user enable ydotool --now -v sudo systemctl enable bluetooth --now -v gsettings set org.gnome.desktop.interface font-name 'Rubik 11' -v gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' -v kwriteconfig6 --file kdeglobals --group KDE --key widgetStyle Darkly diff --git a/sdata/dist-fedora/install-setups.sh b/sdata/dist-fedora/install-setups.sh deleted file mode 100644 index 6364ca3f5..000000000 --- a/sdata/dist-fedora/install-setups.sh +++ /dev/null @@ -1,19 +0,0 @@ -# This script is meant to be sourced. -# It's not for directly running. - -##################################################################################### -# These python packages are installed using uv into the venv (virtual environment). Once the folder of the venv gets deleted, they are all gone cleanly. So it's considered as setups, not dependencies. -showfun install-python-packages -v install-python-packages - -v sudo usermod -aG video,input "$(whoami)" -v mkdir -p "${XDG_CONFIG_HOME}/systemd/user" -v ln -s /usr/lib/systemd/system/ydotool.service "${XDG_CONFIG_HOME}/systemd/user/ydotool.service" -v bash -c "echo uinput | sudo tee /etc/modules-load.d/uinput.conf" -v bash -c 'echo SUBSYSTEM==\"misc\", KERNEL==\"uinput\", MODE=\"0660\", GROUP=\"input\" | - sudo tee /etc/udev/rules.d/99-uinput.rules' -v systemctl --user enable ydotool -v sudo systemctl enable bluetooth --now -v gsettings set org.gnome.desktop.interface font-name 'Rubik 11' -v gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' -v kwriteconfig6 --file kdeglobals --group KDE --key widgetStyle Darkly diff --git a/sdata/dist-gentoo/install-setups.sh b/sdata/dist-gentoo/install-setups.sh deleted file mode 100644 index db75e555d..000000000 --- a/sdata/dist-gentoo/install-setups.sh +++ /dev/null @@ -1,39 +0,0 @@ -# This script is meant to be sourced. -# It's not for directly running. - -##################################################################################### -# These python packages are installed using uv into the venv (virtual environment). Once the folder of the venv gets deleted, they are all gone cleanly. So it's considered as setups, not dependencies. -showfun install-python-packages -v install-python-packages - -if [[ -z $(getent group i2c) ]]; then - v sudo groupadd i2c -fi - -v sudo usermod -aG video,i2c,input "$(whoami)" - -if [[ ! -z $(systemctl --version) ]]; then - v bash -c "echo i2c-dev | sudo tee /etc/modules-load.d/i2c-dev.conf" - v systemctl --user enable ydotool --now - v sudo systemctl enable bluetooth --now -elif [[ ! -z $(openrc --version) ]]; then - v bash -c "echo 'modules=i2c-dev' | sudo tee -a /etc/conf.d/modules" - v sudo rc-update add modules boot - v sudo rc-update add ydotool default - v sudo rc-update add bluetooth default - - x sudo rc-service ydotool start - x sudo rc-service bluetooth start -else - printf "${STY_RED}" - printf "====================INIT SYSTEM NOT FOUND====================\n" - printf "${STY_RST}" - pause -fi - -v sudo chown -R $(whoami):$(whoami) ~/.config/hypr/ -v sudo chown -R $(whoami):$(whoami) ~/.config/quickshell/ - -v gsettings set org.gnome.desktop.interface font-name 'Rubik 11' -v gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' -v kwriteconfig6 --file kdeglobals --group KDE --key widgetStyle Darkly diff --git a/sdata/dist-nix/install-setups.sh b/sdata/dist-nix/install-setups.sh deleted file mode 100644 index 0ddcfcf37..000000000 --- a/sdata/dist-nix/install-setups.sh +++ /dev/null @@ -1,39 +0,0 @@ -# This script is meant to be sourced. -# It's not for directly running. - -##################################################################################### -# These python packages are installed using uv into the venv (virtual environment). Once the folder of the venv gets deleted, they are all gone cleanly. So it's considered as setups, not dependencies. -showfun install-python-packages -v install-python-packages - -if [[ -z $(getent group i2c) ]]; then - v sudo groupadd i2c -fi - -v sudo usermod -aG video,i2c,input "$(whoami)" - -if [[ ! -z $(systemctl --version) ]]; then - v bash -c "echo i2c-dev | sudo tee /etc/modules-load.d/i2c-dev.conf" - # TODO: find a proper way for enable Nix installed ydotool - if ! [[ "${INSTALL_VIA_NIX}" == true ]]; then - v systemctl --user enable ydotool --now - fi - v sudo systemctl enable bluetooth --now -elif [[ ! -z $(openrc --version) ]]; then - v bash -c "echo 'modules=i2c-dev' | sudo tee -a /etc/conf.d/modules" - v sudo rc-update add modules boot - v sudo rc-update add ydotool default - v sudo rc-update add bluetooth default - - x sudo rc-service ydotool start - x sudo rc-service bluetooth start -else - printf "${STY_RED}" - printf "====================INIT SYSTEM NOT FOUND====================\n" - printf "${STY_RST}" - pause -fi - -v gsettings set org.gnome.desktop.interface font-name 'Rubik 11' -v gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' -v kwriteconfig6 --file kdeglobals --group KDE --key widgetStyle Darkly diff --git a/sdata/subcmd-install/2.setups-selector.sh b/sdata/subcmd-install/2.setups-selector.sh deleted file mode 100644 index 0a72e8728..000000000 --- a/sdata/subcmd-install/2.setups-selector.sh +++ /dev/null @@ -1,95 +0,0 @@ -# This script is meant to be sourced. -# It's not for directly running. -printf "${STY_CYAN}[$0]: 2. Setup for permissions/services etc\n${STY_RST}" - -# shellcheck shell=bash - -#################### -# Detect distro -# Helpful link(s): -# http://stackoverflow.com/questions/29581754 -# https://github.com/which-distro/os-release -export OS_RELEASE_FILE=${OS_RELEASE_FILE:-/etc/os-release} -test -f ${OS_RELEASE_FILE} || \ - ( echo "${OS_RELEASE_FILE} does not exist. Aborting..." ; exit 1 ; ) -export OS_DISTRO_ID=$(awk -F'=' '/^ID=/ { gsub("\"","",$2); print tolower($2) }' ${OS_RELEASE_FILE} 2> /dev/null) -export OS_DISTRO_ID_LIKE=$(awk -F'=' '/^ID_LIKE=/ { gsub("\"","",$2); print tolower($2) }' ${OS_RELEASE_FILE} 2> /dev/null) - - - -if [[ "$INSTALL_VIA_NIX" == "true" ]]; then - - TARGET_ID=nix - printf "${STY_YELLOW}" - printf "===WARNING===\n" - printf "./sdata/dist-${TARGET_ID}/install-setups.sh will be used.\n" - printf "The process is still WIP.\n" - printf "Proceed only at your own risk.\n" - printf "\n" - printf "${STY_RST}" - pause - source ./sdata/dist-${TARGET_ID}/install-setups.sh - -elif [[ "$OS_DISTRO_ID" == "arch" ]]; then - - TARGET_ID=arch - printf "${STY_GREEN}" - printf "===INFO===\n" - printf "Detected distro ID: ${OS_DISTRO_ID}\n" - printf "./sdata/dist-${TARGET_ID}/install-setups.sh will be used.\n" - printf "\n" - printf "${STY_RST}" - pause - source ./sdata/dist-${TARGET_ID}/install-setups.sh - -elif [[ -f "./sdata/dist-${OS_DISTRO_ID}/install-setups.sh" ]]; then - - TARGET_ID=${OS_DISTRO_ID} - printf "${STY_PURPLE}" - printf "===NOTICE===\n" - printf "Detected distro ID: ${OS_DISTRO_ID}\n" - printf "./sdata/dist-${TARGET_ID}/install-setups.sh will be used.\n" - printf "This file is provided by the community.\n" - printf "It is not officially supported by github:end-4/dots-hyprland .\n" - printf "${STY_INVERT}" - printf "If you find out any problems about it, PR is welcomed if you are able to address it. Or, create a discussion about it, but please do not submit issue, because the developers do not use this distro, therefore they cannot help.${STY_RST}\n" - printf "${STY_PURPLE}" - printf "Proceed only at your own risk.\n" - printf "\n" - printf "${STY_RST}" - pause - source ./sdata/dist-${TARGET_ID}/install-setups.sh - -elif [[ "$OS_DISTRO_ID_LIKE" == "arch" || "$OS_DISTRO_ID" == "cachyos" ]]; then - - TARGET_ID=arch - printf "${STY_YELLOW}" - printf "===WARNING===\n" - printf "Detected distro ID: ${OS_DISTRO_ID}\n" - printf "Detected distro ID_LIKE: ${OS_DISTRO_ID_LIKE}\n" - printf "./sdata/dist-${TARGET_ID}/install-setups.sh will be used.\n" - printf "Ideally, it should also work for your distro.\n" - printf "Still, there is a chance that it not works as expected or even fails.\n" - printf "Proceed only at your own risk.\n" - printf "\n" - printf "${STY_RST}" - pause - source ./sdata/dist-${TARGET_ID}/install-setups.sh - -else - - TARGET_ID=fallback - printf "${STY_RED}" - printf "===WARNING===\n" - printf "Detected distro ID: ${OS_DISTRO_ID}\n" - printf "Detected distro ID_LIKE: ${OS_DISTRO_ID_LIKE}\n" - printf "./sdata/dist-${OS_DISTRO_ID}/install-setups.sh not found.\n" - printf "./sdata/dist-${TARGET_ID}/install-setups.sh will be used.\n" - printf "It might fail or disrupt your system.\n" - printf "Proceed only at your own risk.\n" - printf "\n" - printf "${STY_RST}" - pause - source ./sdata/dist-${TARGET_ID}/install-setups.sh - -fi diff --git a/sdata/subcmd-install/2.setups.sh b/sdata/subcmd-install/2.setups.sh new file mode 100644 index 000000000..2d8e03ba1 --- /dev/null +++ b/sdata/subcmd-install/2.setups.sh @@ -0,0 +1,64 @@ +# This script is meant to be sourced. +# It's not for directly running. + +function prepare_systemd_user_service(){ + if [[ ! -d "${XDG_CONFIG_HOME}/systemd/user" ]]; then + x mkdir -p "${XDG_CONFIG_HOME}/systemd/user" + fi + if [[ ! -e "${XDG_CONFIG_HOME}/systemd/user/ydotool.service" ]]; then + x ln -s /usr/lib/systemd/system/ydotool.service "${XDG_CONFIG_HOME}/systemd/user/ydotool.service" + fi +} +##################################################################################### +# These python packages are installed using uv into the venv (virtual environment). Once the folder of the venv gets deleted, they are all gone cleanly. So it's considered as setups, not dependencies. +showfun install-python-packages +v install-python-packages + +if [[ -z $(getent group i2c) ]]; then + v sudo groupadd i2c +fi +v sudo usermod -aG video,i2c,input "$(whoami)" + +if [[ ! -z $(systemctl --version) ]]; then + if [[ "$OS_DISTRO_ID" == "fedora" ]]; then + v bash -c "echo uinput | sudo tee /etc/modules-load.d/uinput.conf" + v bash -c 'echo SUBSYSTEM==\"misc\", KERNEL==\"uinput\", MODE=\"0660\", GROUP=\"input\" | sudo tee /etc/udev/rules.d/99-uinput.rules' + else + v bash -c "echo i2c-dev | sudo tee /etc/modules-load.d/i2c-dev.conf" + fi + # TODO: find a proper way for enable Nix installed ydotool. When running `systemctl --user enable ydotool, it errors "Failed to enable unit: Unit ydotool.service does not exist". + if [[ ! "${INSTALL_VIA_NIX}" == true ]]; then + if [[ "$OS_DISTRO_ID" == "fedora" ]]; then + v prepare_systemd_user_service + fi + # When $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR are empty, it commonly means that the current user has been logged in with `su - user` or `ssh user@hostname`. In such case `systemctl --user enable ` is not usable. It should be `sudo systemctl --machine=$(whoami)@.host --user enable ` instead. + if [[ ! -z "${DBUS_SESSION_BUS_ADDRESS}" ]]; then + v systemctl --user enable ydotool --now + else + v sudo systemctl --machine=$(whoami)@.host --user enable ydotool --now + fi + fi + v sudo systemctl enable bluetooth --now +elif [[ ! -z $(openrc --version) ]]; then + v bash -c "echo 'modules=i2c-dev' | sudo tee -a /etc/conf.d/modules" + v sudo rc-update add modules boot + v sudo rc-update add ydotool default + v sudo rc-update add bluetooth default + + x sudo rc-service ydotool start + x sudo rc-service bluetooth start +else + printf "${STY_RED}" + printf "====================INIT SYSTEM NOT FOUND====================\n" + printf "${STY_RST}" + pause +fi + +if [[ "$OS_DISTRO_ID" == "gentoo" ]]; then + v sudo chown -R $(whoami):$(whoami) ~/.config/hypr/ + v sudo chown -R $(whoami):$(whoami) ~/.config/quickshell/ +fi + +v gsettings set org.gnome.desktop.interface font-name 'Rubik 11' +v gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' +v kwriteconfig6 --file kdeglobals --group KDE --key widgetStyle Darkly diff --git a/setup b/setup index 9309491e2..342471210 100755 --- a/setup +++ b/setup @@ -70,7 +70,7 @@ case ${SUBCMD_NAME} in source ${SUBCMD_DIR}/1.deps-selector.sh fi if [[ "${SKIP_ALLSETUPS}" != true ]]; then - source ${SUBCMD_DIR}/2.setups-selector.sh + source ${SUBCMD_DIR}/2.setups.sh fi if [[ "${SKIP_ALLFILES}" != true ]]; then source ${SUBCMD_DIR}/3.files.sh @@ -83,7 +83,7 @@ case ${SUBCMD_NAME} in ;; install-setups) if [[ "${SKIP_ALLSETUPS}" != true ]]; then - source ${SUBCMD_DIR}/2.setups-selector.sh + source ${SUBCMD_DIR}/2.setups.sh fi ;; install-files) From 051accbe2fcdcf6dea7687c41ce5225444de2e32 Mon Sep 17 00:00:00 2001 From: clsty Date: Mon, 10 Nov 2025 09:05:31 +0800 Subject: [PATCH 029/107] Update dist-gentoo/README --- sdata/dist-gentoo/README.md | 19 ++++++------------- sdata/subcmd-install/2.setups.sh | 1 + 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/sdata/dist-gentoo/README.md b/sdata/dist-gentoo/README.md index c488d50e8..630a3a178 100644 --- a/sdata/dist-gentoo/README.md +++ b/sdata/dist-gentoo/README.md @@ -10,7 +10,6 @@ Note: ## Contributors - Author: [jwihardi](https://github.com/jwihardi) - ## install-deps.sh 1. Enables localrepo and guru overlays if not already enabled. 2. Copies _keywords_ to _keywords-user_ and appends the correct unmask keywords for the user's architecture (adm64, arm64, and x86 are supported). @@ -19,19 +18,13 @@ Note: 5. Copies over the custom live ebuilds (hyprgraphics, hyprland-qt-support, hyprland-qtutils, hyprlang, hyprwayland-scanner) into localrepo and digests them. 6. Loops through all illogical-impulse ebuilds to digest and emerge them. -## install-setup.sh -1. Creates the _i2c_ group since Gentoo doesn't have this by default, then adds the user to it. -2. Enables _bluetooth_ and _ydotool_ services (systemd or openrc) -3. _icons_, _konsole_, _hypr_, and _quickshell_ are are chowned to user since they're emerge in as root by default. -4. gsettings and kwriteconfig6 are set (same as sdata/dist-arch). - ## Recommended use flags (useflags) - **The recommended useflags are not required, this is a more out of the box experience with these** - Pipewire is used, alsa and pulseaudio are disabled (enabling them won't hurt). - Init system is not assumed or considered so disabling systemd should be done in make.conf, same with session managers (elogind is recommended). ## Making the dot-files work -- elogind is expected to be installed and run as a service on OpenRC to set ```XDG_RUNTIME_DIR``` +- elogind is expected to be installed and run as a service on OpenRC to set `XDG_RUNTIME_DIR` - NOT recommended: seatd will require more manual setup - pipewire, pipewire-pulse, and wireplumber must be started after a dbus-session is created and before Hyprland is launched. @@ -54,8 +47,8 @@ end ``` ## Known Issues -- If Hyprland is just blank, rebuild Quickshell (emerge -q gui-apps/quickshell) -- ```Hyprland: error while loading shared libraries: libhyprgraphics.so.0: cannot open shared object file: No such file or directory``` - - The Hyprland live ebuild sometimes has linkage issues, deleting _Hyprland_ and _hyprland_ from ```/usr/bin/``` and then re-emerging usually fixes this. -- When emerging Hyprland if you get an issue relating to```undefined reference to `Hyprutils::Math::Vector2D::˜Vector2D()` ``` - - Clear the cache folder (```rm -fr /var/tmp/portage/gui-wm/hyprland*```) then try again +- If Hyprland is just blank, rebuild Quickshell (`emerge -q gui-apps/quickshell`) +- `Hyprland: error while loading shared libraries: libhyprgraphics.so.0: cannot open shared object file: No such file or directory` + - The Hyprland live ebuild sometimes has linkage issues, deleting _Hyprland_ and _hyprland_ from `/usr/bin/` and then re-emerging usually fixes this. +- When emerging Hyprland if you get an issue relating to `undefined reference to ``Hyprutils::Math::Vector2D::˜Vector2D()`` ` + - Clear the cache folder (`rm -fr /var/tmp/portage/gui-wm/hyprland*`) then try again diff --git a/sdata/subcmd-install/2.setups.sh b/sdata/subcmd-install/2.setups.sh index 2d8e03ba1..464dba1cd 100644 --- a/sdata/subcmd-install/2.setups.sh +++ b/sdata/subcmd-install/2.setups.sh @@ -54,6 +54,7 @@ else pause fi +# _icons_, _konsole_, _hypr_, and _quickshell_ are are chowned to user since they're emerge in as root by default. if [[ "$OS_DISTRO_ID" == "gentoo" ]]; then v sudo chown -R $(whoami):$(whoami) ~/.config/hypr/ v sudo chown -R $(whoami):$(whoami) ~/.config/quickshell/ From e10ad1ed7155b1e1caf834b83fd2e8516ae6707f Mon Sep 17 00:00:00 2001 From: jwihardi Date: Sun, 9 Nov 2025 20:37:42 -0500 Subject: [PATCH 030/107] updated setup, don't need chown --- .../illogical-impulse-microtex-git-1.0-r1.ebuild | 1 - sdata/dist-gentoo/install-setups.sh | 3 --- 2 files changed, 4 deletions(-) diff --git a/sdata/dist-gentoo/illogical-impulse-microtex-git/illogical-impulse-microtex-git-1.0-r1.ebuild b/sdata/dist-gentoo/illogical-impulse-microtex-git/illogical-impulse-microtex-git-1.0-r1.ebuild index b95e5c9b3..9fab4c1f1 100644 --- a/sdata/dist-gentoo/illogical-impulse-microtex-git/illogical-impulse-microtex-git-1.0-r1.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-microtex-git/illogical-impulse-microtex-git-1.0-r1.ebuild @@ -52,4 +52,3 @@ src_install() { insinto /usr/share/licenses/illogical-impulse-microtex-git doins LICENSE } - diff --git a/sdata/dist-gentoo/install-setups.sh b/sdata/dist-gentoo/install-setups.sh index db75e555d..4a1f112f2 100644 --- a/sdata/dist-gentoo/install-setups.sh +++ b/sdata/dist-gentoo/install-setups.sh @@ -31,9 +31,6 @@ else pause fi -v sudo chown -R $(whoami):$(whoami) ~/.config/hypr/ -v sudo chown -R $(whoami):$(whoami) ~/.config/quickshell/ - v gsettings set org.gnome.desktop.interface font-name 'Rubik 11' v gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' v kwriteconfig6 --file kdeglobals --group KDE --key widgetStyle Darkly From 4396079c28d8ec4629c270c26456fdfb7fd5fa2c Mon Sep 17 00:00:00 2001 From: jwihardi Date: Sun, 9 Nov 2025 20:47:27 -0500 Subject: [PATCH 031/107] added chown for .local --- sdata/dist-gentoo/install-setups.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sdata/dist-gentoo/install-setups.sh b/sdata/dist-gentoo/install-setups.sh index 4a1f112f2..cd7412726 100644 --- a/sdata/dist-gentoo/install-setups.sh +++ b/sdata/dist-gentoo/install-setups.sh @@ -31,6 +31,8 @@ else pause fi +v sudo chown -R $(whoami):$(whoami) ~/.local/ + v gsettings set org.gnome.desktop.interface font-name 'Rubik 11' v gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' v kwriteconfig6 --file kdeglobals --group KDE --key widgetStyle Darkly From 98d2c4f881bbe622e415a85497ca76acc6ba7b2c Mon Sep 17 00:00:00 2001 From: clsty Date: Mon, 10 Nov 2025 10:38:14 +0800 Subject: [PATCH 032/107] Introduce OS_GROUP_ID --- sdata/dist-fallback/install-deps.sh | 11 -- sdata/dist-fallback/outdate-detect-mode | 1 - sdata/lib/dist-determine.sh | 116 +++++++++++++++++ sdata/subcmd-install/1.deps-selector.sh | 159 +++++------------------- sdata/subcmd-install/2.setups.sh | 6 +- sdata/subcmd-install/3.files-legacy.sh | 2 +- setup | 6 + 7 files changed, 155 insertions(+), 146 deletions(-) delete mode 100644 sdata/dist-fallback/install-deps.sh delete mode 100644 sdata/dist-fallback/outdate-detect-mode create mode 100644 sdata/lib/dist-determine.sh diff --git a/sdata/dist-fallback/install-deps.sh b/sdata/dist-fallback/install-deps.sh deleted file mode 100644 index b106cfbe6..000000000 --- a/sdata/dist-fallback/install-deps.sh +++ /dev/null @@ -1,11 +0,0 @@ -# This script is meant to be sourced. -# It's not for directly running. - -# This file is currently WIP. - -v install-Rubik -v install-Gabarito -v install-OneUI -v install-bibata -v install-MicroTeX -v install-uv diff --git a/sdata/dist-fallback/outdate-detect-mode b/sdata/dist-fallback/outdate-detect-mode deleted file mode 100644 index 00d7bdd40..000000000 --- a/sdata/dist-fallback/outdate-detect-mode +++ /dev/null @@ -1 +0,0 @@ -WIP diff --git a/sdata/lib/dist-determine.sh b/sdata/lib/dist-determine.sh new file mode 100644 index 000000000..8a39e463d --- /dev/null +++ b/sdata/lib/dist-determine.sh @@ -0,0 +1,116 @@ +# This script is meant to be sourced. +# It's not for directly running. +function print_os_group_id(){ + printf "${STY_CYAN}" + printf "===INFO===\n" + printf "Detected OS_DISTRO_ID: ${OS_DISTRO_ID}\n" + printf "Detected OS_DISTRO_ID_LIKE: ${OS_DISTRO_ID_LIKE}\n" + printf "Determined OS_GROUP_ID: ${OS_GROUP_ID}\n" + printf "==========\n\n" + printf "${STY_RST}" +} +function print_os_group_id_alike(){ + printf "${STY_YELLOW}" + printf "===WARNING===\n" + printf "Ideally, it should also work for your distro.\n" + printf "Still, there is a chance that it not works as expected or even fails.\n" + printf "Proceed only at your own risk.\n" + printf "=============\n\n" + printf "${STY_RST}" +} +function print_os_group_id_unofficial(){ + printf "${STY_PURPLE}" + printf "===NOTICE===\n" + printf "The support for your distro is provided by the community.\n" + printf "It is not officially supported by github:end-4/dots-hyprland .\n" + printf "${STY_BOLD}" + printf "If you find out any problems about it, PR is welcomed if you are able to address it. Or, create a discussion about it, but please do not submit issue, because the developers do not use this distro, therefore they cannot help.${STY_RST}\n" + printf "${STY_PURPLE}" + printf "Proceed only at your own risk.\n" + printf "============\n\n" + printf "${STY_RST}" +} +function print_os_group_id_fallback(){ + printf "${STY_RED}" + printf "===CAUTION===\n" + printf "No support provided for your distro, using fallback method.\n" + printf "Proceed only at your own risk.\n" + printf "=============\n\n" + printf "${STY_RST}" +} +function print_os_group_id_force_vianix(){ + printf "${STY_RED}" + printf "===CAUTION===\n" + printf "\"--via-nix\" is forcely specified as the only method to support your distro.\n" + printf "It is still experimental and some functionalities are missing.\n" + printf "It may also behave unexpectedly.\n" + printf "Proceed only at your own risk.\n" + printf "=============\n\n" + printf "${STY_RST}" +} +##################################################################################### + +#################### +# Detect architecture +# Helpful link(s): +# http://stackoverflow.com/questions/45125516 +export MACHINE_ARCH=$(uname -m) +case "${MACHINE_ARCH}" in + "x86_64") sleep 0;; + *) + printf "${STY_YELLOW}" + printf "===WARNING===\n" + printf "Detected machine architecture: ${MACHINE_ARCH}\n" + printf "This script only supports x86_64.\n" + printf "It is very likely to fail when installing dependencies on your machine.\n" + printf "=============\n" + printf "\n" + printf "${STY_RST}" + pause + ;; +esac + +#################### +# Detect distro +# Helpful link(s): +# http://stackoverflow.com/questions/29581754 +# https://github.com/which-distro/os-release +OS_RELEASE_FILE_CUSTOM="${REPO_ROOT}/os-release" +if test -f "${OS_RELEASE_FILE_CUSTOM}"; then + printf "${STY_YELLOW}Warning: using custom os-release file \"${OS_RELEASE_FILE_CUSTOM}\".${STY_RST}\n" + OS_RELEASE_FILE="${OS_RELEASE_FILE_CUSTOM}" +elif test -f /etc/os-release; then + OS_RELEASE_FILE=/etc/os-release +else + printf "${STY_RED}/etc/os-release does not exist, aborting...${STY_RST}\n" ; exit 1 +fi +export OS_DISTRO_ID=$(awk -F'=' '/^ID=/ { gsub("\"","",$2); print tolower($2) }' ${OS_RELEASE_FILE} 2> /dev/null) +export OS_DISTRO_ID_LIKE=$(awk -F'=' '/^ID_LIKE=/ { gsub("\"","",$2); print tolower($2) }' ${OS_RELEASE_FILE} 2> /dev/null) + + +#################### +# Determine distro ID + +if [[ "$OS_DISTRO_ID" =~ ^(arch|endeavouros|cachyos)$ ]]; then + OS_GROUP_ID="arch" + print_os_group_id_functions=(print_os_group_id) +elif [[ "$OS_DISTRO_ID_LIKE" == "arch" ]]; then + OS_GROUP_ID="arch" + print_os_group_id_functions=(print_os_group_id{,_alike}) +elif [[ "$OS_DISTRO_ID" == "gentoo" ]]; then + OS_GROUP_ID="gentoo" + print_os_group_id_functions=(print_os_group_id{,_unofficial}) +elif [[ "$OS_DISTRO_ID_LIKE" == "gentoo" ]]; then + OS_GROUP_ID="gentoo" + print_os_group_id_functions=(print_os_group_id{,_alike,_unofficial}) +elif [[ "$OS_DISTRO_ID" == "fedora" ]]; then + OS_GROUP_ID="fedora" + print_os_group_id_functions=(print_os_group_id{,_unofficial}) +elif [[ "$OS_DISTRO_ID_LIKE" == "fedora" ]]; then + OS_GROUP_ID="fedora" + print_os_group_id_functions=(print_os_group_id{,_alike,_unofficial}) +else + OS_GROUP_ID="fallback" + INSTALL_VIA_NIX=true + print_os_group_id_functions=(print_os_group_id{,_fallback,_force_vianix}) +fi diff --git a/sdata/subcmd-install/1.deps-selector.sh b/sdata/subcmd-install/1.deps-selector.sh index 6ab87afd6..1287e4c6f 100644 --- a/sdata/subcmd-install/1.deps-selector.sh +++ b/sdata/subcmd-install/1.deps-selector.sh @@ -41,42 +41,7 @@ function outdate_detect(){ echo "UPDATED" fi } -#################### -# Detect architecture -# Helpful link(s): -# http://stackoverflow.com/questions/45125516 -export MACHINE_ARCH=$(uname -m) -case $MACHINE_ARCH in - "x86_64") sleep 0;; - *) - printf "${STY_YELLOW}" - printf "===WARNING===\n" - printf "Detected machine architecture: ${MACHINE_ARCH}\n" - printf "This script only supports x86_64.\n" - printf "It is very likely to fail when installing dependencies on your machine.\n" - printf "\n" - printf "${STY_RST}" - pause - ;; -esac - -#################### -# Detect distro -# Helpful link(s): -# http://stackoverflow.com/questions/29581754 -# https://github.com/which-distro/os-release -OS_RELEASE_FILE_CUSTOM="${REPO_ROOT}/os-release" -if test -f "${OS_RELEASE_FILE_CUSTOM}"; then - printf "${STY_YELLOW}Warning: using custom os-release file \"${OS_RELEASE_FILE_CUSTOM}\".${STY_RST}\n" - OS_RELEASE_FILE="${OS_RELEASE_FILE_CUSTOM}" -elif test -f /etc/os-release; then - OS_RELEASE_FILE=/etc/os-release -else - printf "${STY_RED}/etc/os-release does not exist, aborting...${STY_RST}\n" ; exit 1 -fi -export OS_DISTRO_ID=$(awk -F'=' '/^ID=/ { gsub("\"","",$2); print tolower($2) }' ${OS_RELEASE_FILE} 2> /dev/null) -export OS_DISTRO_ID_LIKE=$(awk -F'=' '/^ID_LIKE=/ { gsub("\"","",$2); print tolower($2) }' ${OS_RELEASE_FILE} 2> /dev/null) - +##################################################################################### if [[ "$INSTALL_VIA_NIX" == "true" ]]; then @@ -91,103 +56,37 @@ if [[ "$INSTALL_VIA_NIX" == "true" ]]; then pause source ./sdata/dist-${TARGET_ID}/install-deps.sh -elif [[ "$OS_DISTRO_ID" =~ ^(arch|endeavouros)$ ]]; then +elif [[ "$OS_GROUP_ID" =~ ^(arch|gentoo|fedora)$ ]]; then - TARGET_ID=arch - printf "${STY_GREEN}" - printf "===INFO===\n" - printf "Detected distro ID: ${OS_DISTRO_ID}\n" - printf "./sdata/dist-${TARGET_ID}/install-deps.sh will be used.\n" - printf "\n" - printf "${STY_RST}" - pause - source ./sdata/dist-${TARGET_ID}/install-deps.sh - -elif [[ -f "./sdata/dist-${OS_DISTRO_ID}/install-deps.sh" ]]; then - - TARGET_ID=${OS_DISTRO_ID} - printf "${STY_PURPLE}" - printf "===NOTICE===\n" - printf "Detected distro ID: ${OS_DISTRO_ID}\n" - printf "./sdata/dist-${TARGET_ID}/install-deps.sh will be used.\n" - printf "This file is provided by the community.\n" - printf "It is not officially supported by github:end-4/dots-hyprland .\n" - test -f "./sdata/dist-${TARGET_ID}/README.md" && \ - printf "Read ${STY_INVERT} ./sdata/dist-${TARGET_ID}/README.md ${STY_RST}${STY_PURPLE} for more information.\n" - printf "${STY_BOLD}" - printf "If you find out any problems about it, PR is welcomed if you are able to address it. Or, create a discussion about it, but please do not submit issue, because the developers do not use this distro, therefore they cannot help.${STY_RST}\n" - printf "${STY_PURPLE}" - printf "Proceed only at your own risk.\n" - printf "\n" - printf "${STY_RST}" - pause - tmp_update_status="$(outdate_detect sdata/dist-arch sdata/dist-${TARGET_ID})" - if [[ "${tmp_update_status}" =~ ^(OUTDATED|EMPTY_TARGET|EMPTY_SOURCE|FORCE_OUTDATED|WIP)$ ]]; then - printf "${STY_RED}${STY_BOLD}===URGENT===${STY_RST}\n" - printf "${STY_RED}" - printf "The community provided ./sdata/dist-${TARGET_ID}/ is outdated (status: ${tmp_update_status}),\n" - printf "which means it probably does not reflect all latest changes of ./sdata/dist-arch/ .\n" - printf "\n" - printf "According to the actual changes, it may still works, but it can also work unexpectedly.\n" - printf "It's highly recommended to check the following links before continue:${STY_RST}\n" - printf "${STY_UNDERLINE}https://github.com/end-4/dots-hyprland/discussions/2140${STY_RST}\n" - printf "${STY_UNDERLINE}https://github.com/end-4/dots-hyprland/commits/main/sdata/dist-arch${STY_RST}\n" - printf "${STY_UNDERLINE}https://github.com/end-4/dots-hyprland/commits/main/sdata/dist-${TARGET_ID}${STY_RST}\n" - printf "\n" - printf "${STY_PURPLE}${STY_INVERT}PR on ./sdata/dist-${TARGET_ID}/ to properly reflect the latest changes of ./sdata/dist-arch is welcomed.${STY_RST}\n" - printf "\n" - if [ "$ask" = "false" ]; then - echo "Urgent problem encountered, aborting...";exit 1 - else - printf "${STY_RED}Still proceed?${STY_RST}\n" - read -p "[y/N]: " p - case "$p" in - [yY])sleep 0;; - *)echo "Aborting...";exit 1;; - esac + TARGET_ID=$OS_GROUP_ID + if ! [[ "${TARGET_ID}" = "arch" ]]; then + tmp_update_status="$(outdate_detect sdata/dist-arch sdata/dist-${TARGET_ID})" + if [[ "${tmp_update_status}" =~ ^(OUTDATED|EMPTY_TARGET|EMPTY_SOURCE|FORCE_OUTDATED|WIP)$ ]]; then + printf "${STY_RED}${STY_BOLD}===URGENT===${STY_RST}\n" + printf "${STY_RED}" + printf "The community provided ./sdata/dist-${TARGET_ID}/ is outdated (status: ${tmp_update_status}),\n" + printf "which means it probably does not reflect all latest changes of ./sdata/dist-arch/ .\n" + printf "\n" + printf "According to the actual changes, it may still works, but it can also work unexpectedly.\n" + printf "It's highly recommended to check the following links before continue:${STY_RST}\n" + printf "${STY_UNDERLINE}https://github.com/end-4/dots-hyprland/discussions/2140${STY_RST}\n" + printf "${STY_UNDERLINE}https://github.com/end-4/dots-hyprland/commits/main/sdata/dist-arch${STY_RST}\n" + printf "${STY_UNDERLINE}https://github.com/end-4/dots-hyprland/commits/main/sdata/dist-${TARGET_ID}${STY_RST}\n" + printf "\n" + printf "${STY_PURPLE}${STY_INVERT}PR on ./sdata/dist-${TARGET_ID}/ to properly reflect the latest changes of ./sdata/dist-arch is welcomed.${STY_RST}\n" + printf "\n" + if [ "$ask" = "false" ]; then + echo "Urgent problem encountered, aborting...";exit 1 + else + printf "${STY_RED}Still proceed?${STY_RST}\n" + read -p "[y/N]: " p + case "$p" in + [yY])sleep 0;; + *)echo "Aborting...";exit 1;; + esac + fi fi fi - source ./sdata/dist-${TARGET_ID}/install-deps.sh - -elif [[ "$OS_DISTRO_ID_LIKE" == "arch" || "$OS_DISTRO_ID" == "cachyos" ]]; then - - TARGET_ID=arch - printf "${STY_YELLOW}" - printf "===WARNING===\n" - printf "Detected distro ID: ${OS_DISTRO_ID}\n" - printf "Detected distro ID_LIKE: ${OS_DISTRO_ID_LIKE}\n" printf "./sdata/dist-${TARGET_ID}/install-deps.sh will be used.\n" - printf "Ideally, it should also work for your distro.\n" - printf "Still, there is a chance that it not works as expected or even fails.\n" - printf "Proceed only at your own risk.\n" - printf "\n" - printf "${STY_RST}" - pause source ./sdata/dist-${TARGET_ID}/install-deps.sh - -else - - TARGET_ID=fallback - printf "${STY_RED}${STY_BOLD}===URGENT===${STY_RST}\n" - printf "${STY_RED}" - printf "Detected distro ID: ${OS_DISTRO_ID}\n" - printf "Detected distro ID_LIKE: ${OS_DISTRO_ID_LIKE}\n" - printf "./sdata/dist-${OS_DISTRO_ID}/install-deps.sh not found.\n" - printf "./sdata/dist-${TARGET_ID}/install-deps.sh will be used.\n" - printf "1. It may disrupt your system and will likely fail without your manual intervention.\n" - printf "2. It is WIP and only contains small number of dependencies far from enough.\n" - printf "Proceed only at your own risk.\n" - printf "${STY_RST}" - if [ "$ask" = "false" ]; then - echo "Urgent problem encountered, aborting...";exit 1 - else - printf "${STY_RED}Still proceed?${STY_RST}\n" - read -p "[y/N]: " p - case "$p" in - [yY])sleep 0;; - *)echo "Aborting...";exit 1;; - esac - fi - source ./sdata/dist-${TARGET_ID}/install-deps.sh - fi diff --git a/sdata/subcmd-install/2.setups.sh b/sdata/subcmd-install/2.setups.sh index 464dba1cd..9ef30fbab 100644 --- a/sdata/subcmd-install/2.setups.sh +++ b/sdata/subcmd-install/2.setups.sh @@ -20,7 +20,7 @@ fi v sudo usermod -aG video,i2c,input "$(whoami)" if [[ ! -z $(systemctl --version) ]]; then - if [[ "$OS_DISTRO_ID" == "fedora" ]]; then + if [[ "$OS_GROUP_ID" == "fedora" ]]; then v bash -c "echo uinput | sudo tee /etc/modules-load.d/uinput.conf" v bash -c 'echo SUBSYSTEM==\"misc\", KERNEL==\"uinput\", MODE=\"0660\", GROUP=\"input\" | sudo tee /etc/udev/rules.d/99-uinput.rules' else @@ -28,7 +28,7 @@ if [[ ! -z $(systemctl --version) ]]; then fi # TODO: find a proper way for enable Nix installed ydotool. When running `systemctl --user enable ydotool, it errors "Failed to enable unit: Unit ydotool.service does not exist". if [[ ! "${INSTALL_VIA_NIX}" == true ]]; then - if [[ "$OS_DISTRO_ID" == "fedora" ]]; then + if [[ "$OS_GROUP_ID" == "fedora" ]]; then v prepare_systemd_user_service fi # When $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR are empty, it commonly means that the current user has been logged in with `su - user` or `ssh user@hostname`. In such case `systemctl --user enable ` is not usable. It should be `sudo systemctl --machine=$(whoami)@.host --user enable ` instead. @@ -55,7 +55,7 @@ else fi # _icons_, _konsole_, _hypr_, and _quickshell_ are are chowned to user since they're emerge in as root by default. -if [[ "$OS_DISTRO_ID" == "gentoo" ]]; then +if [[ "$OS_GROUP_ID" == "gentoo" ]]; then v sudo chown -R $(whoami):$(whoami) ~/.config/hypr/ v sudo chown -R $(whoami):$(whoami) ~/.config/quickshell/ fi diff --git a/sdata/subcmd-install/3.files-legacy.sh b/sdata/subcmd-install/3.files-legacy.sh index 6b950ccd1..1ff430edf 100644 --- a/sdata/subcmd-install/3.files-legacy.sh +++ b/sdata/subcmd-install/3.files-legacy.sh @@ -59,7 +59,7 @@ case $SKIP_HYPRLAND in true) sleep 0;; *) warning_rsync_delete; v rsync -av --delete "${arg_excludes[@]}" dots/.config/hypr/ "$XDG_CONFIG_HOME"/hypr/ - if [ "$OS_DISTRO_ID" = "fedora" ];then + if [ "$OS_GROUP_ID" = "fedora" ];then v rsync -av "${REPO_ROOT}/dots-extra/fedora/hypr/hyprland/execs.conf" "$XDG_CONFIG_HOME/hypr/hyprland/execs.conf" fi # When hypr/custom does not exist, we assume that it's the firstrun. diff --git a/setup b/setup index 342471210..65857d5de 100755 --- a/setup +++ b/setup @@ -5,6 +5,7 @@ REPO_ROOT="$(pwd)" source ./sdata/lib/environment-variables.sh source ./sdata/lib/functions.sh source ./sdata/lib/package-installers.sh +source ./sdata/lib/dist-determine.sh prevent_sudo_or_root set -e @@ -58,6 +59,11 @@ case $1 in *)printf "${STY_RED}Unknown subcommand \"$1\".${STY_RST}\n";showhelp_global;exit 1;; esac ##################################################################################### +for function in ${print_os_group_id_functions[@]}; do + $function +done +pause + if [[ -f "${SUBCMD_DIR}/options.sh" ]]; then source "${SUBCMD_DIR}/options.sh" fi From d001bc1269c1499b1e96e7be449f19ca825f99c4 Mon Sep 17 00:00:00 2001 From: "Celestial.y" Date: Mon, 10 Nov 2025 11:25:18 +0800 Subject: [PATCH 033/107] Add a TODO in 1-issue.yml --- .github/ISSUE_TEMPLATE/1-issue.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/1-issue.yml b/.github/ISSUE_TEMPLATE/1-issue.yml index 55a1d0f73..481611013 100644 --- a/.github/ISSUE_TEMPLATE/1-issue.yml +++ b/.github/ISSUE_TEMPLATE/1-issue.yml @@ -18,7 +18,7 @@ body: required: false # Not required cuz user may have failed to do so - label: I've ticked the checkboxes without reading their contents required: false # Obviously - + # TODO: Use GitHub Action to auto add folding tag if the log contains more than 15 lines, instead of tell user to "paste here" cuz many users actually does not know its meaning (It's also not convenient anyway). - type: textarea attributes: label: "Step 2. Quick diagnose info" From c812e9c8af2fd4c21d40e7a48848af356943bfd4 Mon Sep 17 00:00:00 2001 From: jwihardi Date: Mon, 10 Nov 2025 00:53:07 -0500 Subject: [PATCH 034/107] forgot backlash --- .../fonts-and-themes/material-symbols-variable-9999.ebuild | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdata/dist-gentoo/local-pkgs/fonts-and-themes/material-symbols-variable-9999.ebuild b/sdata/dist-gentoo/local-pkgs/fonts-and-themes/material-symbols-variable-9999.ebuild index 2ec5550b6..4bc410d0e 100644 --- a/sdata/dist-gentoo/local-pkgs/fonts-and-themes/material-symbols-variable-9999.ebuild +++ b/sdata/dist-gentoo/local-pkgs/fonts-and-themes/material-symbols-variable-9999.ebuild @@ -28,7 +28,7 @@ src_unpack() { mkdir -p "${S}" cp "${DISTDIR}/MaterialSymbolsOutlined-FILL-GRAD-opsz-wght.ttf" \ "${S}/MaterialSymbolsOutlined[FILL,GRAD,opsz,wght].ttf" - cp "${DISTDIR}/MaterialSymbolsRounded-FILL-GRAD-opsz-wght.ttf" + cp "${DISTDIR}/MaterialSymbolsRounded-FILL-GRAD-opsz-wght.ttf" \ "${S}/MaterialSymbolsRounded[FILL,GRAD,opsz,wght].ttf" cp "${DISTDIR}/MaterialSymbolsSharp-FILL-GRAD-opsz-wght.ttf" \ "${S}/MaterialSymbolsSharp[FILL,GRAD,opsz,wght].ttf" From 39ed0e472a372c8c6380fccec2baa8065dc534b1 Mon Sep 17 00:00:00 2001 From: dancincomrade Date: Mon, 10 Nov 2025 15:32:53 +0800 Subject: [PATCH 035/107] fix: remove deprecated hyprland-qtutils package as part of install script --- sdata/dist-arch/install-deps.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdata/dist-arch/install-deps.sh b/sdata/dist-arch/install-deps.sh index c799369aa..82c0f34d4 100644 --- a/sdata/dist-arch/install-deps.sh +++ b/sdata/dist-arch/install-deps.sh @@ -16,7 +16,7 @@ install-yay(){ # However, let's just keep it as references for other distros writing their `sdata/dist-/install-deps.sh`, if they need it. handle-deprecated-dependencies(){ printf "${STY_CYAN}[$0]: Removing deprecated dependencies:${STY_RST}\n" - for i in illogical-impulse-{microtex,pymyc-aur} {quickshell,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} hyprland-qtutils {quickshell,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 ./sdata/dist-arch/previous_dependencies.conf ./cache/old_deps_stripped.conf readarray -t old_deps_list < ./cache/old_deps_stripped.conf From 711fb48e372bbf3ec0d5b5c560fe7ca4f06e11f8 Mon Sep 17 00:00:00 2001 From: clsty Date: Mon, 10 Nov 2025 18:32:54 +0800 Subject: [PATCH 036/107] Improve handle deprecated deps logic (#2425) --- sdata/dist-arch/install-deps.sh | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/sdata/dist-arch/install-deps.sh b/sdata/dist-arch/install-deps.sh index 82c0f34d4..f9cd93df4 100644 --- a/sdata/dist-arch/install-deps.sh +++ b/sdata/dist-arch/install-deps.sh @@ -14,9 +14,11 @@ install-yay(){ # NOTE: `handle-deprecated-dependencies` was for the old days when we just switch from dependencies.conf to local PKGBUILDs. # However, let's just keep it as references for other distros writing their `sdata/dist-/install-deps.sh`, if they need it. -handle-deprecated-dependencies(){ +remove_deprecated_dependencies(){ printf "${STY_CYAN}[$0]: Removing deprecated dependencies:${STY_RST}\n" for i in illogical-impulse-{microtex,pymyc-aur} hyprland-qtutils {quickshell,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 +} +implicitize_old_dependencies(){ # Convert old dependencies to non explicit dependencies so that they can be orphaned if not in meta packages remove_bashcomments_emptylines ./sdata/dist-arch/previous_dependencies.conf ./cache/old_deps_stripped.conf readarray -t old_deps_list < ./cache/old_deps_stripped.conf @@ -37,6 +39,9 @@ if ! command -v pacman >/dev/null 2>&1; then exit 1 fi +showfun remove_deprecated_dependencies +v remove_deprecated_dependencies + # Issue #363 case $SKIP_SYSUPDATE in true) sleep 0;; @@ -51,8 +56,8 @@ if ! command -v yay >/dev/null 2>&1;then v install-yay fi -showfun handle-deprecated-dependencies -v handle-deprecated-dependencies +showfun implicitize_old_dependencies +v implicitize_old_dependencies # https://github.com/end-4/dots-hyprland/issues/581 # yay -Bi is kinda hit or miss, instead cd into the relevant directory and manually source and install deps From 0462ee5e56239779ad74554aa0a1566049036ec7 Mon Sep 17 00:00:00 2001 From: clsty Date: Mon, 10 Nov 2025 19:18:31 +0800 Subject: [PATCH 037/107] Fix versionlock position --- sdata/dist-fedora/install-deps.sh | 6 +++++- sdata/dist-fedora/install-setups.sh | 1 - 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/sdata/dist-fedora/install-deps.sh b/sdata/dist-fedora/install-deps.sh index 1106c55bb..cf16517c0 100644 --- a/sdata/dist-fedora/install-deps.sh +++ b/sdata/dist-fedora/install-deps.sh @@ -118,5 +118,9 @@ install_RPMS() { showfun install_RPMS v install_RPMS + # hyprland-qtutils depends on hyprland-qt-support -v sudo dnf install hyprland-qtutils -y \ No newline at end of file +v sudo dnf install hyprland-qtutils -y + +# Add back versionlock at the end +v sudo dnf versionlock add quickshell-git diff --git a/sdata/dist-fedora/install-setups.sh b/sdata/dist-fedora/install-setups.sh index 633bff3f7..6364ca3f5 100644 --- a/sdata/dist-fedora/install-setups.sh +++ b/sdata/dist-fedora/install-setups.sh @@ -17,4 +17,3 @@ v sudo systemctl enable bluetooth --now v gsettings set org.gnome.desktop.interface font-name 'Rubik 11' v gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' v kwriteconfig6 --file kdeglobals --group KDE --key widgetStyle Darkly -v sudo dnf versionlock add quickshell-git From b5ddc36d5e896e716c439ecc8a6ea5e6b2f05db0 Mon Sep 17 00:00:00 2001 From: clsty Date: Mon, 10 Nov 2025 19:45:36 +0800 Subject: [PATCH 038/107] Improve dist-determine.sh --- sdata/lib/dist-determine.sh | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/sdata/lib/dist-determine.sh b/sdata/lib/dist-determine.sh index 8a39e463d..aa76b5dcd 100644 --- a/sdata/lib/dist-determine.sh +++ b/sdata/lib/dist-determine.sh @@ -12,6 +12,7 @@ function print_os_group_id(){ function print_os_group_id_alike(){ printf "${STY_YELLOW}" printf "===WARNING===\n" + printf "Your OS_GROUP_ID has been determined by \"alike\" match.\n" printf "Ideally, it should also work for your distro.\n" printf "Still, there is a chance that it not works as expected or even fails.\n" printf "Proceed only at your own risk.\n" @@ -48,27 +49,16 @@ function print_os_group_id_force_vianix(){ printf "=============\n\n" printf "${STY_RST}" } -##################################################################################### - -#################### -# Detect architecture -# Helpful link(s): -# http://stackoverflow.com/questions/45125516 -export MACHINE_ARCH=$(uname -m) -case "${MACHINE_ARCH}" in - "x86_64") sleep 0;; - *) - printf "${STY_YELLOW}" - printf "===WARNING===\n" +function print_os_group_id_architecture(){ + printf "${STY_RED}" + printf "===CAUTION===\n" printf "Detected machine architecture: ${MACHINE_ARCH}\n" printf "This script only supports x86_64.\n" printf "It is very likely to fail when installing dependencies on your machine.\n" - printf "=============\n" - printf "\n" + printf "=============\n\n" printf "${STY_RST}" - pause - ;; -esac +} +##################################################################################### #################### # Detect distro @@ -114,3 +104,13 @@ else INSTALL_VIA_NIX=true print_os_group_id_functions=(print_os_group_id{,_fallback,_force_vianix}) fi + +#################### +# Detect architecture +# Helpful link(s): +# http://stackoverflow.com/questions/45125516 +export MACHINE_ARCH=$(uname -m) +case "${MACHINE_ARCH}" in + "x86_64") sleep 0;; + *) print_os_group_id_functions+=(print_os_group_id_architecture);; +esac From 3b212c454da2297a7b43dd0ecc12a9943ca5d2f7 Mon Sep 17 00:00:00 2001 From: clsty Date: Mon, 10 Nov 2025 20:30:07 +0800 Subject: [PATCH 039/107] Update setups.sh --- sdata/subcmd-install/2.setups.sh | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/sdata/subcmd-install/2.setups.sh b/sdata/subcmd-install/2.setups.sh index 31af954da..2e585832c 100644 --- a/sdata/subcmd-install/2.setups.sh +++ b/sdata/subcmd-install/2.setups.sh @@ -9,17 +9,24 @@ function prepare_systemd_user_service(){ x ln -s /usr/lib/systemd/system/ydotool.service "${XDG_CONFIG_HOME}/systemd/user/ydotool.service" fi } + +function setup_user_group(){ + if [[ -z $(getent group i2c) ]]; then + x sudo groupadd i2c + fi + x sudo usermod -aG video,i2c,input "$(whoami)" +} ##################################################################################### # These python packages are installed using uv into the venv (virtual environment). Once the folder of the venv gets deleted, they are all gone cleanly. So it's considered as setups, not dependencies. showfun install-python-packages v install-python-packages -if [[ -z $(getent group i2c) ]]; then - v sudo groupadd i2c -fi -v sudo usermod -aG video,i2c,input "$(whoami)" +showfun setup_user_group +v setup_user_group if [[ ! -z $(systemctl --version) ]]; then + # TODO: Why fedora does not add i2c-dev? + # TODO: Why fedora add uinput and udev rules? if [[ "$OS_GROUP_ID" == "fedora" ]]; then v bash -c "echo uinput | sudo tee /etc/modules-load.d/uinput.conf" v bash -c 'echo SUBSYSTEM==\"misc\", KERNEL==\"uinput\", MODE=\"0660\", GROUP=\"input\" | sudo tee /etc/udev/rules.d/99-uinput.rules' @@ -44,17 +51,16 @@ elif [[ ! -z $(openrc --version) ]]; then v sudo rc-update add modules boot v sudo rc-update add ydotool default v sudo rc-update add bluetooth default - - x sudo rc-service ydotool start - x sudo rc-service bluetooth start + + x sudo rc-service ydotool start + x sudo rc-service bluetooth start else - printf "${STY_RED}" - printf "====================INIT SYSTEM NOT FOUND====================\n" - printf "${STY_RST}" - pause + printf "${STY_RED}" + printf "====================INIT SYSTEM NOT FOUND====================\n" + printf "${STY_RST}" + pause fi -# _icons_, _konsole_, _hypr_, and _quickshell_ are are chowned to user since they're emerge in as root by default. if [[ "$OS_GROUP_ID" == "gentoo" ]]; then v sudo chown -R $(whoami):$(whoami) ~/.local/ fi From 3cc68b29da676868076343b162bfba1a0df42467 Mon Sep 17 00:00:00 2001 From: clsty Date: Mon, 10 Nov 2025 20:34:07 +0800 Subject: [PATCH 040/107] Improve format in install-deps --- sdata/dist-arch/install-deps.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sdata/dist-arch/install-deps.sh b/sdata/dist-arch/install-deps.sh index f9cd93df4..ebca31ad2 100644 --- a/sdata/dist-arch/install-deps.sh +++ b/sdata/dist-arch/install-deps.sh @@ -16,7 +16,11 @@ install-yay(){ # However, let's just keep it as references for other distros writing their `sdata/dist-/install-deps.sh`, if they need it. remove_deprecated_dependencies(){ printf "${STY_CYAN}[$0]: Removing deprecated dependencies:${STY_RST}\n" - for i in illogical-impulse-{microtex,pymyc-aur} hyprland-qtutils {quickshell,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 + local list=() + list+=(illogical-impulse-{microtex,pymyc-aur}) + list+=(hyprland-qtutils) + list+=({quickshell,hyprutils,hyprpicker,hyprlang,hypridle,hyprland-qt-support,hyprland-qtutils,hyprlock,xdg-desktop-portal-hyprland,hyprcursor,hyprwayland-scanner,hyprland}-git) + for i in ${list[@]};do try sudo pacman --noconfirm -Rdd $i;done } implicitize_old_dependencies(){ # Convert old dependencies to non explicit dependencies so that they can be orphaned if not in meta packages From 1cfeff8b10c998439f9ff33047ee705341a2f4d2 Mon Sep 17 00:00:00 2001 From: clsty Date: Mon, 10 Nov 2025 21:14:23 +0800 Subject: [PATCH 041/107] Improve 3.files-legacy.sh --- sdata/subcmd-install/3.files-legacy.sh | 103 +++++++++++-------------- 1 file changed, 45 insertions(+), 58 deletions(-) diff --git a/sdata/subcmd-install/3.files-legacy.sh b/sdata/subcmd-install/3.files-legacy.sh index 1ff430edf..32e0c4261 100644 --- a/sdata/subcmd-install/3.files-legacy.sh +++ b/sdata/subcmd-install/3.files-legacy.sh @@ -3,8 +3,44 @@ # shellcheck shell=bash +function copy_file_s_t(){ + local s=$1 + local t=$2 + if [ -f $t ];then + echo -e "${STY_YELLOW}[$0]: \"$t\" already exists.${STY_RST}" + if $firstrun;then + echo -e "${STY_BLUE}[$0]: It seems to be the firstrun.${STY_RST}" + v mv $t $t.old + v cp -f $s $t + else + echo -e "${STY_BLUE}[$0]: It seems not a firstrun.${STY_RST}" + v cp -f $s $t.new + fi + else + echo -e "${STY_GREEN}[$0]: \"$t\" does not exist yet.${STY_RST}" + v cp $s $t + fi +} +function copy_dir_s_t(){ + local s=$1 + local t=$2 + if [ -d $t ];then + echo -e "${STY_BLUE}[$0]: \"$t\" already exists, will not do anything.${STY_RST}" + else + echo -e "${STY_YELLOW}[$0]: \"$t\" does not exist yet.${STY_RST}" + v rsync -av --delete $s/ $t/ + fi +} + +##################################################################################### # In case some dirs does not exists v mkdir -p $XDG_BIN_HOME $XDG_CACHE_HOME $XDG_CONFIG_HOME $XDG_DATA_HOME/icons +firstrun_file="${XDG_CACHE_HOME}/.ii-qs-installed" +if test -f "${firstrun_file}"; then + firstrun=false +else + firstrun=true +fi # `--delete' for rsync to make sure that # original dotfiles and new ones in the SAME DIRECTORY @@ -50,69 +86,18 @@ case $SKIP_FONTCONFIG in esac # For Hyprland -declare -a arg_excludes=() -arg_excludes+=(--exclude '/custom') -arg_excludes+=(--exclude '/hyprlock.conf') -arg_excludes+=(--exclude '/hypridle.conf') -arg_excludes+=(--exclude '/hyprland.conf') case $SKIP_HYPRLAND in true) sleep 0;; *) - warning_rsync_delete; v rsync -av --delete "${arg_excludes[@]}" dots/.config/hypr/ "$XDG_CONFIG_HOME"/hypr/ + warning_rsync_delete; v rsync -av --delete dots/.config/hypr/hyprland/ "$XDG_CONFIG_HOME"/hypr/hyprland/ + for i in hypr{land,idle,lock}.conf {monitors,workspaces}.conf ; do + copy_file_s_t "dots/.config/hypr/$i" "${XDG_CONFIG_HOME}/hypr/$i" + done if [ "$OS_GROUP_ID" = "fedora" ];then - v rsync -av "${REPO_ROOT}/dots-extra/fedora/hypr/hyprland/execs.conf" "$XDG_CONFIG_HOME/hypr/hyprland/execs.conf" - fi - # When hypr/custom does not exist, we assume that it's the firstrun. - if [ -d "$XDG_CONFIG_HOME/hypr/custom" ];then ii_firstrun=false;else ii_firstrun=true;fi - t="$XDG_CONFIG_HOME/hypr/hyprland.conf" - if [ -f $t ];then - echo -e "${STY_BLUE}[$0]: \"$t\" already exists.${STY_RST}" - if $ii_firstrun;then - echo -e "${STY_BLUE}[$0]: It seems to be the firstrun.${STY_RST}" - v mv $t $t.old - v cp -f dots/.config/hypr/hyprland.conf $t - existed_hypr_conf_firstrun=y - else - echo -e "${STY_BLUE}[$0]: It seems not a firstrun.${STY_RST}" - v cp -f dots/.config/hypr/hyprland.conf $t.new - existed_hypr_conf=y - fi - else - echo -e "${STY_YELLOW}[$0]: \"$t\" does not exist yet.${STY_RST}" - v cp dots/.config/hypr/hyprland.conf $t - fi - t="$XDG_CONFIG_HOME/hypr/hypridle.conf" - if [[ "$INSTALL_VIA_NIX" = true ]]; then - s=dots-extra/vianix/hypridle.conf - else - s=dots/.config/hypr/hypridle.conf - fi - if [ -f $t ];then - echo -e "${STY_BLUE}[$0]: \"$t\" already exists.${STY_RST}" - v cp -f $s $t.new - existed_hypridle_conf=y - else - echo -e "${STY_YELLOW}[$0]: \"$t\" does not exist yet.${STY_RST}" - v cp $s $t - existed_hypridle_conf=n - fi - t="$XDG_CONFIG_HOME/hypr/hyprlock.conf" - if [ -f $t ];then - echo -e "${STY_BLUE}[$0]: \"$t\" already exists.${STY_RST}" - v cp -f dots/.config/hypr/hyprlock.conf $t.new - existed_hyprlock_conf=y - else - echo -e "${STY_YELLOW}[$0]: \"$t\" does not exist yet.${STY_RST}" - v cp dots/.config/hypr/hyprlock.conf $t - existed_hyprlock_conf=n - fi - t="$XDG_CONFIG_HOME/hypr/custom" - if [ -d $t ];then - echo -e "${STY_BLUE}[$0]: \"$t\" already exists, will not do anything.${STY_RST}" - else - echo -e "${STY_YELLOW}[$0]: \"$t\" does not exist yet.${STY_RST}" - v rsync -av --delete dots/.config/hypr/custom/ $t/ + v bash -c "printf \"# For fedora to setup polkit\nexec-once = /usr/libexec/kf6/polkit-kde-authentication-agent-1\n\" >> ${XDG_CONFIG_HOME}/hypr/hyprland/execs.conf" fi + + copy_dir_s_t "dots/.config/hypr/custom" "${XDG_CONFIG_HOME}/hypr/custom" ;; esac declare -a arg_excludes=() @@ -121,3 +106,5 @@ declare -a arg_excludes=() # since the files here come from different places, not only about one program. # v rsync -av "dots/.local/bin/" "$XDG_BIN_HOME" # No longer needed since scripts are no longer in ~/.local/bin v cp -f "dots/.local/share/icons/illogical-impulse.svg" "${XDG_DATA_HOME}"/icons/illogical-impulse.svg + +v touch "${firstrun_file}" From f98c42225448d0fc79017e2c2e7a8a9c83b332db Mon Sep 17 00:00:00 2001 From: clsty Date: Mon, 10 Nov 2025 21:20:48 +0800 Subject: [PATCH 042/107] Comment hyprctl reload (#2427 #2200) --- dots/.config/hypr/hyprland/execs.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dots/.config/hypr/hyprland/execs.conf b/dots/.config/hypr/hyprland/execs.conf index e4f33f6aa..5e0e2cfa3 100644 --- a/dots/.config/hypr/hyprland/execs.conf +++ b/dots/.config/hypr/hyprland/execs.conf @@ -24,4 +24,5 @@ exec-once = wl-paste --type image --watch bash -c 'cliphist store && qs -c $qsCo exec-once = hyprctl setcursor Bibata-Modern-Classic 24 # Fix dock pinned apps not launching properly (https://github.com/end-4/dots-hyprland/issues/2200) -exec-once = sleep 3.5 && hyprctl reload && sleep 0.5 && touch ~/.config/quickshell/ii/shell.qml +# This causes https://github.com/end-4/dots-hyprland/issues/2427 +# exec-once = sleep 3.5 && hyprctl reload && sleep 0.5 && touch ~/.config/quickshell/ii/shell.qml From f1479626f3c2f2632504227524ccd46ba21e1904 Mon Sep 17 00:00:00 2001 From: John E Date: Mon, 10 Nov 2025 13:11:13 -0500 Subject: [PATCH 043/107] Propose fix typo and ignore emacs backup files Signed-off-by: John E --- .gitignore | 2 ++ sdata/uv/README.md | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index cef4d7aab..b59d26bf8 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ __pycache__/ dots/.config/quickshell/ii/.qmlls.ini .update-lock /os-release +#emacs backup +*~ diff --git a/sdata/uv/README.md b/sdata/uv/README.md index 700f25772..8172c7c9b 100644 --- a/sdata/uv/README.md +++ b/sdata/uv/README.md @@ -13,7 +13,7 @@ This is important because there has been so many complaints about the failure in - For reference see [uv doc](https://docs.astral.sh/uv/pip/dependencies/#using-requirementsin). - `requirements.txt` is included in Git. It's for locking package versions to enhance stability and reproducibility.[^1] -[^1]: In fact, including package version lock file in Git is also the most common way for similar situations, for example the `package-lock.json` of Node.js projects (see also [this stackoverflow question](https://stackoverflow.com/questions/48524417/should-the-package-lock-json-file-be-added-to-gitignore)). Although there are some situations when it's not suitable to include the lock file, for example [the poetry document](https://python-poetry.org/docs/basic-usage/#committing-your-poetrylock-file-to-version-control) recommend application developers to include package version lock file in Git, but library developers should consider more, such as not inluding the lock file or including it but refreshing regularly. +[^1]: In fact, including package version lock file in Git is also the most common way for similar situations, for example the `package-lock.json` of Node.js projects (see also [this stackoverflow question](https://stackoverflow.com/questions/48524417/should-the-package-lock-json-file-be-added-to-gitignore)). Although there are some situations when it's not suitable to include the lock file, for example [the poetry document](https://python-poetry.org/docs/basic-usage/#committing-your-poetrylock-file-to-version-control) recommend application developers to include package version lock file in Git, but library developers should consider more, such as not including the lock file or including it but refreshing regularly. ## How will the python packages get installed? From 58980959aa4e3604b992d90eaa25b218f7a1e288 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Mon, 10 Nov 2025 20:45:38 +0100 Subject: [PATCH 044/107] init waffles --- .../ii/assets/icons/fluent/speaker-0.svg | 12 +++ .../ii/assets/icons/fluent/speaker-1.svg | 12 +++ .../ii/assets/icons/fluent/speaker.svg | 6 ++ .../quickshell/ii/modules/common/Config.qml | 8 ++ .../background/widgets/clock/ClockWidget.qml | 2 +- .../quickshell/ii/modules/ii/bar/Bar.qml | 18 ++-- .../ii/modules/ii/bar/ClockWidget.qml | 2 +- .../modules/ii/overlay/OverlayBackground.qml | 2 +- .../ii/modules/waffle/bar/BarButton.qml | 78 ++++++++++++++++ .../ii/modules/waffle/bar/SystemButton.qml | 25 ++++++ .../ii/modules/waffle/bar/TimeButton.qml | 30 +++++++ .../ii/modules/waffle/bar/WaffleBar.qml | 89 +++++++++++++++++++ .../modules/waffle/bar/WaffleBarContent.qml | 46 ++++++++++ .../ii/modules/waffle/looks/FluentIcon.qml | 17 ++++ .../ii/modules/waffle/looks/Looks.qml | 77 ++++++++++++++++ .../ii/modules/waffle/looks/WText.qml | 15 ++++ .../quickshell/ii/services/DateTime.qml | 3 +- dots/.config/quickshell/ii/shell.qml | 35 ++++++++ 18 files changed, 463 insertions(+), 14 deletions(-) create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/speaker-0.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/speaker-1.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/speaker.svg create mode 100644 dots/.config/quickshell/ii/modules/waffle/bar/BarButton.qml create mode 100644 dots/.config/quickshell/ii/modules/waffle/bar/SystemButton.qml create mode 100644 dots/.config/quickshell/ii/modules/waffle/bar/TimeButton.qml create mode 100644 dots/.config/quickshell/ii/modules/waffle/bar/WaffleBar.qml create mode 100644 dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml create mode 100644 dots/.config/quickshell/ii/modules/waffle/looks/FluentIcon.qml create mode 100644 dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml create mode 100644 dots/.config/quickshell/ii/modules/waffle/looks/WText.qml diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/speaker-0.svg b/dots/.config/quickshell/ii/assets/icons/fluent/speaker-0.svg new file mode 100644 index 000000000..0ff116afd --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/speaker-0.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_speaker_0_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/speaker-1.svg b/dots/.config/quickshell/ii/assets/icons/fluent/speaker-1.svg new file mode 100644 index 000000000..eff9b6d0c --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/speaker-1.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_speaker_1_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/speaker.svg b/dots/.config/quickshell/ii/assets/icons/fluent/speaker.svg new file mode 100644 index 000000000..477b04792 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/speaker.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/modules/common/Config.qml b/dots/.config/quickshell/ii/modules/common/Config.qml index 1b13540ef..ffc67805a 100644 --- a/dots/.config/quickshell/ii/modules/common/Config.qml +++ b/dots/.config/quickshell/ii/modules/common/Config.qml @@ -80,6 +80,7 @@ Singleton { property list enabledPanels: [ "iiBar", "iiBackground", "iiCheatsheet", "iiDock", "iiLock", "iiMediaControls", "iiNotificationPopup", "iiOnScreenDisplay", "iiOnScreenKeyboard", "iiOverlay", "iiOverview", "iiPolkit", "iiRegionSelector", "iiReloadPopup", "iiScreenCorners", "iiSessionScreen", "iiSidebarLeft", "iiSidebarRight", "iiVerticalBar", "iiWallpaperSelector" ] + property string panelFamily: "ii" // "ii", "w" property JsonObject policies: JsonObject { property int ai: 1 // 0: No | 1: Yes | 2: Local @@ -521,6 +522,7 @@ Singleton { // https://doc.qt.io/qt-6/qtime.html#toString property string format: "hh:mm" property string shortDateFormat: "dd/MM" + property string dateWithYearFormat: "dd/MM/yyyy" property string dateFormat: "ddd, dd/MM" property JsonObject pomodoro: JsonObject { property int breakTime: 300 @@ -555,6 +557,12 @@ Singleton { property list linkKeywords: ["hentai", "porn", "sukebei", "hitomi.la", "rule34", "gelbooru", "fanbox", "dlsite"] } } + + property JsonObject waffles: JsonObject { + property JsonObject bar: JsonObject { + property bool bottom: true + } + } } } } diff --git a/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/ClockWidget.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/ClockWidget.qml index cf8c739e0..c5803b6e2 100644 --- a/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/ClockWidget.qml +++ b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/ClockWidget.qml @@ -70,7 +70,7 @@ AbstractBackgroundWidget { } ClockText { Layout.topMargin: -5 - text: DateTime.date + text: DateTime.longDate } StyledText { // Somehow gets fucked up if made a ClockText??? diff --git a/dots/.config/quickshell/ii/modules/ii/bar/Bar.qml b/dots/.config/quickshell/ii/modules/ii/bar/Bar.qml index 74f8b5f1b..71a64d76d 100644 --- a/dots/.config/quickshell/ii/modules/ii/bar/Bar.qml +++ b/dots/.config/quickshell/ii/modules/ii/bar/Bar.qml @@ -14,12 +14,14 @@ Scope { Variants { // For each monitor - model: { - const screens = Quickshell.screens; - const list = Config.options.bar.screenList; - if (!list || list.length === 0) - return screens; - return screens.filter(screen => list.includes(screen.name)); + model: ScriptModel { + values: { + const screens = Quickshell.screens; + const list = Config.options.bar.screenList; + if (!list || list.length === 0) + return screens; + return screens.filter(screen => list.includes(screen.name)); + } } LazyLoader { id: barLoader @@ -29,10 +31,6 @@ Scope { id: barRoot screen: barLoader.modelData - property var brightnessMonitor: Brightness.getMonitorForScreen(barLoader.modelData) - property real useShortenedForm: (Appearance.sizes.barHellaShortenScreenWidthThreshold >= screen.width) ? 2 : (Appearance.sizes.barShortenScreenWidthThreshold >= screen.width) ? 1 : 0 - readonly property int centerSideModuleWidth: (useShortenedForm == 2) ? Appearance.sizes.barCenterSideModuleWidthHellaShortened : (useShortenedForm == 1) ? Appearance.sizes.barCenterSideModuleWidthShortened : Appearance.sizes.barCenterSideModuleWidth - Timer { id: showBarTimer interval: (Config?.options.bar.autoHide.showWhenPressingSuper.delay ?? 100) diff --git a/dots/.config/quickshell/ii/modules/ii/bar/ClockWidget.qml b/dots/.config/quickshell/ii/modules/ii/bar/ClockWidget.qml index 895ad9be0..958695a86 100644 --- a/dots/.config/quickshell/ii/modules/ii/bar/ClockWidget.qml +++ b/dots/.config/quickshell/ii/modules/ii/bar/ClockWidget.qml @@ -33,7 +33,7 @@ Item { visible: root.showDate font.pixelSize: Appearance.font.pixelSize.small color: Appearance.colors.colOnLayer1 - text: DateTime.date + text: DateTime.longDate } } diff --git a/dots/.config/quickshell/ii/modules/ii/overlay/OverlayBackground.qml b/dots/.config/quickshell/ii/modules/ii/overlay/OverlayBackground.qml index 205307cab..d91e4cbba 100644 --- a/dots/.config/quickshell/ii/modules/ii/overlay/OverlayBackground.qml +++ b/dots/.config/quickshell/ii/modules/ii/overlay/OverlayBackground.qml @@ -4,5 +4,5 @@ import qs.modules.common Rectangle { id: contentItem anchors.fill: parent - color: Appearance.m3colors.m3surfaceContainer + color: Appearance.colors.colSurfaceContainer } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/BarButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/BarButton.qml new file mode 100644 index 000000000..1ea789fcb --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/bar/BarButton.qml @@ -0,0 +1,78 @@ +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import qs.modules.common +import qs.modules.common.functions +import qs.modules.waffle.looks + +Button { + id: root + + Layout.fillHeight: true + topInset: 4 + bottomInset: 4 + + property color borderColor: ColorUtils.transparentize(Looks.colors.bg1Border, (root.hovered && !root.down) ? Looks.fluentContentTransparency : 1) + Behavior on borderColor { + animation: Looks.transition.color.createObject(this) + } + onBorderColorChanged: { + borderCanvas.requestPaint(); + } + + background: Rectangle { + id: background + color: { + if (root.down) { + return Looks.colors.bg1Active + } else if (root.hovered) { + return Looks.colors.bg1Hover + } else { + return ColorUtils.transparentize(Looks.colors.bg1) + } + } + radius: Looks.radius.medium + Behavior on color { + animation: Looks.transition.color.createObject(this) + } + + // Top 1px border with color + Canvas { + id: borderCanvas + anchors.fill: parent + onPaint: { + var ctx = getContext("2d"); + ctx.clearRect(0, 0, width, height); + + var borderColor = root.borderColor; + + var r = background.radius; + var fadeLength = Math.max(1, r); + var fadeLengthPercent = fadeLength / width; + + // Compute normalized stops + var leftFadeStop = fadeLengthPercent; + var rightFadeStop = 1 - fadeLengthPercent; + + var grad = ctx.createLinearGradient(0, 0, width, 0); + grad.addColorStop(0, Qt.rgba(borderColor.r, borderColor.g, borderColor.b, 0)); + grad.addColorStop(leftFadeStop, borderColor); + grad.addColorStop(rightFadeStop, borderColor); + grad.addColorStop(1, Qt.rgba(borderColor.r, borderColor.g, borderColor.b, 0)); + + ctx.strokeStyle = grad; + ctx.lineWidth = 1; + + ctx.beginPath(); + ctx.moveTo(r, 0.5); + ctx.lineTo(width - r, 0.5); + // Top-right curve + ctx.arcTo(width, 0.5, width, r + 0.5, r); + // Top-left curve + ctx.moveTo(width - r, 0.5); + ctx.arcTo(0, 0.5, 0, r + 0.5, r); + ctx.stroke(); + } + } + } +} diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/SystemButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/SystemButton.qml new file mode 100644 index 000000000..107bb00f6 --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/bar/SystemButton.qml @@ -0,0 +1,25 @@ +import QtQuick +import QtQuick.Layouts +import qs.services +import qs.modules.common +import qs.modules.waffle.looks + +BarButton { + id: root + + // padding: 12 + + contentItem: Item { + anchors.centerIn: root.background + implicitHeight: column.implicitHeight + implicitWidth: column.implicitWidth + Row { + id: column + anchors.centerIn: parent + + FluentIcon { + icon: "speaker" // System icon + } + } + } +} diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/TimeButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/TimeButton.qml new file mode 100644 index 000000000..53177da12 --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/bar/TimeButton.qml @@ -0,0 +1,30 @@ +import QtQuick +import QtQuick.Layouts +import qs.services +import qs.modules.common +import qs.modules.waffle.looks + +BarButton { + id: root + + rightInset: 12 // For now this is the rightmost button. Desktop peek is useless. (for now) + padding: 12 + + contentItem: Item { + anchors.centerIn: root.background + implicitHeight: column.implicitHeight + implicitWidth: column.implicitWidth + Column { + id: column + anchors.centerIn: parent + WText { + anchors.right: parent.right + text: DateTime.time + } + WText { + anchors.right: parent.right + text: DateTime.date + } + } + } +} diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBar.qml b/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBar.qml new file mode 100644 index 000000000..241b5e66b --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBar.qml @@ -0,0 +1,89 @@ +import QtQuick +import Quickshell +import Quickshell.Io +import Quickshell.Wayland +import Quickshell.Hyprland +import qs +import qs.services +import qs.modules.common +import qs.modules.common.widgets + +Scope { + id: bar + property bool showBarBackground: Config.options.bar.showBackground + + LazyLoader { + id: barLoader + active: GlobalStates.barOpen && !GlobalStates.screenLocked + component: Variants { + model: Quickshell.screens + delegate: PanelWindow { // Bar window + id: barRoot + required property var modelData + screen: modelData + exclusionMode: ExclusionMode.Ignore + exclusiveZone: implicitHeight + WlrLayershell.namespace: "quickshell:wbar" + + anchors { + left: true + right: true + bottom: Config.options.waffles.bar.bottom + top: !Config.options.waffles.bar.bottom + } + + color: "transparent" + implicitHeight: content.implicitHeight + implicitWidth: content.implicitWidth + + WaffleBarContent { + id: content + anchors.fill: parent + } + } + } + } + + IpcHandler { + target: "bar" + + function toggle(): void { + GlobalStates.barOpen = !GlobalStates.barOpen + } + + function close(): void { + GlobalStates.barOpen = false + } + + function open(): void { + GlobalStates.barOpen = true + } + } + + GlobalShortcut { + name: "barToggle" + description: "Toggles bar on press" + + onPressed: { + GlobalStates.barOpen = !GlobalStates.barOpen; + } + } + + GlobalShortcut { + name: "barOpen" + description: "Opens bar on press" + + onPressed: { + GlobalStates.barOpen = true; + } + } + + GlobalShortcut { + name: "barClose" + description: "Closes bar on press" + + onPressed: { + GlobalStates.barOpen = false; + } + } +} diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml b/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml new file mode 100644 index 000000000..a2119ddde --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml @@ -0,0 +1,46 @@ +import QtQuick +import QtQuick.Layouts +import qs.modules.common +import qs.modules.waffle.looks + +Rectangle { + id: root + + color: Looks.colors.bg0 + implicitHeight: 48 + + Rectangle { + id: border + anchors { + left: parent.left + right: parent.right + top: Config.options.waffles.bar.bottom ? parent.top : undefined + bottom: Config.options.waffles.bar.bottom ? undefined : parent.bottom + } + color: Looks.colors.bg0Border + implicitHeight: 1 + } + + BarGroupRow { + id: bloatRow + anchors.left: parent.left + } + + BarGroupRow { + id: appsRow + anchors.horizontalCenter: parent.horizontalCenter + } + + BarGroupRow { + id: systemRow + anchors.right: parent.right + SystemButton {} + TimeButton {} + } + + component BarGroupRow: RowLayout { + anchors.top: parent.top + anchors.bottom: parent.bottom + spacing: 0 + } +} diff --git a/dots/.config/quickshell/ii/modules/waffle/looks/FluentIcon.qml b/dots/.config/quickshell/ii/modules/waffle/looks/FluentIcon.qml new file mode 100644 index 000000000..892214cd7 --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/looks/FluentIcon.qml @@ -0,0 +1,17 @@ +import QtQuick +import org.kde.kirigami as Kirigami +import qs.modules.common +import qs.modules.waffle.looks + +Kirigami.Icon { + id: root + required property string icon + property int implicitSize: 18 // Should be 16, but it appears the icons have some padding + implicitWidth: implicitSize + implicitHeight: implicitSize + + roundToIconSize: false + color: Looks.colors.fg + isMask: true + source: `${Looks.iconsPath}/${root.icon}.svg` +} diff --git a/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml b/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml new file mode 100644 index 000000000..3b451935f --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml @@ -0,0 +1,77 @@ +pragma ComponentBehavior: Bound +pragma Singleton + +import QtQuick +import Quickshell +import qs.modules.common +import qs.modules.common.functions + +Singleton { + id: root + property QtObject colors + property QtObject radius + property QtObject font + property QtObject transition + property string iconsPath: `${Directories.assetsPath}/icons/fluent` + + property real fluentBackgroundTransparency: 0.17 + property real fluentContentTransparency: 0.3 + colors: QtObject { + id: colors + property color bg0: "#1C1C1C" + property color bg0Border: "#404040" + property color bg1: "#2E2E2E" + property color bg1Hover: "#292929" + property color bg1Active: "#252525" + property color bg1Border: "#333333" + property color fg: "#FFFFFF" + property color brand: Appearance.m3colors.m3primary + } + + radius: QtObject { + id: radius + property int none: 0 + property int small: 2 + property int medium: 4 + property int large: 8 + property int xLarge: 12 + } + + font: QtObject { + id: font + property QtObject family: QtObject { + property string ui: "Noto Sans" + } + property QtObject weight: QtObject { + property int regular: Font.Normal + property int strong: Font.DemiBold + property int stronger: Font.Bold + } + property QtObject variableAxes: QtObject { + + } + property QtObject pixelSize: QtObject { + property int small: 10 + property int normal: 11 + } + } + + transition: QtObject { + id: transition + property QtObject easing: QtObject { + property QtObject bezierCurve: QtObject { + readonly property list easeInOut: [0.42,0.00,0.58,1.00] + readonly property list easeIn: [0,1,1,1] + readonly property list easeOut: [1,0,1,1] + } + } + + property Component color: Component { + ColorAnimation { + duration: 80 + easing.type: Easing.BezierSpline + easing.bezierCurve: transition.easing.bezierCurve.easeInOut + } + } + } +} diff --git a/dots/.config/quickshell/ii/modules/waffle/looks/WText.qml b/dots/.config/quickshell/ii/modules/waffle/looks/WText.qml new file mode 100644 index 000000000..240fd63be --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/looks/WText.qml @@ -0,0 +1,15 @@ +import QtQuick + +Text { + id: root + + renderType: Text.NativeRendering + verticalAlignment: Text.AlignVCenter + color: Looks.colors.fg + + font { + family: Looks.font.family.ui + pixelSize: Looks.font.pixelSize.normal + weight: Looks.font.weight.regular + } +} diff --git a/dots/.config/quickshell/ii/services/DateTime.qml b/dots/.config/quickshell/ii/services/DateTime.qml index 62d296dbc..514da212b 100644 --- a/dots/.config/quickshell/ii/services/DateTime.qml +++ b/dots/.config/quickshell/ii/services/DateTime.qml @@ -20,7 +20,8 @@ Singleton { } property string time: Qt.locale().toString(clock.date, Config.options?.time.format ?? "hh:mm") property string shortDate: Qt.locale().toString(clock.date, Config.options?.time.shortDateFormat ?? "dd/MM") - property string date: Qt.locale().toString(clock.date, Config.options?.time.dateFormat ?? "dddd, dd/MM") + property string date: Qt.locale().toString(clock.date, Config.options?.time.dateWithYearFormat ?? "dd/MM/yyyy") + property string longDate: Qt.locale().toString(clock.date, Config.options?.time.dateFormat ?? "dddd, dd/MM") property string collapsedCalendarFormat: Qt.locale().toString(clock.date, "dd MMMM yyyy") property string uptime: "0h, 0m" diff --git a/dots/.config/quickshell/ii/shell.qml b/dots/.config/quickshell/ii/shell.qml index ee2217bf7..a23c84cca 100644 --- a/dots/.config/quickshell/ii/shell.qml +++ b/dots/.config/quickshell/ii/shell.qml @@ -28,12 +28,18 @@ import qs.modules.ii.overlay import qs.modules.ii.verticalBar import qs.modules.ii.wallpaperSelector +import qs.modules.waffle.bar + import QtQuick import QtQuick.Window import Quickshell +import Quickshell.Io +import Quickshell.Hyprland import qs.services ShellRoot { + id: root + // Force initialization of some singletons Component.onCompleted: { MaterialThemeLoader.reapplyTheme() @@ -67,11 +73,40 @@ ShellRoot { PanelLoader { identifier: "iiSidebarRight"; component: SidebarRight {} } PanelLoader { identifier: "iiVerticalBar"; extraCondition: Config.options.bar.vertical; component: VerticalBar {} } PanelLoader { identifier: "iiWallpaperSelector"; component: WallpaperSelector {} } + PanelLoader { identifier: "wBar"; component: WaffleBar {} } component PanelLoader: LazyLoader { required property string identifier property bool extraCondition: true active: Config.ready && Config.options.enabledPanels.includes(identifier) && extraCondition } + + // Panel families + property list families: ["ii", "waffle"] + property var panelFamilies: ({ + "ii": ["iiBar", "iiBackground", "iiCheatsheet", "iiDock", "iiLock", "iiMediaControls", "iiNotificationPopup", "iiOnScreenDisplay", "iiOnScreenKeyboard", "iiOverlay", "iiOverview", "iiPolkit", "iiRegionSelector", "iiReloadPopup", "iiScreenCorners", "iiSessionScreen", "iiSidebarLeft", "iiSidebarRight", "iiVerticalBar", "iiWallpaperSelector"], + "waffle": ["wBar", "iiBackground", "iiCheatsheet", "iiDock", "iiLock", "iiMediaControls", "iiNotificationPopup", "iiOnScreenDisplay", "iiOnScreenKeyboard", "iiOverlay", "iiOverview", "iiPolkit", "iiRegionSelector", "iiReloadPopup", "iiScreenCorners", "iiSessionScreen", "iiSidebarLeft", "iiSidebarRight", "iiWallpaperSelector"], + }) + function cyclePanelFamily() { + const currentIndex = families.indexOf(Config.options.panelFamily) + const nextIndex = (currentIndex + 1) % families.length + Config.options.panelFamily = families[nextIndex] + Config.options.enabledPanels = panelFamilies[Config.options.panelFamily] + } + + IpcHandler { + target: "panelFamily" + + function cycle(): void { + root.cyclePanelFamily() + } + } + + GlobalShortcut { + name: "panelFamilyCycle" + description: "Cycles panel family" + + onPressed: root.cyclePanelFamily() + } } From 42919c59ec616012c7a5d755d7ee05abfa44daab Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Mon, 10 Nov 2025 21:36:08 +0100 Subject: [PATCH 045/107] wbar: add volume and battery icons --- .../ii/assets/icons/fluent/battery-1.svg | 12 +++++++ .../ii/assets/icons/fluent/battery-2.svg | 12 +++++++ .../ii/assets/icons/fluent/battery-3.svg | 12 +++++++ .../ii/assets/icons/fluent/battery-4.svg | 12 +++++++ .../ii/assets/icons/fluent/battery-5.svg | 12 +++++++ .../ii/assets/icons/fluent/battery-7.svg | 12 +++++++ .../ii/assets/icons/fluent/battery-8.svg | 12 +++++++ .../ii/assets/icons/fluent/battery-9.svg | 12 +++++++ .../ii/assets/icons/fluent/battery-charge.svg | 12 +++++++ .../ii/assets/icons/fluent/battery-full.svg | 12 +++++++ .../ii/assets/icons/fluent/battery-saver.svg | 12 +++++++ .../assets/icons/fluent/battery-warning.svg | 12 +++++++ .../icons/fluent/bluetooth-connected.svg | 12 +++++++ .../icons/fluent/bluetooth-searching.svg | 12 +++++++ .../ii/assets/icons/fluent/ethernet.svg | 12 +++++++ .../ii/assets/icons/fluent/mic-on.svg | 12 +++++++ .../ii/assets/icons/fluent/speaker-none.svg | 5 +++ .../ii/assets/icons/fluent/speaker-off.svg | 7 +++++ .../ii/assets/icons/fluent/wifi-1.svg | 12 +++++++ .../ii/assets/icons/fluent/wifi-2.svg | 12 +++++++ .../ii/assets/icons/fluent/wifi-3.svg | 12 +++++++ .../ii/assets/icons/fluent/wifi-4.svg | 12 +++++++ .../ii/assets/icons/fluent/wifi-off.svg | 1 + .../ii/assets/icons/fluent/wifi-warning.svg | 1 + .../ii/modules/waffle/bar/SystemButton.qml | 21 ++++++++++++- .../ii/modules/waffle/looks/FluentIcon.qml | 7 +++-- .../ii/modules/waffle/looks/Looks.qml | 10 ++---- .../ii/modules/waffle/looks/WIcons.qml | 31 +++++++++++++++++++ 28 files changed, 313 insertions(+), 10 deletions(-) create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-1.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-2.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-3.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-4.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-5.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-7.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-8.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-9.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-charge.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-full.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-saver.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-warning.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/bluetooth-connected.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/bluetooth-searching.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/ethernet.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/mic-on.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/speaker-none.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/speaker-off.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/wifi-1.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/wifi-2.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/wifi-3.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/wifi-4.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/wifi-off.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/wifi-warning.svg create mode 100644 dots/.config/quickshell/ii/modules/waffle/looks/WIcons.qml diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-1.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-1.svg new file mode 100644 index 000000000..caa369c58 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-1.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_battery_1_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-2.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-2.svg new file mode 100644 index 000000000..b939043ea --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-2.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_battery_2_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-3.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-3.svg new file mode 100644 index 000000000..a504a1ed5 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-3.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_battery_3_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-4.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-4.svg new file mode 100644 index 000000000..6567ddf10 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-4.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_battery_4_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-5.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-5.svg new file mode 100644 index 000000000..1bf4d914f --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-5.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_battery_5_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-7.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-7.svg new file mode 100644 index 000000000..a5197ce94 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-7.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_battery_7_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-8.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-8.svg new file mode 100644 index 000000000..c83bc5fb6 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-8.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_battery_8_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-9.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-9.svg new file mode 100644 index 000000000..7f4937b99 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-9.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_battery_9_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-charge.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-charge.svg new file mode 100644 index 000000000..512a78b1b --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-charge.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_battery_charge_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-full.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-full.svg new file mode 100644 index 000000000..4749fc178 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-full.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_battery_full_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-saver.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-saver.svg new file mode 100644 index 000000000..397061caf --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-saver.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_battery_saver_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-warning.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-warning.svg new file mode 100644 index 000000000..7ccade277 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-warning.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_battery_warning_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/bluetooth-connected.svg b/dots/.config/quickshell/ii/assets/icons/fluent/bluetooth-connected.svg new file mode 100644 index 000000000..b491276df --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/bluetooth-connected.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_bluetooth_connected_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/bluetooth-searching.svg b/dots/.config/quickshell/ii/assets/icons/fluent/bluetooth-searching.svg new file mode 100644 index 000000000..e0d9eab70 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/bluetooth-searching.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_bluetooth_searching_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/ethernet.svg b/dots/.config/quickshell/ii/assets/icons/fluent/ethernet.svg new file mode 100644 index 000000000..904d9720e --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/ethernet.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_cellular_data_1_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/mic-on.svg b/dots/.config/quickshell/ii/assets/icons/fluent/mic-on.svg new file mode 100644 index 000000000..3f680d2e3 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/mic-on.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_mic_on_48_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/speaker-none.svg b/dots/.config/quickshell/ii/assets/icons/fluent/speaker-none.svg new file mode 100644 index 000000000..364af84cb --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/speaker-none.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/speaker-off.svg b/dots/.config/quickshell/ii/assets/icons/fluent/speaker-off.svg new file mode 100644 index 000000000..5fa19e406 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/speaker-off.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/wifi-1.svg b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-1.svg new file mode 100644 index 000000000..47662e101 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-1.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_wifi_1_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/wifi-2.svg b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-2.svg new file mode 100644 index 000000000..9897c5d70 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-2.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_wifi_2_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/wifi-3.svg b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-3.svg new file mode 100644 index 000000000..8a4674bd4 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-3.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_wifi_3_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/wifi-4.svg b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-4.svg new file mode 100644 index 000000000..f14828bd8 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-4.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_wifi_4_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/wifi-off.svg b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-off.svg new file mode 100644 index 000000000..3c247ab12 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-off.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/wifi-warning.svg b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-warning.svg new file mode 100644 index 000000000..d573ddde0 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/wifi-warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/SystemButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/SystemButton.qml index 107bb00f6..dcb56c30b 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/SystemButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/SystemButton.qml @@ -16,9 +16,28 @@ BarButton { Row { id: column anchors.centerIn: parent + spacing: 4 FluentIcon { - icon: "speaker" // System icon + icon: WIcons.internetIcon + } + + FluentIcon { + icon: { + const muted = Audio.sink?.audio.muted ?? false; + const volume = Audio.sink?.audio.volume ?? 0; + if (muted) return volume > 0 ? "speaker-off" : "speaker-none"; + if (volume == 0) return "speaker-none"; + if (volume < 0.5) return "speaker-1"; + return "speaker"; + } + } + + FluentIcon { + icon: { + print(WIcons.batteryIcon) + return WIcons.batteryIcon + } } } } diff --git a/dots/.config/quickshell/ii/modules/waffle/looks/FluentIcon.qml b/dots/.config/quickshell/ii/modules/waffle/looks/FluentIcon.qml index 892214cd7..229df0458 100644 --- a/dots/.config/quickshell/ii/modules/waffle/looks/FluentIcon.qml +++ b/dots/.config/quickshell/ii/modules/waffle/looks/FluentIcon.qml @@ -6,12 +6,15 @@ import qs.modules.waffle.looks Kirigami.Icon { id: root required property string icon - property int implicitSize: 18 // Should be 16, but it appears the icons have some padding + // Should be 16, but it appears the icons have some padding, + // Unlike the Windows-only Segoe UI icons, the open source FluentUI ones are hella small + property int implicitSize: 20 implicitWidth: implicitSize implicitHeight: implicitSize + source: `${Looks.iconsPath}/${root.icon}.svg` roundToIconSize: false color: Looks.colors.fg isMask: true - source: `${Looks.iconsPath}/${root.icon}.svg` + animated: true } diff --git a/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml b/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml index 3b451935f..9020b9d85 100644 --- a/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml +++ b/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml @@ -42,17 +42,13 @@ Singleton { property QtObject family: QtObject { property string ui: "Noto Sans" } - property QtObject weight: QtObject { - property int regular: Font.Normal + property QtObject weight: QtObject { // Noto is not Segoe, so we might use slightly different weights + property int regular: Font.Medium property int strong: Font.DemiBold property int stronger: Font.Bold - } - property QtObject variableAxes: QtObject { - } property QtObject pixelSize: QtObject { - property int small: 10 - property int normal: 11 + property real normal: 11 } } diff --git a/dots/.config/quickshell/ii/modules/waffle/looks/WIcons.qml b/dots/.config/quickshell/ii/modules/waffle/looks/WIcons.qml new file mode 100644 index 000000000..813b0a1ce --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/looks/WIcons.qml @@ -0,0 +1,31 @@ +pragma Singleton +import QtQuick +import Quickshell +import qs.services + +Singleton { + id: root + + property string internetIcon: { + if (Network.ethernet) return "ethernet"; + if (Network.wifiEnabled) { + const strength = Network.networkStrength; + if (strength > 75) return "wifi-1"; + if (strength > 50) return "wifi-2"; + if (strength > 25) return "wifi-3"; + return "wifi-4"; + } + if (Network.wifiStatus === "connecting") return "wifi-4"; + if (Network.wifiStatus === "disconnected") return "wifi-off"; + if (Network.wifiStatus === "disabled") return "wifi-off"; + return "wifi-warning"; + } + + property string batteryIcon: { + if (Battery.isCharging) return "battery-charge"; + if (Battery.isCriticalAndNotCharging) return "battery-warning"; + if (Battery.percentage >= 0.9) return "battery-full"; + return `battery-${Math.ceil(Battery.percentage * 10)}`; + } + +} From 694eaccfbfeee9118853716867ef92594393a8bd Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Mon, 10 Nov 2025 22:48:04 +0100 Subject: [PATCH 046/107] add start and search icons --- .../ii/assets/icons/fluent/battery-0.svg | 12 +++ .../ii/assets/icons/fluent/battery-6.svg | 12 +++ .../icons/fluent/system-search-dark.svg | 82 +++++++++++++++++++ .../icons/fluent/system-search-light.svg | 82 +++++++++++++++++++ .../quickshell/ii/modules/common/Config.qml | 1 + .../ii/modules/waffle/bar/AppButton.qml | 40 +++++++++ .../ii/modules/waffle/bar/SearchButton.qml | 12 +++ .../ii/modules/waffle/bar/StartButton.qml | 13 +++ .../ii/modules/waffle/bar/SystemButton.qml | 5 +- .../modules/waffle/bar/WaffleBarContent.qml | 24 ++++-- .../ii/modules/waffle/looks/FluentIcon.qml | 1 + .../ii/modules/waffle/looks/Looks.qml | 33 ++++++++ 12 files changed, 308 insertions(+), 9 deletions(-) create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-0.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/battery-6.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/system-search-dark.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/system-search-light.svg create mode 100644 dots/.config/quickshell/ii/modules/waffle/bar/AppButton.qml create mode 100644 dots/.config/quickshell/ii/modules/waffle/bar/SearchButton.qml create mode 100644 dots/.config/quickshell/ii/modules/waffle/bar/StartButton.qml diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-0.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-0.svg new file mode 100644 index 000000000..7fe9d7a3d --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-0.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_battery_0_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/battery-6.svg b/dots/.config/quickshell/ii/assets/icons/fluent/battery-6.svg new file mode 100644 index 000000000..145d9a7de --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/battery-6.svg @@ -0,0 +1,12 @@ + + + + ic_fluent_battery_6_24_regular + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/system-search-dark.svg b/dots/.config/quickshell/ii/assets/icons/fluent/system-search-dark.svg new file mode 100644 index 000000000..2d972a7b4 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/system-search-dark.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/system-search-light.svg b/dots/.config/quickshell/ii/assets/icons/fluent/system-search-light.svg new file mode 100644 index 000000000..b22f9c0ca --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/system-search-light.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + diff --git a/dots/.config/quickshell/ii/modules/common/Config.qml b/dots/.config/quickshell/ii/modules/common/Config.qml index ffc67805a..2ac21aa40 100644 --- a/dots/.config/quickshell/ii/modules/common/Config.qml +++ b/dots/.config/quickshell/ii/modules/common/Config.qml @@ -561,6 +561,7 @@ Singleton { property JsonObject waffles: JsonObject { property JsonObject bar: JsonObject { property bool bottom: true + property bool leftAlignApps: true } } } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/AppButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/AppButton.qml new file mode 100644 index 000000000..808a8ba0a --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/bar/AppButton.qml @@ -0,0 +1,40 @@ +import QtQuick +import QtQuick.Layouts +import org.kde.kirigami as Kirigami +import qs.services +import qs.modules.common +import qs.modules.waffle.looks + +BarButton { + id: root + + required property string iconName + implicitWidth: height - topInset - bottomInset + leftInset + rightInset + + contentItem: Item { + id: contentItem + anchors.centerIn: root.background + + implicitHeight: iconWidget.implicitHeight + implicitWidth: iconWidget.implicitWidth + + scale: root.down ? 5/6 : 1 // If/When we do dragging, the scale is 1.25 + Behavior on scale { + NumberAnimation { + duration: 90 + easing.type: Easing.BezierSpline + easing.bezierCurve: root.down ? Looks.transition.easing.bezierCurve.easeIn : Looks.transition.easing.bezierCurve.easeOut + } + } + + Kirigami.Icon { + id: iconWidget + anchors.centerIn: parent + implicitWidth: 26 + implicitHeight: 26 + roundToIconSize: false + source: `${Looks.iconsPath}/${root.iconName}-${Looks.dark ? "dark" : "light"}.svg` + fallback: root.iconName + } + } +} diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/SearchButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/SearchButton.qml new file mode 100644 index 000000000..3bfd3a781 --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/bar/SearchButton.qml @@ -0,0 +1,12 @@ +import QtQuick +import QtQuick.Layouts +import org.kde.kirigami as Kirigami +import qs.services +import qs.modules.common +import qs.modules.waffle.looks + +AppButton { + id: root + + iconName: "system-search" +} diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/StartButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/StartButton.qml new file mode 100644 index 000000000..e3aea59d2 --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/bar/StartButton.qml @@ -0,0 +1,13 @@ +import QtQuick +import QtQuick.Layouts +import org.kde.kirigami as Kirigami +import qs.services +import qs.modules.common +import qs.modules.waffle.looks + +AppButton { + id: root + + leftInset: 12 + iconName: "start-here" +} diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/SystemButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/SystemButton.qml index dcb56c30b..e1bb83684 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/SystemButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/SystemButton.qml @@ -34,10 +34,7 @@ BarButton { } FluentIcon { - icon: { - print(WIcons.batteryIcon) - return WIcons.batteryIcon - } + icon: WIcons.batteryIcon } } } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml b/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml index a2119ddde..f4881adf0 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml @@ -21,14 +21,28 @@ Rectangle { implicitHeight: 1 } - BarGroupRow { - id: bloatRow - anchors.left: parent.left - } - BarGroupRow { id: appsRow + spacing: 4 + anchors.left: undefined anchors.horizontalCenter: parent.horizontalCenter + + states: State { + name: "left" + when: Config.options.waffles.bar.leftAlignApps + AnchorChanges { + target: appsRow + anchors.left: parent.left + anchors.horizontalCenter: undefined + } + } + + transitions: Transition { + animations: Looks.transition.anchor.createObject(this) + } + + StartButton {} + SearchButton {} } BarGroupRow { diff --git a/dots/.config/quickshell/ii/modules/waffle/looks/FluentIcon.qml b/dots/.config/quickshell/ii/modules/waffle/looks/FluentIcon.qml index 229df0458..81b6ebf08 100644 --- a/dots/.config/quickshell/ii/modules/waffle/looks/FluentIcon.qml +++ b/dots/.config/quickshell/ii/modules/waffle/looks/FluentIcon.qml @@ -13,6 +13,7 @@ Kirigami.Icon { implicitHeight: implicitSize source: `${Looks.iconsPath}/${root.icon}.svg` + fallback: root.icon roundToIconSize: false color: Looks.colors.fg isMask: true diff --git a/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml b/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml index 9020b9d85..95693a05d 100644 --- a/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml +++ b/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml @@ -13,6 +13,7 @@ Singleton { property QtObject font property QtObject transition property string iconsPath: `${Directories.assetsPath}/icons/fluent` + property bool dark: Appearance.m3colors.darkmode property real fluentBackgroundTransparency: 0.17 property real fluentContentTransparency: 0.3 @@ -66,6 +67,38 @@ Singleton { ColorAnimation { duration: 80 easing.type: Easing.BezierSpline + easing.bezierCurve: transition.easing.bezierCurve.easeIn + } + } + + property Component enter: Component { + NumberAnimation { + duration: 250 + easing.type: Easing.BezierSpline + easing.bezierCurve: transition.easing.bezierCurve.easeIn + } + } + + property Component exit: Component { + NumberAnimation { + duration: 250 + easing.type: Easing.BezierSpline + easing.bezierCurve: transition.easing.bezierCurve.easeOut + } + } + + property Component move: Component { + NumberAnimation { + duration: 100 + easing.type: Easing.BezierSpline + easing.bezierCurve: transition.easing.bezierCurve.easeInOut + } + } + + property Component anchor: Component { + AnchorAnimation { + duration: 250 + easing.type: Easing.BezierSpline easing.bezierCurve: transition.easing.bezierCurve.easeInOut } } From fdcb95b8a4b4fae45bd2e76b2544ebc033f1ad6c Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Mon, 10 Nov 2025 23:41:15 +0100 Subject: [PATCH 047/107] wbar: add widgets, taskview, light theme --- .../ii/assets/icons/fluent/task-view.svg | 79 ++++++++++++++++ .../ii/assets/icons/fluent/widgets.svg | 92 +++++++++++++++++++ .../ii/modules/waffle/bar/AppButton.qml | 9 +- .../ii/modules/waffle/bar/AppIcon.qml | 16 ++++ .../ii/modules/waffle/bar/SearchButton.qml | 1 + .../ii/modules/waffle/bar/StartButton.qml | 2 +- .../ii/modules/waffle/bar/TaskViewButton.qml | 12 +++ .../modules/waffle/bar/WaffleBarContent.qml | 19 ++++ .../ii/modules/waffle/bar/WidgetsButton.qml | 39 ++++++++ .../ii/modules/waffle/looks/Looks.qml | 26 ++++-- 10 files changed, 279 insertions(+), 16 deletions(-) create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/task-view.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/widgets.svg create mode 100644 dots/.config/quickshell/ii/modules/waffle/bar/AppIcon.qml create mode 100644 dots/.config/quickshell/ii/modules/waffle/bar/TaskViewButton.qml create mode 100644 dots/.config/quickshell/ii/modules/waffle/bar/WidgetsButton.qml diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/task-view.svg b/dots/.config/quickshell/ii/assets/icons/fluent/task-view.svg new file mode 100644 index 000000000..4323e8421 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/task-view.svg @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/widgets.svg b/dots/.config/quickshell/ii/assets/icons/fluent/widgets.svg new file mode 100644 index 000000000..0989033a7 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/widgets.svg @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/AppButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/AppButton.qml index 808a8ba0a..017d8f931 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/AppButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/AppButton.qml @@ -9,6 +9,7 @@ BarButton { id: root required property string iconName + property bool separateLightDark: false implicitWidth: height - topInset - bottomInset + leftInset + rightInset contentItem: Item { @@ -27,14 +28,10 @@ BarButton { } } - Kirigami.Icon { + AppIcon { id: iconWidget anchors.centerIn: parent - implicitWidth: 26 - implicitHeight: 26 - roundToIconSize: false - source: `${Looks.iconsPath}/${root.iconName}-${Looks.dark ? "dark" : "light"}.svg` - fallback: root.iconName + iconName: root.iconName } } } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/AppIcon.qml b/dots/.config/quickshell/ii/modules/waffle/bar/AppIcon.qml new file mode 100644 index 000000000..02c1da144 --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/bar/AppIcon.qml @@ -0,0 +1,16 @@ +import QtQuick +import org.kde.kirigami as Kirigami +import qs.services +import qs.modules.common +import qs.modules.waffle.looks + +Kirigami.Icon { + id: iconWidget + required property string iconName + + implicitWidth: 26 + implicitHeight: 26 + roundToIconSize: false + source: `${Looks.iconsPath}/${root.iconName}${!root.separateLightDark ? "" : Looks.dark ? "-dark" : "-light"}.svg` + fallback: root.iconName +} diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/SearchButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/SearchButton.qml index 3bfd3a781..d1b59b85b 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/SearchButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/SearchButton.qml @@ -9,4 +9,5 @@ AppButton { id: root iconName: "system-search" + separateLightDark: true } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/StartButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/StartButton.qml index e3aea59d2..d5a4e0f97 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/StartButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/StartButton.qml @@ -8,6 +8,6 @@ import qs.modules.waffle.looks AppButton { id: root - leftInset: 12 + leftInset: Config.options.waffles.bar.leftAlignApps ? 12 : 0 iconName: "start-here" } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/TaskViewButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/TaskViewButton.qml new file mode 100644 index 000000000..3211217fa --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/bar/TaskViewButton.qml @@ -0,0 +1,12 @@ +import QtQuick +import QtQuick.Layouts +import org.kde.kirigami as Kirigami +import qs.services +import qs.modules.common +import qs.modules.waffle.looks + +AppButton { + id: root + + iconName: "task-view" +} diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml b/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml index f4881adf0..989904e2f 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml @@ -1,6 +1,7 @@ import QtQuick import QtQuick.Layouts import qs.modules.common +import qs.modules.common.widgets import qs.modules.waffle.looks Rectangle { @@ -21,6 +22,18 @@ Rectangle { implicitHeight: 1 } + BarGroupRow { + id: bloatRow + anchors.left: parent.left + opacity: Config.options.waffles.bar.leftAlignApps ? 0 : 1 + visible: opacity > 0 + Behavior on opacity { + animation: Looks.transition.opacity.createObject(this) + } + + WidgetsButton {} + } + BarGroupRow { id: appsRow spacing: 4 @@ -43,11 +56,17 @@ Rectangle { StartButton {} SearchButton {} + TaskViewButton {} } BarGroupRow { id: systemRow anchors.right: parent.right + FadeLoader { + Layout.fillHeight: true + shown: Config.options.waffles.bar.leftAlignApps + sourceComponent: WidgetsButton {} + } SystemButton {} TimeButton {} } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/WidgetsButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/WidgetsButton.qml new file mode 100644 index 000000000..94c194686 --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/bar/WidgetsButton.qml @@ -0,0 +1,39 @@ +import QtQuick +import QtQuick.Layouts +import org.kde.kirigami as Kirigami +import qs.services +import qs.modules.common +import qs.modules.waffle.looks + +AppButton { + id: root + + readonly property bool expandedForm: Config.options.waffles.bar.leftAlignApps + leftInset: Config.options.waffles.bar.leftAlignApps ? 0 : 12 + implicitWidth: expandedForm ? 148 : (height - topInset - bottomInset + leftInset + rightInset) + iconName: "widgets" + + contentItem: Item { + anchors { + verticalCenter: parent.verticalCenter + left: root.expandedForm ? parent.left : undefined + horizontalCenter: root.expandedForm ? undefined : background.horizontalCenter + } + implicitHeight: row.implicitHeight + implicitWidth: row.implicitWidth + Row { + id: row + anchors { + verticalCenter: parent.verticalCenter + left: root.expandedForm ? parent.left : undefined + horizontalCenter: root.expandedForm ? undefined : parent.horizontalCenter + margins: 8 + } + + AppIcon { + id: iconWidget + iconName: root.iconName + } + } + } +} diff --git a/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml b/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml index 95693a05d..ea225f093 100644 --- a/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml +++ b/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml @@ -19,13 +19,13 @@ Singleton { property real fluentContentTransparency: 0.3 colors: QtObject { id: colors - property color bg0: "#1C1C1C" - property color bg0Border: "#404040" - property color bg1: "#2E2E2E" - property color bg1Hover: "#292929" - property color bg1Active: "#252525" - property color bg1Border: "#333333" - property color fg: "#FFFFFF" + property color bg0: root.dark ? "#1C1C1C" : "#EEEEEE" + property color bg0Border: root.dark ? "#404040" : "#BEBEBE" + property color bg1: root.dark ? "#2E2E2E" : "#F7F7F7" + property color bg1Hover: root.dark ? "#292929" : "#F7F7F7" + property color bg1Active: root.dark ? "#252525" : "#F3F3F3" + property color bg1Border: root.dark ? "#333333" : "#E9E9E9" + property color fg: root.dark ? "#FFFFFF" : "#000000" property color brand: Appearance.m3colors.m3primary } @@ -71,6 +71,14 @@ Singleton { } } + property Component opacity: Component { + NumberAnimation{ + duration: 80 + easing.type: Easing.BezierSpline + easing.bezierCurve: transition.easing.bezierCurve.easeIn + } + } + property Component enter: Component { NumberAnimation { duration: 250 @@ -97,9 +105,9 @@ Singleton { property Component anchor: Component { AnchorAnimation { - duration: 250 + duration: 160 easing.type: Easing.BezierSpline - easing.bezierCurve: transition.easing.bezierCurve.easeInOut + easing.bezierCurve: transition.easing.bezierCurve.easeIn } } } From cbcb8cf8e13e6c8d03c769007e9f9c32e4f7eb22 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 11 Nov 2025 00:01:57 +0100 Subject: [PATCH 048/107] wbar: more interactions --- dots/.config/quickshell/ii/modules/waffle/bar/BarButton.qml | 4 ++-- .../quickshell/ii/modules/waffle/bar/TaskViewButton.qml | 6 ++++++ .../.config/quickshell/ii/modules/waffle/bar/TimeButton.qml | 6 ++++++ dots/.config/quickshell/ii/modules/waffle/bar/WaffleBar.qml | 2 +- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/BarButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/BarButton.qml index 1ea789fcb..20929b1e6 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/BarButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/BarButton.qml @@ -12,7 +12,7 @@ Button { topInset: 4 bottomInset: 4 - property color borderColor: ColorUtils.transparentize(Looks.colors.bg1Border, (root.hovered && !root.down) ? Looks.fluentContentTransparency : 1) + property color borderColor: ColorUtils.transparentize(Looks.colors.bg1Border, ((root.hovered && !root.down) || root.checked) ? Looks.fluentContentTransparency : 1) Behavior on borderColor { animation: Looks.transition.color.createObject(this) } @@ -25,7 +25,7 @@ Button { color: { if (root.down) { return Looks.colors.bg1Active - } else if (root.hovered) { + } else if ((root.hovered && !root.down) || root.checked) { return Looks.colors.bg1Hover } else { return ColorUtils.transparentize(Looks.colors.bg1) diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/TaskViewButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/TaskViewButton.qml index 3211217fa..1239fed6f 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/TaskViewButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/TaskViewButton.qml @@ -1,6 +1,7 @@ import QtQuick import QtQuick.Layouts import org.kde.kirigami as Kirigami +import qs import qs.services import qs.modules.common import qs.modules.waffle.looks @@ -9,4 +10,9 @@ AppButton { id: root iconName: "task-view" + + checked: GlobalStates.overviewOpen + onClicked: { + GlobalStates.overviewOpen = !GlobalStates.overviewOpen; + } } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/TimeButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/TimeButton.qml index 53177da12..f8e2f38cc 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/TimeButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/TimeButton.qml @@ -1,5 +1,6 @@ import QtQuick import QtQuick.Layouts +import qs import qs.services import qs.modules.common import qs.modules.waffle.looks @@ -10,6 +11,11 @@ BarButton { rightInset: 12 // For now this is the rightmost button. Desktop peek is useless. (for now) padding: 12 + checked: GlobalStates.sidebarRightOpen + onClicked: { + GlobalStates.sidebarRightOpen = !GlobalStates.sidebarRightOpen; + } + contentItem: Item { anchors.centerIn: root.background implicitHeight: column.implicitHeight diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBar.qml b/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBar.qml index 241b5e66b..5c19c661f 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBar.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBar.qml @@ -23,7 +23,7 @@ Scope { screen: modelData exclusionMode: ExclusionMode.Ignore exclusiveZone: implicitHeight - WlrLayershell.namespace: "quickshell:wbar" + WlrLayershell.namespace: "quickshell:wBar" anchors { left: true From dec65aea17f8ac4a20e360f4be7ede94da7a6596 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 11 Nov 2025 00:03:19 +0100 Subject: [PATCH 049/107] update hyprland config --- dots/.config/hypr/hyprland/general.conf | 4 ++-- dots/.config/hypr/hyprland/keybinds.conf | 1 + dots/.config/hypr/hyprland/rules.conf | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/dots/.config/hypr/hyprland/general.conf b/dots/.config/hypr/hyprland/general.conf index 2c79a857f..14074b345 100644 --- a/dots/.config/hypr/hyprland/general.conf +++ b/dots/.config/hypr/hyprland/general.conf @@ -6,8 +6,8 @@ monitor=,preferred,auto,1 # monitor=HDMI-A-1,1920x1080@60,1920x0,1,mirror,eDP-1 gesture = 3, swipe, move, +gesture = 3, pinch, float gesture = 4, horizontal, workspace -gesture = 4, pinch, float gesture = 4, up, dispatcher, global, quickshell:overviewToggle gesture = 4, down, dispatcher, global, quickshell:overviewClose gestures { @@ -62,7 +62,7 @@ decoration { brightness = 1 noise = 0.04 contrast = 1 - popups = true + popups = false popups_ignorealpha = 0.6 input_methods = true input_methods_ignorealpha = 0.8 diff --git a/dots/.config/hypr/hyprland/keybinds.conf b/dots/.config/hypr/hyprland/keybinds.conf index 294854d67..fdda9a714 100644 --- a/dots/.config/hypr/hyprland/keybinds.conf +++ b/dots/.config/hypr/hyprland/keybinds.conf @@ -53,6 +53,7 @@ bindd = Ctrl+Super, T, Toggle wallpaper selector, global, quickshell:wallpaperSe bindd = Ctrl+Super+Alt, T, Select random wallpaper, global, quickshell:wallpaperSelectorRandom # Random wallpaper bindd = Ctrl+Super, T, Change wallpaper, exec, qs -c $qsConfig ipc call TEST_ALIVE || ~/.config/quickshell/$qsConfig/scripts/colors/switchwall.sh # [hidden] Change wallpaper (fallback) bind = Ctrl+Super, R, exec, killall ags agsv1 gjs ydotool qs quickshell; qs -c $qsConfig & # Restart widgets +bind = Super+Alt, W, global, quickshell:panelFamilyCycle # Cycle panel family ##! Utilities # Screenshot, Record, OCR, Color picker, Clipboard history diff --git a/dots/.config/hypr/hyprland/rules.conf b/dots/.config/hypr/hyprland/rules.conf index 01ac1056d..dc34a4a6b 100644 --- a/dots/.config/hypr/hyprland/rules.conf +++ b/dots/.config/hypr/hyprland/rules.conf @@ -154,6 +154,8 @@ layerrule = animation slide right, quickshell:sidebarRight layerrule = animation slide left, quickshell:sidebarLeft layerrule = animation slide, quickshell:verticalBar layerrule = animation slide top, quickshell:wallpaperSelector +# Quickshell - Waffles +layerrule = animation slide, quickshell:wBar # Launchers need to be FAST layerrule = noanim, gtk4-layer-shell From 6fedb70f697404b2b2a795180524864a38cc6fd6 Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 11 Nov 2025 09:16:27 +0800 Subject: [PATCH 050/107] Update comment --- sdata/dist-arch/install-deps.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdata/dist-arch/install-deps.sh b/sdata/dist-arch/install-deps.sh index ebca31ad2..3cd43d6ba 100644 --- a/sdata/dist-arch/install-deps.sh +++ b/sdata/dist-arch/install-deps.sh @@ -12,8 +12,6 @@ install-yay(){ rm -rf /tmp/buildyay } -# NOTE: `handle-deprecated-dependencies` was for the old days when we just switch from dependencies.conf to local PKGBUILDs. -# However, let's just keep it as references for other distros writing their `sdata/dist-/install-deps.sh`, if they need it. remove_deprecated_dependencies(){ printf "${STY_CYAN}[$0]: Removing deprecated dependencies:${STY_RST}\n" local list=() @@ -22,6 +20,8 @@ remove_deprecated_dependencies(){ list+=({quickshell,hyprutils,hyprpicker,hyprlang,hypridle,hyprland-qt-support,hyprland-qtutils,hyprlock,xdg-desktop-portal-hyprland,hyprcursor,hyprwayland-scanner,hyprland}-git) for i in ${list[@]};do try sudo pacman --noconfirm -Rdd $i;done } +# NOTE: `implicitize_old_dependencies()` was for the old days when we just switch from dependencies.conf to local PKGBUILDs. +# However, let's just keep it as references for other distros writing their `sdata/dist-/install-deps.sh`, if they need it. implicitize_old_dependencies(){ # Convert old dependencies to non explicit dependencies so that they can be orphaned if not in meta packages remove_bashcomments_emptylines ./sdata/dist-arch/previous_dependencies.conf ./cache/old_deps_stripped.conf From e00e703af2f1705450d2539cd816878f4ba2e1a6 Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 11 Nov 2025 09:16:47 +0800 Subject: [PATCH 051/107] Improve distro determine --- sdata/dist-nix/install-deps.sh | 75 +++++++++++++++++++--------------- sdata/lib/dist-determine.sh | 28 ++++++++----- 2 files changed, 61 insertions(+), 42 deletions(-) diff --git a/sdata/dist-nix/install-deps.sh b/sdata/dist-nix/install-deps.sh index cda6f38f4..ac13d194f 100644 --- a/sdata/dist-nix/install-deps.sh +++ b/sdata/dist-nix/install-deps.sh @@ -9,38 +9,49 @@ function vianix-warning(){ pause } function install_cmds(){ - if [[ "$OS_DISTRO_ID" == "arch" || "$OS_DISTRO_ID_LIKE" == "arch" || "$OS_DISTRO_ID" == "cachyos" ]]; then - local pkgs=() - for cmd in "$@";do - # For package name which is not cmd name, use "case" syntax to replace - pkgs+=($cmd) - done - x sudo pacman -Syu - x sudo pacman -S --noconfirm --needed "${pkgs[@]}" - elif [[ "$OS_DISTRO_ID" == "debian" || "$OS_DISTRO_ID_LIKE" == "debian" ]]; then - local pkgs=() - for cmd in "$@";do - # For package name which is not cmd name, use "case" syntax to replace - pkgs+=($cmd) - done - x sudo apt update -y - x sudo apt install -y "${pkgs[@]}" - elif [[ "$OS_DISTRO_ID" == "fedora" || "$OS_DISTRO_ID_LIKE" == "fedora" ]]; then - local pkgs=() - for cmd in "$@";do - # For package name which is not cmd name, use "case" syntax to replace - pkgs+=($cmd) - done - x sudo dnf install -y "${pkgs[@]}" - elif [[ "$OS_DISTRO_ID" =~ ^(opensuse-leap|opensuse-tumbleweed)$ ]] || [[ "$OS_DISTRO_ID_LIKE" =~ ^(opensuse|suse)(\ (opensuse|suse))?$ ]]; then - local pkgs=() - for cmd in "$@";do - # For package name which is not cmd name, use "case" syntax to replace - pkgs+=($cmd) - done - x sudo zypper refresh - x sudo zypper -n install "${pkgs[@]}" - fi + case $OS_GROUP_ID in + "arch") + local pkgs=() + for cmd in "$@";do + # For package name which is not cmd name, use "case" syntax to replace + pkgs+=($cmd) + done + x sudo pacman -Syu + x sudo pacman -S --noconfirm --needed "${pkgs[@]}" + ;; + "debian") + local pkgs=() + for cmd in "$@";do + # For package name which is not cmd name, use "case" syntax to replace + pkgs+=($cmd) + done + x sudo apt update -y + x sudo apt install -y "${pkgs[@]}" + ;; + "fedora") + local pkgs=() + for cmd in "$@";do + # For package name which is not cmd name, use "case" syntax to replace + pkgs+=($cmd) + done + x sudo dnf install -y "${pkgs[@]}" + ;; + "suse") + local pkgs=() + for cmd in "$@";do + # For package name which is not cmd name, use "case" syntax to replace + pkgs+=($cmd) + done + x sudo zypper refresh + x sudo zypper -n install "${pkgs[@]}" + ;; + *) + printf "WARNING\n" + printf "No method found to install package providing the commands:\n" + printf " $@\n" + printf "Please install by yourself.\n" + ;; + esac } function install_nix(){ # https://github.com/NixOS/experimental-nix-installer diff --git a/sdata/lib/dist-determine.sh b/sdata/lib/dist-determine.sh index aa76b5dcd..3cb7e2d34 100644 --- a/sdata/lib/dist-determine.sh +++ b/sdata/lib/dist-determine.sh @@ -31,15 +31,7 @@ function print_os_group_id_unofficial(){ printf "============\n\n" printf "${STY_RST}" } -function print_os_group_id_fallback(){ - printf "${STY_RED}" - printf "===CAUTION===\n" - printf "No support provided for your distro, using fallback method.\n" - printf "Proceed only at your own risk.\n" - printf "=============\n\n" - printf "${STY_RST}" -} -function print_os_group_id_force_vianix(){ +function print_os_group_id_unsupported(){ printf "${STY_RED}" printf "===CAUTION===\n" printf "\"--via-nix\" is forcely specified as the only method to support your distro.\n" @@ -48,6 +40,14 @@ function print_os_group_id_force_vianix(){ printf "Proceed only at your own risk.\n" printf "=============\n\n" printf "${STY_RST}" + sleep 3 +} +function print_os_group_id_fallback(){ + printf "${STY_RED}" + printf "===CAUTION===\n" + printf "Distro not recognized, determined as fallback.\n" + printf "=============\n\n" + printf "${STY_RST}" } function print_os_group_id_architecture(){ printf "${STY_RED}" @@ -99,10 +99,18 @@ elif [[ "$OS_DISTRO_ID" == "fedora" ]]; then elif [[ "$OS_DISTRO_ID_LIKE" == "fedora" ]]; then OS_GROUP_ID="fedora" print_os_group_id_functions=(print_os_group_id{,_alike,_unofficial}) +elif [[ "$OS_DISTRO_ID" =~ ^(opensuse-leap|opensuse-tumbleweed)$ ]] || [[ "$OS_DISTRO_ID_LIKE" =~ ^(opensuse|suse)(\ (opensuse|suse))?$ ]]; then + OS_GROUP_ID="suse" + INSTALL_VIA_NIX=true + print_os_group_id_functions=(print_os_group_id{,_unsupported}) +elif [[ "$OS_DISTRO_ID" == "debian" || "$OS_DISTRO_ID_LIKE" == "debian" ]]; then + OS_GROUP_ID="debian" + INSTALL_VIA_NIX=true + print_os_group_id_functions=(print_os_group_id{,_unsupported}) else OS_GROUP_ID="fallback" INSTALL_VIA_NIX=true - print_os_group_id_functions=(print_os_group_id{,_fallback,_force_vianix}) + print_os_group_id_functions=(print_os_group_id{,_fallback,_unsupported}) fi #################### From dc958436d88d44f7466812289be469b5235fd0cd Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 11 Nov 2025 09:33:14 +0800 Subject: [PATCH 052/107] Update message --- sdata/lib/dist-determine.sh | 6 ++++-- .../subcmd-install/{1.deps-selector.sh => 1.deps-router.sh} | 0 setup | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) rename sdata/subcmd-install/{1.deps-selector.sh => 1.deps-router.sh} (100%) diff --git a/sdata/lib/dist-determine.sh b/sdata/lib/dist-determine.sh index 3cb7e2d34..46f9afdd8 100644 --- a/sdata/lib/dist-determine.sh +++ b/sdata/lib/dist-determine.sh @@ -34,8 +34,10 @@ function print_os_group_id_unofficial(){ function print_os_group_id_unsupported(){ printf "${STY_RED}" printf "===CAUTION===\n" - printf "\"--via-nix\" is forcely specified as the only method to support your distro.\n" - printf "It is still experimental and some functionalities are missing.\n" + printf "\"--via-nix\" is forcely specified \n" + printf "as the only way to try to install on your distro.\n" + printf "It is still experimental.\n" + printf "Some functionalities are missing.\n" printf "It may also behave unexpectedly.\n" printf "Proceed only at your own risk.\n" printf "=============\n\n" diff --git a/sdata/subcmd-install/1.deps-selector.sh b/sdata/subcmd-install/1.deps-router.sh similarity index 100% rename from sdata/subcmd-install/1.deps-selector.sh rename to sdata/subcmd-install/1.deps-router.sh diff --git a/setup b/setup index 65857d5de..ae0a31aa2 100755 --- a/setup +++ b/setup @@ -73,7 +73,7 @@ case ${SUBCMD_NAME} in source ${SUBCMD_DIR}/0.greeting.sh fi if [[ "${SKIP_ALLDEPS}" != true ]]; then - source ${SUBCMD_DIR}/1.deps-selector.sh + source ${SUBCMD_DIR}/1.deps-router.sh fi if [[ "${SKIP_ALLSETUPS}" != true ]]; then source ${SUBCMD_DIR}/2.setups.sh @@ -84,7 +84,7 @@ case ${SUBCMD_NAME} in ;; install-deps) if [[ "${SKIP_ALLDEPS}" != true ]]; then - source ${SUBCMD_DIR}/1.deps-selector.sh + source ${SUBCMD_DIR}/1.deps-router.sh fi ;; install-setups) From 462ddefb7f64d2ec8aaff5730009f5b954be676e Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 11 Nov 2025 09:36:25 +0800 Subject: [PATCH 053/107] Fix color --- sdata/dist-nix/install-deps.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sdata/dist-nix/install-deps.sh b/sdata/dist-nix/install-deps.sh index ac13d194f..37a9dadd7 100644 --- a/sdata/dist-nix/install-deps.sh +++ b/sdata/dist-nix/install-deps.sh @@ -2,10 +2,13 @@ # It's not for directly running. function vianix-warning(){ - printf "${STY_YELLOW}Currently \"--via-nix\" will run:\n" + printf "${STY_YELLOW}" + printf "Currently \"--via-nix\" will run:\n" printf " home-manager switch --flake .#illogical_impulse\n" - printf "If you are already using home-manager, it may override your current config,\n" + printf "If you are already using home-manager,\n" + printf "it may override your current config,\n" printf "despite that this should be reversible.\n" + printf "${STY_RST}" pause } function install_cmds(){ From 60ef4a873d2e01fad29e3b560ff90ed828a1dfaf Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 11 Nov 2025 09:51:58 +0800 Subject: [PATCH 054/107] Update TODO --- sdata/README.md | 3 +++ sdata/subcmd-install/3.files.sh | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/sdata/README.md b/sdata/README.md index 8b8226fce..bbd64edc1 100644 --- a/sdata/README.md +++ b/sdata/README.md @@ -1 +1,4 @@ This folder mainly contains data for the script `setup`. + +- TODO: output the logs to a temp file, then show the path of the file so users will be able to read it again or upload it to issue. +- TODO: unify the message output via functions (for example `log_error`, `log_warning`). diff --git a/sdata/subcmd-install/3.files.sh b/sdata/subcmd-install/3.files.sh index 209414038..07ade39f3 100644 --- a/sdata/subcmd-install/3.files.sh +++ b/sdata/subcmd-install/3.files.sh @@ -78,7 +78,6 @@ for i in "${warn_files_tests[@]}"; do done ##################################################################################### -# TODO: output the logs below to a temp file and cat that file, also show the path of the file so users will be able to read it again. printf "\n" printf "\n" printf "\n" From febe3d53e3de64bc89b3e8005953e799a8b7be21 Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 11 Nov 2025 10:36:03 +0800 Subject: [PATCH 055/107] Update deps-info.md (close #2102) --- sdata/deps-info.md | 309 +++++++++++++++------ sdata/dist-nix/home-manager/home.nix | 145 +++++----- sdata/dist-nix/home-manager/quickshell.nix | 4 +- 3 files changed, 300 insertions(+), 158 deletions(-) diff --git a/sdata/deps-info.md b/sdata/deps-info.md index 6151d6f05..68de38c5e 100644 --- a/sdata/deps-info.md +++ b/sdata/deps-info.md @@ -1,86 +1,231 @@ -## Status: WIP -This file was generated by AI (see [#2102](https://github.com/end-4/dots-hyprland/issues/2102)). -It still needs manual correction. +This file contains information about the dependencies, currently it describes about `sdata/dist-arch/`. -## Information -Meta-packages (from sdata/dist-arch/install-deps.sh) -- illogical-impulse-basic - - Purpose: Core shell tooling used by scripts (general CLI utilities, build helpers, JSON processing, etc.). -- illogical-impulse-audio - - Purpose: Audio stack (e.g., PipeWire/WirePlumber, mixers, control UIs) used by widgets and desktop integrations. -- illogical-impulse-backlight - - Purpose: Screen brightness control utilities (e.g., brightnessctl). -- illogical-impulse-fonts-themes - - Purpose: Fonts and themes used across the shell/widgets (Noto, emoji fonts, icon themes, GTK/Qt themes). -- illogical-impulse-kde - - Purpose: KDE integration bits (dialogs, theming helpers, optional browser integration). -- illogical-impulse-portal - - Purpose: Desktop portals (e.g., xdg-desktop-portal and Wayland compositor-specific portals). -- illogical-impulse-python - - Purpose: Python 3 and libs for repo Python scripts and virtualenv activation. -- illogical-impulse-screencapture - - Purpose: Screenshot/recording tools on Wayland (e.g., grim, slurp, wf-recorder or similar). -- illogical-impulse-toolkit - - Purpose: General utilities used by scripts (jq, imagemagick, bc, etc.). -- illogical-impulse-widgets - - Purpose: Runtime deps for Quickshell widgets and supporting tools used in the UI modules. -- illogical-impulse-hyprland - - Purpose: Hyprland compositor and related tools (hyprland, hyprctl, hypridle, hyprlock, hyprcursor, portals). -- illogical-impulse-microtex-git - - Purpose: MicroTeX-related setup used by this config (custom packaging). -- illogical-impulse-bibata-modern-classic-bin (optional) - - Purpose: Bibata Modern Classic mouse cursor theme (installed only if not present). +# Meta packages +## illogical-impulse-audio +- `cava` + - Used in Quickshell config. +- `pavucontrol-qt` + - Used in Hyprland and Quickshell config. +- `wireplumber` + - Not explicitly used. +- `pipewire-pulse` + - not explicitly used. +- `libdbusmenu-gtk3` + - not explicitly used. +- `playerctl` + - Used in Hyprland and Quickshell config. -Concrete dependencies inferred from repository scripts -- hyprland (provides hyprctl) - - Purpose: Compositor -- jq - - Used by: switchwall.sh (JSON parsing), multiple scripts reading config.json, hyprctl -j output. - - Purpose: JSON parsing and transformation. -- matugen (AUR) - - Used by: switchwall.sh to generate Material You colors from image or color input. - - Purpose: Color extraction and scheme generation. -- python (python3) + virtualenv (python-virtualenv) - - Used by: switchwall.sh activates $ILLOGICAL_IMPULSE_VIRTUAL_ENV and runs generate_colors_material.py. - - Purpose: Color processing -- imagemagick (identify) - - Used by: switchwall.sh to probe image width/height to suggest upscaling. - - Purpose: Image metadata inspection. -- bc - - Used by: switchwall.sh for simple arithmetic on cursor coordinates. - - Purpose: Shell-friendly math. -- xdg-user-dirs (xdg-user-dir) - - Used by: switchwall.sh to locate Pictures folder. - - Purpose: XDG directories resolution. -- libnotify (notify-send) - - Used by: switchwall.sh to interactively prompt actions (install/open apps) via notifications. - - Purpose: Desktop notifications with actions. -- hyprpicker (AUR) - - Used by: switchwall.sh for picking colors from screen when --color is passed without hex. - - Purpose: On-screen color picker (Wayland). -- mpvpaper (AUR) - - Used by: switchwall.sh to set video wallpapers per monitor. - - Purpose: Video wallpaper playback under Wayland. -- ffmpeg - - Used by: switchwall.sh to extract a frame from videos to derive colors and thumbnails. - - Purpose: Video frame extraction and media handling. -- kitty - - Used by: switchwall.sh to run interactive installs or external tools in a terminal (kitty -1 ...). - - Purpose: Terminal emulator integration. -- kdialog (KDE) - - Used by: switchwall.sh to open a file picker for choosing wallpapers. - - Purpose: GUI file selection dialog. -- glib2 (gsettings) + dconf - - Used by: switchwall.sh to set GNOME interface color-scheme and GTK theme. - - Purpose: System settings manipulation. -- yay (or yay-bin from AUR) - - Used by: sdata/dist-arch/install-deps.sh to build/install local PKGBUILDs and dependencies. - - Purpose: AUR helper used by installer. -- base-devel, git, makepkg (core Arch tooling) - - Used by: sdata/dist-arch/install-deps.sh and update.sh for building AUR/PKGBUILD packages and repository management. - - Purpose: Build toolchain and VCS for packaging. +## illogical-impulse-backlight +- `geoclue` + - Which demo agent used in Quickshell config. +- `brightnessctl` + - Used in Hyprland and Quickshell config. +- `ddcutil` + - Used in Quickshell config. + +## illogical-impulse-basic +- `bc` + - Used in `quickshell/ii/scripts/colors/switchwall.sh` for example. +- `coreutils` + - Too many executables involved, not sure where been used. +- `cliphist` + - Used in Hyprland and Quickshell config. +- `cmake` + - Used in building quickshell and MicroTeX. +- `curl` + - Used in Quickshell config. +- `wget` + - Used in Quickshell config. +- `ripgrep` + - Not sure where been used. +- `jq` + - Widely used. +- `xdg-user-dirs` + - Used in Hyprland and Quickshell config. +- `rsync` + - Used in install script. +- `go-yq` + - Used in install script. + +## illogical-impulse-fonts-themes +- `adw-gtk-theme-git` + - [source](https://github.com/lassekongo83/adw-gtk3) + - Used in Quickshell config. +- `breeze` + - Used in kdeglobals config. +- `breeze-plus` + - [source](https://github.com/mjkim0727/breeze-plus) + - Used in kde-material-you-colors config. +- `darkly-bin` + - `darkly` is supposed to be set as the theme for Qt apps, just have not figured out how to properly set it yet. +- `eza` + - Used in Fish config: `alias ls 'eza --icons'` +- `fish` + - Widely used. +- `fontconfig` + - Basic component which is nearly a must. +- `kitty` + - Used in fuzzel, Hyprland, kdeglobals and Quickshell config; kitty config is also included as dots. +- `matugen-bin` + - Used in Quickshell. +- `otf-space-grotesk` + - [source](https://events.ccc.de/congress/2024/infos/styleguide.html) + - Used in Quickshell and matugen config. +- `starship` + - Used in Fish config. +- `ttf-gabarito-git` + - Font name: `Gabarito` + - Used in fuzzel and Quickshell config. +- `ttf-jetbrains-mono-nerd` + - Font name: `JetBrains Mono NF`, `JetBrainsMono Nerd Font`. + - Used in foot, kdeglobals, kitty, qt5ct, qt6ct and Quickshell config. +- `ttf-material-symbols-variable-git` + - Font name: `Material Symbols Rounded`, `Material Symbols Outlined` + - Used in Hyprland, matugen, Quickshell and wlogout config. +- `ttf-readex-pro` + - Font name: `Readex Pro` + - Used in Quickshell config. +- `ttf-roboto-flex` + - Font name: `Roboto Flex` + - Used in Hyprland, matugen and Quickshell config. +- `ttf-rubik-vf` + - Font name: `Rubik`, `Rubik Light` + - Used in Hyprland, kdeglobals, matugen, qt5ct, qt6ct and Quickshell config. +- `ttf-twemoji` + - Not explicitly used, but it may help as fallback for displaying emoji charaters. + +## illogical-impulse-hyprland +- `hypridle` + - Used for loginctl to lock session. +- `hyprland` + - Surely needed. +- `hyprlock` + - Installed as fallback; its config is also included. +- `hyprpicker` + - Used in Hyprland and Quickshell config. +- `hyprsunset` + - Used in Quickshell config. +- `xdg-desktop-portal-hyprland` + - DUPLICATE +- `wl-clipboard` + - Surely needed. + +## illogical-impulse-kde +- `bluedevil` + - Seems not being used anywhere, maybe a part of KDE settings panel. +- `gnome-keyring` + - Provide executable `gnome-keyring-daemon`, used in Hyprland and Quickshell config. +- `networkmanager` + - Basic component. +- `plasma-nm` + - Seems not being used anywhere, maybe a part of KDE settings panel. +- `polkit-kde-agent` + - Basic component. +- `dolphin` + - Used in Hyprland and Quickshell config. +- `systemsettings` + - Used in Hyprland `keybinds.conf`. -Notes -- Some Hyprland-adjacent packages appear in a legacy removal list as -git variants (e.g., hypridle, hyprlock, xdg-desktop-portal-hyprland). This suggests the meta-packages likely standardized on stable repo versions now. -- Exact package lists per meta-package should be verified against the PKGBUILD files in sdata/dist-arch/*; the above is aligned with how the code uses these tools. +## illogical-impulse-portal +- `xdg-desktop-portal` + - Basic component. +- `xdg-desktop-portal-kde` + - Basic component. +- `xdg-desktop-portal-gtk` + - Basic component. +- `xdg-desktop-portal-hyprland` + - Basic component. + +## illogical-impulse-python +- `clang` + - Some python package may need this to be built, e.g. #1235. This may varies on different distros though. +- `uv` + - Used for python venv. +- `gtk4` + - Not explicitly used. +- `libadwaita` + - Not explicitly used. +- `libsoup3` + - Not explicitly used. +- `libportal-gtk4` + - Not explicitly used. +- `gobject-introspection` + - Not explicitly used. + +## illogical-impulse-screencapture +- `hyprshot` + - Used in Hyprland `keybinds.conf` as fallback. +- `slurp` + - Used in Hyprland and Quickshell config. +- `swappy` + - Used in Quickshell config. +- `tesseract` + - Used in Quickshell and Hyprland config. +- `tesseract-data-eng` + - Used as data for tesseract. +- `wf-recorder` + - Used in Quickshell config. + + +## illogical-impulse-toolkit +- `upower` + - Used in Quickshell config. +- `wtype` + - Used in Hyprland `scripts/fuzzel-emoji.sh` +- `ydotool` + - Used in Quickshell config. + +## illogical-impulse-widgets +- `fuzzel` + - Used in Hyprland and Quickshell config; its config is also included. +- `glib2` + - Provides executable `gsettings` + - Used in install script, also in matugen and quickshell config. +- `imagemagick` + - Provides executable: `magick` + - Used in Quickshell config. +- `hypridle` (DUPLICATE) +- `hyprutils` (DUPLICATE) +- `hyprlock` (DUPLICATE) +- `hyprpicker` (DUPLICATE) +- `songrec` + - Used in Quickshell config. +- `translate-shell` + - Used in Quickshell config. +- `wlogout` + - Used in Hyprland config. + + +# Actual packages +## illogical-impulse-quickshell-git +- Pinned commit. +- Also with extra dependencies (mainly Qt things) needed by the illogical-impulse Quickshell config. + +Extra dependencies. +- `qt6-base` +- `qt6-declarative` +- `qt6-5compat` +- `qt6-avif-image-plugin` +- `qt6-imageformats` +- `qt6-multimedia` +- `qt6-positioning` +- `qt6-quicktimeline` +- `qt6-sensors` +- `qt6-svg` +- `qt6-tools` +- `qt6-translations` +- `qt6-virtualkeyboard` +- `qt6-wayland` +- `kdialog` +- `syntax-highlighting` + +## illogical-impulse-bibata-modern-classic-bin +- [source](https://github.com/ful1e5/Bibata_Cursor) +- Used in Hyprland config, not necessary. +## illogical-impulse-microtex-git +- [source](https://github.com/NanoMichael/MicroTeX) +- This package will be installed as `/opt/MicroTeX`. +## illogical-impulse-oneui4-icons-git +- [source](https://github.com/end-4/OneUI4-Icons) +- Customed version of normal oneui4-icons. diff --git a/sdata/dist-nix/home-manager/home.nix b/sdata/dist-nix/home-manager/home.nix index b6ab39cbe..ac0fb5791 100644 --- a/sdata/dist-nix/home-manager/home.nix +++ b/sdata/dist-nix/home-manager/home.nix @@ -48,90 +48,87 @@ # hyprlock pamtester - # NOTE: below are migrated from dist-arch. For each package, must know why it's needed and how it's used specifically, cuz things may be need tweak to properly use the package installed by Nix, for example those have hardcoded path /usr/* . + # NOTE: below are migrated from dist-arch. For each package, must know why it's needed and how it's used specifically, cuz things may be need tweak to properly use the package installed by Nix, for example those have hardcoded path /usr/* . See sdata/deps-info.md ### illogical-impulse-audio - libcava #cava (Used in Quickshell config) - lxqt.pavucontrol-qt #pavucontrol-qt (Used in Hyprland and Quickshell config) - wireplumber #wireplumber (not explicitly used) - pipewire #pipewire-pulse (not explicitly used) - libdbusmenu-gtk3 #libdbusmenu-gtk3 (not explicitly used) - playerctl #playerctl (Used in Hyprland and Quickshell config) + libcava #cava + lxqt.pavucontrol-qt #pavucontrol-qt + wireplumber #wireplumber + pipewire #pipewire-pulse + libdbusmenu-gtk3 #libdbusmenu-gtk3 + playerctl #playerctl ### illogical-impulse-backlight - (geoclue2.override { withDemoAgent = true; }) #geoclue (which demo agent used in Quickshell config) - brightnessctl #brightnessctl (Used in Hyprland and Quickshell config) - ddcutil #ddcutil (Used in Quickshell config) + (geoclue2.override { withDemoAgent = true; }) #geoclue + brightnessctl #brightnessctl + ddcutil #ddcutil ### illogical-impulse-basic - bc #bc (Used in quickshell/ii/scripts/colors/switchwall.sh for example) - uutils-coreutils-noprefix #coreutils (Too many executables involved, not sure where been used) - cliphist #cliphist (Used in Hyprland and Quickshell config) - cmake #cmake (Used in building quickshell and MicroTeX) - curlFull #curl (Used in Quickshell config) - wget #wget (Used in Quickshell config) - ripgrep #ripgrep (Not sure where been used) - jq #jq (Widely used) - xdg-user-dirs #xdg-user-dirs (Used in Hyprland and Quickshell config) - rsync #rsync (Used in install script) - yq-go #go-yq (Used in install script) + bc #bc + uutils-coreutils-noprefix #coreutils + cliphist #cliphist + cmake #cmake + curlFull #curl + wget #wget + ripgrep #ripgrep + jq #jq + xdg-user-dirs #xdg-user-dirs + rsync #rsync + yq-go #go-yq ### illogical-impulse-bibata-modern-classic-bin - bibata-cursors #https://github.com/ful1e5/Bibata_Cursor (Used in Hyprland config, not necessary) + bibata-cursors ### illogical-impulse-fonts-themes - adw-gtk3 #adw-gtk-theme-git (https://github.com/lassekongo83/adw-gtk3) (Used in Quickshell config) - kdePackages.breeze kdePackages.breeze-icons #breeze (Used in kdeglobals config) - #breeze-plus (https://github.com/mjkim0727/breeze-plus) (TODO: Not available as nixpkg) (Used in kde-material-you-colors config) - darkly darkly-qt5 #darkly-bin (darkly is supposed to be set as the theme for Qt apps, just have not figured out how to properly set it yet.) - eza #eza (Used in Fish config: `alias ls 'eza --icons'`) - #fish (Install via system PM instead; TODO: should install via nix in future when authentication problem fixed) - fontconfig #fontconfig (Basic thing) + adw-gtk3 #adw-gtk-theme-git + kdePackages.breeze kdePackages.breeze-icons #breeze + #breeze-plus (TODO: Not available as nixpkg) + darkly darkly-qt5 #darkly-bin + eza #eza + #fish (Currently install via system PM; TODO: should install via nix in future when authentication problem fixed) + fontconfig #fontconfig kitty #kitty (Used in fuzzel, Hyprland, kdeglobals and Quickshell config; kitty config is also included as dots) matugen #matugen-bin (Used in Quickshell) - #otf-space-grotesk (https://events.ccc.de/congress/2024/infos/styleguide.html) (TODO: Not available as Nixpkg) (Used in Quickshell and matugen config) - starship #starship (Used in Fish config) - #ttf-gabarito-git (Font name: Gabarito) (Used in fuzzel and Quickshell config) (TODO: Not available as Nixpkg) - nerd-fonts.jetbrains-mono #ttf-jetbrains-mono-nerd (Font name: JetBrains Mono NF, JetBrainsMono Nerd Font) (Used in foot, kdeglobals, kitty, qt5ct, qt6ct and Quickshell config) - material-symbols #ttf-material-symbols-variable-git (Font name: Material Symbols Rounded, Material Symbols Outlined) (Used in Hyprland, matugen, Quickshell and wlogout config) - #ttf-readex-pro (Font name: Readex Pro) (Used in Quickshell config) (TODO: seems not available as nixpkg) - roboto-flex #ttf-roboto-flex (Font name: Roboto Flex) (Used in Hyprland, matugen and Quickshell config) - rubik #ttf-rubik-vf (Font name: Rubik, Rubik Light) (Used in Hyprland, kdeglobals, matugen, qt5ct, qt6ct and Quickshell config) - twemoji-color-font #ttf-twemoji (Not explicitly used, but it may help as fallback for displaying emoji charaters) + #otf-space-grotesk (TODO: Not available as Nixpkg) + starship #starship + #ttf-gabarito-git (TODO: Not available as Nixpkg) + nerd-fonts.jetbrains-mono #ttf-jetbrains-mono-nerd + material-symbols #ttf-material-symbols-variable-git + #ttf-readex-pro (TODO: seems not available as nixpkg) + roboto-flex #ttf-roboto-flex + rubik #ttf-rubik-vf + twemoji-color-font #ttf-twemoji ### illogical-impulse-hyprland - hypridle #hypridle (Used for loginctl to lock session) - #hyprland (Need NixGL, included elsewhere) + hypridle #hypridle + #hyprland #hyprlock (Should not be installed via Nix; TODO: should install via nix in future when authentication problem fixed) - hyprpicker #hyprpicker (Used in Hyprland and Quickshell config) - hyprsunset #hyprsunset (Used in Quickshell config) + hyprpicker #hyprpicker + hyprsunset #hyprsunset #xdg-desktop-portal-hyprland (DUPLICATE) - wl-clipboard #wl-clipboard (Surely needed) + wl-clipboard #wl-clipboard ### illogical-impulse-kde - kdePackages.bluedevil #bluedevil (Seems not being used anywhere, maybe a part of KDE settings panel) - #gnome-keyring #gnome-keyring (TODO: Install via system PM instead; should install via nix in future when authentication problem fixed) (Provide executable gnome-keyring-daemon, used in Hyprland and Quickshell config) + kdePackages.bluedevil #bluedevil + #gnome-keyring #gnome-keyring (TODO: Install via system PM instead; should install via nix in future when authentication problem fixed) networkmanager #networkmanager - kdePackages.plasma-nm #plasma-nm (Seems not being used anywhere, maybe a part of KDE settings panel) + kdePackages.plasma-nm #plasma-nm #polkit-kde-agent (TODO: Install via system PM instead; should install via nix in future when authentication problem fixed) - kdePackages.dolphin #dolphin (Used in Hyprland and Quickshell config) - kdePackages.systemsettings #systemsettings (Used in Hyprland keybinds.conf) + kdePackages.dolphin #dolphin + kdePackages.systemsettings #systemsettings ### illogical-impulse-microtex-git - # This package will be installed as /opt/MicroTeX - #MicroTeX#https://github.com/NanoMichael/MicroTeX # TODO: Not available as nixpkg ### illogical-impulse-oneui4-icons-git - #OneUI4-Icons#https://github.com/end-4/OneUI4-Icons - # TODO: Custom repo, need to make a package + # TODO: Customed version of normal oneui4-icons, need to make a package ### illogical-impulse-portal @@ -142,41 +139,41 @@ ### illogical-impulse-python - #clang (Some python package may need this to be built, e.g. #1235; However when cmake is installed by Nix, then pkg-config, cairo etc will be used but they can only be accessible in Nix development environment for example nix-shell, nix develop, etc. See `sdata/uv/shell.nix`. ) - uv #uv (Used for python venv) - gtk4 #gtk4 (Not explicitly used) - libadwaita #libadwaita (Not explicitly used) - libsoup_3 #libsoup3 (Not explicitly used) - libportal-gtk4 #libportal-gtk4 (Not explicitly used) - gobject-introspection #gobject-introspection (Not explicitly used) + #clang (Not needed for Nix. However, when cmake is installed by Nix, then pkg-config, cairo etc will be used but they can only be accessible in Nix development environment for example nix-shell, nix develop, etc. See `sdata/uv/shell.nix`. ) + uv #uv + gtk4 #gtk4 + libadwaita #libadwaita + libsoup_3 #libsoup3 + libportal-gtk4 #libportal-gtk4 + gobject-introspection #gobject-introspection ### illogical-impulse-screencapture - hyprshot #hyprshot (Used in Hyprland keybinds.conf as fallback) - slurp #slurp (Used in Hyprland and Quickshell config) - swappy #swappy (Used in Quickshell config) - tesseract #tesseract (Used in Quickshell and Hyprland config) - #tesseract-data-eng (Used as data for tesseract) (TODO: Seems not available as nixpkg) - wf-recorder #wf-recorder (Used in Quickshell config) + hyprshot #hyprshot + slurp #slurp + swappy #swappy + tesseract #tesseract + #tesseract-data-eng (TODO: Seems not available as nixpkg) + wf-recorder #wf-recorder ### illogical-impulse-toolkit - upower #upower (Used in Quickshell config) - wtype #wtype (Used in Hyprland scripts/fuzzel-emoji.sh) - ydotool #ydotool (Used in Quickshell config) + upower #upower + wtype #wtype + ydotool #ydotool ### illogical-impulse-widgets - fuzzel #fuzzel (Used in Hyprland and Quickshell config; its config is also included) - glib #glib2 (Provide executable gsettings) (Used in install script, also in matugen and quickshell config) - imagemagick #imagemagick (Provide executable: magick) (Used in Quickshell config) + fuzzel #fuzzel + glib #glib2 + imagemagick #imagemagick #hypridle (DUPLICATE) #hyprutils (DUPLICATE) #hyprlock (DUPLICATE) #hyprpicker (DUPLICATE) - songrec #songrec (Used in Quickshell config) - translate-shell #translate-shell (Used in Quickshell config) - wlogout #wlogout (Used in Hyprland config) + songrec #songrec + translate-shell #translate-shell + wlogout #wlogout ] ++ [ diff --git a/sdata/dist-nix/home-manager/quickshell.nix b/sdata/dist-nix/home-manager/quickshell.nix index 83601718d..823797082 100644 --- a/sdata/dist-nix/home-manager/quickshell.nix +++ b/sdata/dist-nix/home-manager/quickshell.nix @@ -40,8 +40,8 @@ in pkgs.stdenv.mkDerivation { qt6.qttranslations #qt6-translations qt6.qtvirtualkeyboard #qt6-virtualkeyboard qt6.qtwayland #qt6-wayland - kdePackages.kdialog #kdialog (Used in Quickshell config) - kdePackages.syntax-highlighting #syntax-highlighting (Used in Quickshell config) + kdePackages.kdialog #kdialog + kdePackages.syntax-highlighting #syntax-highlighting ]; installPhase = '' From ac55a66dd40c55f0f81b3205ef14af99edd8b237 Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 11 Nov 2025 10:44:29 +0800 Subject: [PATCH 056/107] Remove duplicated dependencies --- sdata/deps-info.md | 20 ++++++++----------- .../illogical-impulse-hyprland/PKGBUILD | 6 +----- .../illogical-impulse-portal/PKGBUILD | 1 - .../illogical-impulse-quickshell-git/PKGBUILD | 2 +- sdata/dist-nix/home-manager/home.nix | 11 +++------- 5 files changed, 13 insertions(+), 27 deletions(-) diff --git a/sdata/deps-info.md b/sdata/deps-info.md index 68de38c5e..475639b6e 100644 --- a/sdata/deps-info.md +++ b/sdata/deps-info.md @@ -95,18 +95,10 @@ This file contains information about the dependencies, currently it describes ab - Not explicitly used, but it may help as fallback for displaying emoji charaters. ## illogical-impulse-hyprland -- `hypridle` - - Used for loginctl to lock session. - `hyprland` - Surely needed. -- `hyprlock` - - Installed as fallback; its config is also included. -- `hyprpicker` - - Used in Hyprland and Quickshell config. - `hyprsunset` - Used in Quickshell config. -- `xdg-desktop-portal-hyprland` - - DUPLICATE - `wl-clipboard` - Surely needed. @@ -185,10 +177,12 @@ This file contains information about the dependencies, currently it describes ab - `imagemagick` - Provides executable: `magick` - Used in Quickshell config. -- `hypridle` (DUPLICATE) -- `hyprutils` (DUPLICATE) -- `hyprlock` (DUPLICATE) -- `hyprpicker` (DUPLICATE) +- `hypridle` + - Used for loginctl to lock session. +- `hyprlock` + - Installed as fallback; its config is also included. +- `hyprpicker` + - Used in Hyprland and Quickshell config. - `songrec` - Used in Quickshell config. - `translate-shell` @@ -223,9 +217,11 @@ Extra dependencies. ## illogical-impulse-bibata-modern-classic-bin - [source](https://github.com/ful1e5/Bibata_Cursor) - Used in Hyprland config, not necessary. + ## illogical-impulse-microtex-git - [source](https://github.com/NanoMichael/MicroTeX) - This package will be installed as `/opt/MicroTeX`. + ## illogical-impulse-oneui4-icons-git - [source](https://github.com/end-4/OneUI4-Icons) - Customed version of normal oneui4-icons. diff --git a/sdata/dist-arch/illogical-impulse-hyprland/PKGBUILD b/sdata/dist-arch/illogical-impulse-hyprland/PKGBUILD index b8473bb1d..84eefda3c 100644 --- a/sdata/dist-arch/illogical-impulse-hyprland/PKGBUILD +++ b/sdata/dist-arch/illogical-impulse-hyprland/PKGBUILD @@ -1,15 +1,11 @@ pkgname=illogical-impulse-hyprland pkgver=1.0 -pkgrel=2 +pkgrel=4 pkgdesc='Illogical Impulse Hyprland relatated packages' arch=(any) license=(None) depends=( - hypridle hyprland - hyprlock - hyprpicker hyprsunset - xdg-desktop-portal-hyprland wl-clipboard ) diff --git a/sdata/dist-arch/illogical-impulse-portal/PKGBUILD b/sdata/dist-arch/illogical-impulse-portal/PKGBUILD index 5e01482b7..2715a96b8 100644 --- a/sdata/dist-arch/illogical-impulse-portal/PKGBUILD +++ b/sdata/dist-arch/illogical-impulse-portal/PKGBUILD @@ -10,4 +10,3 @@ depends=( xdg-desktop-portal-gtk xdg-desktop-portal-hyprland ) - diff --git a/sdata/dist-arch/illogical-impulse-quickshell-git/PKGBUILD b/sdata/dist-arch/illogical-impulse-quickshell-git/PKGBUILD index b7909843b..c77fc5913 100644 --- a/sdata/dist-arch/illogical-impulse-quickshell-git/PKGBUILD +++ b/sdata/dist-arch/illogical-impulse-quickshell-git/PKGBUILD @@ -10,7 +10,7 @@ _pkgname=quickshell pkgname="$_prefix-$_pkgname-git" pkgver=0.1.0.r1 pkgrel=4 -pkgdesc="$_pkgname-git which version pinned for $_prefix" +pkgdesc="$_pkgname-git pinned commit and extra deps for $_prefix" arch=(x86_64 aarch64) url='https://git.outfoxxed.me/quickshell/quickshell' options=(!strip) diff --git a/sdata/dist-nix/home-manager/home.nix b/sdata/dist-nix/home-manager/home.nix index ac0fb5791..eab3e5c53 100644 --- a/sdata/dist-nix/home-manager/home.nix +++ b/sdata/dist-nix/home-manager/home.nix @@ -104,12 +104,8 @@ ### illogical-impulse-hyprland - hypridle #hypridle #hyprland - #hyprlock (Should not be installed via Nix; TODO: should install via nix in future when authentication problem fixed) - hyprpicker #hyprpicker hyprsunset #hyprsunset - #xdg-desktop-portal-hyprland (DUPLICATE) wl-clipboard #wl-clipboard @@ -167,10 +163,9 @@ fuzzel #fuzzel glib #glib2 imagemagick #imagemagick - #hypridle (DUPLICATE) - #hyprutils (DUPLICATE) - #hyprlock (DUPLICATE) - #hyprpicker (DUPLICATE) + hypridle #hypridle + #hyprlock (Should not be installed via Nix; TODO: should install via nix in future when authentication problem fixed) + hyprpicker #hyprpicker songrec #songrec translate-shell #translate-shell wlogout #wlogout From c91191f89b3a82d64ddf8fd4c004fd8ccb8274ec Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 11 Nov 2025 10:53:38 +0800 Subject: [PATCH 057/107] Remove dup dep for gentoo and fedora --- sdata/dist-fedora/install-deps.sh | 5 +++-- ....0-r2.ebuild => illogical-impulse-hyprland-1.0-r3.ebuild} | 4 ---- 2 files changed, 3 insertions(+), 6 deletions(-) rename sdata/dist-gentoo/illogical-impulse-hyprland/{illogical-impulse-hyprland-1.0-r2.ebuild => illogical-impulse-hyprland-1.0-r3.ebuild} (77%) diff --git a/sdata/dist-fedora/install-deps.sh b/sdata/dist-fedora/install-deps.sh index cf16517c0..6374d5e7e 100644 --- a/sdata/dist-fedora/install-deps.sh +++ b/sdata/dist-fedora/install-deps.sh @@ -45,8 +45,9 @@ v sudo dnf install ${themes_deps[@]} -y # Hyprland hyprland_deps=( - hypridle hyprland hyprlock hyprpicker hyprsunset - xdg-desktop-portal-hyprland wl-clipboard + hyprland + hyprsunset + wl-clipboard ) v sudo dnf install --setopt="install_weak_deps=False" "${hyprland_deps[@]}" -y # hyprland-qt-support's build deps diff --git a/sdata/dist-gentoo/illogical-impulse-hyprland/illogical-impulse-hyprland-1.0-r2.ebuild b/sdata/dist-gentoo/illogical-impulse-hyprland/illogical-impulse-hyprland-1.0-r3.ebuild similarity index 77% rename from sdata/dist-gentoo/illogical-impulse-hyprland/illogical-impulse-hyprland-1.0-r2.ebuild rename to sdata/dist-gentoo/illogical-impulse-hyprland/illogical-impulse-hyprland-1.0-r3.ebuild index 25ee3aefc..07330f63b 100644 --- a/sdata/dist-gentoo/illogical-impulse-hyprland/illogical-impulse-hyprland-1.0-r2.ebuild +++ b/sdata/dist-gentoo/illogical-impulse-hyprland/illogical-impulse-hyprland-1.0-r3.ebuild @@ -13,11 +13,7 @@ RESTRICT="strip" DEPEND="" RDEPEND=" - gui-apps/hypridle - gui-apps/hyprlock - gui-apps/hyprpicker gui-apps/hyprsunset gui-wm/hyprland - gui-libs/xdg-desktop-portal-hyprland gui-apps/wl-clipboard " From 8225a3981a6e58c57cf569168ec41fd8ae59bb9a Mon Sep 17 00:00:00 2001 From: fuggy <45698918+nonetrix@users.noreply.github.com> Date: Mon, 10 Nov 2025 22:55:57 -0600 Subject: [PATCH 058/107] Add script to restore video wallpaper on startup --- dots/.config/hypr/hyprland/execs.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/dots/.config/hypr/hyprland/execs.conf b/dots/.config/hypr/hyprland/execs.conf index 5e0e2cfa3..4bb9c86e5 100644 --- a/dots/.config/hypr/hyprland/execs.conf +++ b/dots/.config/hypr/hyprland/execs.conf @@ -1,6 +1,7 @@ # Bar, wallpaper exec-once = ~/.config/hypr/hyprland/scripts/start_geoclue_agent.sh exec-once = qs -c $qsConfig & +exec-once = ~/.config/hypr/custom/scripts/__restore_video_wallpaper.sh # Input method # exec-once = fcitx5 From de7d504160ef62ecc63a384ec57e39bcf4432d86 Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 11 Nov 2025 15:37:01 +0800 Subject: [PATCH 059/107] Tweak position of print_os_group_id_functions --- setup | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/setup b/setup index ae0a31aa2..4ea77f2c0 100755 --- a/setup +++ b/setup @@ -59,14 +59,13 @@ case $1 in *)printf "${STY_RED}Unknown subcommand \"$1\".${STY_RST}\n";showhelp_global;exit 1;; esac ##################################################################################### +if [[ -f "${SUBCMD_DIR}/options.sh" ]]; + then source "${SUBCMD_DIR}/options.sh" +fi for function in ${print_os_group_id_functions[@]}; do $function done pause - -if [[ -f "${SUBCMD_DIR}/options.sh" ]]; - then source "${SUBCMD_DIR}/options.sh" -fi case ${SUBCMD_NAME} in install) if [[ "${SKIP_ALLGREETING}" != true ]]; then From 2dfbb84b23548fff7324fd62a8845f657c27bbe9 Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 11 Nov 2025 15:48:17 +0800 Subject: [PATCH 060/107] Fix rsync hypr dir path not found --- sdata/subcmd-install/3.files-legacy.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/sdata/subcmd-install/3.files-legacy.sh b/sdata/subcmd-install/3.files-legacy.sh index 32e0c4261..b18e828ad 100644 --- a/sdata/subcmd-install/3.files-legacy.sh +++ b/sdata/subcmd-install/3.files-legacy.sh @@ -89,6 +89,7 @@ esac case $SKIP_HYPRLAND in true) sleep 0;; *) + if ! [ -d "$XDG_CONFIG_HOME"/hypr ]; then v mkdir -p "$XDG_CONFIG_HOME"/hypr ; fi warning_rsync_delete; v rsync -av --delete dots/.config/hypr/hyprland/ "$XDG_CONFIG_HOME"/hypr/hyprland/ for i in hypr{land,idle,lock}.conf {monitors,workspaces}.conf ; do copy_file_s_t "dots/.config/hypr/$i" "${XDG_CONFIG_HOME}/hypr/$i" From 1ad99b43a08c37a8d28672efe41bf065d8de09a6 Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 11 Nov 2025 16:13:41 +0800 Subject: [PATCH 061/107] Fix for nix --- dots-extra/{vianix => via-nix}/README.md | 0 dots-extra/{vianix => via-nix}/hypridle.conf | 0 sdata/dist-nix/README.md | 1 + sdata/subcmd-install/3.files-legacy.sh | 9 ++++++++- 4 files changed, 9 insertions(+), 1 deletion(-) rename dots-extra/{vianix => via-nix}/README.md (100%) rename dots-extra/{vianix => via-nix}/hypridle.conf (100%) diff --git a/dots-extra/vianix/README.md b/dots-extra/via-nix/README.md similarity index 100% rename from dots-extra/vianix/README.md rename to dots-extra/via-nix/README.md diff --git a/dots-extra/vianix/hypridle.conf b/dots-extra/via-nix/hypridle.conf similarity index 100% rename from dots-extra/vianix/hypridle.conf rename to dots-extra/via-nix/hypridle.conf diff --git a/sdata/dist-nix/README.md b/sdata/dist-nix/README.md index cc1c8dd07..3a8120e04 100644 --- a/sdata/dist-nix/README.md +++ b/sdata/dist-nix/README.md @@ -24,6 +24,7 @@ TODO: ```plain Failed to connect to user scope bus via local transport: $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR not defined (consider using --machine=@.host --user to connect to bus of other user) ``` +- [ ] Handle problem that `pkill qs` and `pkill hyprland` does not work (should be `.quickshell-wra` and `.Hyprland-wrapp` when installed via Nix). ## Attentions ### PAM diff --git a/sdata/subcmd-install/3.files-legacy.sh b/sdata/subcmd-install/3.files-legacy.sh index b18e828ad..bda6434de 100644 --- a/sdata/subcmd-install/3.files-legacy.sh +++ b/sdata/subcmd-install/3.files-legacy.sh @@ -91,9 +91,16 @@ case $SKIP_HYPRLAND in *) if ! [ -d "$XDG_CONFIG_HOME"/hypr ]; then v mkdir -p "$XDG_CONFIG_HOME"/hypr ; fi warning_rsync_delete; v rsync -av --delete dots/.config/hypr/hyprland/ "$XDG_CONFIG_HOME"/hypr/hyprland/ - for i in hypr{land,idle,lock}.conf {monitors,workspaces}.conf ; do + for i in hypr{land,lock}.conf {monitors,workspaces}.conf ; do copy_file_s_t "dots/.config/hypr/$i" "${XDG_CONFIG_HOME}/hypr/$i" done + for i in hypridle.conf ; do + if [[ ! "${INSTALL_VIA_NIX}" == true ]]; then + copy_file_s_t "dots-extra/via-nix/$i" "${XDG_CONFIG_HOME}/hypr/$i" + else + copy_file_s_t "dots/.config/hypr/$i" "${XDG_CONFIG_HOME}/hypr/$i" + fi + done if [ "$OS_GROUP_ID" = "fedora" ];then v bash -c "printf \"# For fedora to setup polkit\nexec-once = /usr/libexec/kf6/polkit-kde-authentication-agent-1\n\" >> ${XDG_CONFIG_HOME}/hypr/hyprland/execs.conf" fi From efcb826f5ce138f968d4b1081b5523b5f2011c89 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 11 Nov 2025 16:00:04 +0100 Subject: [PATCH 062/107] use more reliable kurukuru gif source --- dots/.config/quickshell/ii/modules/common/Config.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dots/.config/quickshell/ii/modules/common/Config.qml b/dots/.config/quickshell/ii/modules/common/Config.qml index 1b13540ef..b6ac5ebe4 100644 --- a/dots/.config/quickshell/ii/modules/common/Config.qml +++ b/dots/.config/quickshell/ii/modules/common/Config.qml @@ -388,7 +388,7 @@ Singleton { property bool darkenScreen: true property real clickthroughOpacity: 0.8 property JsonObject floatingImage: JsonObject { - property string imageSource: "https://cdn.discordapp.com/attachments/961693710968557598/1369635662390759434/image.gif?ex=6911cb1c&is=6910799c&hm=4450244066c0a7a6e5d2bdd195f47388eb5e7f9dd53d3931e99ad9642c638a00&" + property string imageSource: "https://media.tenor.com/H5U5bJzj3oAAAAAi/kukuru.gif" property real scale: 0.5 } } From a412688af299a4b6adf8214e9da4965549e88807 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 11 Nov 2025 20:23:09 +0100 Subject: [PATCH 063/107] add bg, taskbar items --- .../ii/assets/icons/fluent/README.md | 5 + .../ii/assets/icons/fluent/task-view-dark.svg | 128 ++++++++++++++++++ .../assets/icons/fluent/task-view-light.svg | 104 ++++++++++++++ .../ii/assets/icons/fluent/task-view.svg | 79 ----------- .../quickshell/ii/modules/common/Config.qml | 4 +- .../ii/modules/ii/dock/DockAppButton.qml | 4 +- .../ii/modules/ii/dock/DockApps.qml | 46 +------ .../waffle/background/WaffleBackground.qml | 46 +++++++ .../ii/modules/waffle/bar/TaskAppButton.qml | 17 +++ .../ii/modules/waffle/bar/TaskViewButton.qml | 1 + .../ii/modules/waffle/bar/Tasks.qml | 34 +++++ .../ii/modules/waffle/bar/WaffleBar.qml | 2 +- .../modules/waffle/bar/WaffleBarContent.qml | 1 + .../ii/modules/waffle/bar/WidgetsButton.qml | 15 ++ .../quickshell/ii/services/TaskbarApps.qml | 60 ++++++++ dots/.config/quickshell/ii/shell.qml | 4 +- 16 files changed, 424 insertions(+), 126 deletions(-) create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/README.md create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/task-view-dark.svg create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/task-view-light.svg delete mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/task-view.svg create mode 100644 dots/.config/quickshell/ii/modules/waffle/background/WaffleBackground.qml create mode 100644 dots/.config/quickshell/ii/modules/waffle/bar/TaskAppButton.qml create mode 100644 dots/.config/quickshell/ii/modules/waffle/bar/Tasks.qml create mode 100644 dots/.config/quickshell/ii/services/TaskbarApps.qml diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/README.md b/dots/.config/quickshell/ii/assets/icons/fluent/README.md new file mode 100644 index 000000000..5f4d3eaa2 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/README.md @@ -0,0 +1,5 @@ +The "search" and "task view" icons are from here, with modifications + +https://www.figma.com/community/file/1123040825921884189/windows-11 + +License: CC BY 4.0 diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/task-view-dark.svg b/dots/.config/quickshell/ii/assets/icons/fluent/task-view-dark.svg new file mode 100644 index 000000000..d38c927c8 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/task-view-dark.svg @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/task-view-light.svg b/dots/.config/quickshell/ii/assets/icons/fluent/task-view-light.svg new file mode 100644 index 000000000..1f37c4aa4 --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/task-view-light.svg @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/task-view.svg b/dots/.config/quickshell/ii/assets/icons/fluent/task-view.svg deleted file mode 100644 index 4323e8421..000000000 --- a/dots/.config/quickshell/ii/assets/icons/fluent/task-view.svg +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/dots/.config/quickshell/ii/modules/common/Config.qml b/dots/.config/quickshell/ii/modules/common/Config.qml index 2ac21aa40..a724c043d 100644 --- a/dots/.config/quickshell/ii/modules/common/Config.qml +++ b/dots/.config/quickshell/ii/modules/common/Config.qml @@ -389,7 +389,7 @@ Singleton { property bool darkenScreen: true property real clickthroughOpacity: 0.8 property JsonObject floatingImage: JsonObject { - property string imageSource: "https://cdn.discordapp.com/attachments/961693710968557598/1369635662390759434/image.gif?ex=6911cb1c&is=6910799c&hm=4450244066c0a7a6e5d2bdd195f47388eb5e7f9dd53d3931e99ad9642c638a00&" + property string imageSource: "https://media.tenor.com/H5U5bJzj3oAAAAAi/kukuru.gif" property real scale: 0.5 } } @@ -561,7 +561,7 @@ Singleton { property JsonObject waffles: JsonObject { property JsonObject bar: JsonObject { property bool bottom: true - property bool leftAlignApps: true + property bool leftAlignApps: false } } } diff --git a/dots/.config/quickshell/ii/modules/ii/dock/DockAppButton.qml b/dots/.config/quickshell/ii/modules/ii/dock/DockAppButton.qml index 406eb3f57..41ed8cd07 100644 --- a/dots/.config/quickshell/ii/modules/ii/dock/DockAppButton.qml +++ b/dots/.config/quickshell/ii/modules/ii/dock/DockAppButton.qml @@ -17,8 +17,8 @@ DockButton { property real countDotHeight: 4 property bool appIsActive: appToplevel.toplevels.find(t => (t.activated == true)) !== undefined - property bool isSeparator: appToplevel.appId === "SEPARATOR" - property var desktopEntry: DesktopEntries.heuristicLookup(appToplevel.appId) + readonly property bool isSeparator: appToplevel.appId === "SEPARATOR" + readonly property var desktopEntry: DesktopEntries.heuristicLookup(appToplevel.appId) enabled: !isSeparator implicitWidth: isSeparator ? 1 : implicitHeight - topInset - bottomInset diff --git a/dots/.config/quickshell/ii/modules/ii/dock/DockApps.qml b/dots/.config/quickshell/ii/modules/ii/dock/DockApps.qml index 2bba6553a..d575b7dd4 100644 --- a/dots/.config/quickshell/ii/modules/ii/dock/DockApps.qml +++ b/dots/.config/quickshell/ii/modules/ii/dock/DockApps.qml @@ -1,6 +1,3 @@ -import qs.modules.common -import qs.modules.common.widgets -import qs.modules.common.functions import Qt5Compat.GraphicalEffects import QtQuick import QtQuick.Controls @@ -8,6 +5,10 @@ import QtQuick.Layouts import Quickshell import Quickshell.Widgets import Quickshell.Wayland +import qs.services +import qs.modules.common +import qs.modules.common.widgets +import qs.modules.common.functions Item { id: root @@ -40,44 +41,7 @@ Item { model: ScriptModel { objectProp: "appId" - values: { - var map = new Map(); - - // Pinned apps - const pinnedApps = Config.options?.dock.pinnedApps ?? []; - for (const appId of pinnedApps) { - if (!map.has(appId.toLowerCase())) map.set(appId.toLowerCase(), ({ - pinned: true, - toplevels: [] - })); - } - - // Separator - if (pinnedApps.length > 0) { - map.set("SEPARATOR", { pinned: false, toplevels: [] }); - } - - // Ignored apps - const ignoredRegexStrings = Config.options?.dock.ignoredAppRegexes ?? []; - const ignoredRegexes = ignoredRegexStrings.map(pattern => new RegExp(pattern, "i")); - // Open windows - for (const toplevel of ToplevelManager.toplevels.values) { - if (ignoredRegexes.some(re => re.test(toplevel.appId))) continue; - if (!map.has(toplevel.appId.toLowerCase())) map.set(toplevel.appId.toLowerCase(), ({ - pinned: false, - toplevels: [] - })); - map.get(toplevel.appId.toLowerCase()).toplevels.push(toplevel); - } - - var values = []; - - for (const [key, value] of map) { - values.push({ appId: key, toplevels: value.toplevels, pinned: value.pinned }); - } - - return values; - } + values: TaskbarApps.apps } delegate: DockAppButton { required property var modelData diff --git a/dots/.config/quickshell/ii/modules/waffle/background/WaffleBackground.qml b/dots/.config/quickshell/ii/modules/waffle/background/WaffleBackground.qml new file mode 100644 index 000000000..caaff1707 --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/background/WaffleBackground.qml @@ -0,0 +1,46 @@ +pragma ComponentBehavior: Bound + +import qs +import qs.services +import qs.modules.common +import qs.modules.common.widgets +import qs.modules.common.widgets.widgetCanvas +import QtQuick +import QtQuick.Layouts +import Qt5Compat.GraphicalEffects +import Quickshell +import Quickshell.Io +import Quickshell.Wayland +import Quickshell.Hyprland + +import qs.modules.ii.background.widgets +import qs.modules.ii.background.widgets.clock +import qs.modules.ii.background.widgets.weather + +Variants { + id: root + model: Quickshell.screens + + PanelWindow { + id: panelRoot + required property var modelData + + screen: modelData + exclusionMode: ExclusionMode.Ignore + WlrLayershell.layer: WlrLayer.Bottom + WlrLayershell.namespace: "quickshell:background" + anchors { + top: true + bottom: true + left: true + right: true + } + color: "transparent" + + StyledImage { + anchors.fill: parent + source: Config.options.background.wallpaperPath + fillMode: Image.PreserveAspectCrop + } + } +} diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/TaskAppButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/TaskAppButton.qml new file mode 100644 index 000000000..241796f0f --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/bar/TaskAppButton.qml @@ -0,0 +1,17 @@ +import QtQuick +import QtQuick.Layouts +import qs.services +import qs.modules.common +import qs.modules.waffle.looks + +AppButton { + id: root + + required property var toplevel + readonly property bool isSeparator: toplevel.appId === "SEPARATOR" + readonly property var desktopEntry: DesktopEntries.heuristicLookup(toplevel.appId) + + Layout.fillHeight: true + + iconName: toplevel.appId +} diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/TaskViewButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/TaskViewButton.qml index 1239fed6f..c3a4853f0 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/TaskViewButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/TaskViewButton.qml @@ -10,6 +10,7 @@ AppButton { id: root iconName: "task-view" + separateLightDark: true checked: GlobalStates.overviewOpen onClicked: { diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/Tasks.qml b/dots/.config/quickshell/ii/modules/waffle/bar/Tasks.qml new file mode 100644 index 000000000..ba8944999 --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/bar/Tasks.qml @@ -0,0 +1,34 @@ +import QtQuick +import QtQuick.Layouts +import Quickshell +import qs.services +import qs.modules.common +import qs.modules.waffle.looks + +Item { + id: root + + Layout.fillHeight: true + implicitHeight: row.implicitHeight + implicitWidth: row.implicitWidth + + // Apps row + RowLayout { + id: row + anchors.fill: parent + spacing: 4 + + Repeater { + model: ScriptModel { + objectProp: "appId" + values: TaskbarApps.apps.filter(app => app.appId !== "SEPARATOR") + } + delegate: TaskAppButton { + required property var modelData + toplevel: modelData + } + } + } + + // TODO: Previews popup +} diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBar.qml b/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBar.qml index 5c19c661f..aa5f51f68 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBar.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBar.qml @@ -23,7 +23,7 @@ Scope { screen: modelData exclusionMode: ExclusionMode.Ignore exclusiveZone: implicitHeight - WlrLayershell.namespace: "quickshell:wBar" + WlrLayershell.namespace: "quickshell:bar" anchors { left: true diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml b/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml index 989904e2f..1a9763616 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml @@ -57,6 +57,7 @@ Rectangle { StartButton {} SearchButton {} TaskViewButton {} + Tasks {} } BarGroupRow { diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/WidgetsButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/WidgetsButton.qml index 94c194686..840f63c7a 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/WidgetsButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/WidgetsButton.qml @@ -1,6 +1,7 @@ import QtQuick import QtQuick.Layouts import org.kde.kirigami as Kirigami +import qs import qs.services import qs.modules.common import qs.modules.waffle.looks @@ -13,6 +14,11 @@ AppButton { implicitWidth: expandedForm ? 148 : (height - topInset - bottomInset + leftInset + rightInset) iconName: "widgets" + checked: GlobalStates.sidebarLeftOpen + onClicked: { + GlobalStates.sidebarLeftOpen = !GlobalStates.sidebarLeftOpen + } + contentItem: Item { anchors { verticalCenter: parent.verticalCenter @@ -29,11 +35,20 @@ AppButton { horizontalCenter: root.expandedForm ? undefined : parent.horizontalCenter margins: 8 } + spacing: 6 AppIcon { id: iconWidget + anchors.verticalCenter: parent.verticalCenter iconName: root.iconName } + + Column { + anchors.verticalCenter: parent.verticalCenter + WText { + text: Translation.tr("Widgets") + } + } } } } diff --git a/dots/.config/quickshell/ii/services/TaskbarApps.qml b/dots/.config/quickshell/ii/services/TaskbarApps.qml new file mode 100644 index 000000000..0b5818b71 --- /dev/null +++ b/dots/.config/quickshell/ii/services/TaskbarApps.qml @@ -0,0 +1,60 @@ +pragma Singleton + +import qs.modules.common +import QtQuick +import Quickshell +import Quickshell.Wayland + +Singleton { + id: root + + property list apps: { + var map = new Map(); + + // Pinned apps + const pinnedApps = Config.options?.dock.pinnedApps ?? []; + for (const appId of pinnedApps) { + if (!map.has(appId.toLowerCase())) map.set(appId.toLowerCase(), ({ + pinned: true, + toplevels: [] + })); + } + + // Separator + if (pinnedApps.length > 0) { + map.set("SEPARATOR", { pinned: false, toplevels: [] }); + } + + // Ignored apps + const ignoredRegexStrings = Config.options?.dock.ignoredAppRegexes ?? []; + const ignoredRegexes = ignoredRegexStrings.map(pattern => new RegExp(pattern, "i")); + // Open windows + for (const toplevel of ToplevelManager.toplevels.values) { + if (ignoredRegexes.some(re => re.test(toplevel.appId))) continue; + if (!map.has(toplevel.appId.toLowerCase())) map.set(toplevel.appId.toLowerCase(), ({ + pinned: false, + toplevels: [] + })); + map.get(toplevel.appId.toLowerCase()).toplevels.push(toplevel); + } + + var values = []; + + for (const [key, value] of map) { + values.push(appEntryComp.createObject(null, { appId: key, toplevels: value.toplevels, pinned: value.pinned })); + } + + return values; + } + + component TaskbarAppEntry: QtObject { + id: wrapper + required property string appId + required property list toplevels + required property bool pinned + } + Component { + id: appEntryComp + TaskbarAppEntry {} + } +} diff --git a/dots/.config/quickshell/ii/shell.qml b/dots/.config/quickshell/ii/shell.qml index a23c84cca..dc0a9509f 100644 --- a/dots/.config/quickshell/ii/shell.qml +++ b/dots/.config/quickshell/ii/shell.qml @@ -28,6 +28,7 @@ import qs.modules.ii.overlay import qs.modules.ii.verticalBar import qs.modules.ii.wallpaperSelector +import qs.modules.waffle.background import qs.modules.waffle.bar import QtQuick @@ -74,6 +75,7 @@ ShellRoot { PanelLoader { identifier: "iiVerticalBar"; extraCondition: Config.options.bar.vertical; component: VerticalBar {} } PanelLoader { identifier: "iiWallpaperSelector"; component: WallpaperSelector {} } PanelLoader { identifier: "wBar"; component: WaffleBar {} } + PanelLoader { identifier: "wBackground"; component: WaffleBackground {} } component PanelLoader: LazyLoader { required property string identifier @@ -85,7 +87,7 @@ ShellRoot { property list families: ["ii", "waffle"] property var panelFamilies: ({ "ii": ["iiBar", "iiBackground", "iiCheatsheet", "iiDock", "iiLock", "iiMediaControls", "iiNotificationPopup", "iiOnScreenDisplay", "iiOnScreenKeyboard", "iiOverlay", "iiOverview", "iiPolkit", "iiRegionSelector", "iiReloadPopup", "iiScreenCorners", "iiSessionScreen", "iiSidebarLeft", "iiSidebarRight", "iiVerticalBar", "iiWallpaperSelector"], - "waffle": ["wBar", "iiBackground", "iiCheatsheet", "iiDock", "iiLock", "iiMediaControls", "iiNotificationPopup", "iiOnScreenDisplay", "iiOnScreenKeyboard", "iiOverlay", "iiOverview", "iiPolkit", "iiRegionSelector", "iiReloadPopup", "iiScreenCorners", "iiSessionScreen", "iiSidebarLeft", "iiSidebarRight", "iiWallpaperSelector"], + "waffle": ["wBar", "wBackground", "iiCheatsheet", "iiDock", "iiLock", "iiMediaControls", "iiNotificationPopup", "iiOnScreenDisplay", "iiOnScreenKeyboard", "iiOverlay", "iiOverview", "iiPolkit", "iiRegionSelector", "iiReloadPopup", "iiScreenCorners", "iiSessionScreen", "iiSidebarLeft", "iiSidebarRight", "iiWallpaperSelector"], }) function cyclePanelFamily() { const currentIndex = families.indexOf(Config.options.panelFamily) From 20e1f0e0bb79cc796035e38558ea0aa09df7f93a Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Wed, 12 Nov 2025 00:09:22 +0100 Subject: [PATCH 064/107] taskbar: window previews --- .../ii/assets/icons/fluent/dismiss.svg | 1 + .../ii/modules/waffle/bar/AppButton.qml | 13 +- .../ii/modules/waffle/bar/AppIcon.qml | 8 +- .../ii/modules/waffle/bar/BarButton.qml | 55 +------ .../ii/modules/waffle/bar/TaskAppButton.qml | 18 ++- .../ii/modules/waffle/bar/TaskPreview.qml | 128 +++++++++++++++++ .../ii/modules/waffle/bar/Tasks.qml | 19 ++- .../modules/waffle/bar/WaffleBarContent.qml | 1 - .../ii/modules/waffle/bar/WindowPreview.qml | 135 ++++++++++++++++++ .../modules/waffle/looks/AcrylicRectangle.qml | 63 ++++++++ .../ii/modules/waffle/looks/Looks.qml | 25 ++-- .../quickshell/ii/services/AppSearch.qml | 2 +- 12 files changed, 390 insertions(+), 78 deletions(-) create mode 100644 dots/.config/quickshell/ii/assets/icons/fluent/dismiss.svg create mode 100644 dots/.config/quickshell/ii/modules/waffle/bar/TaskPreview.qml create mode 100644 dots/.config/quickshell/ii/modules/waffle/bar/WindowPreview.qml create mode 100644 dots/.config/quickshell/ii/modules/waffle/looks/AcrylicRectangle.qml diff --git a/dots/.config/quickshell/ii/assets/icons/fluent/dismiss.svg b/dots/.config/quickshell/ii/assets/icons/fluent/dismiss.svg new file mode 100644 index 000000000..3cb3656dc --- /dev/null +++ b/dots/.config/quickshell/ii/assets/icons/fluent/dismiss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/AppButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/AppButton.qml index 017d8f931..90d0cc007 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/AppButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/AppButton.qml @@ -10,8 +10,16 @@ BarButton { required property string iconName property bool separateLightDark: false + leftInset: 2 + rightInset: 2 implicitWidth: height - topInset - bottomInset + leftInset + rightInset + onDownChanged: { + scaleAnim.duration = root.down ? 150 : 200 + scaleAnim.easing.bezierCurve = root.down ? Looks.transition.easing.bezierCurve.easeIn : Looks.transition.easing.bezierCurve.easeOut + contentItem.scale = root.down ? 5/6 : 1 // If/When we do dragging, the scale is 1.25 + } + contentItem: Item { id: contentItem anchors.centerIn: root.background @@ -19,12 +27,10 @@ BarButton { implicitHeight: iconWidget.implicitHeight implicitWidth: iconWidget.implicitWidth - scale: root.down ? 5/6 : 1 // If/When we do dragging, the scale is 1.25 Behavior on scale { NumberAnimation { - duration: 90 + id: scaleAnim easing.type: Easing.BezierSpline - easing.bezierCurve: root.down ? Looks.transition.easing.bezierCurve.easeIn : Looks.transition.easing.bezierCurve.easeOut } } @@ -32,6 +38,7 @@ BarButton { id: iconWidget anchors.centerIn: parent iconName: root.iconName + separateLightDark: root.separateLightDark } } } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/AppIcon.qml b/dots/.config/quickshell/ii/modules/waffle/bar/AppIcon.qml index 02c1da144..fc5c75426 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/AppIcon.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/AppIcon.qml @@ -5,11 +5,13 @@ import qs.modules.common import qs.modules.waffle.looks Kirigami.Icon { - id: iconWidget + id: root required property string iconName + property bool separateLightDark: false - implicitWidth: 26 - implicitHeight: 26 + property real implicitSize: 26 + implicitWidth: implicitSize + implicitHeight: implicitSize roundToIconSize: false source: `${Looks.iconsPath}/${root.iconName}${!root.separateLightDark ? "" : Looks.dark ? "-dark" : "-light"}.svg` fallback: root.iconName diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/BarButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/BarButton.qml index 20929b1e6..52e5164aa 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/BarButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/BarButton.qml @@ -11,17 +11,9 @@ Button { Layout.fillHeight: true topInset: 4 bottomInset: 4 - - property color borderColor: ColorUtils.transparentize(Looks.colors.bg1Border, ((root.hovered && !root.down) || root.checked) ? Looks.fluentContentTransparency : 1) - Behavior on borderColor { - animation: Looks.transition.color.createObject(this) - } - onBorderColorChanged: { - borderCanvas.requestPaint(); - } - background: Rectangle { - id: background + background: AcrylicRectangle { + shiny: ((root.hovered && !root.down) || root.checked) color: { if (root.down) { return Looks.colors.bg1Active @@ -31,48 +23,5 @@ Button { return ColorUtils.transparentize(Looks.colors.bg1) } } - radius: Looks.radius.medium - Behavior on color { - animation: Looks.transition.color.createObject(this) - } - - // Top 1px border with color - Canvas { - id: borderCanvas - anchors.fill: parent - onPaint: { - var ctx = getContext("2d"); - ctx.clearRect(0, 0, width, height); - - var borderColor = root.borderColor; - - var r = background.radius; - var fadeLength = Math.max(1, r); - var fadeLengthPercent = fadeLength / width; - - // Compute normalized stops - var leftFadeStop = fadeLengthPercent; - var rightFadeStop = 1 - fadeLengthPercent; - - var grad = ctx.createLinearGradient(0, 0, width, 0); - grad.addColorStop(0, Qt.rgba(borderColor.r, borderColor.g, borderColor.b, 0)); - grad.addColorStop(leftFadeStop, borderColor); - grad.addColorStop(rightFadeStop, borderColor); - grad.addColorStop(1, Qt.rgba(borderColor.r, borderColor.g, borderColor.b, 0)); - - ctx.strokeStyle = grad; - ctx.lineWidth = 1; - - ctx.beginPath(); - ctx.moveTo(r, 0.5); - ctx.lineTo(width - r, 0.5); - // Top-right curve - ctx.arcTo(width, 0.5, width, r + 0.5, r); - // Top-left curve - ctx.moveTo(width - r, 0.5); - ctx.arcTo(0, 0.5, 0, r + 0.5, r); - ctx.stroke(); - } - } } } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/TaskAppButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/TaskAppButton.qml index 241796f0f..7363b0387 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/TaskAppButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/TaskAppButton.qml @@ -3,15 +3,23 @@ import QtQuick.Layouts import qs.services import qs.modules.common import qs.modules.waffle.looks +import Quickshell AppButton { id: root - required property var toplevel - readonly property bool isSeparator: toplevel.appId === "SEPARATOR" - readonly property var desktopEntry: DesktopEntries.heuristicLookup(toplevel.appId) + required property var appEntry + readonly property bool isSeparator: appEntry.appId === "SEPARATOR" + readonly property var desktopEntry: DesktopEntries.heuristicLookup(appEntry.appId) - Layout.fillHeight: true + signal hoverPreviewRequested() - iconName: toplevel.appId + iconName: AppSearch.guessIcon(appEntry.appId) + Timer { + running: root.hovered + interval: 250 + onTriggered: { + root.hoverPreviewRequested() + } + } } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/TaskPreview.qml b/dots/.config/quickshell/ii/modules/waffle/bar/TaskPreview.qml new file mode 100644 index 000000000..3c03563a3 --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/bar/TaskPreview.qml @@ -0,0 +1,128 @@ +import QtQuick +import QtQuick.Layouts +import Qt5Compat.GraphicalEffects +import qs.services +import qs.modules.common +import qs.modules.common.functions +import qs.modules.waffle.looks +import Quickshell + +PopupWindow { + id: root + + ///////////////////// Properties //////////////////// + required property bool tasksHovered + property var appEntry + property Item anchorItem + + //////////////////// Functions //////////////////// + function close() { + marginBehavior.enabled = false; + root.visible = false; + } + + function open() { + marginBehavior.enabled = true; + root.visible = true; + } + + function show(appEntry: var, button: Item) { + root.appEntry = appEntry; + root.anchorItem = button; + root.anchor.updateAnchor(); + root.open(); + } + + ///////////////////// Internals ///////////////////// + readonly property bool bottom: Config.options.waffles.bar.bottom + property real visualMargin: 12 + property alias ambientShadowWidth: ambientShadow.border.width + + visible: false + color: "transparent" + implicitWidth: contentItem.implicitWidth + ambientShadowWidth + (visualMargin * 2) + implicitHeight: contentItem.implicitHeight + ambientShadowWidth + (visualMargin * 2) + anchor { + adjustment: PopupAdjustment.Slide + item: root.anchorItem + gravity: bottom ? Edges.Top : Edges.Bottom + edges: bottom ? Edges.Top : Edges.Bottom + } + + Timer { + interval: 250 + running: root.visible && !hoverChecker.containsMouse && !root.tasksHovered + onTriggered: { + root.close(); + } + } + + // Content + MouseArea { + id: hoverChecker + anchors.fill: parent + hoverEnabled: true + + // Shadow + Rectangle { + id: ambientShadow + anchors { + fill: contentItem + margins: -border.width + } + border.color: ColorUtils.transparentize(Looks.colors.bg0Border, Looks.contentTransparency) + border.width: 1 + color: "transparent" + radius: Looks.radius.large + border.width + } + + Rectangle { + id: contentItem + property real sourceEdgeMargin: root.visible ? (root.ambientShadowWidth + root.visualMargin) : -root.implicitHeight + Behavior on sourceEdgeMargin { + id: marginBehavior + animation: Looks.transition.enter.createObject(this) + } + anchors { + left: parent.left + right: parent.right + top: root.bottom ? undefined : parent.top + bottom: root.bottom ? parent.bottom : undefined + margins: root.ambientShadowWidth + root.visualMargin + // Opening anim + bottomMargin: root.bottom ? sourceEdgeMargin : (root.ambientShadowWidth + root.visualMargin) + topMargin: root.bottom ? (root.ambientShadowWidth + root.visualMargin) : sourceEdgeMargin + } + color: Looks.colors.bg1 + radius: Looks.radius.large + + layer.enabled: true + layer.effect: OpacityMask { + maskSource: Rectangle { + width: contentItem.width + height: contentItem.height + radius: contentItem.radius + } + } + + // Testing + implicitHeight: Math.min(158, windowsRow.implicitHeight) + implicitWidth: windowsRow.implicitWidth + + RowLayout { + id: windowsRow + anchors.fill: parent + + Repeater { + model: ScriptModel { + values: root.appEntry?.toplevels ?? [] + } + delegate: WindowPreview { + required property var modelData + toplevel: modelData + } + } + } + } + } +} diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/Tasks.qml b/dots/.config/quickshell/ii/modules/waffle/bar/Tasks.qml index ba8944999..eac963722 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/Tasks.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/Tasks.qml @@ -5,30 +5,41 @@ import qs.services import qs.modules.common import qs.modules.waffle.looks -Item { +MouseArea { id: root Layout.fillHeight: true implicitHeight: row.implicitHeight implicitWidth: row.implicitWidth + hoverEnabled: true // Apps row RowLayout { id: row anchors.fill: parent - spacing: 4 + spacing: 0 Repeater { + // TODO: Include only apps (and windows) in current workspace only model: ScriptModel { objectProp: "appId" values: TaskbarApps.apps.filter(app => app.appId !== "SEPARATOR") } delegate: TaskAppButton { required property var modelData - toplevel: modelData + appEntry: modelData + + onHoverPreviewRequested: { + previewPopup.show(appEntry, this) + } } } } - // TODO: Previews popup + // Previews popup + TaskPreview { + id: previewPopup + tasksHovered: root.containsMouse + anchor.window: root.QsWindow.window + } } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml b/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml index 1a9763616..5228abb5c 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml @@ -36,7 +36,6 @@ Rectangle { BarGroupRow { id: appsRow - spacing: 4 anchors.left: undefined anchors.horizontalCenter: parent.horizontalCenter diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/WindowPreview.qml b/dots/.config/quickshell/ii/modules/waffle/bar/WindowPreview.qml new file mode 100644 index 000000000..b1944c350 --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/bar/WindowPreview.qml @@ -0,0 +1,135 @@ +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import Qt5Compat.GraphicalEffects +import qs.services +import qs.modules.common +import qs.modules.common.functions +import qs.modules.waffle.looks +import Quickshell +import Quickshell.Wayland + +Button { + id: root + + required property var toplevel + property real previewWidthConstraint: 200 + property real previewHeightConstraint: 110 + padding: 5 + Layout.fillHeight: true + + onClicked: { + root.toplevel.activate(); // TODO: make this work with those who disable focus on activate because telegram is abusive + } + + background: Rectangle { + id: background + radius: Looks.radius.medium + color: root.down ? Looks.colors.bg2Active : (root.hovered ? Looks.colors.bg2Hover : ColorUtils.transparentize(Looks.colors.bg2)) + Behavior on color { + animation: Looks.transition.color.createObject(this) + } + } + + contentItem: ColumnLayout { + id: contentItem + anchors.fill: parent + anchors.margins: root.padding + spacing: 5 + + RowLayout { + Layout.fillWidth: true + Layout.fillHeight: false + spacing: 8 + + AppIcon { + id: appIcon + Layout.leftMargin: Looks.radius.large - root.padding + 2 + Layout.alignment: Qt.AlignVCenter + iconName: AppSearch.guessIcon(root.toplevel.appId) + implicitSize: 16 + } + + Item { + id: appTitleContainer + Layout.fillWidth: true + Layout.fillHeight: true + implicitHeight: closeButton.implicitHeight // Enforce height, because closeButton doesn't contribute when it's invisible + WText { + id: appTitleText + anchors.fill: parent + text: root.toplevel.title + elide: Text.ElideRight + font.pixelSize: Looks.font.pixelSize.large + font.weight: Looks.font.weight.thin + color: Looks.colors.fg1 + } + } + + CloseButton { + id: closeButton + } + } + + Item { + Layout.fillWidth: true + Layout.fillHeight: true + Layout.margins: Looks.radius.large - root.padding + Layout.topMargin: 0 + implicitWidth: Math.max(screencopyView.implicitWidth, 80) + implicitHeight: screencopyView.implicitHeight + + ScreencopyView { + id: screencopyView + anchors.centerIn: parent + captureSource: root.toplevel + live: true + paintCursor: true + constraintSize: Qt.size(root.previewWidthConstraint, root.previewHeightConstraint) + } + } + } + + component CloseButton: Button { + id: reusableCloseButton + visible: root.hovered + Layout.leftMargin: 4 + implicitHeight: 30 + implicitWidth: 30 + onClicked: { + root.toplevel.close(); + } + + Rectangle { + z: 0 + color: "transparent" + anchors.fill: closeButtonBg + anchors.margins: -1 + opacity: closeButtonBg.opacity + border.width: 1 + radius: closeButtonBg.radius + 1 + border.color: Looks.colors.bg2Border + } + + background: Rectangle { + id: closeButtonBg + z: 1 + opacity: reusableCloseButton.hovered ? 1 : 0 + radius: Looks.radius.large - root.padding + color: reusableCloseButton.pressed ? Looks.colors.dangerActive : Looks.colors.danger + Behavior on opacity { + animation: Looks.transition.opacity.createObject(this) + } + Behavior on color { + animation: Looks.transition.color.createObject(this) + } + } + + contentItem: FluentIcon { + z: 2 + anchors.centerIn: parent + icon: "dismiss" + implicitSize: 10 + } + } +} diff --git a/dots/.config/quickshell/ii/modules/waffle/looks/AcrylicRectangle.qml b/dots/.config/quickshell/ii/modules/waffle/looks/AcrylicRectangle.qml new file mode 100644 index 000000000..3720d6186 --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/looks/AcrylicRectangle.qml @@ -0,0 +1,63 @@ +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import qs.modules.common +import qs.modules.common.functions +import qs.modules.waffle.looks + +Rectangle { + id: root + + property bool shiny: true // Top border + property color borderColor: ColorUtils.transparentize(Looks.colors.bg1Border, shiny ? Looks.contentTransparency : 1) + color: Looks.colors.bg1Hover + radius: Looks.radius.medium + Behavior on color { + animation: Looks.transition.color.createObject(this) + } + Behavior on borderColor { + animation: Looks.transition.color.createObject(this) + } + onBorderColorChanged: { + borderCanvas.requestPaint(); + } + + // Top 1px border with color + Canvas { + id: borderCanvas + anchors.fill: parent + onPaint: { + var ctx = getContext("2d"); + ctx.clearRect(0, 0, width, height); + + var borderColor = root.borderColor; + + var r = root.radius; + var fadeLength = Math.max(1, r); + var fadeLengthPercent = fadeLength / width; + + // Compute normalized stops + var leftFadeStop = fadeLengthPercent; + var rightFadeStop = 1 - fadeLengthPercent; + + var grad = ctx.createLinearGradient(0, 0, width, 0); + grad.addColorStop(0, Qt.rgba(borderColor.r, borderColor.g, borderColor.b, 0)); + grad.addColorStop(leftFadeStop, borderColor); + grad.addColorStop(rightFadeStop, borderColor); + grad.addColorStop(1, Qt.rgba(borderColor.r, borderColor.g, borderColor.b, 0)); + + ctx.strokeStyle = grad; + ctx.lineWidth = 1; + + ctx.beginPath(); + ctx.moveTo(r, 0.5); + ctx.lineTo(width - r, 0.5); + // Top-right curve + ctx.arcTo(width, 0.5, width, r + 0.5, r); + // Top-left curve + ctx.moveTo(width - r, 0.5); + ctx.arcTo(0, 0.5, 0, r + 0.5, r); + ctx.stroke(); + } + } +} diff --git a/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml b/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml index ea225f093..df7df8187 100644 --- a/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml +++ b/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml @@ -15,17 +15,24 @@ Singleton { property string iconsPath: `${Directories.assetsPath}/icons/fluent` property bool dark: Appearance.m3colors.darkmode - property real fluentBackgroundTransparency: 0.17 - property real fluentContentTransparency: 0.3 + property real backgroundTransparency: 0.17 + property real contentTransparency: 0.25 colors: QtObject { id: colors property color bg0: root.dark ? "#1C1C1C" : "#EEEEEE" property color bg0Border: root.dark ? "#404040" : "#BEBEBE" - property color bg1: root.dark ? "#2E2E2E" : "#F7F7F7" + property color bg1: root.dark ? "#2C2C2C" : "#F7F7F7" property color bg1Hover: root.dark ? "#292929" : "#F7F7F7" property color bg1Active: root.dark ? "#252525" : "#F3F3F3" property color bg1Border: root.dark ? "#333333" : "#E9E9E9" + property color bg2: root.dark ? "#313131" : "#FBFBFB" + property color bg2Hover: root.dark ? "#383838" : "#FDFDFD" + property color bg2Active: root.dark ? "#333333" : "#FDFDFD" + property color bg2Border: root.dark ? "#464646" : "#EEEEEE" property color fg: root.dark ? "#FFFFFF" : "#000000" + property color fg1: root.dark ? "#D1D1D1" : "#626262" + property color danger: "#C42B1C" + property color dangerActive: "#B62D1F" property color brand: Appearance.m3colors.m3primary } @@ -44,12 +51,14 @@ Singleton { property string ui: "Noto Sans" } property QtObject weight: QtObject { // Noto is not Segoe, so we might use slightly different weights + property int thin: Font.Normal property int regular: Font.Medium property int strong: Font.DemiBold property int stronger: Font.Bold } property QtObject pixelSize: QtObject { property real normal: 11 + property real large: 15 } } @@ -57,15 +66,15 @@ Singleton { id: transition property QtObject easing: QtObject { property QtObject bezierCurve: QtObject { - readonly property list easeInOut: [0.42,0.00,0.58,1.00] - readonly property list easeIn: [0,1,1,1] - readonly property list easeOut: [1,0,1,1] + readonly property list easeInOut: [0.42,0.00,0.58,1.00,1,1] + readonly property list easeIn: [0,1,1,1,1,1] + readonly property list easeOut: [1,0,1,1,1,1] } } property Component color: Component { ColorAnimation { - duration: 80 + duration: 120 easing.type: Easing.BezierSpline easing.bezierCurve: transition.easing.bezierCurve.easeIn } @@ -73,7 +82,7 @@ Singleton { property Component opacity: Component { NumberAnimation{ - duration: 80 + duration: 120 easing.type: Easing.BezierSpline easing.bezierCurve: transition.easing.bezierCurve.easeIn } diff --git a/dots/.config/quickshell/ii/services/AppSearch.qml b/dots/.config/quickshell/ii/services/AppSearch.qml index 196e1bed3..7d8c375a6 100644 --- a/dots/.config/quickshell/ii/services/AppSearch.qml +++ b/dots/.config/quickshell/ii/services/AppSearch.qml @@ -151,6 +151,6 @@ Singleton { // Give up - return str; + return "application-x-executable"; } } From 20cae142d7e34fd36b8b4d8cfdfce078e4bf4602 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Wed, 12 Nov 2025 00:16:32 +0100 Subject: [PATCH 065/107] fix widget button when on the left --- dots/.config/quickshell/ii/modules/waffle/bar/WidgetsButton.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/WidgetsButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/WidgetsButton.qml index 840f63c7a..7107cfafd 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/WidgetsButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/WidgetsButton.qml @@ -44,6 +44,7 @@ AppButton { } Column { + visible: root.expandedForm anchors.verticalCenter: parent.verticalCenter WText { text: Translation.tr("Widgets") From f2cd533ae9f99296f64550494e3587cd67f3c363 Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 12 Nov 2025 17:11:14 +0800 Subject: [PATCH 066/107] Add subcmd virtmon (WIP) --- sdata/subcmd-virtmon/0.run.sh | 13 +++++++++++++ sdata/subcmd-virtmon/options.sh | 33 +++++++++++++++++++++++++++++++++ setup | 3 ++- 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 sdata/subcmd-virtmon/0.run.sh create mode 100644 sdata/subcmd-virtmon/options.sh diff --git a/sdata/subcmd-virtmon/0.run.sh b/sdata/subcmd-virtmon/0.run.sh new file mode 100644 index 000000000..efcd53b21 --- /dev/null +++ b/sdata/subcmd-virtmon/0.run.sh @@ -0,0 +1,13 @@ +# This script is meant to be sourced. +# It's not for directly running. + +# shellcheck shell=bash + +readarray -t vmon < <(hyprctl -j monitors all | jq -r '.[] | select(.name | test("^HEADLESS-")) | .name') + +if [ "${#vmon[@]}" -gt 0 ]; then + printf '%s\n' "${vmon[@]}" +else + echo "no headless monitors found" >&2 + exit 1 +fi diff --git a/sdata/subcmd-virtmon/options.sh b/sdata/subcmd-virtmon/options.sh new file mode 100644 index 000000000..be001ea39 --- /dev/null +++ b/sdata/subcmd-virtmon/options.sh @@ -0,0 +1,33 @@ +# Handle args for subcmd: checkdeps +# shellcheck shell=bash + +showhelp(){ +echo -e "Syntax: $0 virtmon [OPTIONS] + +Create virtual monitor for testing multi-monitors. + +Options: + -h, --help Show this help message +" +} +# `man getopt` to see more +para=$(getopt \ + -o h \ + -l help \ + -n "$0" -- "$@") +[ $? != 0 ] && echo "$0: Error when getopt, please recheck parameters." && exit 1 +##################################################################################### +eval set -- "$para" +while true ; do + case "$1" in + -h|--help) showhelp;exit;; + --) shift;break ;; + *) sleep 0 ;; + esac +done + +#if [[ -f "$1" ]]; then +# echo "Using list file \"$1\".";LIST_FILE_PATH="$1";shift 1 +#else +# echo "Wrong path \"$1\" of list file.";exit 1 +#fi diff --git a/setup b/setup index 4ea77f2c0..662abdca0 100755 --- a/setup +++ b/setup @@ -34,6 +34,7 @@ Subcommands: exp-update-old (Experimental) exp-update but use behaves like old version. checkdeps (For dev only) Check whether pkgs exist in AUR or repos of Arch. + virtmon (For dev only, WIP) Create virtual monitors for testing multi-monitors. help Show this help message. For each , use -h for details: @@ -46,7 +47,7 @@ case $1 in # Global help ""|help|--help|-h)showhelp_global;exit;; # Correct subcommand - install|exp-uninstall|exp-update|exp-update-old|checkdeps) + install|exp-uninstall|exp-update|exp-update-old|checkdeps|virtmon) SUBCMD_NAME=$1 SUBCMD_DIR=./sdata/subcmd-$1 shift;; From 3f8c62a81bc6288fd4ba92da15598d0e7f2c4a76 Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 12 Nov 2025 17:14:41 +0800 Subject: [PATCH 067/107] Improve print_os_group_id_functions location --- setup | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/setup b/setup index 662abdca0..3ba693aea 100755 --- a/setup +++ b/setup @@ -63,12 +63,12 @@ esac if [[ -f "${SUBCMD_DIR}/options.sh" ]]; then source "${SUBCMD_DIR}/options.sh" fi -for function in ${print_os_group_id_functions[@]}; do - $function -done -pause case ${SUBCMD_NAME} in install) + for function in ${print_os_group_id_functions[@]}; do + $function + done + pause if [[ "${SKIP_ALLGREETING}" != true ]]; then source ${SUBCMD_DIR}/0.greeting.sh fi @@ -83,16 +83,28 @@ case ${SUBCMD_NAME} in fi ;; install-deps) + for function in ${print_os_group_id_functions[@]}; do + $function + done + pause if [[ "${SKIP_ALLDEPS}" != true ]]; then source ${SUBCMD_DIR}/1.deps-router.sh fi ;; install-setups) + for function in ${print_os_group_id_functions[@]}; do + $function + done + pause if [[ "${SKIP_ALLSETUPS}" != true ]]; then source ${SUBCMD_DIR}/2.setups.sh fi ;; install-files) + for function in ${print_os_group_id_functions[@]}; do + $function + done + pause if [[ "${SKIP_ALLFILES}" != true ]]; then source ${SUBCMD_DIR}/3.files.sh fi From a250675b5c0ea4144bf84d8c8877ce6bbb2d6b33 Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 12 Nov 2025 17:37:28 +0800 Subject: [PATCH 068/107] Update virtmon --- sdata/subcmd-virtmon/0.run.sh | 29 ++++++++++++++++++++++++----- sdata/subcmd-virtmon/options.sh | 14 ++++++++++++-- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/sdata/subcmd-virtmon/0.run.sh b/sdata/subcmd-virtmon/0.run.sh index efcd53b21..ea22c1643 100644 --- a/sdata/subcmd-virtmon/0.run.sh +++ b/sdata/subcmd-virtmon/0.run.sh @@ -3,11 +3,30 @@ # shellcheck shell=bash -readarray -t vmon < <(hyprctl -j monitors all | jq -r '.[] | select(.name | test("^HEADLESS-")) | .name') +readarray -t vmons < <(hyprctl -j monitors all | jq -r '.[] | select(.name | test("^HEADLESS-")) | .name') -if [ "${#vmon[@]}" -gt 0 ]; then - printf '%s\n' "${vmon[@]}" +if [ "${#vmons[@]}" -gt 0 ]; then + echo "headless monitors found:" + printf '%s\n' "${vmons[@]}" + if [[ ! "${KEEP_VIRTUAL_MONITORS}" = true ]]; then + echo "Cleaning..." + for i in "${vmons[@]}"; do + x hyprctl output remove "$i" + done + fi else - echo "no headless monitors found" >&2 - exit 1 + echo "No headless monitors found." fi + +echo "Creating headless monitor..." +readarray -t vmons_old < <(hyprctl -j monitors all | jq -r '.[] | select(.name | test("^HEADLESS-")) | .name') +x hyprctl output create headless +readarray -t vmons_new < <(hyprctl -j monitors all | jq -r '.[] | select(.name | test("^HEADLESS-")) | .name') +#echo "Setting geometry..." +#${vmon_new} + +echo "Using wayvnc to share monitor..." +wayvnc -o=${vmon_new} --log-level=trace 0.0.0.0 5901 + +echo "Cleaning the new headless monitor..." +x hyprctl output remove "${vmon_new}" diff --git a/sdata/subcmd-virtmon/options.sh b/sdata/subcmd-virtmon/options.sh index be001ea39..d1e25219a 100644 --- a/sdata/subcmd-virtmon/options.sh +++ b/sdata/subcmd-virtmon/options.sh @@ -8,12 +8,13 @@ Create virtual monitor for testing multi-monitors. Options: -h, --help Show this help message + -k, --keep Do not remove virtual monitors " } # `man getopt` to see more para=$(getopt \ - -o h \ - -l help \ + -o hk \ + -l help,keep \ -n "$0" -- "$@") [ $? != 0 ] && echo "$0: Error when getopt, please recheck parameters." && exit 1 ##################################################################################### @@ -26,6 +27,15 @@ while true ; do esac done +eval set -- "$para" +while true ; do + case "$1" in + -k|--keep) KEEP_VIRTUAL_MONITORS=true;shift;; + --) shift;break ;; + *) sleep 0 ;; + esac +done + #if [[ -f "$1" ]]; then # echo "Using list file \"$1\".";LIST_FILE_PATH="$1";shift 1 #else From 7c590bd5d80be265ec7196ce202152ecd0a892f5 Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 12 Nov 2025 17:42:34 +0800 Subject: [PATCH 069/107] Update virtmon --- sdata/subcmd-virtmon/0.run.sh | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/sdata/subcmd-virtmon/0.run.sh b/sdata/subcmd-virtmon/0.run.sh index ea22c1643..f66312204 100644 --- a/sdata/subcmd-virtmon/0.run.sh +++ b/sdata/subcmd-virtmon/0.run.sh @@ -22,11 +22,32 @@ echo "Creating headless monitor..." readarray -t vmons_old < <(hyprctl -j monitors all | jq -r '.[] | select(.name | test("^HEADLESS-")) | .name') x hyprctl output create headless readarray -t vmons_new < <(hyprctl -j monitors all | jq -r '.[] | select(.name | test("^HEADLESS-")) | .name') +declare -A seen +for e in "${vmons_old[@]}"; do + seen["$e"]=1 +done +deltas=() +for e in "${vmons_new[@]}"; do + if [[ -z "${seen[$e]+_}" ]]; then + deltas+=("$e") + fi +done +if (( ${#deltas[@]} == 1 )); then + vmon_tester="${deltas[0]}" + echo "New virtual monitor found: $vmons_tester" +elif (( ${#deltas[@]} == 0 )); then + echo "Error: No new virtual monitor found" + exit 1 +else + echo "Error: multiple new virtual monitor found: ${deltas[*]}" + exit 1 +fi #echo "Setting geometry..." #${vmon_new} echo "Using wayvnc to share monitor..." -wayvnc -o=${vmon_new} --log-level=trace 0.0.0.0 5901 +# TODO: handle port properly +wayvnc -o=${vmon_tester} --log-level=trace 0.0.0.0 5901 echo "Cleaning the new headless monitor..." -x hyprctl output remove "${vmon_new}" +x hyprctl output remove "${vmon_tester}" From 155a11734fff8e7453dfedf3fec3f0b5516c2fa0 Mon Sep 17 00:00:00 2001 From: "Celestial.y" Date: Wed, 12 Nov 2025 17:49:34 +0800 Subject: [PATCH 070/107] Fix for nix (fix #2452) --- sdata/subcmd-install/3.files-legacy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdata/subcmd-install/3.files-legacy.sh b/sdata/subcmd-install/3.files-legacy.sh index bda6434de..c4a755728 100644 --- a/sdata/subcmd-install/3.files-legacy.sh +++ b/sdata/subcmd-install/3.files-legacy.sh @@ -95,7 +95,7 @@ case $SKIP_HYPRLAND in copy_file_s_t "dots/.config/hypr/$i" "${XDG_CONFIG_HOME}/hypr/$i" done for i in hypridle.conf ; do - if [[ ! "${INSTALL_VIA_NIX}" == true ]]; then + if [[ "${INSTALL_VIA_NIX}" == true ]]; then copy_file_s_t "dots-extra/via-nix/$i" "${XDG_CONFIG_HOME}/hypr/$i" else copy_file_s_t "dots/.config/hypr/$i" "${XDG_CONFIG_HOME}/hypr/$i" From 9162c24ccd18b8103f2dd56f5074311d389ae969 Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 12 Nov 2025 18:36:43 +0800 Subject: [PATCH 071/107] Handle vnc port --- sdata/subcmd-virtmon/0.run.sh | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/sdata/subcmd-virtmon/0.run.sh b/sdata/subcmd-virtmon/0.run.sh index f66312204..0e729f8ee 100644 --- a/sdata/subcmd-virtmon/0.run.sh +++ b/sdata/subcmd-virtmon/0.run.sh @@ -45,9 +45,17 @@ fi #echo "Setting geometry..." #${vmon_new} -echo "Using wayvnc to share monitor..." -# TODO: handle port properly -wayvnc -o=${vmon_tester} --log-level=trace 0.0.0.0 5901 +echo "Using wayvnc to share monitor $vmons_tester..." +for port in {5900..5999}; do + if ! lsof -nP -iTCP:"$port" -sTCP:LISTEN -t >/dev/null 2>&1; then + vnc_port="$port" + break + fi +done +if [ -z "$vnc_port" ];then + echo "No available port for vnc server, aborting..."; exit 1 +fi +wayvnc -S -o=${vmon_tester} --log-level=trace 0.0.0.0 $vnc_port echo "Cleaning the new headless monitor..." x hyprctl output remove "${vmon_tester}" From 56c07a514ff46cbd15be624293a9bcc830cadc67 Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 12 Nov 2025 18:55:33 +0800 Subject: [PATCH 072/107] Improve virtmon --- sdata/dist-nix/install-deps.sh | 57 +-------------------------------- sdata/lib/functions.sh | 57 +++++++++++++++++++++++++++++++++ sdata/subcmd-virtmon/0.run.sh | 22 +++++++++---- sdata/subcmd-virtmon/options.sh | 12 +++---- 4 files changed, 78 insertions(+), 70 deletions(-) diff --git a/sdata/dist-nix/install-deps.sh b/sdata/dist-nix/install-deps.sh index 37a9dadd7..357bb498f 100644 --- a/sdata/dist-nix/install-deps.sh +++ b/sdata/dist-nix/install-deps.sh @@ -11,51 +11,6 @@ function vianix-warning(){ printf "${STY_RST}" pause } -function install_cmds(){ - case $OS_GROUP_ID in - "arch") - local pkgs=() - for cmd in "$@";do - # For package name which is not cmd name, use "case" syntax to replace - pkgs+=($cmd) - done - x sudo pacman -Syu - x sudo pacman -S --noconfirm --needed "${pkgs[@]}" - ;; - "debian") - local pkgs=() - for cmd in "$@";do - # For package name which is not cmd name, use "case" syntax to replace - pkgs+=($cmd) - done - x sudo apt update -y - x sudo apt install -y "${pkgs[@]}" - ;; - "fedora") - local pkgs=() - for cmd in "$@";do - # For package name which is not cmd name, use "case" syntax to replace - pkgs+=($cmd) - done - x sudo dnf install -y "${pkgs[@]}" - ;; - "suse") - local pkgs=() - for cmd in "$@";do - # For package name which is not cmd name, use "case" syntax to replace - pkgs+=($cmd) - done - x sudo zypper refresh - x sudo zypper -n install "${pkgs[@]}" - ;; - *) - printf "WARNING\n" - printf "No method found to install package providing the commands:\n" - printf " $@\n" - printf "Please install by yourself.\n" - ;; - esac -} function install_nix(){ # https://github.com/NixOS/experimental-nix-installer local cmd=nix @@ -110,18 +65,8 @@ function hm_deps(){ vianix-warning -NOT_FOUND_CMDS=() TEST_CMDS=(curl fish swaylock gnome-keyring) -for cmd in "${TEST_CMDS[@]}"; do - if ! command -v $cmd >/dev/null 2>&1;then - NOT_FOUND_CMDS+=($cmd) - fi -done -if [[ ${#NOT_FOUND_CMDS[@]} -gt 0 ]]; then - echo -e "${STY_YELLOW}[$0]: Not found: ${NOT_FOUND_CMDS[*]}.${STY_RST}" - showfun install_cmds - v install_cmds "${NOT_FOUND_CMDS[@]}" -fi +ensure_cmds "${TEST_CMDS[@]}" if ! command -v nix >/dev/null 2>&1;then echo -e "${STY_YELLOW}[$0]: \"nix\" not found.${STY_RST}" diff --git a/sdata/lib/functions.sh b/sdata/lib/functions.sh index a2455c2a2..28e97ae3d 100644 --- a/sdata/lib/functions.sh +++ b/sdata/lib/functions.sh @@ -344,3 +344,60 @@ function backup_clashing_targets(){ x mkdir -p $backup_dir x rsync -av --progress "${args_includes[@]}" "$target_dir/" "$backup_dir/" } +function install_cmds(){ + case $OS_GROUP_ID in + "arch") + local pkgs=() + for cmd in "$@";do + # For package name which is not cmd name, use "case" syntax to replace + pkgs+=($cmd) + done + v sudo pacman -Syu + v sudo pacman -S --noconfirm --needed "${pkgs[@]}" + ;; + "debian") + local pkgs=() + for cmd in "$@";do + # For package name which is not cmd name, use "case" syntax to replace + pkgs+=($cmd) + done + v sudo apt update -y + v sudo apt install -y "${pkgs[@]}" + ;; + "fedora") + local pkgs=() + for cmd in "$@";do + # For package name which is not cmd name, use "case" syntax to replace + pkgs+=($cmd) + done + v sudo dnf install -y "${pkgs[@]}" + ;; + "suse") + local pkgs=() + for cmd in "$@";do + # For package name which is not cmd name, use "case" syntax to replace + pkgs+=($cmd) + done + v sudo zypper refresh + v sudo zypper -n install "${pkgs[@]}" + ;; + *) + printf "WARNING\n" + printf "No method found to install package providing the commands:\n" + printf " $@\n" + printf "Please install by yourself.\n" + ;; + esac +} +function ensure_cmds(){ + local not_found_cmds=() + for cmd in "$@"; do + if ! command -v $cmd >/dev/null 2>&1;then + not_found_cmds+=($cmd) + fi + done + if [[ ${#not_found_cmds[@]} -gt 0 ]]; then + echo -e "${STY_YELLOW}[$0]: Not found: ${not_found_cmds[*]}.${STY_RST}" + install_cmds "${not_found_cmds[@]}" + fi +} diff --git a/sdata/subcmd-virtmon/0.run.sh b/sdata/subcmd-virtmon/0.run.sh index 0e729f8ee..57ebf9dc7 100644 --- a/sdata/subcmd-virtmon/0.run.sh +++ b/sdata/subcmd-virtmon/0.run.sh @@ -5,6 +5,15 @@ readarray -t vmons < <(hyprctl -j monitors all | jq -r '.[] | select(.name | test("^HEADLESS-")) | .name') +ensure_cmds wayvnc lsof jq + +if [[ "${CLEAN_VIRTUAL_MONITORS}" = true ]]; then + echo "Cleaning virtual monitors..." + for i in "${vmons[@]}"; do + x hyprctl output remove "$i" + done + exit 0 +fi if [ "${#vmons[@]}" -gt 0 ]; then echo "headless monitors found:" printf '%s\n' "${vmons[@]}" @@ -18,7 +27,7 @@ else echo "No headless monitors found." fi -echo "Creating headless monitor..." +echo "Creating tester monitor..." readarray -t vmons_old < <(hyprctl -j monitors all | jq -r '.[] | select(.name | test("^HEADLESS-")) | .name') x hyprctl output create headless readarray -t vmons_new < <(hyprctl -j monitors all | jq -r '.[] | select(.name | test("^HEADLESS-")) | .name') @@ -34,12 +43,12 @@ for e in "${vmons_new[@]}"; do done if (( ${#deltas[@]} == 1 )); then vmon_tester="${deltas[0]}" - echo "New virtual monitor found: $vmons_tester" + echo "tester monitor found: $vmons_tester" elif (( ${#deltas[@]} == 0 )); then - echo "Error: No new virtual monitor found" + echo "Error: No tester monitor found" exit 1 else - echo "Error: multiple new virtual monitor found: ${deltas[*]}" + echo "Error: multiple tester monitor found: ${deltas[*]}" exit 1 fi #echo "Setting geometry..." @@ -52,10 +61,11 @@ for port in {5900..5999}; do break fi done +# TODO: Allow running in background and implement --stop to stop it if [ -z "$vnc_port" ];then echo "No available port for vnc server, aborting..."; exit 1 fi wayvnc -S -o=${vmon_tester} --log-level=trace 0.0.0.0 $vnc_port -echo "Cleaning the new headless monitor..." -x hyprctl output remove "${vmon_tester}" +echo "Cleaning the tester monitor..." +hyprctl output remove "${vmon_tester}" diff --git a/sdata/subcmd-virtmon/options.sh b/sdata/subcmd-virtmon/options.sh index d1e25219a..485abbb6c 100644 --- a/sdata/subcmd-virtmon/options.sh +++ b/sdata/subcmd-virtmon/options.sh @@ -8,13 +8,14 @@ Create virtual monitor for testing multi-monitors. Options: -h, --help Show this help message + -c, --clean Clean all virtual monitors and exit -k, --keep Do not remove virtual monitors " } # `man getopt` to see more para=$(getopt \ - -o hk \ - -l help,keep \ + -o hck \ + -l help,clean,keep \ -n "$0" -- "$@") [ $? != 0 ] && echo "$0: Error when getopt, please recheck parameters." && exit 1 ##################################################################################### @@ -30,14 +31,9 @@ done eval set -- "$para" while true ; do case "$1" in + -c|--clean) CLEAN_VIRTUAL_MONITORS=true;shift;; -k|--keep) KEEP_VIRTUAL_MONITORS=true;shift;; --) shift;break ;; *) sleep 0 ;; esac done - -#if [[ -f "$1" ]]; then -# echo "Using list file \"$1\".";LIST_FILE_PATH="$1";shift 1 -#else -# echo "Wrong path \"$1\" of list file.";exit 1 -#fi From ca261d931d0617a0ccda8f61890799d55c72b4e5 Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 12 Nov 2025 18:57:34 +0800 Subject: [PATCH 073/107] Update comment --- sdata/subcmd-virtmon/0.run.sh | 3 ++- setup | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/sdata/subcmd-virtmon/0.run.sh b/sdata/subcmd-virtmon/0.run.sh index 57ebf9dc7..70cd3e0b4 100644 --- a/sdata/subcmd-virtmon/0.run.sh +++ b/sdata/subcmd-virtmon/0.run.sh @@ -51,8 +51,9 @@ else echo "Error: multiple tester monitor found: ${deltas[*]}" exit 1 fi +# TODO: Implement setting geometry #echo "Setting geometry..." -#${vmon_new} +#${vmon_tester} echo "Using wayvnc to share monitor $vmons_tester..." for port in {5900..5999}; do diff --git a/setup b/setup index 3ba693aea..81cb11675 100755 --- a/setup +++ b/setup @@ -34,7 +34,7 @@ Subcommands: exp-update-old (Experimental) exp-update but use behaves like old version. checkdeps (For dev only) Check whether pkgs exist in AUR or repos of Arch. - virtmon (For dev only, WIP) Create virtual monitors for testing multi-monitors. + virtmon (For dev only) Create virtual monitors for testing multi-monitors. help Show this help message. For each , use -h for details: From 318d80de38649fa6f26c1a4baedf0849ef11f33f Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 12 Nov 2025 21:07:21 +0800 Subject: [PATCH 074/107] Update subcmd virtmon --- sdata/lib/functions.sh | 20 +++++-- sdata/subcmd-virtmon/0.run.sh | 95 ++++++++++++++++----------------- sdata/subcmd-virtmon/options.sh | 36 ++++++++++--- 3 files changed, 91 insertions(+), 60 deletions(-) diff --git a/sdata/lib/functions.sh b/sdata/lib/functions.sh index 28e97ae3d..96ddb7eb4 100644 --- a/sdata/lib/functions.sh +++ b/sdata/lib/functions.sh @@ -350,7 +350,10 @@ function install_cmds(){ local pkgs=() for cmd in "$@";do # For package name which is not cmd name, use "case" syntax to replace - pkgs+=($cmd) + case $cmd in + ip) pkgs+=(iproute2);; + *) pkgs+=($cmd) ;; + esac done v sudo pacman -Syu v sudo pacman -S --noconfirm --needed "${pkgs[@]}" @@ -359,7 +362,10 @@ function install_cmds(){ local pkgs=() for cmd in "$@";do # For package name which is not cmd name, use "case" syntax to replace - pkgs+=($cmd) + case $cmd in + ip) pkgs+=(iproute2);; + *) pkgs+=($cmd) ;; + esac done v sudo apt update -y v sudo apt install -y "${pkgs[@]}" @@ -368,7 +374,10 @@ function install_cmds(){ local pkgs=() for cmd in "$@";do # For package name which is not cmd name, use "case" syntax to replace - pkgs+=($cmd) + case $cmd in + ip) pkgs+=(iproute);; + *) pkgs+=($cmd) ;; + esac done v sudo dnf install -y "${pkgs[@]}" ;; @@ -376,7 +385,10 @@ function install_cmds(){ local pkgs=() for cmd in "$@";do # For package name which is not cmd name, use "case" syntax to replace - pkgs+=($cmd) + case $cmd in + ip) pkgs+=(iproute2);; + *) pkgs+=($cmd) ;; + esac done v sudo zypper refresh v sudo zypper -n install "${pkgs[@]}" diff --git a/sdata/subcmd-virtmon/0.run.sh b/sdata/subcmd-virtmon/0.run.sh index 70cd3e0b4..446978e62 100644 --- a/sdata/subcmd-virtmon/0.run.sh +++ b/sdata/subcmd-virtmon/0.run.sh @@ -3,70 +3,67 @@ # shellcheck shell=bash -readarray -t vmons < <(hyprctl -j monitors all | jq -r '.[] | select(.name | test("^HEADLESS-")) | .name') +ensure_cmds wayvnc lsof jq ip -ensure_cmds wayvnc lsof jq +readarray -t vmon_ids < <(hyprctl -j monitors all | jq -r '.[] | select(.name | test("^TESTER-")) | .name | sub("^TESTER-"; "")') -if [[ "${CLEAN_VIRTUAL_MONITORS}" = true ]]; then - echo "Cleaning virtual monitors..." - for i in "${vmons[@]}"; do +if [[ "${CLEAN_TESTER_MONITORS}" = true ]]; then + echo "Cleaning tester monitors..." + for i in "TESTER-${vmon_ids[@]}"; do x hyprctl output remove "$i" done + echo "Cleaning tester wayvnc sessions..." + for tester_socket in /tmp/wayvncctl_tester_* ; do + x wayvncctl --socket=$tester_socket -r wayvnc-exit + done + echo "Cleaning complete, exit..." exit 0 fi -if [ "${#vmons[@]}" -gt 0 ]; then - echo "headless monitors found:" - printf '%s\n' "${vmons[@]}" - if [[ ! "${KEEP_VIRTUAL_MONITORS}" = true ]]; then - echo "Cleaning..." - for i in "${vmons[@]}"; do - x hyprctl output remove "$i" - done - fi -else - echo "No headless monitors found." -fi -echo "Creating tester monitor..." -readarray -t vmons_old < <(hyprctl -j monitors all | jq -r '.[] | select(.name | test("^HEADLESS-")) | .name') -x hyprctl output create headless -readarray -t vmons_new < <(hyprctl -j monitors all | jq -r '.[] | select(.name | test("^HEADLESS-")) | .name') -declare -A seen -for e in "${vmons_old[@]}"; do - seen["$e"]=1 -done -deltas=() -for e in "${vmons_new[@]}"; do - if [[ -z "${seen[$e]+_}" ]]; then - deltas+=("$e") - fi -done -if (( ${#deltas[@]} == 1 )); then - vmon_tester="${deltas[0]}" - echo "tester monitor found: $vmons_tester" -elif (( ${#deltas[@]} == 0 )); then - echo "Error: No tester monitor found" - exit 1 -else - echo "Error: multiple tester monitor found: ${deltas[*]}" - exit 1 -fi -# TODO: Implement setting geometry -#echo "Setting geometry..." -#${vmon_tester} -echo "Using wayvnc to share monitor $vmons_tester..." +echo "Finding an unused port..." for port in {5900..5999}; do if ! lsof -nP -iTCP:"$port" -sTCP:LISTEN -t >/dev/null 2>&1; then vnc_port="$port" break fi done -# TODO: Allow running in background and implement --stop to stop it if [ -z "$vnc_port" ];then echo "No available port for vnc server, aborting..."; exit 1 fi -wayvnc -S -o=${vmon_tester} --log-level=trace 0.0.0.0 $vnc_port +# The name of tester_socket can be anything, the following just borrows $vnc_port as ID +tester_socket=/tmp/wayvncctl_tester_$vnc_port +# In case this exists for some reason +try rm $tester_socket +vmon_tester=TESTER-$vnc_port;break -echo "Cleaning the tester monitor..." -hyprctl output remove "${vmon_tester}" +echo "Creating tester monitor..." +x hyprctl output create headless ${vmon_tester} + +echo "Setting geometry..." +x hyprctl keyword monitor ${vmon_tester},${VMON_RESOLUTION}@${VMON_FPS},${VMON_POSITION},${VMON_SCALE}${VMON_EXTRA} + +echo "=========================================" +echo "Use a VNC client to connect to the virtual monitor." +echo " Port: $vnc_port" +echo " IP: choose a suitable one from below:" +ip -o addr show up | grep -v -E 'docker|veth|virbr' | awk '{split($4,a,"/"); print $2"\t"a[1]}' +echo "The status of the virtual monitor:" +echo " Resolution: ${VMON_RESOLUTION}" +echo " Frame rate: ${VMON_FPS}" +echo "Hint:" +echo " The VNC client will ask you about server address," +echo " either joined as : or separately." +echo " As for username and password, just leave them as empty." +echo "=========================================" +echo "Launching wayvnc..." + +if [ "$RUNNING_IN_BACKGROUND" = true ];then + nohup wayvnc --socket=$tester_socket -f=${VMON_FPS} -o=${vmon_tester} --log-level=${WAYVNC_LOGLEVEL} 0.0.0.0 $vnc_port > $(mktemp) 2>&1 & + disown +else + echo "wayvnc now running, press Ctrl-C to quit." + wayvnc --socket=$tester_socket -f=${VMON_FPS} -o=${vmon_tester} --log-level=${WAYVNC_LOGLEVEL} 0.0.0.0 $vnc_port + echo "wayvnc stopped. Cleaning..." + hyprctl output remove "${vmon_tester}" +fi diff --git a/sdata/subcmd-virtmon/options.sh b/sdata/subcmd-virtmon/options.sh index 485abbb6c..6fd721617 100644 --- a/sdata/subcmd-virtmon/options.sh +++ b/sdata/subcmd-virtmon/options.sh @@ -1,21 +1,38 @@ # Handle args for subcmd: checkdeps # shellcheck shell=bash +VMON_RESOLUTION=1920x1080 +VMON_FPS=60 +VMON_POSITION=auto +VMON_SCALE=1 +VMON_EXTRA="" +WAYVNC_LOGLEVEL=${WAYVNC_LOGLEVEL:-quiet} + showhelp(){ echo -e "Syntax: $0 virtmon [OPTIONS] Create virtual monitor for testing multi-monitors. +Note: + The virtual monitor will be served via wayvnc. + You need a VNC client to connect to it. + Options: - -h, --help Show this help message - -c, --clean Clean all virtual monitors and exit - -k, --keep Do not remove virtual monitors + -h, --help Show this help message and exit + -c, --clean Clean all tester monitors and wayvnc sessions and exit + + -d, --daemon Running in background + --res Resolution, by default $VMON_RESOLUTION + --fps Refresh rate and FPS, by default $VMON_FPS + --pos Position, by default $VMON_POSITION + --sca Scale, by default $VMON_SCALE + --ext Extra args, e.g. \"transform, 1\" " } # `man getopt` to see more para=$(getopt \ - -o hck \ - -l help,clean,keep \ + -o hcd \ + -l help,clean,daemon,res:,fps:,pos:,sca:,ext: \ -n "$0" -- "$@") [ $? != 0 ] && echo "$0: Error when getopt, please recheck parameters." && exit 1 ##################################################################################### @@ -31,8 +48,13 @@ done eval set -- "$para" while true ; do case "$1" in - -c|--clean) CLEAN_VIRTUAL_MONITORS=true;shift;; - -k|--keep) KEEP_VIRTUAL_MONITORS=true;shift;; + -c|--clean) CLEAN_TESTER_MONITORS=true;shift;; + -d|--daemon) RUNNING_IN_BACKGROUND=true;shift;; + --res) VMON_RESOLUTION="$2";shift 2;; + --fps) VMON_FPS="$2";shift 2;; + --pos) VMON_POSITION="$2";shift 2;; + --sca) VMON_SCALE="$2";shift 2;; + --ext) VMON_EXTRA=", $2";shift 2;; --) shift;break ;; *) sleep 0 ;; esac From 9997fdce0c8d35094b3e6acd5f3d65f63c960628 Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 12 Nov 2025 21:25:25 +0800 Subject: [PATCH 075/107] Add subcmd resetfirstrun --- sdata/lib/environment-variables.sh | 2 +- sdata/lib/functions.sh | 2 ++ sdata/subcmd-install/3.files-legacy.sh | 1 - sdata/subcmd-resetfirstrun/0.run.sh | 6 ++++++ sdata/subcmd-resetfirstrun/options.sh | 27 ++++++++++++++++++++++++++ setup | 3 ++- 6 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 sdata/subcmd-resetfirstrun/0.run.sh create mode 100644 sdata/subcmd-resetfirstrun/options.sh diff --git a/sdata/lib/environment-variables.sh b/sdata/lib/environment-variables.sh index 71ca6d023..5344be4c7 100644 --- a/sdata/lib/environment-variables.sh +++ b/sdata/lib/environment-variables.sh @@ -26,4 +26,4 @@ STY_RST='\e[00m' # Used by register_temp_file() declare -a TEMP_FILES_TO_CLEANUP=() - +FIRSTRUN_FILE="${XDG_CACHE_HOME}/.ii-qs-installed" diff --git a/sdata/lib/functions.sh b/sdata/lib/functions.sh index 96ddb7eb4..54d4c3b73 100644 --- a/sdata/lib/functions.sh +++ b/sdata/lib/functions.sh @@ -344,6 +344,7 @@ function backup_clashing_targets(){ x mkdir -p $backup_dir x rsync -av --progress "${args_includes[@]}" "$target_dir/" "$backup_dir/" } + function install_cmds(){ case $OS_GROUP_ID in "arch") @@ -401,6 +402,7 @@ function install_cmds(){ ;; esac } + function ensure_cmds(){ local not_found_cmds=() for cmd in "$@"; do diff --git a/sdata/subcmd-install/3.files-legacy.sh b/sdata/subcmd-install/3.files-legacy.sh index c4a755728..aab67d03c 100644 --- a/sdata/subcmd-install/3.files-legacy.sh +++ b/sdata/subcmd-install/3.files-legacy.sh @@ -35,7 +35,6 @@ function copy_dir_s_t(){ ##################################################################################### # In case some dirs does not exists v mkdir -p $XDG_BIN_HOME $XDG_CACHE_HOME $XDG_CONFIG_HOME $XDG_DATA_HOME/icons -firstrun_file="${XDG_CACHE_HOME}/.ii-qs-installed" if test -f "${firstrun_file}"; then firstrun=false else diff --git a/sdata/subcmd-resetfirstrun/0.run.sh b/sdata/subcmd-resetfirstrun/0.run.sh new file mode 100644 index 000000000..b81f642f4 --- /dev/null +++ b/sdata/subcmd-resetfirstrun/0.run.sh @@ -0,0 +1,6 @@ +# This script is meant to be sourced. +# It's not for directly running. + +# shellcheck shell=bash + +try rm "${FIRSTRUN_FILE}" diff --git a/sdata/subcmd-resetfirstrun/options.sh b/sdata/subcmd-resetfirstrun/options.sh new file mode 100644 index 000000000..e5def7d2b --- /dev/null +++ b/sdata/subcmd-resetfirstrun/options.sh @@ -0,0 +1,27 @@ +# Handle args for subcmd: checkdeps +# shellcheck shell=bash + +showhelp(){ +echo -e "Syntax: $0 resetfirstrun [OPTIONS] + +Reset firstrun state. + +Options: + -h, --help Show this help message and exit +" +} +# `man getopt` to see more +para=$(getopt \ + -o c \ + -l help \ + -n "$0" -- "$@") +[ $? != 0 ] && echo "$0: Error when getopt, please recheck parameters." && exit 1 +##################################################################################### +eval set -- "$para" +while true ; do + case "$1" in + -h|--help) showhelp;exit;; + --) shift;break ;; + *) sleep 0 ;; + esac +done diff --git a/setup b/setup index 81cb11675..47c343599 100755 --- a/setup +++ b/setup @@ -33,6 +33,7 @@ Subcommands: exp-update (Experimental) Update illogical-impulse without fully reinstall. exp-update-old (Experimental) exp-update but use behaves like old version. + resetfirstrun Reset firstrun state. checkdeps (For dev only) Check whether pkgs exist in AUR or repos of Arch. virtmon (For dev only) Create virtual monitors for testing multi-monitors. help Show this help message. @@ -47,7 +48,7 @@ case $1 in # Global help ""|help|--help|-h)showhelp_global;exit;; # Correct subcommand - install|exp-uninstall|exp-update|exp-update-old|checkdeps|virtmon) + install|exp-uninstall|exp-update|exp-update-old|resetfirstrun|checkdeps|virtmon) SUBCMD_NAME=$1 SUBCMD_DIR=./sdata/subcmd-$1 shift;; From 5696a4348e9b8cbdfccf78e6bb840d78f3385705 Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 12 Nov 2025 21:54:08 +0800 Subject: [PATCH 076/107] Update virtmon --- sdata/subcmd-checkdeps/options.sh | 3 +- sdata/subcmd-install/options.sh | 4 +-- sdata/subcmd-resetfirstrun/options.sh | 2 +- sdata/subcmd-virtmon/0.run.sh | 41 ++++++++++++++------------- sdata/subcmd-virtmon/options.sh | 4 +-- 5 files changed, 29 insertions(+), 25 deletions(-) diff --git a/sdata/subcmd-checkdeps/options.sh b/sdata/subcmd-checkdeps/options.sh index 562b2e364..b5d0dbcd0 100644 --- a/sdata/subcmd-checkdeps/options.sh +++ b/sdata/subcmd-checkdeps/options.sh @@ -16,13 +16,14 @@ para=$(getopt \ -l help \ -n "$0" -- "$@") [ $? != 0 ] && echo "$0: Error when getopt, please recheck parameters." && exit 1 +echo $para ##################################################################################### eval set -- "$para" while true ; do case "$1" in -h|--help) showhelp;exit;; --) shift;break ;; - *) sleep 0 ;; + *) echo -e "$0: Wrong parameters.";exit 1;; esac done diff --git a/sdata/subcmd-install/options.sh b/sdata/subcmd-install/options.sh index c5e860215..5d843d83d 100644 --- a/sdata/subcmd-install/options.sh +++ b/sdata/subcmd-install/options.sh @@ -55,7 +55,7 @@ while true ; do case "$1" in -h|--help) showhelp;exit;; -c|--clean) cleancache;shift;; - --) break ;; + --) shift;break ;; *) shift ;; esac done @@ -93,7 +93,7 @@ while true ; do fi;; ## Ending - --) break ;; + --) shift;break ;; *) echo -e "$0: Wrong parameters.";exit 1;; esac done diff --git a/sdata/subcmd-resetfirstrun/options.sh b/sdata/subcmd-resetfirstrun/options.sh index e5def7d2b..51b08f63a 100644 --- a/sdata/subcmd-resetfirstrun/options.sh +++ b/sdata/subcmd-resetfirstrun/options.sh @@ -22,6 +22,6 @@ while true ; do case "$1" in -h|--help) showhelp;exit;; --) shift;break ;; - *) sleep 0 ;; + *) echo -e "$0: Wrong parameters.";exit 1;; esac done diff --git a/sdata/subcmd-virtmon/0.run.sh b/sdata/subcmd-virtmon/0.run.sh index 446978e62..989c6dfc2 100644 --- a/sdata/subcmd-virtmon/0.run.sh +++ b/sdata/subcmd-virtmon/0.run.sh @@ -9,12 +9,15 @@ readarray -t vmon_ids < <(hyprctl -j monitors all | jq -r '.[] | select(.name | if [[ "${CLEAN_TESTER_MONITORS}" = true ]]; then echo "Cleaning tester monitors..." - for i in "TESTER-${vmon_ids[@]}"; do - x hyprctl output remove "$i" + for i in "${vmon_ids[@]}"; do + echo "Removing tester monitor: TESTER-$i..." + x hyprctl output remove "TESTER-$i" done echo "Cleaning tester wayvnc sessions..." - for tester_socket in /tmp/wayvncctl_tester_* ; do - x wayvncctl --socket=$tester_socket -r wayvnc-exit + for i in /tmp/wayvncctl_tester_* ; do + # When no target is matched, * will not be expanded + [ -e "$i" ] || continue + x bash -c "wayvncctl --socket=$i -r wayvnc-exit || rm $i" done echo "Cleaning complete, exit..." exit 0 @@ -35,7 +38,7 @@ fi tester_socket=/tmp/wayvncctl_tester_$vnc_port # In case this exists for some reason try rm $tester_socket -vmon_tester=TESTER-$vnc_port;break +vmon_tester=TESTER-$vnc_port echo "Creating tester monitor..." x hyprctl output create headless ${vmon_tester} @@ -43,22 +46,22 @@ x hyprctl output create headless ${vmon_tester} echo "Setting geometry..." x hyprctl keyword monitor ${vmon_tester},${VMON_RESOLUTION}@${VMON_FPS},${VMON_POSITION},${VMON_SCALE}${VMON_EXTRA} -echo "=========================================" -echo "Use a VNC client to connect to the virtual monitor." -echo " Port: $vnc_port" -echo " IP: choose a suitable one from below:" -ip -o addr show up | grep -v -E 'docker|veth|virbr' | awk '{split($4,a,"/"); print $2"\t"a[1]}' -echo "The status of the virtual monitor:" -echo " Resolution: ${VMON_RESOLUTION}" -echo " Frame rate: ${VMON_FPS}" -echo "Hint:" -echo " The VNC client will ask you about server address," -echo " either joined as : or separately." -echo " As for username and password, just leave them as empty." -echo "=========================================" -echo "Launching wayvnc..." +printf "%s\n" "=========================================" +printf "%s\n" "Use a VNC client to connect to the virtual monitor." +printf "%s\n" " Port: $vnc_port" +printf "%s\n" " IP: choose a suitable one from below:" +LANG=C LC_ALL=C ip -o addr show up | grep -v -E 'docker|veth|virbr' | awk '{split($4,a,"/"); print $2"\t"a[1]}' +printf "%s\n" "The status of the virtual monitor:" +printf "%s\n" " Resolution: ${VMON_RESOLUTION}" +printf "%s\n" " Frame rate: ${VMON_FPS}" +printf "%s\n" "Hint:" +printf "%s\n" " The VNC client will ask you about server address," +printf "%s\n" " either joined as : or separately." +printf "%s\n" " As for username and password, just leave them as empty." +printf "%s\n" "=========================================" if [ "$RUNNING_IN_BACKGROUND" = true ];then + echo "wayvnc now running in background. Run again with --clean to cleanup." nohup wayvnc --socket=$tester_socket -f=${VMON_FPS} -o=${vmon_tester} --log-level=${WAYVNC_LOGLEVEL} 0.0.0.0 $vnc_port > $(mktemp) 2>&1 & disown else diff --git a/sdata/subcmd-virtmon/options.sh b/sdata/subcmd-virtmon/options.sh index 6fd721617..c9f9a43e7 100644 --- a/sdata/subcmd-virtmon/options.sh +++ b/sdata/subcmd-virtmon/options.sh @@ -41,7 +41,7 @@ while true ; do case "$1" in -h|--help) showhelp;exit;; --) shift;break ;; - *) sleep 0 ;; + *) shift ;; esac done @@ -56,6 +56,6 @@ while true ; do --sca) VMON_SCALE="$2";shift 2;; --ext) VMON_EXTRA=", $2";shift 2;; --) shift;break ;; - *) sleep 0 ;; + *) echo -e "$0: Wrong parameters.";exit 1;; esac done From 31c9fe1f5a2d3a1aca3caa79d0c48ee62b9ea8ce Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 12 Nov 2025 21:59:25 +0800 Subject: [PATCH 077/107] Update help --- sdata/subcmd-virtmon/options.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sdata/subcmd-virtmon/options.sh b/sdata/subcmd-virtmon/options.sh index c9f9a43e7..49ad7dbea 100644 --- a/sdata/subcmd-virtmon/options.sh +++ b/sdata/subcmd-virtmon/options.sh @@ -22,6 +22,9 @@ Options: -c, --clean Clean all tester monitors and wayvnc sessions and exit -d, --daemon Running in background + +For the syntax of following options, see also Hyprland Wiki: + https://wiki.hypr.land/Configuring/Monitors --res Resolution, by default $VMON_RESOLUTION --fps Refresh rate and FPS, by default $VMON_FPS --pos Position, by default $VMON_POSITION From 480ef19b0137a3f5fcdb540678d9924ef60fd37d Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 12 Nov 2025 22:19:41 +0800 Subject: [PATCH 078/107] Update virtmon --- sdata/subcmd-virtmon/0.run.sh | 25 +++++++++++++------------ sdata/subcmd-virtmon/options.sh | 5 +++++ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/sdata/subcmd-virtmon/0.run.sh b/sdata/subcmd-virtmon/0.run.sh index 989c6dfc2..289654c37 100644 --- a/sdata/subcmd-virtmon/0.run.sh +++ b/sdata/subcmd-virtmon/0.run.sh @@ -46,19 +46,20 @@ x hyprctl output create headless ${vmon_tester} echo "Setting geometry..." x hyprctl keyword monitor ${vmon_tester},${VMON_RESOLUTION}@${VMON_FPS},${VMON_POSITION},${VMON_SCALE}${VMON_EXTRA} -printf "%s\n" "=========================================" -printf "%s\n" "Use a VNC client to connect to the virtual monitor." -printf "%s\n" " Port: $vnc_port" -printf "%s\n" " IP: choose a suitable one from below:" +e="%s${STY_RST}\n" +printf "${STY_CYAN}$e" "=========================================" +printf "${STY_BLUE}$e" "Use a VNC client to connect to the virtual monitor." +printf "${STY_RED}$e" " Port: $vnc_port" +printf "${STY_RED}$e" " IP: choose a suitable one from below:" LANG=C LC_ALL=C ip -o addr show up | grep -v -E 'docker|veth|virbr' | awk '{split($4,a,"/"); print $2"\t"a[1]}' -printf "%s\n" "The status of the virtual monitor:" -printf "%s\n" " Resolution: ${VMON_RESOLUTION}" -printf "%s\n" " Frame rate: ${VMON_FPS}" -printf "%s\n" "Hint:" -printf "%s\n" " The VNC client will ask you about server address," -printf "%s\n" " either joined as : or separately." -printf "%s\n" " As for username and password, just leave them as empty." -printf "%s\n" "=========================================" +printf "${STY_YELLOW}$e" "The status of the virtual monitor:" +printf "${STY_YELLOW}$e" " Resolution: ${VMON_RESOLUTION}" +printf "${STY_YELLOW}$e" " Frame rate: ${VMON_FPS}" +printf "${STY_GREEN}$e" "Hint:" +printf "${STY_GREEN}$e" " The VNC client will ask you about server address," +printf "${STY_GREEN}$e" " either joined as : or separately." +printf "${STY_GREEN}$e" " As for username and password, just leave them as empty." +printf "${STY_CYAN}$e" "=========================================" if [ "$RUNNING_IN_BACKGROUND" = true ];then echo "wayvnc now running in background. Run again with --clean to cleanup." diff --git a/sdata/subcmd-virtmon/options.sh b/sdata/subcmd-virtmon/options.sh index 49ad7dbea..d4cbda84d 100644 --- a/sdata/subcmd-virtmon/options.sh +++ b/sdata/subcmd-virtmon/options.sh @@ -30,6 +30,11 @@ For the syntax of following options, see also Hyprland Wiki: --pos Position, by default $VMON_POSITION --sca Scale, by default $VMON_SCALE --ext Extra args, e.g. \"transform, 1\" + +Tip: Recommended VNC client: +- Android: AVNC (https://github.com/gujjwal00/avnc) +- Linux X11, Windows and MacOS: TigerVNC (https://github.com/TigerVNC/tigervnc) +- Linux Wayland: Remmina-VNC (https://remmina.org/remmina-vnc/) " } # `man getopt` to see more From 55b5d7145dc05726c5f24a5a54ed16aa40811616 Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 12 Nov 2025 23:11:50 +0800 Subject: [PATCH 079/107] Update virtmon --- sdata/subcmd-virtmon/0.run.sh | 30 ++++++++++++++++-------------- sdata/subcmd-virtmon/options.sh | 16 ++++++++-------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/sdata/subcmd-virtmon/0.run.sh b/sdata/subcmd-virtmon/0.run.sh index 289654c37..ee27eb3d6 100644 --- a/sdata/subcmd-virtmon/0.run.sh +++ b/sdata/subcmd-virtmon/0.run.sh @@ -47,27 +47,29 @@ echo "Setting geometry..." x hyprctl keyword monitor ${vmon_tester},${VMON_RESOLUTION}@${VMON_FPS},${VMON_POSITION},${VMON_SCALE}${VMON_EXTRA} e="%s${STY_RST}\n" -printf "${STY_CYAN}$e" "=========================================" -printf "${STY_BLUE}$e" "Use a VNC client to connect to the virtual monitor." -printf "${STY_RED}$e" " Port: $vnc_port" -printf "${STY_RED}$e" " IP: choose a suitable one from below:" +printf "${STY_YELLOW}=========================================$e" +printf "${STY_CYAN}The status of the virtual monitor:$e" +printf "${STY_BLUE}Resolution: ${STY_UNDERLINE}${STY_INVERT}${VMON_RESOLUTION}$e" +printf "${STY_BLUE}Frame rate: ${STY_UNDERLINE}${STY_INVERT}${VMON_FPS}$e" +printf "${STY_CYAN}Use a VNC client to connect to the virtual monitor.$e" +printf "${STY_BLUE}Port: ${STY_UNDERLINE}${STY_INVERT}$vnc_port$e" +printf "${STY_BLUE}IP: use a suitable one from below:$e" +printf ${STY_PURPLE} LANG=C LC_ALL=C ip -o addr show up | grep -v -E 'docker|veth|virbr' | awk '{split($4,a,"/"); print $2"\t"a[1]}' -printf "${STY_YELLOW}$e" "The status of the virtual monitor:" -printf "${STY_YELLOW}$e" " Resolution: ${VMON_RESOLUTION}" -printf "${STY_YELLOW}$e" " Frame rate: ${VMON_FPS}" -printf "${STY_GREEN}$e" "Hint:" -printf "${STY_GREEN}$e" " The VNC client will ask you about server address," -printf "${STY_GREEN}$e" " either joined as : or separately." -printf "${STY_GREEN}$e" " As for username and password, just leave them as empty." -printf "${STY_CYAN}$e" "=========================================" +printf ${STY_RST} +printf "${STY_CYAN}Hint:$e" +printf "${STY_GREEN} The VNC client will ask you about server address,$e" +printf "${STY_GREEN} either joined as : or separately.$e" +printf "${STY_GREEN} As for username and password, just leave them as empty.$e" +printf "${STY_YELLOW}=========================================$e" if [ "$RUNNING_IN_BACKGROUND" = true ];then echo "wayvnc now running in background. Run again with --clean to cleanup." - nohup wayvnc --socket=$tester_socket -f=${VMON_FPS} -o=${vmon_tester} --log-level=${WAYVNC_LOGLEVEL} 0.0.0.0 $vnc_port > $(mktemp) 2>&1 & + nohup wayvnc ${WAYVNC_EX_ARGS} --socket=$tester_socket -f=${VMON_FPS} -o=${vmon_tester} --log-level=${WAYVNC_LOGLEVEL} 0.0.0.0 $vnc_port > $(mktemp) 2>&1 & disown else echo "wayvnc now running, press Ctrl-C to quit." - wayvnc --socket=$tester_socket -f=${VMON_FPS} -o=${vmon_tester} --log-level=${WAYVNC_LOGLEVEL} 0.0.0.0 $vnc_port + wayvnc ${WAYVNC_EX_ARGS} --socket=$tester_socket -f=${VMON_FPS} -o=${vmon_tester} --log-level=${WAYVNC_LOGLEVEL} 0.0.0.0 $vnc_port echo "wayvnc stopped. Cleaning..." hyprctl output remove "${vmon_tester}" fi diff --git a/sdata/subcmd-virtmon/options.sh b/sdata/subcmd-virtmon/options.sh index d4cbda84d..bfe51a59d 100644 --- a/sdata/subcmd-virtmon/options.sh +++ b/sdata/subcmd-virtmon/options.sh @@ -20,21 +20,21 @@ Note: Options: -h, --help Show this help message and exit -c, --clean Clean all tester monitors and wayvnc sessions and exit - - -d, --daemon Running in background + -d, --daemon Run in background For the syntax of following options, see also Hyprland Wiki: https://wiki.hypr.land/Configuring/Monitors - --res Resolution, by default $VMON_RESOLUTION - --fps Refresh rate and FPS, by default $VMON_FPS - --pos Position, by default $VMON_POSITION - --sca Scale, by default $VMON_SCALE - --ext Extra args, e.g. \"transform, 1\" + --res Resolution, by default ${STY_UNDERLINE}$VMON_RESOLUTION${STY_RST} + --fps Refresh rate and FPS, by default ${STY_UNDERLINE}$VMON_FPS${STY_RST} + --pos Position, by default ${STY_UNDERLINE}$VMON_POSITION${STY_RST} + Examples: ${STY_UNDERLINE}auto-left${STY_RST}, ${STY_UNDERLINE}0x-1080${STY_RST} + --sca Scale, by default ${STY_UNDERLINE}$VMON_SCALE${STY_RST} + --ext Extra args, e.g. ${STY_UNDERLINE}transform, 1${STY_RST} Tip: Recommended VNC client: - Android: AVNC (https://github.com/gujjwal00/avnc) - Linux X11, Windows and MacOS: TigerVNC (https://github.com/TigerVNC/tigervnc) -- Linux Wayland: Remmina-VNC (https://remmina.org/remmina-vnc/) +- Linux Wayland: Remmina-VNC (https://remmina.org/remmina-vnc) " } # `man getopt` to see more From 1844d12bc55112368e68b9d721f8b254ab6ff929 Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 12 Nov 2025 23:13:07 +0800 Subject: [PATCH 080/107] Typo: fix #2454 --- sdata/subcmd-install/3.files-legacy.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdata/subcmd-install/3.files-legacy.sh b/sdata/subcmd-install/3.files-legacy.sh index aab67d03c..2c01bf58b 100644 --- a/sdata/subcmd-install/3.files-legacy.sh +++ b/sdata/subcmd-install/3.files-legacy.sh @@ -35,7 +35,7 @@ function copy_dir_s_t(){ ##################################################################################### # In case some dirs does not exists v mkdir -p $XDG_BIN_HOME $XDG_CACHE_HOME $XDG_CONFIG_HOME $XDG_DATA_HOME/icons -if test -f "${firstrun_file}"; then +if test -f "${FIRSTRUN_FILE}"; then firstrun=false else firstrun=true @@ -114,4 +114,4 @@ declare -a arg_excludes=() # v rsync -av "dots/.local/bin/" "$XDG_BIN_HOME" # No longer needed since scripts are no longer in ~/.local/bin v cp -f "dots/.local/share/icons/illogical-impulse.svg" "${XDG_DATA_HOME}"/icons/illogical-impulse.svg -v touch "${firstrun_file}" +v touch "${FIRSTRUN_FILE}" From 6889185c3e74f4c677e98db2a004949118981868 Mon Sep 17 00:00:00 2001 From: clsty Date: Thu, 13 Nov 2025 01:05:18 +0800 Subject: [PATCH 081/107] Add hypr_mon_guard --- sdata/subcmd-virtmon/0.run.sh | 17 ++++++++++++++++- sdata/subcmd-virtmon/hypr_mon_guard | 11 +++++++++++ sdata/subcmd-virtmon/options.sh | 9 ++++++--- 3 files changed, 33 insertions(+), 4 deletions(-) create mode 100755 sdata/subcmd-virtmon/hypr_mon_guard diff --git a/sdata/subcmd-virtmon/0.run.sh b/sdata/subcmd-virtmon/0.run.sh index ee27eb3d6..160743931 100644 --- a/sdata/subcmd-virtmon/0.run.sh +++ b/sdata/subcmd-virtmon/0.run.sh @@ -5,6 +5,21 @@ ensure_cmds wayvnc lsof jq ip +enable_hypr_mon_guard(){ + if ! pgrep -x hypr_mon_guard >/dev/null 2>&1; then + if PATH=$PATH:${REPO_ROOT}/sdata/subcmd-virtmon command -v hypr_mon_guard ; then + echo "Running hypr_mon_guard." + PATH=$PATH:${REPO_ROOT}/sdata/subcmd-virtmon setsid hypr_mon_guard > $(mktemp) 2>&1 & + else + echo "Script hypr_mon_guard not found." + exit 1 + fi + fi +} +if [[ "${ENABLE_HYPR_MON_GUARD}" = true ]]; then + enable_hypr_mon_guard +fi + readarray -t vmon_ids < <(hyprctl -j monitors all | jq -r '.[] | select(.name | test("^TESTER-")) | .name | sub("^TESTER-"; "")') if [[ "${CLEAN_TESTER_MONITORS}" = true ]]; then @@ -43,7 +58,7 @@ vmon_tester=TESTER-$vnc_port echo "Creating tester monitor..." x hyprctl output create headless ${vmon_tester} -echo "Setting geometry..." +echo "Setting properties of tester monitor..." x hyprctl keyword monitor ${vmon_tester},${VMON_RESOLUTION}@${VMON_FPS},${VMON_POSITION},${VMON_SCALE}${VMON_EXTRA} e="%s${STY_RST}\n" diff --git a/sdata/subcmd-virtmon/hypr_mon_guard b/sdata/subcmd-virtmon/hypr_mon_guard new file mode 100755 index 000000000..f2ae9a41f --- /dev/null +++ b/sdata/subcmd-virtmon/hypr_mon_guard @@ -0,0 +1,11 @@ +#!/usr/bin/bash +# This script is to prevent hyprland from not responding to any input when no monitor is enabled. +# The shebang cannot be #!/usr/bin/env bash , idk why +while true; do +readarray -t enabled_mons < <(hyprctl -j monitors all | jq -r '.[] | select(.disabled == false) | .name') +#if -z "$enabled_mons"; then +if [ ${#enabled_mons[@]} -eq 0 ]; then +hyprctl reload +fi +sleep 10 +done diff --git a/sdata/subcmd-virtmon/options.sh b/sdata/subcmd-virtmon/options.sh index bfe51a59d..9f95d06ec 100644 --- a/sdata/subcmd-virtmon/options.sh +++ b/sdata/subcmd-virtmon/options.sh @@ -21,6 +21,8 @@ Options: -h, --help Show this help message and exit -c, --clean Clean all tester monitors and wayvnc sessions and exit -d, --daemon Run in background + -g, --guard Enable hypr_mon_guard so it will be safe to + temporarily disable monitors using hyprctl. For the syntax of following options, see also Hyprland Wiki: https://wiki.hypr.land/Configuring/Monitors @@ -29,7 +31,7 @@ For the syntax of following options, see also Hyprland Wiki: --pos Position, by default ${STY_UNDERLINE}$VMON_POSITION${STY_RST} Examples: ${STY_UNDERLINE}auto-left${STY_RST}, ${STY_UNDERLINE}0x-1080${STY_RST} --sca Scale, by default ${STY_UNDERLINE}$VMON_SCALE${STY_RST} - --ext Extra args, e.g. ${STY_UNDERLINE}transform, 1${STY_RST} + --ext Extra properties, e.g. ${STY_UNDERLINE}transform, 1${STY_RST} Tip: Recommended VNC client: - Android: AVNC (https://github.com/gujjwal00/avnc) @@ -39,8 +41,8 @@ Tip: Recommended VNC client: } # `man getopt` to see more para=$(getopt \ - -o hcd \ - -l help,clean,daemon,res:,fps:,pos:,sca:,ext: \ + -o hcdg \ + -l help,clean,daemon,guard,res:,fps:,pos:,sca:,ext: \ -n "$0" -- "$@") [ $? != 0 ] && echo "$0: Error when getopt, please recheck parameters." && exit 1 ##################################################################################### @@ -58,6 +60,7 @@ while true ; do case "$1" in -c|--clean) CLEAN_TESTER_MONITORS=true;shift;; -d|--daemon) RUNNING_IN_BACKGROUND=true;shift;; + -g|--guard) ENABLE_HYPR_MON_GUARD=true;shift;; --res) VMON_RESOLUTION="$2";shift 2;; --fps) VMON_FPS="$2";shift 2;; --pos) VMON_POSITION="$2";shift 2;; From 0917ee65f2a695f44c4bcbd868b7d3917d49a3c0 Mon Sep 17 00:00:00 2001 From: clsty Date: Thu, 13 Nov 2025 01:20:14 +0800 Subject: [PATCH 082/107] Enable hypr_mon_guard by default --- sdata/subcmd-virtmon/0.run.sh | 6 +++--- sdata/subcmd-virtmon/hypr_mon_guard | 2 ++ sdata/subcmd-virtmon/options.sh | 9 ++++----- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/sdata/subcmd-virtmon/0.run.sh b/sdata/subcmd-virtmon/0.run.sh index 160743931..3b0426909 100644 --- a/sdata/subcmd-virtmon/0.run.sh +++ b/sdata/subcmd-virtmon/0.run.sh @@ -5,7 +5,7 @@ ensure_cmds wayvnc lsof jq ip -enable_hypr_mon_guard(){ +start_hypr_mon_guard(){ if ! pgrep -x hypr_mon_guard >/dev/null 2>&1; then if PATH=$PATH:${REPO_ROOT}/sdata/subcmd-virtmon command -v hypr_mon_guard ; then echo "Running hypr_mon_guard." @@ -16,8 +16,8 @@ enable_hypr_mon_guard(){ fi fi } -if [[ "${ENABLE_HYPR_MON_GUARD}" = true ]]; then - enable_hypr_mon_guard +if ! [[ "${DISABLE_HYPR_MON_GUARD}" = true ]]; then + start_hypr_mon_guard fi readarray -t vmon_ids < <(hyprctl -j monitors all | jq -r '.[] | select(.name | test("^TESTER-")) | .name | sub("^TESTER-"; "")') diff --git a/sdata/subcmd-virtmon/hypr_mon_guard b/sdata/subcmd-virtmon/hypr_mon_guard index f2ae9a41f..299cf63be 100755 --- a/sdata/subcmd-virtmon/hypr_mon_guard +++ b/sdata/subcmd-virtmon/hypr_mon_guard @@ -1,5 +1,7 @@ #!/usr/bin/bash # This script is to prevent hyprland from not responding to any input when no monitor is enabled. +# When this script is running in background, +# it will be safe to temporarily disable monitors using hyprctl. # The shebang cannot be #!/usr/bin/env bash , idk why while true; do readarray -t enabled_mons < <(hyprctl -j monitors all | jq -r '.[] | select(.disabled == false) | .name') diff --git a/sdata/subcmd-virtmon/options.sh b/sdata/subcmd-virtmon/options.sh index 9f95d06ec..6e67d396c 100644 --- a/sdata/subcmd-virtmon/options.sh +++ b/sdata/subcmd-virtmon/options.sh @@ -21,8 +21,7 @@ Options: -h, --help Show this help message and exit -c, --clean Clean all tester monitors and wayvnc sessions and exit -d, --daemon Run in background - -g, --guard Enable hypr_mon_guard so it will be safe to - temporarily disable monitors using hyprctl. + --no-guard Disable hypr_mon_guard For the syntax of following options, see also Hyprland Wiki: https://wiki.hypr.land/Configuring/Monitors @@ -41,8 +40,8 @@ Tip: Recommended VNC client: } # `man getopt` to see more para=$(getopt \ - -o hcdg \ - -l help,clean,daemon,guard,res:,fps:,pos:,sca:,ext: \ + -o hcd \ + -l help,clean,daemon,no-guard,res:,fps:,pos:,sca:,ext: \ -n "$0" -- "$@") [ $? != 0 ] && echo "$0: Error when getopt, please recheck parameters." && exit 1 ##################################################################################### @@ -60,7 +59,7 @@ while true ; do case "$1" in -c|--clean) CLEAN_TESTER_MONITORS=true;shift;; -d|--daemon) RUNNING_IN_BACKGROUND=true;shift;; - -g|--guard) ENABLE_HYPR_MON_GUARD=true;shift;; + --no-guard) DISABLE_HYPR_MON_GUARD=true;shift;; --res) VMON_RESOLUTION="$2";shift 2;; --fps) VMON_FPS="$2";shift 2;; --pos) VMON_POSITION="$2";shift 2;; From 3c390d95be597f597ba74ff277c54f5b7160b318 Mon Sep 17 00:00:00 2001 From: clsty Date: Thu, 13 Nov 2025 01:47:21 +0800 Subject: [PATCH 083/107] Update help --- sdata/subcmd-virtmon/hypr_mon_guard | 2 +- sdata/subcmd-virtmon/options.sh | 24 +++++++++++++++--------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/sdata/subcmd-virtmon/hypr_mon_guard b/sdata/subcmd-virtmon/hypr_mon_guard index 299cf63be..9c913f928 100755 --- a/sdata/subcmd-virtmon/hypr_mon_guard +++ b/sdata/subcmd-virtmon/hypr_mon_guard @@ -9,5 +9,5 @@ readarray -t enabled_mons < <(hyprctl -j monitors all | jq -r '.[] | select(.dis if [ ${#enabled_mons[@]} -eq 0 ]; then hyprctl reload fi -sleep 10 +sleep 30 done diff --git a/sdata/subcmd-virtmon/options.sh b/sdata/subcmd-virtmon/options.sh index 6e67d396c..44ea51801 100644 --- a/sdata/subcmd-virtmon/options.sh +++ b/sdata/subcmd-virtmon/options.sh @@ -13,15 +13,12 @@ echo -e "Syntax: $0 virtmon [OPTIONS] Create virtual monitor for testing multi-monitors. -Note: - The virtual monitor will be served via wayvnc. - You need a VNC client to connect to it. - Options: -h, --help Show this help message and exit -c, --clean Clean all tester monitors and wayvnc sessions and exit -d, --daemon Run in background - --no-guard Disable hypr_mon_guard + --no-guard Disable hypr_mon_guard. Tip: this process can + also be terminated using ${STY_BOLD}pkill hypr_mon_guard${STY_RST} For the syntax of following options, see also Hyprland Wiki: https://wiki.hypr.land/Configuring/Monitors @@ -32,10 +29,19 @@ For the syntax of following options, see also Hyprland Wiki: --sca Scale, by default ${STY_UNDERLINE}$VMON_SCALE${STY_RST} --ext Extra properties, e.g. ${STY_UNDERLINE}transform, 1${STY_RST} -Tip: Recommended VNC client: -- Android: AVNC (https://github.com/gujjwal00/avnc) -- Linux X11, Windows and MacOS: TigerVNC (https://github.com/TigerVNC/tigervnc) -- Linux Wayland: Remmina-VNC (https://remmina.org/remmina-vnc) +Note 1: + The virtual monitor will be served via wayvnc. + You need a VNC client to connect to it. + Recommended VNC client: + - Android: AVNC (https://github.com/gujjwal00/avnc) + - Linux X11, Windows and MacOS: TigerVNC (https://github.com/TigerVNC/tigervnc) + - Linux Wayland: Remmina-VNC (https://remmina.org/remmina-vnc) + +Note 2: + You can run this subcommand multiple times to create multiple virtual monitor. To do this, use ${STY_UNDERLINE}-d${STY_RST} to run wayvnc in background and repeat again, or just open extra terminal/shell and run the subcommand again. + +Note 3: + If you do not have a spare device connected to the same network, it's still possible to test multi-monitor by using VNC client on this device, in which case the should be ${STY_UNDERLINE}localhost${STY_RST} or ${STY_UNDERLINE}127.0.0.1${STY_RST}. " } # `man getopt` to see more From 4cc4ad749b7405178e74b688d1b6305d8f70dc44 Mon Sep 17 00:00:00 2001 From: clsty Date: Thu, 13 Nov 2025 01:49:36 +0800 Subject: [PATCH 084/107] Update help --- setup | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup b/setup index 47c343599..00afe99c0 100755 --- a/setup +++ b/setup @@ -28,14 +28,14 @@ Subcommands: install-deps Run the install step \"1. Install dependencies\" install-setups Run the install step \"2. Setup for permissions/services etc\" install-files Run the install step \"3. Copying config files\" + resetfirstrun Reset firstrun state. exp-uninstall (Experimental) Uninstall illogical-impulse. exp-update (Experimental) Update illogical-impulse without fully reinstall. exp-update-old (Experimental) exp-update but use behaves like old version. - resetfirstrun Reset firstrun state. - checkdeps (For dev only) Check whether pkgs exist in AUR or repos of Arch. virtmon (For dev only) Create virtual monitors for testing multi-monitors. + checkdeps (For dev only) Check whether pkgs exist in AUR or repos of Arch. help Show this help message. For each , use -h for details: From cfdbb873aa7461308870a577e3f09e15f1ca596f Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Wed, 12 Nov 2025 19:02:54 +0100 Subject: [PATCH 085/107] appsearch: use own guessing before quickshell's heuristic lookup --- dots/.config/quickshell/ii/services/AppSearch.qml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/dots/.config/quickshell/ii/services/AppSearch.qml b/dots/.config/quickshell/ii/services/AppSearch.qml index 196e1bed3..d67919890 100644 --- a/dots/.config/quickshell/ii/services/AppSearch.qml +++ b/dots/.config/quickshell/ii/services/AppSearch.qml @@ -94,7 +94,7 @@ Singleton { if (!str || str.length == 0) return "image-missing"; // Quickshell's desktop entry lookup - const entry = DesktopEntries.heuristicLookup(str); + const entry = DesktopEntries.byId(str); if (entry) return entry.icon; // Normal substitutions @@ -149,8 +149,11 @@ Singleton { if (iconExists(guess)) return guess; } + // Quickshell's desktop entry lookup + const heuristicEntry = DesktopEntries.heuristicLookup(str); + if (heuristicEntry) return heuristicEntry.icon; // Give up - return str; + return "application-x-executable"; } } From 945c6a07821c206b0d1bdb9dbecfce55de6e3130 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Wed, 12 Nov 2025 21:38:30 +0100 Subject: [PATCH 086/107] wbar: add tooltip and stuff --- .../modules/common/widgets/PopupToolTip.qml | 28 +++--- .../volumeMixer/VolumeDialogContent.qml | 2 +- .../ii/modules/waffle/bar/AppButton.qml | 44 ++++++++- .../ii/modules/waffle/bar/AppIcon.qml | 3 +- .../ii/modules/waffle/bar/BarButton.qml | 66 ++++++++++++-- .../ii/modules/waffle/bar/BarToolTip.qml | 8 ++ .../ii/modules/waffle/bar/SearchButton.qml | 11 +++ .../ii/modules/waffle/bar/StartButton.qml | 11 +++ .../ii/modules/waffle/bar/SystemButton.qml | 90 +++++++++++++++---- .../ii/modules/waffle/bar/TaskAppButton.qml | 25 ------ .../ii/modules/waffle/bar/TaskViewButton.qml | 5 ++ .../ii/modules/waffle/bar/TimeButton.qml | 6 ++ .../modules/waffle/bar/WaffleBarContent.qml | 1 + .../ii/modules/waffle/bar/WidgetsButton.qml | 5 ++ .../waffle/bar/tasks/TaskAppButton.qml | 71 +++++++++++++++ .../waffle/bar/{ => tasks}/TaskPreview.qml | 2 +- .../modules/waffle/bar/{ => tasks}/Tasks.qml | 8 +- .../waffle/bar/{ => tasks}/WindowPreview.qml | 1 + .../ii/modules/waffle/looks/Looks.qml | 7 +- .../ii/modules/waffle/looks/WPopupToolTip.qml | 51 +++++++++++ .../quickshell/ii/services/AppSearch.qml | 5 +- 21 files changed, 377 insertions(+), 73 deletions(-) create mode 100644 dots/.config/quickshell/ii/modules/waffle/bar/BarToolTip.qml delete mode 100644 dots/.config/quickshell/ii/modules/waffle/bar/TaskAppButton.qml create mode 100644 dots/.config/quickshell/ii/modules/waffle/bar/tasks/TaskAppButton.qml rename dots/.config/quickshell/ii/modules/waffle/bar/{ => tasks}/TaskPreview.qml (99%) rename dots/.config/quickshell/ii/modules/waffle/bar/{ => tasks}/Tasks.qml (81%) rename dots/.config/quickshell/ii/modules/waffle/bar/{ => tasks}/WindowPreview.qml (99%) create mode 100644 dots/.config/quickshell/ii/modules/waffle/looks/WPopupToolTip.qml diff --git a/dots/.config/quickshell/ii/modules/common/widgets/PopupToolTip.qml b/dots/.config/quickshell/ii/modules/common/widgets/PopupToolTip.qml index 741b4556c..bc72ee416 100644 --- a/dots/.config/quickshell/ii/modules/common/widgets/PopupToolTip.qml +++ b/dots/.config/quickshell/ii/modules/common/widgets/PopupToolTip.qml @@ -1,3 +1,4 @@ +pragma ComponentBehavior: Bound import qs.modules.common import qs.modules.common.widgets import QtQuick @@ -13,15 +14,24 @@ Item { property real horizontalPadding: 10 property real verticalPadding: 5 + readonly property bool internalVisibleCondition: (extraVisibleCondition && (parent.hovered === undefined || parent?.hovered)) || alternativeVisibleCondition property var anchorEdges: Edges.Top property var anchorGravity: anchorEdges - readonly property bool internalVisibleCondition: (extraVisibleCondition && (parent.hovered === undefined || parent?.hovered)) || alternativeVisibleCondition + property Item contentItem: StyledToolTipContent { + id: contentItem + anchors.centerIn: parent + text: root.text + shown: false + Component.onCompleted: shown = true + horizontalPadding: root.horizontalPadding + verticalPadding: root.verticalPadding + } Loader { id: tooltipLoader anchors.fill: parent - active: internalVisibleCondition + active: root.internalVisibleCondition sourceComponent: PopupWindow { visible: true anchor { @@ -35,18 +45,10 @@ Item { } color: "transparent" - implicitWidth: contentItem.implicitWidth + root.horizontalPadding * 2 - implicitHeight: contentItem.implicitHeight + root.verticalPadding * 2 + implicitWidth: root.contentItem.implicitWidth + root.horizontalPadding * 2 + implicitHeight: root.contentItem.implicitHeight + root.verticalPadding * 2 - StyledToolTipContent { - id: contentItem - anchors.centerIn: parent - text: root.text - shown: false - Component.onCompleted: shown = true - horizontalPadding: root.horizontalPadding - verticalPadding: root.verticalPadding - } + data: [root.contentItem] } } } diff --git a/dots/.config/quickshell/ii/modules/ii/sidebarRight/volumeMixer/VolumeDialogContent.qml b/dots/.config/quickshell/ii/modules/ii/sidebarRight/volumeMixer/VolumeDialogContent.qml index 46d83f7de..5eb409ecb 100644 --- a/dots/.config/quickshell/ii/modules/ii/sidebarRight/volumeMixer/VolumeDialogContent.qml +++ b/dots/.config/quickshell/ii/modules/ii/sidebarRight/volumeMixer/VolumeDialogContent.qml @@ -44,7 +44,7 @@ ColumnLayout { Layout.fillHeight: false Layout.fillWidth: true Layout.bottomMargin: 6 - model: root.devices.map(node => node.description) + model: root.devices.map(node => (node.nickname || node.description || Translation.tr("Unknown"))) currentIndex: root.devices.findIndex(item => { if (root.isSink) { return item.id === Pipewire.preferredDefaultAudioSink?.id diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/AppButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/AppButton.qml index 90d0cc007..a35e12a2e 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/AppButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/AppButton.qml @@ -1,5 +1,6 @@ import QtQuick import QtQuick.Layouts +import Qt5Compat.GraphicalEffects import org.kde.kirigami as Kirigami import qs.services import qs.modules.common @@ -9,7 +10,9 @@ BarButton { id: root required property string iconName + property bool multiple: false property bool separateLightDark: false + property alias tryCustomIcon: iconWidget.tryCustomIcon leftInset: 2 rightInset: 2 implicitWidth: height - topInset - bottomInset + leftInset + rightInset @@ -20,9 +23,37 @@ BarButton { contentItem.scale = root.down ? 5/6 : 1 // If/When we do dragging, the scale is 1.25 } + background: Item { + BackgroundAcrylicRectangle { + id: mainBgRect + anchors.fill: parent + layer.enabled: root.multiple + layer.effect: OpacityMask { + invert: true + maskSource: Item { + width: mainBgRect.width + height: mainBgRect.height + Rectangle { + anchors.fill: parent + anchors.rightMargin: 3 + radius: mainBgRect.radius + } + } + } + } + Loader { + anchors.fill: parent + anchors.rightMargin: 5 + active: root.multiple + sourceComponent: BackgroundAcrylicRectangle { + + } + } + } + contentItem: Item { id: contentItem - anchors.centerIn: root.background + anchors.centerIn: parent implicitHeight: iconWidget.implicitHeight implicitWidth: iconWidget.implicitWidth @@ -41,4 +72,15 @@ BarButton { separateLightDark: root.separateLightDark } } + + component BackgroundAcrylicRectangle: AcrylicRectangle { + shiny: ((root.hovered && !root.down) || root.checked) + color: root.colBackground + border.width: 1 + border.color: root.colBackgroundBorder + + Behavior on border.color { + animation: Looks.transition.color.createObject(this) + } + } } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/AppIcon.qml b/dots/.config/quickshell/ii/modules/waffle/bar/AppIcon.qml index fc5c75426..f70a80603 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/AppIcon.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/AppIcon.qml @@ -8,11 +8,12 @@ Kirigami.Icon { id: root required property string iconName property bool separateLightDark: false + property bool tryCustomIcon: true property real implicitSize: 26 implicitWidth: implicitSize implicitHeight: implicitSize roundToIconSize: false - source: `${Looks.iconsPath}/${root.iconName}${!root.separateLightDark ? "" : Looks.dark ? "-dark" : "-light"}.svg` fallback: root.iconName + source: tryCustomIcon ? `${Looks.iconsPath}/${root.iconName}${!root.separateLightDark ? "" : Looks.dark ? "-dark" : "-light"}.svg` : fallback } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/BarButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/BarButton.qml index 52e5164aa..ce1a4cdc7 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/BarButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/BarButton.qml @@ -8,20 +8,70 @@ import qs.modules.waffle.looks Button { id: root + signal altAction() + signal middleClickAction() + + property color colBackground + property color colBackgroundBorder Layout.fillHeight: true topInset: 4 bottomInset: 4 + signal hoverTimedOut() + property bool shouldShowTooltip: false + property Timer hoverTimer: Timer { + id: hoverTimer + running: root.hovered + interval: 400 + onTriggered: { + root.hoverTimedOut() + } + } + onHoverTimedOut: { + root.shouldShowTooltip = true + } + onHoveredChanged: { + if (!root.hovered) { + root.shouldShowTooltip = false + root.hoverTimer.stop() + } + } + + colBackground: { + if (root.down) { + return Looks.colors.bg1Active + } else if ((root.hovered && !root.down) || root.checked) { + return Looks.colors.bg1Hover + } else { + return ColorUtils.transparentize(Looks.colors.bg1) + } + } + colBackgroundBorder: ColorUtils.transparentize(Looks.colors.bg1Border, root.checked ? Looks.contentTransparency : 1) + + MouseArea { + anchors.fill: parent + acceptedButtons: Qt.LeftButton | Qt.RightButton | Qt.MiddleButton + onPressed: (event) => { + root.down = true; + } + onReleased: (event) => { + root.down = false; + } + onClicked: (event) => { + if (event.button === Qt.LeftButton) root.clicked(); + if (event.button === Qt.RightButton) root.altAction(); + if (event.button === Qt.MiddleButton) root.middleClickAction(); + } + } + background: AcrylicRectangle { shiny: ((root.hovered && !root.down) || root.checked) - color: { - if (root.down) { - return Looks.colors.bg1Active - } else if ((root.hovered && !root.down) || root.checked) { - return Looks.colors.bg1Hover - } else { - return ColorUtils.transparentize(Looks.colors.bg1) - } + color: root.colBackground + border.width: 1 + border.color: root.colBackgroundBorder + + Behavior on border.color { + animation: Looks.transition.color.createObject(this) } } } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/BarToolTip.qml b/dots/.config/quickshell/ii/modules/waffle/bar/BarToolTip.qml new file mode 100644 index 000000000..d38566fdd --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/bar/BarToolTip.qml @@ -0,0 +1,8 @@ +import QtQuick +import Quickshell +import qs.modules.common +import qs.modules.waffle.looks + +WPopupToolTip { + anchorEdges: Config.options.waffles.bar.bottom ? Edges.Top : Edges.Bottom +} diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/SearchButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/SearchButton.qml index d1b59b85b..a86faaece 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/SearchButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/SearchButton.qml @@ -1,6 +1,7 @@ import QtQuick import QtQuick.Layouts import org.kde.kirigami as Kirigami +import qs import qs.services import qs.modules.common import qs.modules.waffle.looks @@ -10,4 +11,14 @@ AppButton { iconName: "system-search" separateLightDark: true + + onClicked: { + GlobalStates.overviewOpen = !GlobalStates.overviewOpen; // For now... + } + + BarToolTip { + id: tooltip + text: Translation.tr("Search") + extraVisibleCondition: root.shouldShowTooltip + } } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/StartButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/StartButton.qml index d5a4e0f97..4595802ee 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/StartButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/StartButton.qml @@ -1,6 +1,7 @@ import QtQuick import QtQuick.Layouts import org.kde.kirigami as Kirigami +import qs import qs.services import qs.modules.common import qs.modules.waffle.looks @@ -10,4 +11,14 @@ AppButton { leftInset: Config.options.waffles.bar.leftAlignApps ? 12 : 0 iconName: "start-here" + + onClicked: { + GlobalStates.overviewOpen = !GlobalStates.overviewOpen; // For now... + } + + BarToolTip { + id: tooltip + text: Translation.tr("Start") + extraVisibleCondition: root.shouldShowTooltip + } } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/SystemButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/SystemButton.qml index e1bb83684..1de9654d5 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/SystemButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/SystemButton.qml @@ -1,5 +1,6 @@ import QtQuick import QtQuick.Layouts +import qs import qs.services import qs.modules.common import qs.modules.waffle.looks @@ -7,35 +8,88 @@ import qs.modules.waffle.looks BarButton { id: root - // padding: 12 + checked: GlobalStates.sidebarRightOpen + onClicked: { + GlobalStates.sidebarRightOpen = !GlobalStates.sidebarRightOpen; // For now... + } contentItem: Item { - anchors.centerIn: root.background + anchors.fill: parent implicitHeight: column.implicitHeight implicitWidth: column.implicitWidth Row { id: column - anchors.centerIn: parent - spacing: 4 - - FluentIcon { - icon: WIcons.internetIcon + anchors { + top: parent.top + bottom: parent.bottom + horizontalCenter: parent.horizontalCenter } - - FluentIcon { - icon: { - const muted = Audio.sink?.audio.muted ?? false; - const volume = Audio.sink?.audio.volume ?? 0; - if (muted) return volume > 0 ? "speaker-off" : "speaker-none"; - if (volume == 0) return "speaker-none"; - if (volume < 0.5) return "speaker-1"; - return "speaker"; + spacing: 4 + + IconHoverArea { + id: internetHoverArea + iconItem: FluentIcon { + anchors.verticalCenter: parent.verticalCenter + icon: WIcons.internetIcon } } - FluentIcon { - icon: WIcons.batteryIcon + IconHoverArea { + id: volumeHoverArea + iconItem: FluentIcon { + anchors.verticalCenter: parent.verticalCenter + icon: { + const muted = Audio.sink?.audio.muted ?? false; + const volume = Audio.sink?.audio.volume ?? 0; + if (muted) + return volume > 0 ? "speaker-off" : "speaker-none"; + if (volume == 0) + return "speaker-none"; + if (volume < 0.5) + return "speaker-1"; + return "speaker"; + } + } + } + + IconHoverArea { + id: batteryHoverArea + iconItem: FluentIcon { + anchors.verticalCenter: parent.verticalCenter + icon: WIcons.batteryIcon + } } } } + + component IconHoverArea: MouseArea { + id: hoverArea + required property var iconItem + anchors { + top: parent.top + bottom: parent.bottom + } + hoverEnabled: true + implicitHeight: hoverArea.iconItem.implicitHeight + implicitWidth: hoverArea.iconItem.implicitWidth + + onPressed: (event) => event.accepted = false; // Don't consume clicks + + children: [iconItem] + } + + BarToolTip { + extraVisibleCondition: root.shouldShowTooltip && internetHoverArea.containsMouse + text: Translation.tr("%1\nInternet access").arg(Network.ethernet ? Translation.tr("Network") : Network.networkName) + } + BarToolTip { + extraVisibleCondition: root.shouldShowTooltip && volumeHoverArea.containsMouse + text: Translation.tr("Speakers (%1): %2") // + .arg(Audio.sink?.nickname || Audio.sink?.description || Translation.tr("Unknown")) // + .arg(`${Math.round(Audio.sink?.audio.volume * 100) || 0}%`) // + } + BarToolTip { + extraVisibleCondition: root.shouldShowTooltip && batteryHoverArea.containsMouse + text: Translation.tr("Battery: %1").arg(`${Math.round(Battery.percentage * 100) || 0}%`) + } } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/TaskAppButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/TaskAppButton.qml deleted file mode 100644 index 7363b0387..000000000 --- a/dots/.config/quickshell/ii/modules/waffle/bar/TaskAppButton.qml +++ /dev/null @@ -1,25 +0,0 @@ -import QtQuick -import QtQuick.Layouts -import qs.services -import qs.modules.common -import qs.modules.waffle.looks -import Quickshell - -AppButton { - id: root - - required property var appEntry - readonly property bool isSeparator: appEntry.appId === "SEPARATOR" - readonly property var desktopEntry: DesktopEntries.heuristicLookup(appEntry.appId) - - signal hoverPreviewRequested() - - iconName: AppSearch.guessIcon(appEntry.appId) - Timer { - running: root.hovered - interval: 250 - onTriggered: { - root.hoverPreviewRequested() - } - } -} diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/TaskViewButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/TaskViewButton.qml index c3a4853f0..cc35c8b41 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/TaskViewButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/TaskViewButton.qml @@ -16,4 +16,9 @@ AppButton { onClicked: { GlobalStates.overviewOpen = !GlobalStates.overviewOpen; } + + BarToolTip { + extraVisibleCondition: root.shouldShowTooltip + text: Translation.tr("Task View") // Should be a preview of workspaces, but we'll have this for now... + } } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/TimeButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/TimeButton.qml index f8e2f38cc..bb813c85c 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/TimeButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/TimeButton.qml @@ -33,4 +33,10 @@ BarButton { } } } + + BarToolTip { + id: tooltip + extraVisibleCondition: root.shouldShowTooltip + text: `${Qt.locale().toString(DateTime.clock.date, "dddd, MMMM d, yyyy")}\n\n${Qt.locale().toString(DateTime.clock.date, "ddd hh:mm AP")}` + } } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml b/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml index 5228abb5c..aa064118a 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/WaffleBarContent.qml @@ -3,6 +3,7 @@ import QtQuick.Layouts import qs.modules.common import qs.modules.common.widgets import qs.modules.waffle.looks +import qs.modules.waffle.bar.tasks Rectangle { id: root diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/WidgetsButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/WidgetsButton.qml index 7107cfafd..1c6c11859 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/WidgetsButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/WidgetsButton.qml @@ -52,4 +52,9 @@ AppButton { } } } + + BarToolTip { + extraVisibleCondition: root.shouldShowTooltip + text: Translation.tr("Widgets") + } } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/tasks/TaskAppButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/tasks/TaskAppButton.qml new file mode 100644 index 000000000..10fdbdf38 --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/bar/tasks/TaskAppButton.qml @@ -0,0 +1,71 @@ +import QtQuick +import QtQuick.Layouts +import qs.services +import qs.modules.common +import qs.modules.waffle.looks +import qs.modules.waffle.bar +import Quickshell + +AppButton { + id: root + + required property var appEntry + readonly property bool isSeparator: appEntry.appId === "SEPARATOR" + readonly property var desktopEntry: DesktopEntries.heuristicLookup(appEntry.appId) + property bool active: root.appEntry.toplevels.some(t => t.activated) + property bool hasWindows: appEntry.toplevels.length > 0 + + signal hoverPreviewRequested() + + multiple: appEntry.toplevels.length > 1 + checked: active + iconName: AppSearch.guessIcon(appEntry.appId) + tryCustomIcon: false + + onHoverTimedOut: { + root.hoverPreviewRequested() + } + + onClicked: { + root.hoverTimer.stop() // Prevents preview showing up when clicking to focus + if (root.multiple) { + root.hoverPreviewRequested() + } else if (root.appEntry.toplevels.length === 1) { + root.appEntry.toplevels[0].activate() + } else { + root.desktopEntry.execute() + } + } + + // Active indicator + Rectangle { + id: activeIndicator + opacity: root.hasWindows ? 1 : 0 + anchors { + horizontalCenter: root.background.horizontalCenter + bottom: root.background.bottom + bottomMargin: 1 + } + + implicitWidth: root.active ? 16 : 6 + implicitHeight: 3 + radius: height / 2 + + color: root.active ? Looks.colors.accent : Looks.colors.accentUnfocused + + Behavior on implicitWidth { + animation: Looks.transition.enter.createObject(this) + } + Behavior on color { + animation: Looks.transition.color.createObject(this) + } + Behavior on opacity { + animation: Looks.transition.opacity.createObject(this) + } + } + + BarToolTip { + extraVisibleCondition: root.shouldShowTooltip && !root.hasWindows + text: desktopEntry ? desktopEntry.name : appEntry.appId + } +} diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/TaskPreview.qml b/dots/.config/quickshell/ii/modules/waffle/bar/tasks/TaskPreview.qml similarity index 99% rename from dots/.config/quickshell/ii/modules/waffle/bar/TaskPreview.qml rename to dots/.config/quickshell/ii/modules/waffle/bar/tasks/TaskPreview.qml index 3c03563a3..6d8aeba1a 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/TaskPreview.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/tasks/TaskPreview.qml @@ -70,7 +70,7 @@ PopupWindow { fill: contentItem margins: -border.width } - border.color: ColorUtils.transparentize(Looks.colors.bg0Border, Looks.contentTransparency) + border.color: ColorUtils.transparentize(Looks.colors.bg0Border, Looks.shadowTransparency) border.width: 1 color: "transparent" radius: Looks.radius.large + border.width diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/Tasks.qml b/dots/.config/quickshell/ii/modules/waffle/bar/tasks/Tasks.qml similarity index 81% rename from dots/.config/quickshell/ii/modules/waffle/bar/Tasks.qml rename to dots/.config/quickshell/ii/modules/waffle/bar/tasks/Tasks.qml index eac963722..895b1353f 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/Tasks.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/tasks/Tasks.qml @@ -13,6 +13,10 @@ MouseArea { implicitWidth: row.implicitWidth hoverEnabled: true + function showPreviewPopup(appEntry, button) { + previewPopup.show(appEntry, button); + } + // Apps row RowLayout { id: row @@ -20,7 +24,7 @@ MouseArea { spacing: 0 Repeater { - // TODO: Include only apps (and windows) in current workspace only + // TODO: Include only apps (and windows) in current workspace only | wait, does that even make sense in a Hyprland workflow? model: ScriptModel { objectProp: "appId" values: TaskbarApps.apps.filter(app => app.appId !== "SEPARATOR") @@ -30,7 +34,7 @@ MouseArea { appEntry: modelData onHoverPreviewRequested: { - previewPopup.show(appEntry, this) + root.showPreviewPopup(appEntry, this) } } } diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/WindowPreview.qml b/dots/.config/quickshell/ii/modules/waffle/bar/tasks/WindowPreview.qml similarity index 99% rename from dots/.config/quickshell/ii/modules/waffle/bar/WindowPreview.qml rename to dots/.config/quickshell/ii/modules/waffle/bar/tasks/WindowPreview.qml index b1944c350..2839a6747 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/WindowPreview.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/tasks/WindowPreview.qml @@ -6,6 +6,7 @@ import qs.services import qs.modules.common import qs.modules.common.functions import qs.modules.waffle.looks +import qs.modules.waffle.bar import Quickshell import Quickshell.Wayland diff --git a/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml b/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml index df7df8187..09176830f 100644 --- a/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml +++ b/dots/.config/quickshell/ii/modules/waffle/looks/Looks.qml @@ -17,6 +17,7 @@ Singleton { property real backgroundTransparency: 0.17 property real contentTransparency: 0.25 + property real shadowTransparency: 0.6 colors: QtObject { id: colors property color bg0: root.dark ? "#1C1C1C" : "#EEEEEE" @@ -33,7 +34,9 @@ Singleton { property color fg1: root.dark ? "#D1D1D1" : "#626262" property color danger: "#C42B1C" property color dangerActive: "#B62D1F" - property color brand: Appearance.m3colors.m3primary + // property color accent: root.dark ? "#A5C6D8" : "#5377A3" + property color accent: Appearance.m3colors.m3primary + property color accentUnfocused: root.dark ? "#989898" : "#848484" } radius: QtObject { @@ -106,7 +109,7 @@ Singleton { property Component move: Component { NumberAnimation { - duration: 100 + duration: 170 easing.type: Easing.BezierSpline easing.bezierCurve: transition.easing.bezierCurve.easeInOut } diff --git a/dots/.config/quickshell/ii/modules/waffle/looks/WPopupToolTip.qml b/dots/.config/quickshell/ii/modules/waffle/looks/WPopupToolTip.qml new file mode 100644 index 000000000..b35258204 --- /dev/null +++ b/dots/.config/quickshell/ii/modules/waffle/looks/WPopupToolTip.qml @@ -0,0 +1,51 @@ +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import Quickshell +import qs.modules.common +import qs.modules.common.functions +import qs.modules.common.widgets +import qs.modules.waffle.looks + +PopupToolTip { + id: root + + property real padding: 2 + verticalPadding: padding + horizontalPadding: padding + + contentItem: Item { + anchors.centerIn: parent + implicitWidth: realContent.implicitWidth + root.verticalPadding * 2 + implicitHeight: realContent.implicitHeight + root.horizontalPadding * 2 + + Rectangle { + id: ambientShadow + z: 0 + anchors { + fill: realContent + margins: -border.width + } + border.color: ColorUtils.transparentize(Looks.colors.bg0Border, Looks.shadowTransparency) + border.width: 1 + color: "transparent" + radius: realContent.radius + border.width + } + + Rectangle { + id: realContent + z: 1 + anchors.centerIn: parent + implicitWidth: tooltipText.implicitWidth + 10 * 2 + implicitHeight: tooltipText.implicitHeight + 8 * 2 + color: Looks.colors.bg1 + radius: Looks.radius.medium + + WText { + id: tooltipText + text: root.text + anchors.centerIn: parent + } + } + } +} diff --git a/dots/.config/quickshell/ii/services/AppSearch.qml b/dots/.config/quickshell/ii/services/AppSearch.qml index 7d8c375a6..d67919890 100644 --- a/dots/.config/quickshell/ii/services/AppSearch.qml +++ b/dots/.config/quickshell/ii/services/AppSearch.qml @@ -94,7 +94,7 @@ Singleton { if (!str || str.length == 0) return "image-missing"; // Quickshell's desktop entry lookup - const entry = DesktopEntries.heuristicLookup(str); + const entry = DesktopEntries.byId(str); if (entry) return entry.icon; // Normal substitutions @@ -149,6 +149,9 @@ Singleton { if (iconExists(guess)) return guess; } + // Quickshell's desktop entry lookup + const heuristicEntry = DesktopEntries.heuristicLookup(str); + if (heuristicEntry) return heuristicEntry.icon; // Give up return "application-x-executable"; From 7bfbf011d2d0b317f127093999d93a935340b9c1 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Wed, 12 Nov 2025 21:40:21 +0100 Subject: [PATCH 087/107] taskbar: middle click to launch new instance --- .../ii/modules/waffle/bar/tasks/TaskAppButton.qml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dots/.config/quickshell/ii/modules/waffle/bar/tasks/TaskAppButton.qml b/dots/.config/quickshell/ii/modules/waffle/bar/tasks/TaskAppButton.qml index 10fdbdf38..53b68b82c 100644 --- a/dots/.config/quickshell/ii/modules/waffle/bar/tasks/TaskAppButton.qml +++ b/dots/.config/quickshell/ii/modules/waffle/bar/tasks/TaskAppButton.qml @@ -37,6 +37,12 @@ AppButton { } } + onMiddleClickAction: { + if (root.desktopEntry) { + desktopEntry.execute() + } + } + // Active indicator Rectangle { id: activeIndicator From df0c7bbbd68cad378d86aed0474e0d1b9a68b841 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Wed, 12 Nov 2025 21:49:12 +0100 Subject: [PATCH 088/107] Update rules.conf --- dots/.config/hypr/hyprland/rules.conf | 2 -- 1 file changed, 2 deletions(-) diff --git a/dots/.config/hypr/hyprland/rules.conf b/dots/.config/hypr/hyprland/rules.conf index dc34a4a6b..01ac1056d 100644 --- a/dots/.config/hypr/hyprland/rules.conf +++ b/dots/.config/hypr/hyprland/rules.conf @@ -154,8 +154,6 @@ layerrule = animation slide right, quickshell:sidebarRight layerrule = animation slide left, quickshell:sidebarLeft layerrule = animation slide, quickshell:verticalBar layerrule = animation slide top, quickshell:wallpaperSelector -# Quickshell - Waffles -layerrule = animation slide, quickshell:wBar # Launchers need to be FAST layerrule = noanim, gtk4-layer-shell From 5c92ad64f9953328921444eaab07c3687f0da1e1 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Wed, 12 Nov 2025 21:53:22 +0100 Subject: [PATCH 089/107] fix bar wrong model --- dots/.config/quickshell/ii/modules/ii/bar/Bar.qml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/dots/.config/quickshell/ii/modules/ii/bar/Bar.qml b/dots/.config/quickshell/ii/modules/ii/bar/Bar.qml index 71a64d76d..0bf1ad917 100644 --- a/dots/.config/quickshell/ii/modules/ii/bar/Bar.qml +++ b/dots/.config/quickshell/ii/modules/ii/bar/Bar.qml @@ -14,14 +14,12 @@ Scope { Variants { // For each monitor - model: ScriptModel { - values: { - const screens = Quickshell.screens; - const list = Config.options.bar.screenList; - if (!list || list.length === 0) - return screens; - return screens.filter(screen => list.includes(screen.name)); - } + model: { + const screens = Quickshell.screens; + const list = Config.options.bar.screenList; + if (!list || list.length === 0) + return screens; + return screens.filter(screen => list.includes(screen.name)); } LazyLoader { id: barLoader From 3e4674d65172c1daf1573b22047284e636c8798f Mon Sep 17 00:00:00 2001 From: "Celestial.y" Date: Thu, 13 Nov 2025 07:40:42 +0800 Subject: [PATCH 090/107] Add git status in diagnose --- diagnose | 1 + 1 file changed, 1 insertion(+) diff --git a/diagnose b/diagnose index a686cab5e..10592d3d6 100755 --- a/diagnose +++ b/diagnose @@ -65,6 +65,7 @@ ii_check_PKGBUILD_version() { e "Checking git repo info" x git remote get-url origin x git rev-parse HEAD +x git status x git submodule status --recursive e "Checking distro" From 8d1fe864ad33438978f13670590f407522ea0983 Mon Sep 17 00:00:00 2001 From: "Celestial.y" Date: Thu, 13 Nov 2025 07:44:32 +0800 Subject: [PATCH 091/107] Rename func in diagnose --- diagnose | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/diagnose b/diagnose index 10592d3d6..db4a239e0 100755 --- a/diagnose +++ b/diagnose @@ -36,7 +36,7 @@ _exec() { "$@" err=$?;if [ ! $err -eq 0 ];then echo "[---EXIT $err---]";else echo "[---SUCCESS---]";fi } -ii_check_distro_id() { +_check_distro_id() { OS_RELEASE_FILE=/etc/os-release if [[ -f "$OS_RELEASE_FILE" ]]; then OS_DISTRO_ID=$(awk -F'=' '/^ID=/ { gsub("\"","",$2); print tolower($2) }' ${OS_RELEASE_FILE} 2> /dev/null) @@ -47,18 +47,18 @@ ii_check_distro_id() { echo "$OS_RELEASE_FILE does not exist." fi } -ii_check_distro() { +_check_distro() { lsb_release -a || cat /etc/os-release || cat /etc/lsb-release } -ii_check_venv() { +_check_venv() { source $(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate which python deactivate } -ii_check_quickshell_version() { +_check_quickshell_version() { pacman -Q | grep -E 'quickshell|qt6-base' } -ii_check_PKGBUILD_version() { +_check_PKGBUILD_version() { pacman -Q | grep '^illogical-impulse-' } @@ -69,8 +69,8 @@ x git status x git submodule status --recursive e "Checking distro" -x ii_check_distro_id -#x ii_check_distro +x _check_distro_id +#x _check_distro e "Checking variables" x declare -p XDG_CACHE_HOME # ~/.cache @@ -91,8 +91,8 @@ x ls -l ~/.local/state/quickshell/.venv e "Checking versions" x Hyprland --version -x ii_check_quickshell_version -x ii_check_PKGBUILD_version +x _check_quickshell_version +x _check_PKGBUILD_version e "Finished. Output saved as \"$output_file\"." if ! command -v curl 2>&1 >>/dev/null ;then echo "\"curl\" not found, pastebin upload unavailable.";exit;fi From 2ea3904b56a5c7ed4987c563a1b25a27ce2440ed Mon Sep 17 00:00:00 2001 From: "Celestial.y" Date: Thu, 13 Nov 2025 09:17:18 +0800 Subject: [PATCH 092/107] Update help --- setup | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup b/setup index 00afe99c0..cc5fca8ab 100755 --- a/setup +++ b/setup @@ -24,7 +24,7 @@ Syntax: Subcommands: install (Re)Install/Update illogical-impulse. - Note: To update to the latest, manually run \"git pull\" first. + Note: To update to the latest, manually run \"git stash && git pull\" first. install-deps Run the install step \"1. Install dependencies\" install-setups Run the install step \"2. Setup for permissions/services etc\" install-files Run the install step \"3. Copying config files\" From e07ddaa0b31a5882d8452a867e0249ce09ff076d Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Thu, 13 Nov 2025 21:23:02 +0100 Subject: [PATCH 093/107] make switch of more correct size --- .../quickshell/ii/modules/common/widgets/ConfigSwitch.qml | 1 - .../quickshell/ii/modules/common/widgets/StyledSwitch.qml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/dots/.config/quickshell/ii/modules/common/widgets/ConfigSwitch.qml b/dots/.config/quickshell/ii/modules/common/widgets/ConfigSwitch.qml index 02e0eabad..53e6a27c0 100644 --- a/dots/.config/quickshell/ii/modules/common/widgets/ConfigSwitch.qml +++ b/dots/.config/quickshell/ii/modules/common/widgets/ConfigSwitch.qml @@ -34,7 +34,6 @@ RippleButton { StyledSwitch { id: switchWidget down: root.down - scale: 0.6 Layout.fillWidth: false checked: root.checked onClicked: root.clicked() diff --git a/dots/.config/quickshell/ii/modules/common/widgets/StyledSwitch.qml b/dots/.config/quickshell/ii/modules/common/widgets/StyledSwitch.qml index 56c1425d9..c701ff7cf 100644 --- a/dots/.config/quickshell/ii/modules/common/widgets/StyledSwitch.qml +++ b/dots/.config/quickshell/ii/modules/common/widgets/StyledSwitch.qml @@ -9,7 +9,7 @@ import Qt5Compat.GraphicalEffects */ Switch { id: root - property real scale: 0.6 // Default in m3 spec is huge af + property real scale: 0.75 // Default in m3 spec is huge af implicitHeight: 32 * root.scale implicitWidth: 52 * root.scale property color activeColor: Appearance?.colors.colPrimary ?? "#685496" From 6194ef912b510fa12ffa70cad00d56f537dadd72 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Thu, 13 Nov 2025 21:23:16 +0100 Subject: [PATCH 094/107] remove screen corners for waffle panel family --- dots/.config/quickshell/ii/shell.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dots/.config/quickshell/ii/shell.qml b/dots/.config/quickshell/ii/shell.qml index dc0a9509f..ea100fdda 100644 --- a/dots/.config/quickshell/ii/shell.qml +++ b/dots/.config/quickshell/ii/shell.qml @@ -87,7 +87,7 @@ ShellRoot { property list families: ["ii", "waffle"] property var panelFamilies: ({ "ii": ["iiBar", "iiBackground", "iiCheatsheet", "iiDock", "iiLock", "iiMediaControls", "iiNotificationPopup", "iiOnScreenDisplay", "iiOnScreenKeyboard", "iiOverlay", "iiOverview", "iiPolkit", "iiRegionSelector", "iiReloadPopup", "iiScreenCorners", "iiSessionScreen", "iiSidebarLeft", "iiSidebarRight", "iiVerticalBar", "iiWallpaperSelector"], - "waffle": ["wBar", "wBackground", "iiCheatsheet", "iiDock", "iiLock", "iiMediaControls", "iiNotificationPopup", "iiOnScreenDisplay", "iiOnScreenKeyboard", "iiOverlay", "iiOverview", "iiPolkit", "iiRegionSelector", "iiReloadPopup", "iiScreenCorners", "iiSessionScreen", "iiSidebarLeft", "iiSidebarRight", "iiWallpaperSelector"], + "waffle": ["wBar", "wBackground", "iiCheatsheet", "iiDock", "iiLock", "iiMediaControls", "iiNotificationPopup", "iiOnScreenDisplay", "iiOnScreenKeyboard", "iiOverlay", "iiOverview", "iiPolkit", "iiRegionSelector", "iiReloadPopup", "iiSessionScreen", "iiSidebarLeft", "iiSidebarRight", "iiWallpaperSelector"], }) function cyclePanelFamily() { const currentIndex = families.indexOf(Config.options.panelFamily) From 5ad3508d3ec2fa6b975cd4d7b0013a8946d30b90 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Thu, 13 Nov 2025 21:23:42 +0100 Subject: [PATCH 095/107] bg: clock: fix funny overlapping status row (#2413) --- .../background/widgets/clock/ClockWidget.qml | 104 +++++++++--------- .../background/widgets/clock/CookieQuote.qml | 11 +- 2 files changed, 59 insertions(+), 56 deletions(-) diff --git a/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/ClockWidget.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/ClockWidget.qml index c5803b6e2..6d636be89 100644 --- a/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/ClockWidget.qml +++ b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/ClockWidget.qml @@ -38,13 +38,14 @@ AbstractBackgroundWidget { Column { id: contentColumn anchors.centerIn: parent - spacing: 6 + spacing: 10 FadeLoader { id: cookieClockLoader anchors.horizontalCenter: parent.horizontalCenter shown: root.clockStyle === "cookie" && (root.shouldShow) sourceComponent: Column { + spacing: 10 CookieClock { anchors.horizontalCenter: parent.horizontalCenter } @@ -88,61 +89,64 @@ AbstractBackgroundWidget { } } } - Item { - id: statusText + StatusRow { anchors.horizontalCenter: parent.horizontalCenter - implicitHeight: statusTextBg.implicitHeight - implicitWidth: statusTextBg.implicitWidth - StyledRectangularShadow { - target: statusTextBg - visible: statusTextBg.visible && root.clockStyle === "cookie" - opacity: statusTextBg.opacity + } + } + + component StatusRow: Item { + id: statusText + implicitHeight: statusTextBg.implicitHeight + implicitWidth: statusTextBg.implicitWidth + StyledRectangularShadow { + target: statusTextBg + visible: statusTextBg.visible && root.clockStyle === "cookie" + opacity: statusTextBg.opacity + } + Rectangle { + id: statusTextBg + anchors.centerIn: parent + clip: true + opacity: (safetyStatusText.shown || lockStatusText.shown) ? 1 : 0 + visible: opacity > 0 + implicitHeight: statusTextRow.implicitHeight + 5 * 2 + implicitWidth: statusTextRow.implicitWidth + 5 * 2 + radius: Appearance.rounding.small + color: ColorUtils.transparentize(Appearance.colors.colSecondaryContainer, root.clockStyle === "cookie" ? 0 : 1) + + Behavior on implicitWidth { + animation: Appearance.animation.elementResize.numberAnimation.createObject(this) } - Rectangle { - id: statusTextBg + Behavior on implicitHeight { + animation: Appearance.animation.elementResize.numberAnimation.createObject(this) + } + Behavior on opacity { + animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this) + } + + RowLayout { + id: statusTextRow anchors.centerIn: parent - clip: true - opacity: (safetyStatusText.shown || lockStatusText.shown) ? 1 : 0 - visible: opacity > 0 - implicitHeight: statusTextRow.implicitHeight + 5 * 2 - implicitWidth: statusTextRow.implicitWidth + 5 * 2 - radius: Appearance.rounding.small - color: ColorUtils.transparentize(Appearance.colors.colSecondaryContainer, root.clockStyle === "cookie" ? 0 : 1) - - Behavior on implicitWidth { - animation: Appearance.animation.elementResize.numberAnimation.createObject(this) + spacing: 14 + Item { + Layout.fillWidth: root.textHorizontalAlignment !== Text.AlignLeft + implicitWidth: 1 } - Behavior on implicitHeight { - animation: Appearance.animation.elementResize.numberAnimation.createObject(this) + ClockStatusText { + id: safetyStatusText + shown: root.wallpaperSafetyTriggered + statusIcon: "hide_image" + statusText: Translation.tr("Wallpaper safety enforced") } - Behavior on opacity { - animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this) + ClockStatusText { + id: lockStatusText + shown: GlobalStates.screenLocked && Config.options.lock.showLockedText + statusIcon: "lock" + statusText: Translation.tr("Locked") } - - RowLayout { - id: statusTextRow - anchors.centerIn: parent - spacing: 14 - Item { - Layout.fillWidth: root.textHorizontalAlignment !== Text.AlignLeft - implicitWidth: 1 - } - ClockStatusText { - id: safetyStatusText - shown: root.wallpaperSafetyTriggered - statusIcon: "hide_image" - statusText: Translation.tr("Wallpaper safety enforced") - } - ClockStatusText { - id: lockStatusText - shown: GlobalStates.screenLocked && Config.options.lock.showLockedText - statusIcon: "lock" - statusText: Translation.tr("Locked") - } - Item { - Layout.fillWidth: root.textHorizontalAlignment !== Text.AlignRight - implicitWidth: 1 - } + Item { + Layout.fillWidth: root.textHorizontalAlignment !== Text.AlignRight + implicitWidth: 1 } } } diff --git a/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/CookieQuote.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/CookieQuote.qml index 19567aeb4..895926465 100644 --- a/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/CookieQuote.qml +++ b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/CookieQuote.qml @@ -12,9 +12,6 @@ Item { implicitWidth: quoteBox.implicitWidth implicitHeight: quoteBox.implicitHeight - anchors.bottom: parent.bottom - anchors.bottomMargin: -24 - DropShadow { source: quoteBox anchors.fill: quoteBox @@ -29,14 +26,16 @@ Item { Rectangle { id: quoteBox - implicitWidth: quoteStyledText.width + quoteIcon.width + 16 // for spacing on both sides - implicitHeight: quoteStyledText.height + 8 + implicitWidth: quoteRow.implicitWidth + 8 * 2 + implicitHeight: quoteRow.implicitHeight + 4 * 2 radius: Appearance.rounding.small color: Appearance.colors.colSecondaryContainer Row { + id: quoteRow anchors.centerIn: parent spacing: 4 + MaterialSymbol { id: quoteIcon anchors.top: parent.top @@ -57,4 +56,4 @@ Item { } } } -} \ No newline at end of file +} From 6c7ac470bd3d9a0c0347c5f67c5160ace5ff63a5 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Thu, 13 Nov 2025 23:27:19 +0100 Subject: [PATCH 096/107] left sidebar: pinning (closes #2395) --- .../ii/modules/ii/sidebarLeft/AiChat.qml | 2 +- .../ii/modules/ii/sidebarLeft/SidebarLeft.qml | 62 ++++++++++++++++--- 2 files changed, 55 insertions(+), 9 deletions(-) diff --git a/dots/.config/quickshell/ii/modules/ii/sidebarLeft/AiChat.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/AiChat.qml index 0e0eeb2b9..820626b51 100644 --- a/dots/.config/quickshell/ii/modules/ii/sidebarLeft/AiChat.qml +++ b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/AiChat.qml @@ -395,7 +395,7 @@ Inline w/ backslash and round brackets \\(e^{i\\pi} + 1 = 0\\) shown: Ai.messageIDs.length === 0 icon: "neurology" title: Translation.tr("Large language models") - description: Translation.tr("Type /key to get started with online models\nCtrl+O to expand the sidebar\nCtrl+P to detach sidebar into a window") + description: Translation.tr("Type /key to get started with online models\nCtrl+O to expand sidebar\nCtrl+P to pin sidebar\nCtrl+D to detach sidebar") shape: MaterialShape.Shape.PixelCircle } diff --git a/dots/.config/quickshell/ii/modules/ii/sidebarLeft/SidebarLeft.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/SidebarLeft.qml index 9a26b07be..fc275976c 100644 --- a/dots/.config/quickshell/ii/modules/ii/sidebarLeft/SidebarLeft.qml +++ b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/SidebarLeft.qml @@ -11,9 +11,53 @@ import Quickshell.Hyprland Scope { // Scope id: root property bool detach: false + property bool pin: false property Component contentComponent: SidebarLeftContent {} property Item sidebarContent + function toggleDetach() { + root.detach = !root.detach; + } + + Process { // Dodge cursor away, pin, move cursor back + id: pinWithFunnyHyprlandWorkaroundProc + property var hook: null + property int cursorX; + property int cursorY; + function doIt() { + command = ["hyprctl", "cursorpos"] + hook = (output) => { + cursorX = parseInt(output.split(",")[0]); + cursorY = parseInt(output.split(",")[1]); + doIt2(); + } + running = true; + } + function doIt2(output) { + command = ["bash", "-c", "hyprctl dispatch movecursor 9999 9999"]; + hook = () => { + doIt3(); + } + running = true; + } + function doIt3(output) { + root.pin = !root.pin; + command = ["bash", "-c", `sleep 0.01; hyprctl dispatch movecursor ${cursorX} ${cursorY}`]; + hook = null + running = true; + } + stdout: StdioCollector { + onStreamFinished: { + pinWithFunnyHyprlandWorkaroundProc.hook(text); + } + } + } + + function togglePin() { + if (!root.pin) pinWithFunnyHyprlandWorkaroundProc.doIt() + else root.pin = !root.pin; + } + Component.onCompleted: { root.sidebarContent = contentComponent.createObject(null, { "scopeRoot": root, @@ -51,11 +95,12 @@ Scope { // Scope GlobalStates.sidebarLeftOpen = false } - exclusiveZone: 0 + exclusionMode: ExclusionMode.Normal + exclusiveZone: root.pin ? sidebarWidth : 0 implicitWidth: Appearance.sizes.sidebarWidthExtended + Appearance.sizes.elevationMargin WlrLayershell.namespace: "quickshell:sidebarLeft" // Hyprland 0.49: OnDemand is Exclusive, Exclusive just breaks click-outside-to-close - // WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand + WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand color: "transparent" anchors { @@ -71,7 +116,7 @@ Scope { // Scope HyprlandFocusGrab { // Click outside to close id: grab windows: [ sidebarRoot ] - active: sidebarRoot.visible + active: sidebarRoot.visible && !root.pin onActiveChanged: { // Focus the selected tab if (active) sidebarLeftBackground.children[0].focusActiveItem() } @@ -109,9 +154,10 @@ Scope { // Scope if (event.modifiers === Qt.ControlModifier) { if (event.key === Qt.Key_O) { sidebarRoot.extend = !sidebarRoot.extend; - } - else if (event.key === Qt.Key_P) { - root.detach = !root.detach; + } else if (event.key === Qt.Key_D) { + root.toggleDetach(); + } else if (event.key === Qt.Key_P) { + root.togglePin(); } event.accepted = true; } @@ -141,8 +187,8 @@ Scope { // Scope Keys.onPressed: (event) => { if (event.modifiers === Qt.ControlModifier) { - if (event.key === Qt.Key_P) { - root.detach = !root.detach; + if (event.key === Qt.Key_D) { + root.toggleDetach(); } event.accepted = true; } From 666cf09d5f59640dfd83e2a5744888394c57f3b7 Mon Sep 17 00:00:00 2001 From: "Celestial.y" Date: Fri, 14 Nov 2025 06:29:31 +0800 Subject: [PATCH 097/107] Remove pkgver in PKGBUILD so it does not get modified during building --- .../dist-arch/illogical-impulse-quickshell-git/PKGBUILD | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/sdata/dist-arch/illogical-impulse-quickshell-git/PKGBUILD b/sdata/dist-arch/illogical-impulse-quickshell-git/PKGBUILD index c77fc5913..806f2272e 100644 --- a/sdata/dist-arch/illogical-impulse-quickshell-git/PKGBUILD +++ b/sdata/dist-arch/illogical-impulse-quickshell-git/PKGBUILD @@ -9,7 +9,7 @@ conflicts=("quickshell-git") _pkgname=quickshell pkgname="$_prefix-$_pkgname-git" pkgver=0.1.0.r1 -pkgrel=4 +pkgrel=5 pkgdesc="$_pkgname-git pinned commit and extra deps for $_prefix" arch=(x86_64 aarch64) url='https://git.outfoxxed.me/quickshell/quickshell' @@ -61,13 +61,6 @@ source=("$_pkgsrc::git+$url.git#commit=$_commit" sha256sums=('SKIP' '8543e21aeaaa5441b73a679160e7601a957f16c433e8d6bd9257e80bd0e94083') - -pkgver() { - cd "$_pkgsrc" - git describe --long --tags --abbrev=7 --exclude='*[a-zA-Z][a-zA-Z]*' \ - | sed -E 's/^[^0-9]*//;s/([^-]*-g)/r\1/;s/-/./g' -} - build() { cd "$_pkgname" cmake -GNinja -B build \ From 323b0bc257e1117b1db688e7cc463c4907188ee2 Mon Sep 17 00:00:00 2001 From: "Celestial.y" Date: Fri, 14 Nov 2025 06:40:17 +0800 Subject: [PATCH 098/107] Add .gitignore --- sdata/dist-arch/illogical-impulse-quickshell-git/.gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 sdata/dist-arch/illogical-impulse-quickshell-git/.gitignore diff --git a/sdata/dist-arch/illogical-impulse-quickshell-git/.gitignore b/sdata/dist-arch/illogical-impulse-quickshell-git/.gitignore new file mode 100644 index 000000000..7606c6ed4 --- /dev/null +++ b/sdata/dist-arch/illogical-impulse-quickshell-git/.gitignore @@ -0,0 +1 @@ +/quickshell \ No newline at end of file From 499b0628eaf836ecf72fbf3acfd681739a7cdfb1 Mon Sep 17 00:00:00 2001 From: fuggy <45698918+nonetrix@users.noreply.github.com> Date: Thu, 13 Nov 2025 18:37:09 -0600 Subject: [PATCH 099/107] Add Valve icon --- dots/.config/quickshell/ii/modules/settings/InterfaceConfig.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dots/.config/quickshell/ii/modules/settings/InterfaceConfig.qml b/dots/.config/quickshell/ii/modules/settings/InterfaceConfig.qml index 738578585..1614ec47f 100644 --- a/dots/.config/quickshell/ii/modules/settings/InterfaceConfig.qml +++ b/dots/.config/quickshell/ii/modules/settings/InterfaceConfig.qml @@ -22,7 +22,7 @@ ContentPage { // Use a nerdfont to see the icons options: ([ "󰖳", "", "󰨡", "", "󰌽", "󰣇", "", "", "", - "", "", "󱄛", "", "", "⌘", "󰀲", "󰟍", "" + "", "", "󱄛", "", "", "", "⌘", "󰀲", "󰟍", "" ]).map(icon => { return { displayName: icon, value: icon From 45a78c383b8a324800b2d559344fbd6105e31b22 Mon Sep 17 00:00:00 2001 From: clsty Date: Fri, 14 Nov 2025 09:09:58 +0800 Subject: [PATCH 100/107] Add -F, --firstrun --- sdata/subcmd-install/3.files-legacy.sh | 20 ++++++++++++++------ sdata/subcmd-install/options.sh | 6 ++++-- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/sdata/subcmd-install/3.files-legacy.sh b/sdata/subcmd-install/3.files-legacy.sh index 2c01bf58b..5d6bd8a62 100644 --- a/sdata/subcmd-install/3.files-legacy.sh +++ b/sdata/subcmd-install/3.files-legacy.sh @@ -8,7 +8,7 @@ function copy_file_s_t(){ local t=$2 if [ -f $t ];then echo -e "${STY_YELLOW}[$0]: \"$t\" already exists.${STY_RST}" - if $firstrun;then + if ${INSTALL_FIRSTRUN};then echo -e "${STY_BLUE}[$0]: It seems to be the firstrun.${STY_RST}" v mv $t $t.old v cp -f $s $t @@ -35,11 +35,19 @@ function copy_dir_s_t(){ ##################################################################################### # In case some dirs does not exists v mkdir -p $XDG_BIN_HOME $XDG_CACHE_HOME $XDG_CONFIG_HOME $XDG_DATA_HOME/icons -if test -f "${FIRSTRUN_FILE}"; then - firstrun=false -else - firstrun=true -fi + +case ${INSTALL_FIRSTRUN} in + # When specify --firstrun + true) sleep 0 ;; + # When not specify --firstrun + *) + if test -f "${FIRSTRUN_FILE}"; then + ${INSTALL_FIRSTRUN}=false + else + ${INSTALL_FIRSTRUN}=true + fi + ;; +esac # `--delete' for rsync to make sure that # original dotfiles and new ones in the SAME DIRECTORY diff --git a/sdata/subcmd-install/options.sh b/sdata/subcmd-install/options.sh index 5d843d83d..992010cfb 100644 --- a/sdata/subcmd-install/options.sh +++ b/sdata/subcmd-install/options.sh @@ -8,6 +8,7 @@ Idempotent installation for dotfiles. Options for install: -h, --help Print this help message and exit -f, --force (Dangerous) Force mode without any confirm + -F, --fisrtrun Act like it is the first run -c, --clean Clean the build cache first --skip-allgreeting Skip the whole process greeting --skip-alldeps Skip the whole process installing dependency @@ -43,8 +44,8 @@ cleancache(){ # `man getopt` to see more para=$(getopt \ - -o hfk:cs \ - -l help,force,fontset:,clean,skip-allgreeting,skip-alldeps,skip-allsetups,skip-allfiles,skip-sysupdate,skip-plasmaintg,skip-backup,skip-quickshell,skip-fish,skip-hyprland,skip-fontconfig,skip-miscconf,core,exp-files,via-nix \ + -o hfFk:cs \ + -l help,force,firstrun,fontset:,clean,skip-allgreeting,skip-alldeps,skip-allsetups,skip-allfiles,skip-sysupdate,skip-plasmaintg,skip-backup,skip-quickshell,skip-fish,skip-hyprland,skip-fontconfig,skip-miscconf,core,exp-files,via-nix \ -n "$0" -- "$@") [ $? != 0 ] && echo "$0: Error when getopt, please recheck parameters." && exit 1 ##################################################################################### @@ -69,6 +70,7 @@ while true ; do -c|--clean) shift;; ## Ones without parameter -f|--force) ask=false;shift;; + -F|--firstrun) INSTALL_FIRSTRUN=true;shift;; --skip-allgreeting) SKIP_ALLGREETING=true;shift;; --skip-alldeps) SKIP_ALLDEPS=true;shift;; --skip-allsetups) SKIP_ALLSETUPS=true;shift;; From f8af8093f7ff6029323cf506ff5f76836556a66e Mon Sep 17 00:00:00 2001 From: clsty Date: Fri, 14 Nov 2025 09:13:46 +0800 Subject: [PATCH 101/107] Improve case syntax --- sdata/subcmd-install/3.files-exp.sh | 4 ++-- sdata/subcmd-install/3.files-legacy.sh | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/sdata/subcmd-install/3.files-exp.sh b/sdata/subcmd-install/3.files-exp.sh index 0ff62c0e3..e924ef1d5 100644 --- a/sdata/subcmd-install/3.files-exp.sh +++ b/sdata/subcmd-install/3.files-exp.sh @@ -153,7 +153,7 @@ get_next_backup_number() { # ============================================================================= # Run user preference wizard -case $ask in +case "$ask" in false) sleep 0 ;; *) wizard_update_preferences ;; esac @@ -214,7 +214,7 @@ for pattern in "${patterns[@]}"; do fi # Execute based on mode - case $mode in + case "$mode" in "sync") if [[ -d "$from" ]]; then warning_rsync_delete diff --git a/sdata/subcmd-install/3.files-legacy.sh b/sdata/subcmd-install/3.files-legacy.sh index 5d6bd8a62..30e9a07e2 100644 --- a/sdata/subcmd-install/3.files-legacy.sh +++ b/sdata/subcmd-install/3.files-legacy.sh @@ -36,7 +36,7 @@ function copy_dir_s_t(){ # In case some dirs does not exists v mkdir -p $XDG_BIN_HOME $XDG_CACHE_HOME $XDG_CONFIG_HOME $XDG_DATA_HOME/icons -case ${INSTALL_FIRSTRUN} in +case "${INSTALL_FIRSTRUN}" in # When specify --firstrun true) sleep 0 ;; # When not specify --firstrun @@ -54,7 +54,7 @@ esac # (eg. in ~/.config/hypr) won't be mixed together # MISC (For dots/.config/* but not quickshell, not fish, not Hyprland, not fontconfig) -case $SKIP_MISCCONF in +case "${SKIP_MISCCONF}" in true) sleep 0;; *) for i in $(find dots/.config/ -mindepth 1 -maxdepth 1 ! -name 'quickshell' ! -name 'fish' ! -name 'hypr' ! -name 'fontconfig' -exec basename {} \;); do @@ -68,7 +68,7 @@ case $SKIP_MISCCONF in ;; esac -case $SKIP_QUICKSHELL in +case "${SKIP_QUICKSHELL}" in true) sleep 0;; *) # Should overwriting the whole directory not only ~/.config/quickshell/ii/ cuz https://github.com/end-4/dots-hyprland/issues/2294#issuecomment-3448671064 @@ -76,14 +76,14 @@ case $SKIP_QUICKSHELL in ;; esac -case $SKIP_FISH in +case "${SKIP_FISH}" in true) sleep 0;; *) warning_rsync_delete; v rsync -av --delete dots/.config/fish/ "$XDG_CONFIG_HOME"/fish/ ;; esac -case $SKIP_FONTCONFIG in +case "${SKIP_FONTCONFIG}" in true) sleep 0;; *) case "$FONTSET_DIR_NAME" in @@ -93,7 +93,7 @@ case $SKIP_FONTCONFIG in esac # For Hyprland -case $SKIP_HYPRLAND in +case "${SKIP_HYPRLAND}" in true) sleep 0;; *) if ! [ -d "$XDG_CONFIG_HOME"/hypr ]; then v mkdir -p "$XDG_CONFIG_HOME"/hypr ; fi From 63c3433b6f3e65ae9aaf44138f8cc117c8db543d Mon Sep 17 00:00:00 2001 From: clsty Date: Fri, 14 Nov 2025 09:19:20 +0800 Subject: [PATCH 102/107] Not using pkgver() in PKGBUILD --- sdata/dist-arch/README.md | 3 +++ sdata/dist-arch/illogical-impulse-microtex-git/PKGBUILD | 5 ----- sdata/dist-arch/illogical-impulse-oneui4-icons-git/PKGBUILD | 5 ----- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/sdata/dist-arch/README.md b/sdata/dist-arch/README.md index 7f2338480..7e4fac9bf 100644 --- a/sdata/dist-arch/README.md +++ b/sdata/dist-arch/README.md @@ -18,3 +18,6 @@ Why is this awesome? The PKGBUILDs contains two forms of dependencies: - Package name written in dependencies, like a "meta" package. - Normal PKGBUILD content to build dependencies, e.g. AGS, which is often for version controlling. + +## Note +- `pkgver()` should be removed from `PKGBUILD` cuz it will modify the `PKGBUILD` which is tracked by Git and should not be modified during building. diff --git a/sdata/dist-arch/illogical-impulse-microtex-git/PKGBUILD b/sdata/dist-arch/illogical-impulse-microtex-git/PKGBUILD index b2f48a5bd..8b4ab8f36 100644 --- a/sdata/dist-arch/illogical-impulse-microtex-git/PKGBUILD +++ b/sdata/dist-arch/illogical-impulse-microtex-git/PKGBUILD @@ -17,11 +17,6 @@ makedepends=("git" "cmake") source=("git+${url}.git") sha256sums=("SKIP") -pkgver() { - cd $_pkgname - printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" -} - prepare() { cd $_pkgname sed -i 's/gtksourceviewmm-3.0/gtksourceviewmm-4.0/' CMakeLists.txt diff --git a/sdata/dist-arch/illogical-impulse-oneui4-icons-git/PKGBUILD b/sdata/dist-arch/illogical-impulse-oneui4-icons-git/PKGBUILD index 9b9a9c36d..ad8270712 100644 --- a/sdata/dist-arch/illogical-impulse-oneui4-icons-git/PKGBUILD +++ b/sdata/dist-arch/illogical-impulse-oneui4-icons-git/PKGBUILD @@ -10,11 +10,6 @@ source=("git+${url}.git") sha256sums=('SKIP') options=('!strip') -pkgver(){ - cd $srcdir/$_pkgname - printf 'r%s.%s' "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" -} - package() { cd $srcdir/$_pkgname install -dm755 "$pkgdir/usr/share/icons" From f0643c9c5c0db45aa783e6c1fc47de49ce935181 Mon Sep 17 00:00:00 2001 From: MannuVilasara Date: Fri, 14 Nov 2025 07:02:16 +0530 Subject: [PATCH 103/107] fix: syntanx error in 3.files-legacy.sh --- sdata/subcmd-install/3.files-legacy.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdata/subcmd-install/3.files-legacy.sh b/sdata/subcmd-install/3.files-legacy.sh index 30e9a07e2..ebf549734 100644 --- a/sdata/subcmd-install/3.files-legacy.sh +++ b/sdata/subcmd-install/3.files-legacy.sh @@ -42,9 +42,9 @@ case "${INSTALL_FIRSTRUN}" in # When not specify --firstrun *) if test -f "${FIRSTRUN_FILE}"; then - ${INSTALL_FIRSTRUN}=false + INSTALL_FIRSTRUN=false else - ${INSTALL_FIRSTRUN}=true + INSTALL_FIRSTRUN=true fi ;; esac From c369db75ebd78c40432acddb30b81b6e387a6d8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8F=9C=E5=8F=B6=E7=89=87=28ItsSunshineXD=29?= <61444298+CNMrSunshine@users.noreply.github.com> Date: Fri, 14 Nov 2025 13:22:09 +0800 Subject: [PATCH 104/107] Refactor message block model to use root.messageBlocks --- .../ii/sidebarLeft/aiChat/AiMessage.qml | 26 +++++-------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/AiMessage.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/AiMessage.qml index 74d5c5f6a..46a87eacb 100644 --- a/dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/AiMessage.qml +++ b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/AiMessage.qml @@ -285,48 +285,34 @@ Rectangle { } } } - Repeater { - model: ScriptModel { - values: Array.from({ length: root.messageBlocks.length }, (msg, i) => { - return ({ - type: root.messageBlocks[i].type - }) - }); - } - + model: root.messageBlocks delegate: DelegateChooser { id: messageDelegate role: "type" DelegateChoice { roleValue: "code"; MessageCodeBlock { - required property int index - property var thisBlock: root.messageBlocks[index] editing: root.editing renderMarkdown: root.renderMarkdown enableMouseSelection: root.enableMouseSelection - segmentContent: thisBlock.content - segmentLang: thisBlock.lang + segmentContent: modelData.content + segmentLang: modelData.lang messageData: root.messageData } } DelegateChoice { roleValue: "think"; MessageThinkBlock { - required property int index - property var thisBlock: root.messageBlocks[index] editing: root.editing renderMarkdown: root.renderMarkdown enableMouseSelection: root.enableMouseSelection - segmentContent: thisBlock.content + segmentContent: modelData.content messageData: root.messageData done: root.messageData?.done ?? false - completed: thisBlock.completed ?? false + completed: modelData.completed ?? false } } DelegateChoice { roleValue: "text"; MessageTextBlock { - required property int index - property var thisBlock: root.messageBlocks[index] editing: root.editing renderMarkdown: root.renderMarkdown enableMouseSelection: root.enableMouseSelection - segmentContent: thisBlock.content + segmentContent: modelData.content messageData: root.messageData done: root.messageData?.done ?? false forceDisableChunkSplitting: root.messageData?.content.includes("```") ?? true From 2e5be9023744af7fe8120665b0ac2cb267dad4e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8F=9C=E5=8F=B6=E7=89=87=28ItsSunshineXD=29?= <61444298+CNMrSunshine@users.noreply.github.com> Date: Fri, 14 Nov 2025 13:22:25 +0800 Subject: [PATCH 105/107] Fix segmentContent property assignment in MessageThinkBlock --- .../ii/modules/ii/sidebarLeft/aiChat/MessageThinkBlock.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/MessageThinkBlock.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/MessageThinkBlock.qml index 1463c6e60..ee00ffdff 100644 --- a/dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/MessageThinkBlock.qml +++ b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/MessageThinkBlock.qml @@ -156,7 +156,6 @@ Item { property bool editing: root.editing property bool renderMarkdown: root.renderMarkdown property bool enableMouseSelection: root.enableMouseSelection - property string segmentContent: root.segmentContent property var messageData: root.messageData property bool done: root.done @@ -165,8 +164,9 @@ Item { anchors.left: parent.left anchors.right: parent.right anchors.bottom: parent.bottom + segmentContent: root.segmentContent } } } } -} \ No newline at end of file +} From bf225d6de2715748534c34053434838fd85ed5db Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Fri, 14 Nov 2025 09:38:10 +0100 Subject: [PATCH 106/107] Change model to ScriptModel for messageBlocks --- .../quickshell/ii/modules/ii/sidebarLeft/aiChat/AiMessage.qml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/AiMessage.qml b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/AiMessage.qml index 46a87eacb..487665851 100644 --- a/dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/AiMessage.qml +++ b/dots/.config/quickshell/ii/modules/ii/sidebarLeft/aiChat/AiMessage.qml @@ -286,7 +286,9 @@ Rectangle { } } Repeater { - model: root.messageBlocks + model: ScriptModel { + values: root.messageBlocks + } delegate: DelegateChooser { id: messageDelegate role: "type" From f46835c9a1ad0cec52f5ac50059fe1d02274868a Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Fri, 14 Nov 2025 10:07:07 +0100 Subject: [PATCH 107/107] stickypad: moves files to correct place --- .../ii/modules/{ => ii}/overlay/stickypad/Stickypad.qml | 2 +- .../{ => ii}/overlay/stickypad/StickypadContent.qml | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) rename dots/.config/quickshell/ii/modules/{ => ii}/overlay/stickypad/Stickypad.qml (90%) rename dots/.config/quickshell/ii/modules/{ => ii}/overlay/stickypad/StickypadContent.qml (98%) diff --git a/dots/.config/quickshell/ii/modules/overlay/stickypad/Stickypad.qml b/dots/.config/quickshell/ii/modules/ii/overlay/stickypad/Stickypad.qml similarity index 90% rename from dots/.config/quickshell/ii/modules/overlay/stickypad/Stickypad.qml rename to dots/.config/quickshell/ii/modules/ii/overlay/stickypad/Stickypad.qml index 1db5f6693..b702f9b94 100644 --- a/dots/.config/quickshell/ii/modules/overlay/stickypad/Stickypad.qml +++ b/dots/.config/quickshell/ii/modules/ii/overlay/stickypad/Stickypad.qml @@ -2,7 +2,7 @@ import QtQuick import QtQuick.Layouts import Quickshell import qs.modules.common -import qs.modules.overlay +import qs.modules.ii.overlay StyledOverlayWidget { id: root diff --git a/dots/.config/quickshell/ii/modules/overlay/stickypad/StickypadContent.qml b/dots/.config/quickshell/ii/modules/ii/overlay/stickypad/StickypadContent.qml similarity index 98% rename from dots/.config/quickshell/ii/modules/overlay/stickypad/StickypadContent.qml rename to dots/.config/quickshell/ii/modules/ii/overlay/stickypad/StickypadContent.qml index d8473ea33..adc7724d0 100644 --- a/dots/.config/quickshell/ii/modules/overlay/stickypad/StickypadContent.qml +++ b/dots/.config/quickshell/ii/modules/ii/overlay/stickypad/StickypadContent.qml @@ -7,8 +7,9 @@ import qs import qs.services import qs.modules.common import qs.modules.common.widgets +import qs.modules.ii.overlay -Rectangle { +OverlayBackground { id: root readonly property real panelPadding: 20 @@ -19,9 +20,6 @@ Rectangle { property var parsedCopylistLines: [] property bool isClickthrough: false - color: Appearance.colors.colLayer0 - radius: Appearance.rounding.windowRounding - 6 - Component.onCompleted: { stickypadFile.reload() updateCopylistEntries() @@ -279,7 +277,7 @@ Rectangle { rightMargin: 8 } text: saveDebounce.running ? "Saving..." : "Saved" - color: saveDebounce.running ? Appearance.colors.colAccent : Appearance.colors.colSubtext + color: Appearance.colors.colSubtext font.pixelSize: Appearance.font.pixelSize.small font.weight: Font.Medium }