diff --git a/apps-list-zero.md b/apps-list-zero.md deleted file mode 100644 index 41a9298..0000000 --- a/apps-list-zero.md +++ /dev/null @@ -1,2520 +0,0 @@ -7zip -a52dec -aalib -abseil-cpp -accounts-qml-module -accountsservice -acl -acpica -ada -adw-gtk-theme -adwaita-cursors -adwaita-fonts -adwaita-icon-theme -adwaita-icon-theme-legacy -aether -aha -alembic -alsa-card-profiles -alsa-lib -alsa-plugins -alsa-topology-conf -alsa-ucm-conf -aml -an-anime-game-launcher-bin -android-emulator -android-sdk-platform-tools -android-studio -android-tools -android-udev -angband -aom -apache -appstream -appstream-glib -appstream-qt -apr -apr-util -aquamarine -arc-solid-gtk-theme -archlinux-appstream-data -archlinux-keyring -ardour -argon2 -aribb24 -at-spi2-core -atkmm -attica -attr -aubio -audit -augeas -aurorae -autoconf -autoconf-archive -automake -avahi -awesome-terminal-fonts -aws-c-auth -aws-c-cal -aws-c-common -aws-c-compression -aws-c-event-stream -aws-c-http -aws-c-io -aws-c-mqtt -aws-c-s3 -aws-c-sdkutils -aws-checksums -aws-crt-cpp -aws-sdk-cpp-core -aws-sdk-cpp-iam -aws-sdk-cpp-s3 -awww -ayatana-ido -babl -baloo -baobab -base -base-devel -bash -bash-completion -bat -bcg729 -bibata-cursor-theme-bin -bind -binutils -bison -blackarch-mirrorlist -blas -blender -blosc -bluedevil -blueprint-compiler -bluetui -bluez -bluez-libs -bluez-obex -bluez-qt -bluez-utils -bolt -boost -boost-libs -breeze -breeze-cursors -breeze-gtk -breeze-icons -breeze-plymouth -brightnessctl -brltty -brotli -browsh -btop -btrfs-progs -bubblewrap -buho -bzip2 -c-ares -ca-certificates -ca-certificates-mozilla -ca-certificates-utils -cabextract -cairo -cairomm -cairomm-1.16 -caja -calcurse -cantarell-fonts -capstone -cava -cbindgen -cblas -cdparanoia -cdrtools -ceres-solver -chromaprint -chrpath -cifs-utils -cjson -clang -clang21 -clash-geoip -clinfo -clipse -clock-tui -cloudflared -clucene -clutter -clutter-gtk -cmake -cmark -cmatrix -cmus -coeurl -cogl -colord -colord-gtk-common -colord-gtk4 -colord-sane -comgr -commet-bin -compiler-rt -compiler-rt21 -composable-kernel -composefs -confuse -containerd -convertlit -cool-retro-term -corepack -coreutils -cowsay -cpio -cppdap -cracklib -cryptsetup -cuda -cudnn -cull-bin -cups -cups-filters -cups-pk-helper -curl -cxxopts -cython -dav1d -db5.3 -dbus -dbus-broker -dbus-broker-units -dbus-glib -dbus-units -dconf -dconf-editor -ddcutil -debugedit -decibels -default-cursors -deno -desktop-file-utils -device-mapper -dhcpcd -dialog -diffstat -diffutils -discount -discover -djvulibre -dkms -dleyna -dmenu -dmidecode -dnsmasq -dnssec-anchors -docbook-xml -docbook-xsl -docker -docker-compose -dos2unix -dosfstools -dotconf -double-conversion -doxygen -draco -drkonqi -dtc -duktape -dump_syms -dxvk-bin -e2fsprogs -eblanfetch -ebook-tools -editorconfig-core-c -edk2-aarch64 -edk2-arm -edk2-ovmf -efibootmgr -efivar -egl-gbm -egl-wayland -egl-wayland2 -egl-x11 -eglexternalplatform -electron-builder -electron24-bin -electron37 -electron39-bin -electron40-bin -element-desktop -element-web -elephant-all -elfutils -ell -elyprismlauncher-bin -embree -emptty -enca -enchant -enet -eog -epiphany -espeak-ng -evercal -evince -evolution-data-server -eww -ex-vi-compat -exempi -exfatprogs -exiv2 -expac -expat -extra-cmake-modules -eza -f2fs-tools -faac -faad2 -fagram-bin -fakeroot -farstream -fast_float -fastfetch -fcft -fd -ffmpeg -ffmpeg4.4 -fftw -file -filesystem -filezilla -findutils -firefox -firefox-tridactyl -fish -flac -flatpak -flatpak-kcm -flex -floorp-bin -fltk1.3 -fluffychat-bin -fluidsynth -fmt -foliate -folks -fontconfig -fontforge -foot -fractal -frameworkintegration -freeglut -freerdp -freetype2 -frei0r-plugins -fribidi -fsel-git -fuse-common -fuse2 -fuse3 -fuzzel -fzf -galculator -gamemode -gamescope -gawk -gc -gcc -gcc-fortran -gcc-libs -gcr -gcr-4 -gd -gdb -gdb-common -gdbm -gdk-pixbuf2 -gdm -gegl -gendesk -geoclue -geocode-glib-2 -geocode-glib-common -geoip -geoip-database -gettext -gexiv2 -gflags -gfxstream -ghc-libs -ghostscript -ghostty -ghostty-shell-integration -ghostty-terminfo -giflib -gimp -girara -git -git-lfs -gjs -glew -glfw -glib-networking -glib2 -glib2-devel -glib2-docs -glibc -glibmm -glibmm-2.68 -glm -glslang -glu -glusterfs -glycin -gmp -gn -gnome-app-list -gnome-autoar -gnome-backgrounds -gnome-bluetooth-3.0 -gnome-calculator -gnome-calendar -gnome-characters -gnome-clocks -gnome-color-manager -gnome-connections -gnome-console -gnome-contacts -gnome-control-center -gnome-desktop -gnome-desktop-4 -gnome-desktop-common -gnome-disk-utility -gnome-font-viewer -gnome-keybindings -gnome-keyring -gnome-logs -gnome-maps -gnome-menus -gnome-music -gnome-online-accounts -gnome-panel -gnome-photos -gnome-remote-desktop -gnome-session -gnome-settings-daemon -gnome-shell -gnome-software -gnome-sound-recorder -gnome-system-monitor -gnome-text-editor -gnome-themes-extra -gnome-tour -gnome-tweaks -gnome-user-docs -gnome-user-share -gnome-weather -gnu-free-fonts -gnulib-l10n -gnupg -gnutls -go -gobject-introspection -gobject-introspection-runtime -gocryptfs -godot -godotpcktool-bin -gom -google-chrome -google-glog -gperf -gperftools -gpgme -gpgmepp -gpm -gpsd -gptfdisk -granite7 -graphene -graphicsmagick -graphite -greetd -greetd-agreety -greetd-tuigreet -grep -grilo -grilo-plugins -grim -groff -grub -gsettings-desktop-schemas -gsettings-system-schemas -gsfonts -gsh -gsl -gsm -gsound -gspell -gssdp -gst-devtools-libs -gst-editing-services -gst-libav -gst-plugin-gtk -gst-plugin-gtk4 -gst-plugin-pipewire -gst-plugins-bad -gst-plugins-bad-libs -gst-plugins-base -gst-plugins-base-libs -gst-plugins-good -gst-python -gstreamer -gtest -gthumb -gtk-doc -gtk-layer-shell -gtk-session-lock -gtk-theme-bubble-darker-git -gtk-theme-elementary -gtk-theme-material-black -gtk-update-icon-cache -gtk-vnc -gtk2 -gtk3 -gtk4 -gtk4-layer-shell -gtklock -gtkmm-4.0 -gtkmm3 -gtksourceview3 -gtksourceview4 -gtksourceview5 -gtkspell -guile -gum -gumbo-parser -gupnp -gupnp-av -gupnp-dlna -gupnp-igd -gvfs -gvfs-afc -gvfs-dnssd -gvfs-goa -gvfs-google -gvfs-gphoto2 -gvfs-mtp -gvfs-nfs -gvfs-onedrive -gvfs-smb -gvfs-wsdd -gzip -harfbuzz -harfbuzz-icu -haskell-aeson -haskell-aeson-pretty -haskell-ansi-terminal -haskell-ansi-terminal-types -haskell-appar -haskell-asn1-encoding -haskell-asn1-parse -haskell-asn1-types -haskell-assoc -haskell-async -haskell-attoparsec -haskell-attoparsec-aeson -haskell-auto-update -haskell-base-compat -haskell-base-orphans -haskell-base-unicode-symbols -haskell-base16-bytestring -haskell-base64-bytestring -haskell-basement -haskell-bifunctors -haskell-bitvec -haskell-blaze-builder -haskell-blaze-html -haskell-blaze-markup -haskell-boring -haskell-bsb-http-chunked -haskell-byteorder -haskell-call-stack -haskell-case-insensitive -haskell-cassava -haskell-cborg -haskell-cereal -haskell-citeproc -haskell-cmdargs -haskell-colour -haskell-commonmark -haskell-commonmark-extensions -haskell-commonmark-pandoc -haskell-comonad -haskell-conduit -haskell-conduit-extra -haskell-constraints -haskell-contravariant -haskell-cookie -haskell-crypton -haskell-crypton-connection -haskell-crypton-socks -haskell-crypton-x509 -haskell-crypton-x509-store -haskell-crypton-x509-system -haskell-crypton-x509-validation -haskell-data-default -haskell-data-default-class -haskell-data-default-instances-containers -haskell-data-default-instances-dlist -haskell-data-default-instances-old-locale -haskell-data-fix -haskell-dec -haskell-digest -haskell-distributive -haskell-djot -haskell-dlist -haskell-doclayout -haskell-doctemplates -haskell-easy-file -haskell-emojis -haskell-erf -haskell-fast-logger -haskell-file-embed -haskell-foldable1-classes-compat -haskell-generically -haskell-generics-sop -haskell-glob -haskell-gridtables -haskell-haddock-library -haskell-half -haskell-hashable -haskell-hourglass -haskell-hslua -haskell-hslua-aeson -haskell-hslua-classes -haskell-hslua-core -haskell-hslua-list -haskell-hslua-marshalling -haskell-hslua-module-doclayout -haskell-hslua-module-path -haskell-hslua-module-system -haskell-hslua-module-text -haskell-hslua-module-version -haskell-hslua-module-zip -haskell-hslua-objectorientation -haskell-hslua-packaging -haskell-hslua-repl -haskell-hslua-typing -haskell-http-api-data -haskell-http-client -haskell-http-client-tls -haskell-http-date -haskell-http-media -haskell-http-types -haskell-http2 -haskell-hunit -haskell-indexed-traversable -haskell-indexed-traversable-instances -haskell-integer-conversion -haskell-integer-logarithms -haskell-iproute -haskell-ipynb -haskell-isocline -haskell-jira-wiki-markup -haskell-juicypixels -haskell-lexer -haskell-libyaml -haskell-lpeg -haskell-lua -haskell-memory -haskell-mime-types -haskell-mmorph -haskell-monad-control -haskell-mono-traversable -haskell-network -haskell-network-bsd -haskell-network-byte-order -haskell-network-control -haskell-network-uri -haskell-old-locale -haskell-old-time -haskell-onetuple -haskell-only -haskell-optparse-applicative -haskell-ordered-containers -haskell-os-string -haskell-pandoc -haskell-pandoc-lua-engine -haskell-pandoc-lua-marshal -haskell-pandoc-server -haskell-pandoc-types -haskell-pem -haskell-pretty-show -haskell-prettyprinter -haskell-prettyprinter-ansi-terminal -haskell-primitive -haskell-psqueues -haskell-quickcheck -haskell-random -haskell-recv -haskell-regex-base -haskell-regex-tdfa -haskell-resourcet -haskell-safe -haskell-safe-exceptions -haskell-scientific -haskell-semialign -haskell-semigroupoids -haskell-serialise -haskell-servant -haskell-servant-server -haskell-simple-sendfile -haskell-singleton-bool -haskell-skylighting -haskell-skylighting-core -haskell-skylighting-format-ansi -haskell-skylighting-format-blaze-html -haskell-skylighting-format-context -haskell-skylighting-format-latex -haskell-some -haskell-sop-core -haskell-split -haskell-splitmix -haskell-statevar -haskell-streaming-commons -haskell-strict -haskell-syb -haskell-tagged -haskell-tagsoup -haskell-tasty -haskell-temporary -haskell-texmath -haskell-text-conversions -haskell-text-icu -haskell-text-iso8601 -haskell-text-short -haskell-th-abstraction -haskell-th-compat -haskell-th-lift -haskell-th-lift-instances -haskell-these -haskell-time-compat -haskell-time-manager -haskell-tls -haskell-toml-parser -haskell-transformers-base -haskell-transformers-compat -haskell-typed-process -haskell-typst -haskell-typst-symbols -haskell-unicode-collation -haskell-unicode-data -haskell-unicode-transforms -haskell-uniplate -haskell-unix-compat -haskell-unix-time -haskell-unliftio -haskell-unliftio-core -haskell-unordered-containers -haskell-utf8-string -haskell-uuid-types -haskell-vault -haskell-vector -haskell-vector-algorithms -haskell-vector-stream -haskell-wai -haskell-wai-app-static -haskell-wai-cors -haskell-wai-extra -haskell-wai-logger -haskell-warp -haskell-witherable -haskell-word8 -haskell-xml -haskell-xml-conduit -haskell-xml-types -haskell-yaml -haskell-zip-archive -haskell-zlib -hdf5 -hdparm -helix -helm-bin -help2man -helvum -hicolor-icon-theme -hidapi -highway -hip-runtime-amd -hipblas -hipblas-common -hipblaslt -hipcub -hipfft -hiprand -hipsolver -hipsparse -hivex -hostapd -hping -hsa-rocr -hslua-cli -http-parser -hunspell -hwdata -hwloc -hylauncher-bin -hyphen -hyprcursor -hyprgraphics -hyprland -hyprland-guiutils -hyprlang -hyprlock -hyprpicker -hyprpwcenter -hyprshot -hyprtoolkit -hyprutils -hyprwave -hyprwayland-scanner -hyprwhspr -hyprwire -hytale-f2p-git -i2c-tools -i2pd -i3-wm -i3blocks -i3lock -i3status -iana-etc -ibus -icu -iio-sensor-proxy -ijs -imagemagick -imake -imath -img2pdf -imlib2 -imv -inetutils -iniparser -inkscape -intel-oneapi-common -intel-oneapi-compiler-dpcpp-cpp-runtime-libs -intel-oneapi-compiler-shared-runtime-libs -intel-oneapi-openmp -intel-oneapi-tbb -intel-oneapi-tcm -intltool -iproute2 -iptables -iputils -iso-codes -ithil-bin -ithil-bin-debug -iw -iwd -jansson -jasper -java-environment-common -java-runtime-common -jbig2dec -jbigkit -jdk-openjdk -jdk17-openjdk -jemalloc -jfsutils -jq -js140 -json-c -json-glib -jsoncpp -kaccounts-integration -kactivitymanagerd -kalidoface-bin -karchive -kauth -kbd -kbookmarks -kcmutils -kcodecs -kcolorscheme -kcompletion -kcompletion5 -kconfig -kconfig5 -kconfigwidgets -kcontacts -kcoreaddons -kcoreaddons5 -kcrash -kcrash5 -kdbusaddons -kddockwidgets -kde-cli-tools -kde-gtk-config -kdeclarative -kdeconnect -kdecoration -kded -kdenlive -kdeplasma-addons -kdesu -kdnssd -kdsingleapplication -kdsoap -kdsoap-ws-discovery-client -kernel-headers-musl -keyutils -kfilemetadata -kgamma -kglobalaccel -kglobalacceld -kguiaddons -kguiaddons5 -kholidays -ki18n -ki18n5 -kiconthemes -kidletime -kimageformats -kinfocenter -kio -kio-extras -kio-fuse -kirigami -kirigami-addons -kitemmodels -kitemviews -kitemviews5 -kitty -kitty-shell-integration -kitty-terminfo -kjobwidgets -kmenuedit -kmod -knewstuff -knighttime -knotifications -knotifyconfig -kpackage -kparts -kpeople -kpipewire -kpty -kquickcharts -kquickimageeditor -krb5 -krdp -krita -krunner -kscreen -kscreenlocker -kservice -ksshaskpass -kstatusnotifieritem -ksvg -ksystemstats -ktailctl -ktexteditor -ktextwidgets -kubo -kunitconversion -kuserfeedback -kwallet -kwallet-pam -kwayland -kwidgetsaddons -kwidgetsaddons5 -kwin -kwin-x11 -kwindowsystem -kwindowsystem5 -kwrited -kxmlgui -l-smash -labwc -lame -lapack -layer-shell-qt -lcms2 -ldb -leancrypto -lensfun -leptonica -less -level-zero-loader -lib2geom -lib32-alsa-lib -lib32-alsa-plugins -lib32-audit -lib32-brotli -lib32-bzip2 -lib32-curl -lib32-dbus -lib32-e2fsprogs -lib32-expat -lib32-fontconfig -lib32-freetype2 -lib32-gamemode -lib32-gcc-libs -lib32-glib2 -lib32-glibc -lib32-gmp -lib32-gnutls -lib32-icu -lib32-json-c -lib32-keyutils -lib32-krb5 -lib32-libcap -lib32-libdrm -lib32-libelf -lib32-libffi -lib32-libgcrypt -lib32-libglvnd -lib32-libgpg-error -lib32-libidn2 -lib32-libldap -lib32-libnghttp2 -lib32-libnghttp3 -lib32-libngtcp2 -lib32-libnm -lib32-libnsl -lib32-libpciaccess -lib32-libpipewire -lib32-libpng -lib32-libpsl -lib32-libssh2 -lib32-libtasn1 -lib32-libtirpc -lib32-libunistring -lib32-libva -lib32-libx11 -lib32-libxau -lib32-libxcb -lib32-libxcrypt -lib32-libxcrypt-compat -lib32-libxdmcp -lib32-libxext -lib32-libxfixes -lib32-libxinerama -lib32-libxml2 -lib32-libxshmfence -lib32-libxss -lib32-libxxf86vm -lib32-llvm-libs -lib32-lm_sensors -lib32-mesa -lib32-ncurses -lib32-nettle -lib32-nspr -lib32-nss -lib32-nvidia-utils -lib32-openssl -lib32-p11-kit -lib32-pam -lib32-pcre2 -lib32-pipewire -lib32-spirv-tools -lib32-sqlite -lib32-systemd -lib32-util-linux -lib32-vulkan-icd-loader -lib32-wayland -lib32-xz -lib32-zlib -lib32-zstd -libabw -libaccounts-glib -libaccounts-qt -libadwaita -libaec -libaemu -libaio -libao -libappindicator -libarchive -libasan -libass -libassuan -libasyncns -libatasmart -libatomic -libatomic_ops -libavc1394 -libavif -libavtp -libayatana-appindicator -libayatana-indicator -libb2 -libblockdev -libblockdev-crypto -libblockdev-fs -libblockdev-loop -libblockdev-mdraid -libblockdev-nvme -libblockdev-part -libblockdev-smart -libblockdev-swap -libbluray -libbpf -libbs2b -libbsd -libbytesize -libcaca -libcacard -libcanberra -libcap -libcap-ng -libcbor -libcdio -libcdio-paranoia -libcdr -libcloudproviders -libcmis -libcolord -libconfig -libcue -libcups -libcupsfilters -libdaemon -libdatachannel -libdatrie -libdazzle -libdbusmenu-glib -libdbusmenu-gtk3 -libdc1394 -libdca -libde265 -libdecor -libdeflate -libdiscid -libdispatch -libdisplay-info -libdmapsharing -libdmtx -libdovi -libdrm -libdv -libdvdnav -libdvdread -libe-book -libebur128 -libedataserverui4 -libedit -libei -libelf -libepoxy -libepubgen -libetonyek -libev -libevdev -libevent -libewf -libexif -libexttextcat -libfabric -libfakekey -libfdk-aac -libffi -libfilezilla -libfontenc -libfreeaptx -libfreehand -libftdi -libfyaml -libgadu -libgcc -libgcrypt -libgdata -libgdm -libgee -libgexiv2 -libgfortran -libgig -libgirepository -libgit2 -libglvnd -libgme -libgoa -libgomp -libgpg-error -libgphoto2 -libgsf -libgtop -libgudev -libguestfs -libgusb -libgweather-4 -libgxps -libhandy -libharu -libheif -libibus -libical -libice -libid3tag -libidn -libidn2 -libiec61883 -libieee1284 -libimagequant -libimobiledevice -libimobiledevice-glue -libinih -libinput -libinstpatch -libiptcdata -libiscsi -libisl -libixion -libjpeg-turbo -libjuice -libjxl -libkdcraw -libkdcraw5 -libkexiv2 -libkeybinder3 -libksba -libkscreen -libksysguard -liblangtag -liblc3 -libldac -libldap -libldm -libliftoff -liblo -liblouis -liblqr -liblrdf -liblsan -libltc -libluv -libmad -libmakepkg-dropins -libmalcontent -libmanette -libmatekbd -libmatemixer -libmateweather -libmaxminddb -libmbim -libmd -libmediaart -libmfx -libmicrodns -libmikmod -libmm-glib -libmms -libmng -libmnl -libmodplug -libmpc -libmpcdec -libmpdclient -libmpeg2 -libmspack -libmspub -libmtp -libmupdf -libmwaw -libmypaint -libmysofa -libnautilus-extension -libnbd -libndp -libnet -libnetfilter_conntrack -libnewt -libnfnetlink -libnfs -libnftnl -libnghttp2 -libnghttp3 -libngtcp2 -libnice -libnl -libnm -libnma-common -libnma-gtk4 -libnotify -libnsbmp -libnsgif -libnsl -libnumbertext -libnvme -liboauth -libobjc -libodfgen -libogg -libolm -libopenmpt -liborcus -libosinfo -libp11-kit -libpagemaker -libpaper -libpcap -libpciaccess -libpeas -libpgm -libphonenumber -libpipeline -libpipewire -libplacebo -libplasma -libplist -libpng -libportal -libportal-gtk3 -libportal-gtk4 -libppd -libproxy -libpsl -libpulse -libpurple -libpwquality -libqaccessibilityclient-qt6 -libqalculate -libqmi -libqrtr-glib -libquadmath -libqxp -libraqm -libraw -libraw1394 -libreoffice-fresh -libreoffice-fresh-ru -librest -librevenge -librewolf-bin -librsvg -librsync -libsamplerate -libsasl -libsass -libseccomp -libsecret -libsfdo -libshout -libshumate -libsidplayfp -libsigc++ -libsigc++-3.0 -libsixel -libslirp -libsm -libsndfile -libsodium -libsonic -libsoup -libsoup3 -libsoxr -libspectre -libspeechd -libspelling -libspiro -libspnav -libsquish -libsrtp -libssc -libssh -libssh2 -libstaroffice -libstdc++ -libstemmer -libsynctex -libsysprof-capture -libtasn1 -libtatsu -libteam -libtg_owt -libthai -libtheora -libtiff -libtirpc -libtommath -libtool -libtorrent-rasterbar -libtraceevent -libtracefs -libtsan -libubsan -libunibreak -libuninameslist -libunistring -libunwind -libupnp -liburcu -liburing -libusb -libusb-compat -libusbmuxd -libutempter -libutf8proc -libuv -libva -libvdpau -libverto -libvirt -libvisio -libvncserver -libvorbis -libvpl -libvpx -libvterm -libwacom -libwbclient -libwebp -libwebp-utils -libwebsockets -libwireplumber -libwireplumber-4.0-compat -libwmf -libwnck3 -libwpd -libwpg -libwps -libwslay -libx11 -libxau -libxaw -libxcb -libxcomposite -libxcrypt -libxcrypt-compat -libxcursor -libxcvt -libxdamage -libxdmcp -libxdp -libxext -libxfixes -libxfont2 -libxft -libxi -libxinerama -libxkbcommon -libxkbcommon-x11 -libxkbfile -libxklavier -libxml2 -libxmlb -libxmp -libxmu -libxnvctrl -libxpm -libxpresent -libxrandr -libxrender -libxres -libxshmfence -libxslt -libxss -libxt -libxtst -libxv -libxvmc -libxxf86vm -libyaml -libyuv -libzip -libzmf -licenses -lilv -links -linux -linux-api-headers -linux-firmware -linux-firmware-amdgpu -linux-firmware-atheros -linux-firmware-broadcom -linux-firmware-cirrus -linux-firmware-intel -linux-firmware-mediatek -linux-firmware-nvidia -linux-firmware-other -linux-firmware-radeon -linux-firmware-realtek -linux-firmware-whence -linux-headers -linux-wifi-hotspot -lirc -lla -llama.cpp-cuda-git -lld -llhttp -llvm -llvm-libs -llvm21 -llvm21-libs -lm_sensors -lmdb -lmms -localsearch -log4cplus -lolcat -loupe -lpsolve -lrzip -lsb-release -lsd -lshw -lsof -lsscsi -lua -lua-lpeg -lua51-lpeg -lua53 -lua54 -lua54-lpeg -luajit -luit -lutris -lv2 -lvm2 -ly -lz4 -lzo -lzop -m4 -mailcap -mailsend-go -make -malcontent -mandoc -manifold -marco -marktext-tkaixiang-bin -marp-cli -mate-backgrounds -mate-control-center -mate-desktop -mate-icon-theme -mate-menus -mate-notification-daemon -mate-panel -mate-polkit -mate-session-manager -mate-settings-daemon -mate-themes -mate-user-guide -materialx -mauikit -mauikit-accounts -mauikit-filebrowsing -mauikit-texteditor -mauiman -mbedtls -mcomix -md4c -mdadm -media-player-info -mercurial -mesa -mesa-demos -mesa-utils -meson -microsocks -microsoft-gsl -mihomo -milou -miniupnpc -minizip -minizip-ng -miopen-hip -mjpegtools -mkinitcpio -mkinitcpio-busybox -mlt -mobile-broadband-provider-info -mod_dnssd -modemmanager -modemmanager-qt -mpd -mpdecimal -mpdris2 -mpfr -mpg123 -mplayer -mpv -msgpack-c -msgpack-cxx -msgraph -mtdev -mtools -mtxclient -mujs -multipath-tools -muparser -musl -mutter -mypaint-brushes -mypaint-brushes1 -nanobind -nasm -nautilus -nccl -ncurses -ndctl -neatvnc -neon -neovide -neovim -nerd-fonts-noto-sans-mono -net-snmp -netstat-nat -nettle -networkmanager -networkmanager-qt -nftables -nheko -nicotine+ -nilfs-utils -ninja -niri -niri-screen-time-git -nirius -node-gyp -nodejs -nodejs-nopt -nomacs -noto-fonts -noto-fonts-cjk -noto-fonts-emoji -npm -npth -nspr -nss -ntfs-3g -nuls -numactl -nvidia-open-dkms -nvidia-settings -nvidia-utils -nvm -nvtop -nwg-look -obs-studio -obsidian -ocean-sound-theme -ocl-icd -ocrmypdf -ollama -ollama-cuda -onednn -onetbb -oniguruma -onnxruntime-cuda -openal -openbsd-netcat -opencl-nvidia -opencolorio -opencore-amr -opencv -openexr -openh264 -openimagedenoise -openimageio -openjpeg2 -openjph -openmp -openmpi -openpgl -openpmix -openrazer-daemon -openrazer-driver-dkms -openshadinglanguage -openssh -openssl -opensubdiv -opentimelineio -openucx -openvdb -openxr -opus -opusfile -orc -orca -osinfo-db -ostree -oxygen -oxygen-cursors -oxygen-icons -oxygen-sounds -p11-kit -pacman -pacman-contrib -pacman-mirrorlist -pahole -pam -pambase -pandoc-cli -pango -pangomm -pangomm-2.48 -papers -papirus-icon-theme -parallel -parted -paru -paru-debug -pastel -patch -patchutils -pavucontrol -pcaudiolib -pciutils -pcre -pcre2 -pcsclite -perl -perl-class-inspector -perl-clone -perl-encode-locale -perl-error -perl-file-listing -perl-file-sharedir -perl-html-parser -perl-html-tagset -perl-http-cookiejar -perl-http-cookies -perl-http-daemon -perl-http-date -perl-http-message -perl-http-negotiate -perl-image-exiftool -perl-io-html -perl-libintl-perl -perl-libwww -perl-locale-gettext -perl-lwp-mediatypes -perl-mailtools -perl-net-http -perl-timedate -perl-try-tiny -perl-uri -perl-www-robotrules -perl-xml-parser -phodav -pidgin -pinentry -pipewire -pipewire-alsa -pipewire-audio -pipewire-jack -pipewire-pulse -pipewire-session-manager -pixman -pkgconf -plasma-activities -plasma-activities-stats -plasma-browser-integration -plasma-desktop -plasma-disks -plasma-firewall -plasma-integration -plasma-keyboard -plasma-login-manager -plasma-nm -plasma-pa -plasma-sdk -plasma-systemmonitor -plasma-thunderbolt -plasma-vault -plasma-welcome -plasma-workspace -plasma-workspace-wallpapers -plasma5support -playerctl -plymouth -plymouth-kcm -pngquant -pnpm -polkit -polkit-gnome -polkit-kde-agent -polkit-qt6 -pomo-bin -ponysay -poppler -poppler-data -poppler-glib -poppler-qt6 -popt -portaudio -portproton -postgresql -postgresql-libs -potrace -power-profiles-daemon -powerdevil -ppp -pps-tools -print-manager -prison -procps-ng -protobuf -protobuf-c -prrte -psmisc -ptex -pugixml -pulseaudio-qt -purpose -pwvucontrol -pybind11 -pyside6 -pystring -python -python-aaf2 -python-annotated-doc -python-annotated-types -python-anyio -python-appdirs -python-argcomplete -python-argparse-from-file -python-attrs -python-autocommand -python-automat -python-babel -python-beautifulsoup4 -python-breathe -python-brltty -python-build -python-cachecontrol -python-cairo -python-certifi -python-cffi -python-chardet -python-charset-normalizer -python-click -python-constantly -python-cryptography -python-cssselect -python-daemonize -python-dasbus -python-dbus -python-defusedxml -python-deprecated -python-deprecation -python-distro -python-docopt -python-docutils -python-editables -python-evdev -python-filelock -python-flatbuffers -python-fonttools -python-fpdf2 -python-fsspec -python-gevent -python-gmpy2 -python-gobject -python-gpgme -python-greenlet -python-h11 -python-hatch-vcs -python-hatchling -python-hf-xet -python-httpcore -python-httplib2 -python-httpx -python-huggingface-hub -python-humanize -python-hyperlink -python-i3ipc -python-idna -python-imagesize -python-importlib-metadata -python-importlib_resources -python-incremental -python-iniconfig -python-installer -python-jaraco.collections -python-jaraco.context -python-jaraco.functools -python-jaraco.text -python-jinja -python-jsonschema -python-jsonschema-specifications -python-keyutils -python-linkify-it-py -python-lockfile -python-lxml -python-mako -python-markdown -python-markdown-it-py -python-markupsafe -python-mdurl -python-moddb -python-more-itertools -python-mpd2 -python-mpmath -python-msgpack -python-mutagen -python-natsort -python-numpy -python-onnxruntime-cuda -python-opengl -python-openrazer -python-packaging -python-pathspec -python-pathvalidate -python-pdf2image -python-pdfminer -python-pikepdf -python-pillow -python-pip -python-pipx -python-pkg_resources -python-pkgconfig -python-platformdirs -python-pluggy -python-pooch -python-prettytable -python-protobuf -python-psutil -python-pulsectl -python-py-cpuinfo -python-pyaml -python-pycparser -python-pycryptodomex -python-pydantic -python-pydantic-core -python-pyelftools -python-pygdbmi -python-pygments -python-pyparsing -python-pyperclip -python-pyproject-hooks -python-pyqt5 -python-pyqt5-sip -python-pyserial -python-pysocks -python-pytest -python-pytest-asyncio -python-pytz -python-pyudev -python-pyxdg -python-pyyaml-env-tag -python-rarfile -python-referencing -python-reportlab -python-requests -python-rich -python-rich-click -python-roman-numerals-py -python-rpds-py -python-scikit-build -python-scipy -python-send2trash -python-sentry_sdk -python-setproctitle -python-setuptools -python-setuptools-scm -python-shellingham -python-six -python-snowballstemmer -python-sounddevice -python-soupsieve -python-sphinx -python-sphinx-alabaster-theme -python-sphinx_rtd_theme -python-sphinxcontrib-applehelp -python-sphinxcontrib-devhelp -python-sphinxcontrib-htmlhelp -python-sphinxcontrib-jquery -python-sphinxcontrib-jsmath -python-sphinxcontrib-qthelp -python-sphinxcontrib-serializinghtml -python-sympy -python-syrupy -python-systemd -python-textual -python-textual-autocomplete -python-textual-image -python-tinycss2 -python-tomli -python-tqdm -python-trove-classifiers -python-twisted -python-typer -python-typing-inspection -python-typing_extensions -python-uc-micro-py -python-uharfbuzz -python-ujson -python-urllib3 -python-userpath -python-uv-build -python-vcs-versioning -python-watchdog -python-wcwidth -python-webencodings -python-wheel -python-wrapt -python-xlib -python-yaml -python-zipp -python-zope-event -python-zope-interface -python-zstandard -python310 -qbittorrent -qca-qt6 -qcoro -qemu-audio-alsa -qemu-audio-dbus -qemu-audio-jack -qemu-audio-oss -qemu-audio-pa -qemu-audio-pipewire -qemu-audio-sdl -qemu-audio-spice -qemu-base -qemu-block-curl -qemu-block-dmg -qemu-block-gluster -qemu-block-iscsi -qemu-block-nfs -qemu-block-ssh -qemu-chardev-baum -qemu-chardev-spice -qemu-common -qemu-desktop -qemu-docs -qemu-emulators-full -qemu-full -qemu-hw-display-qxl -qemu-hw-display-virtio-gpu -qemu-hw-display-virtio-gpu-gl -qemu-hw-display-virtio-gpu-pci -qemu-hw-display-virtio-gpu-pci-gl -qemu-hw-display-virtio-gpu-pci-rutabaga -qemu-hw-display-virtio-gpu-rutabaga -qemu-hw-display-virtio-vga -qemu-hw-display-virtio-vga-gl -qemu-hw-display-virtio-vga-rutabaga -qemu-hw-s390x-virtio-gpu-ccw -qemu-hw-uefi-vars -qemu-hw-usb-host -qemu-hw-usb-redirect -qemu-hw-usb-smartcard -qemu-img -qemu-pr-helper -qemu-system-aarch64 -qemu-system-alpha -qemu-system-alpha-firmware -qemu-system-arm -qemu-system-arm-firmware -qemu-system-avr -qemu-system-hppa -qemu-system-hppa-firmware -qemu-system-loongarch64 -qemu-system-m68k -qemu-system-microblaze -qemu-system-microblaze-firmware -qemu-system-mips -qemu-system-or1k -qemu-system-ppc -qemu-system-ppc-firmware -qemu-system-riscv -qemu-system-riscv-firmware -qemu-system-rx -qemu-system-s390x -qemu-system-s390x-firmware -qemu-system-sh4 -qemu-system-sparc -qemu-system-sparc-firmware -qemu-system-tricore -qemu-system-x86 -qemu-system-x86-firmware -qemu-system-xtensa -qemu-tests -qemu-tools -qemu-ui-curses -qemu-ui-dbus -qemu-ui-egl-headless -qemu-ui-gtk -qemu-ui-opengl -qemu-ui-sdl -qemu-ui-spice-app -qemu-ui-spice-core -qemu-user -qemu-vhost-user-gpu -qemu-vmsr-helper -qmltermwidget -qoi -qpdf -qpwgraph -qqc2-breeze-style -qqc2-desktop-style -qrcodegencpp-cmake -qrencode -qt5-3d -qt5-base -qt5-declarative -qt5-graphicaleffects -qt5-location -qt5-quickcontrols -qt5-quickcontrols2 -qt5-sensors -qt5-svg -qt5-tools -qt5-translations -qt5-wayland -qt5-webchannel -qt5-x11extras -qt6-5compat -qt6-base -qt6-connectivity -qt6-declarative -qt6-imageformats -qt6-location -qt6-multimedia -qt6-multimedia-ffmpeg -qt6-networkauth -qt6-positioning -qt6-quick3d -qt6-quicktimeline -qt6-sensors -qt6-shadertools -qt6-speech -qt6-svg -qt6-tools -qt6-translations -qt6-virtualkeyboard -qt6-wayland -qt6-webchannel -qt6-webengine -qt6-websockets -qt6-webview -qtkeychain-qt6 -quazip-qt5 -quazip-qt6 -quilt -qwen-code -ragel -range-v3 -rapidjson -raptor -rasqal -rav1e -rccl -rdma-core -re2 -readline -reaper -recode -redland -relay-scanner -remmina -resvg -rhash -ripgrep -ripgrep-all -rmpc -rnnoise -rocalution -rocblas -rocfft -rocm-cmake -rocm-core -rocm-device-libs -rocm-hip-libraries -rocm-hip-runtime -rocm-hip-sdk -rocm-language-runtime -rocm-llvm -rocm-smi-lib -rocminfo -rocprim -rocprofiler-register -rocrand -rocsolver -rocsparse -rocthrust -roctracer -rpcbind -rsync -rtkit -rtmpdump -rubberband -ruby -ruby-erb -ruby-manpages -ruby-optimist -ruby-paint -ruby-rdoc -rubygems -runc -rust -rutabaga-ffi -rygel -s2n-tls -sakura -sane -sassc -sbc -scdoc -scour -scrcpy -scrntime-git -sdbus-cpp -sddm -sddm-kcm -sdl12-compat -sdl2-compat -sdl2_image -sdl2_mixer -sdl2_ttf -sdl3 -sdl3_ttf -seabios -seatd -sed -semver -serd -shaderc -shadow -shared-mime-info -shiboken6 -showmethekey -showtime -signon-kwallet-extension -signon-plugin-oauth2 -signon-ui -signond -sillytavern-git -simde -simdjson -simple-scan -simplex-chat-bin -sing-box -sioyek -slang -sleuthkit -slurp -smartmontools -smbclient -snappy -snapshot -sndio -snekstudio-bin -socat -solid -sonnet -sord -sound-theme-freedesktop -soundtouch -source-highlight -spandsp -spdlog -spectacle -speech-dispatcher -speedcrunch -speex -speexdsp -spice -spice-gtk -spice-protocol -spirv-tools -sqlite -squashfs-tools -squid -sratom -srt -startup-notification -startwine -steam -steam-devices -stk -strace -sudo -suitesparse -supermin -sushi -svt-av1 -svt-hevc -swaybg -swaync -swayosd -syncthing -syndication -syntax-highlighting -sysfsutils -syslinux -systemctl-tui -systemd -systemd-libs -systemd-sysvcompat -systemsettings -taglib -tailscale -talloc -tangent-bin -tar -tcl -tcsh -tdb -tecla -telegram-cli-git -telegram-desktop -tesseract -tesseract-data-eng -tesseract-data-osd -tesseract-data-rus -tevent -texinfo -thin-provisioning-tools -throne-bin -tidy -tigervnc -timr -tinysparql -tk -tl-expected -tmux -tofi -tomlplusplus -tor -torbrowser-launcher -totem-pl-parser -tpm2-tss -traceroute -tree-sitter -tree-sitter-c -tree-sitter-lua -tree-sitter-markdown -tree-sitter-query -tree-sitter-vim -tree-sitter-vimdoc -tslib -ttf-dejavu -ttf-hack -ttf-iosevka-nerd -ttf-iosevkaterm-nerd -ttf-liberation -ttf-nerd-fonts-symbols -ttf-nerd-fonts-symbols-common -ttf-quicksand-variable -tuios-bin -tuxsay -twolame -typst -tzdata -uchardet -udiskie -udisks2 -ufw -unibilium -unpaper -unrar -unzip -upower -usbmuxd -usbredir -usbutils -usd -uthash -util-linux -util-linux-libs -uv -uwsgi -uwsgi-plugin-python -v4l-utils -v4l2loopback-dkms -v4l2loopback-utils -vamp-plugin-sdk -vapoursynth -vde2 -verdict -vesktop-bin -vid.stab -vim -vim-runtime -virglrenderer -virtiofsd -vkd3d -vmaf -vncdotool -volume_key -vte-common -vte3 -vte4 -vulkan-headers -vulkan-icd-loader -vulkan-tools -vulkan-utility-libraries -vulkan-validation-layers -wacomtablet -walker -wasi-compiler-rt -wasi-libc -wasi-libc++ -wasi-libc++abi -wavpack -waybar -wayland -wayland-protocols -wayland-utils -wayvnc -webkit2gtk -webkit2gtk-4.1 -webkitgtk-6.0 -webp-pixbuf-loader -webrtc-audio-processing-1 -weechat -wego -wf-recorder -wget -which -whois -whosthere-bin -wildmidi -wine-staging -winetricks -wireplumber -wireshark-cli -wl-clipboard -wlroots0.19 -woff2 -wolfssl -wpa_supplicant -wsdd -wtype -wxwidgets-common -wxwidgets-gtk3 -x264 -x265 -xa -xautomation -xbitmaps -xcb-proto -xcb-util -xcb-util-cursor -xcb-util-errors -xcb-util-image -xcb-util-keysyms -xcb-util-renderutil -xcb-util-wm -xcb-util-xrm -xcur2png -xdg-dbus-proxy -xdg-desktop-portal -xdg-desktop-portal-gnome -xdg-desktop-portal-gtk -xdg-desktop-portal-kde -xdg-user-dirs -xdg-user-dirs-gtk -xdg-utils -xdotool -xf86-input-libinput -xf86-input-wacom -xf86-video-vesa -xfsprogs -xkeyboard-config -xmlsec -xorg-bdftopcf -xorg-docs -xorg-font-util -xorg-fonts-100dpi -xorg-fonts-75dpi -xorg-fonts-alias-100dpi -xorg-fonts-alias-75dpi -xorg-fonts-alias-misc -xorg-fonts-encodings -xorg-fonts-misc -xorg-iceauth -xorg-mkfontscale -xorg-server -xorg-server-common -xorg-server-devel -xorg-server-src -xorg-server-xephyr -xorg-server-xnest -xorg-server-xvfb -xorg-sessreg -xorg-setxkbmap -xorg-smproxy -xorg-util-macros -xorg-x11perf -xorg-xauth -xorg-xbacklight -xorg-xcmsdb -xorg-xcursorgen -xorg-xdpyinfo -xorg-xdriinfo -xorg-xev -xorg-xgamma -xorg-xhost -xorg-xinit -xorg-xinput -xorg-xkbcomp -xorg-xkbevd -xorg-xkbutils -xorg-xkill -xorg-xlsatoms -xorg-xlsclients -xorg-xmessage -xorg-xmodmap -xorg-xpr -xorg-xprop -xorg-xrandr -xorg-xrdb -xorg-xrefresh -xorg-xset -xorg-xsetroot -xorg-xvinfo -xorg-xwayland -xorg-xwd -xorg-xwininfo -xorg-xwud -xorgproto -xprintidle -xray-bin -xsettingsd -xterm -xvidcore -xwayland-satellite -xxhash -xz -yad -yajl -yaml-cpp -yara -yarn -yasm -yazi -ydotool -yelp -yelp-xsl -yggdrasil -yt-dlp -yt-dlp-ejs -yyjson -zathura -zathura-djvu -zathura-pdf-mupdf -zbar -zellij -zen-browser-bin -zenity -zeromq -zimg -zint -zip -zix -zlib -zlib-ng -zsh -zsh-completions -zstd -zvbi -zxing-cpp -zycore-c -zydis -zziplib diff --git a/config/DankMaterialShell/.changelog-1.4 b/config/DankMaterialShell/.changelog-1.4 new file mode 100644 index 0000000..e69de29 diff --git a/config/DankMaterialShell/.firstlaunch b/config/DankMaterialShell/.firstlaunch new file mode 100644 index 0000000..e69de29 diff --git a/config/DankMaterialShell/firefox.css b/config/DankMaterialShell/firefox.css new file mode 100644 index 0000000..f0d51f8 --- /dev/null +++ b/config/DankMaterialShell/firefox.css @@ -0,0 +1,132 @@ +@media -moz-pref("userChrome.theme-material") { + :root { + --md-sys-color-primary: #6b54c7; + --md-sys-color-surface-tint: #6b54c7; + --md-sys-color-on-primary: #ffffff; + --md-sys-color-primary-container: #ddd8f8; + --md-sys-color-on-primary-container: #1e1824; + --md-sys-color-secondary: #2e9e55; + --md-sys-color-on-secondary: #ffffff; + --md-sys-color-secondary-container: #e8e0f2; + --md-sys-color-on-secondary-container: #1e1824; + --md-sys-color-tertiary: #2e9e55; + --md-sys-color-on-tertiary: #ffffff; + --md-sys-color-tertiary-container: #e8e0f2; + --md-sys-color-on-tertiary-container: #1e1824; + --md-sys-color-error: #b0324e; + --md-sys-color-on-error: #ffffff; + --md-sys-color-error-container: #f9dedc; + --md-sys-color-on-error-container: #410e0b; + --md-sys-color-background: #f5f0fa; + --md-sys-color-on-background: #1e1824; + --md-sys-color-surface: #f5f0fa; + --md-sys-color-on-surface: #1e1824; + --md-sys-color-surface-variant: #e0d5ee; + --md-sys-color-on-surface-variant: #28204a; + --md-sys-color-outline: #a090cc; + --md-sys-color-outline-variant: #e0d5ee; + --md-sys-color-shadow: #000000; + --md-sys-color-scrim: #000000; + --md-sys-color-inverse-surface: #130f1a; + --md-sys-color-inverse-on-surface: #f0f0f0; + --md-sys-color-inverse-primary: #b8a8f0; + --md-sys-color-primary-fixed: #ddd8f8; + --md-sys-color-on-primary-fixed: #ffffff; + --md-sys-color-primary-fixed-dim: #6b54c7; + --md-sys-color-on-primary-fixed-variant: #ffffff; + --md-sys-color-secondary-fixed: #2e9e55; + --md-sys-color-on-secondary-fixed: #ffffff; + --md-sys-color-secondary-fixed-dim: #2e9e55; + --md-sys-color-on-secondary-fixed-variant: #ffffff; + --md-sys-color-tertiary-fixed: #2e9e55; + --md-sys-color-on-tertiary-fixed: #ffffff; + --md-sys-color-tertiary-fixed-dim: #2e9e55; + --md-sys-color-on-tertiary-fixed-variant: #ffffff; + --md-sys-color-surface-dim: #f5f0fa; + --md-sys-color-surface-bright: #ede8f5; + --md-sys-color-surface-container-lowest: #f5f0fa; + --md-sys-color-surface-container-low: #ede8f5; + --md-sys-color-surface-container: #f5f0fa; + --md-sys-color-surface-container-high: #f5f0fa; + --md-sys-color-surface-container-highest: #f5f0fa; + + --m3-radius: 12px; + --m3-radius-sm: 10px; + --m3-elev-0: none; + --m3-elev-1: 0 1px 2px rgba(0,0,0,.08), 0 1px 3px rgba(0,0,0,.06); + --m3-elev-2: 0 2px 6px rgba(0,0,0,.10), 0 1px 3px rgba(0,0,0,.06); + + --tab-height: 34px; + --urlbar-height: 38px; + + --state-hover: color-mix(in srgb, var(--md-sys-color-on-surface) 8%, transparent); + --state-press: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent); + + --focus-ring: 0 0 0 2px color-mix(in srgb, var(--md-sys-color-primary) 70%, transparent); + } +} + +@media (prefers-color-scheme: dark) { + :root { + --md-sys-color-primary: #b8a8f0; + --md-sys-color-surface-tint: #b8a8f0; + --md-sys-color-on-primary: #1e1e00; + --md-sys-color-primary-container: #745b8c; + --md-sys-color-on-primary-container: #f0f0f0; + --md-sys-color-secondary: #92eda7; + --md-sys-color-on-secondary: #1e1e00; + --md-sys-color-secondary-container: #221f26; + --md-sys-color-on-secondary-container: #f0f0f0; + --md-sys-color-tertiary: #92eda7; + --md-sys-color-on-tertiary: #1e1e00; + --md-sys-color-tertiary-container: #221f26; + --md-sys-color-on-tertiary-container: #f0f0f0; + --md-sys-color-error: #f38ba8; + --md-sys-color-on-error: #601410; + --md-sys-color-error-container: #8c1d18; + --md-sys-color-on-error-container: #f9dedc; + --md-sys-color-background: #09070d; + --md-sys-color-on-background: #f0f0f0; + --md-sys-color-surface: #130f1a; + --md-sys-color-on-surface: #f0f0f0; + --md-sys-color-surface-variant: #221d26; + --md-sys-color-on-surface-variant: #c9b8d9; + --md-sys-color-outline: #c9b8d9; + --md-sys-color-outline-variant: #221d26; + --md-sys-color-shadow: #000000; + --md-sys-color-scrim: #000000; + --md-sys-color-inverse-surface: #ede8f5; + --md-sys-color-inverse-on-surface: #1e1824; + --md-sys-color-inverse-primary: #6b54c7; + --md-sys-color-primary-fixed: #745b8c; + --md-sys-color-on-primary-fixed: #1e1e00; + --md-sys-color-primary-fixed-dim: #b8a8f0; + --md-sys-color-on-primary-fixed-variant: #1e1e00; + --md-sys-color-secondary-fixed: #92eda7; + --md-sys-color-on-secondary-fixed: #1e1e00; + --md-sys-color-secondary-fixed-dim: #92eda7; + --md-sys-color-on-secondary-fixed-variant: #1e1e00; + --md-sys-color-tertiary-fixed: #92eda7; + --md-sys-color-on-tertiary-fixed: #1e1e00; + --md-sys-color-tertiary-fixed-dim: #92eda7; + --md-sys-color-on-tertiary-fixed-variant: #1e1e00; + --md-sys-color-surface-dim: #09070d; + --md-sys-color-surface-bright: #17141a; + --md-sys-color-surface-container-lowest: #09070d; + --md-sys-color-surface-container-low: #130f1a; + --md-sys-color-surface-container: #09070d; + --md-sys-color-surface-container-high: #221f26; + --md-sys-color-surface-container-highest: #17141a; + + --m3-elev-1: 0 1px 2px rgba(0,0,0,.50), 0 1px 3px rgba(0,0,0,.35); + --m3-elev-2: 0 4px 10px rgba(0,0,0,.55), 0 1px 3px rgba(0,0,0,.35); + + --state-hover: color-mix(in srgb, var(--md-sys-color-on-surface) 6%, transparent); + --state-press: color-mix(in srgb, var(--md-sys-color-on-surface) 10%, transparent); + } +} + +/* idk if this even works, but the suggestion in the material updated readme bricks symbols no matter how many fallbacks I add */ +:root { + font-family: system-ui, "Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !important; +} diff --git a/config/DankMaterialShell/plugins/cavaVisualizer b/config/DankMaterialShell/plugins/cavaVisualizer new file mode 160000 index 0000000..e4b65a2 --- /dev/null +++ b/config/DankMaterialShell/plugins/cavaVisualizer @@ -0,0 +1 @@ +Subproject commit e4b65a207652bc3204121401fafd5566b8d22c37 diff --git a/config/DankMaterialShell/plugins/dankAudioVisualizer b/config/DankMaterialShell/plugins/dankAudioVisualizer new file mode 160000 index 0000000..25424e8 --- /dev/null +++ b/config/DankMaterialShell/plugins/dankAudioVisualizer @@ -0,0 +1 @@ +Subproject commit 25424e8d570e000f4ab086c9e5e1122180861a65 diff --git a/config/DankMaterialShell/plugins/desktopCommand b/config/DankMaterialShell/plugins/desktopCommand new file mode 160000 index 0000000..a2e663e --- /dev/null +++ b/config/DankMaterialShell/plugins/desktopCommand @@ -0,0 +1 @@ +Subproject commit a2e663ee031918ea01e2e65cf88aa3ded85a53f8 diff --git a/config/DankMaterialShell/settings.json b/config/DankMaterialShell/settings.json new file mode 100644 index 0000000..97e3b87 --- /dev/null +++ b/config/DankMaterialShell/settings.json @@ -0,0 +1,708 @@ +{ + "currentThemeName": "custom", + "currentThemeCategory": "custom", + "customThemeFile": "/home/unconfer/.config/DankMaterialShell/themes/peaceAndQuiet/theme.json", + "registryThemeVariants": { + "peaceAndQuiet": "lavender" + }, + "matugenScheme": "scheme-content", + "runUserMatugenTemplates": true, + "matugenTargetMonitor": "", + "popupTransparency": 1, + "dockTransparency": 1, + "widgetBackgroundColor": "sch", + "widgetColorMode": "default", + "controlCenterTileColorMode": "primaryContainer", + "buttonColorMode": "primary", + "cornerRadius": 10, + "niriLayoutGapsOverride": -1, + "niriLayoutRadiusOverride": -1, + "niriLayoutBorderSize": -1, + "hyprlandLayoutGapsOverride": -1, + "hyprlandLayoutRadiusOverride": -1, + "hyprlandLayoutBorderSize": -1, + "mangoLayoutGapsOverride": -1, + "mangoLayoutRadiusOverride": -1, + "mangoLayoutBorderSize": -1, + "use24HourClock": true, + "showSeconds": false, + "padHours12Hour": false, + "useFahrenheit": false, + "windSpeedUnit": "kmh", + "nightModeEnabled": false, + "animationSpeed": 1, + "customAnimationDuration": 500, + "syncComponentAnimationSpeeds": true, + "popoutAnimationSpeed": 1, + "popoutCustomAnimationDuration": 150, + "modalAnimationSpeed": 1, + "modalCustomAnimationDuration": 150, + "enableRippleEffects": true, + "wallpaperFillMode": "Fill", + "blurredWallpaperLayer": false, + "blurWallpaperOnOverview": false, + "showLauncherButton": true, + "showWorkspaceSwitcher": true, + "showFocusedWindow": true, + "showWeather": true, + "showMusic": true, + "showClipboard": true, + "showCpuUsage": true, + "showMemUsage": true, + "showCpuTemp": true, + "showGpuTemp": true, + "selectedGpuIndex": 0, + "enabledGpuPciIds": [], + "showSystemTray": true, + "showClock": true, + "showNotificationButton": true, + "showBattery": true, + "showControlCenterButton": true, + "showCapsLockIndicator": true, + "controlCenterShowNetworkIcon": true, + "controlCenterShowBluetoothIcon": true, + "controlCenterShowAudioIcon": true, + "controlCenterShowAudioPercent": false, + "controlCenterShowVpnIcon": true, + "controlCenterShowBrightnessIcon": false, + "controlCenterShowBrightnessPercent": false, + "controlCenterShowMicIcon": false, + "controlCenterShowMicPercent": true, + "controlCenterShowBatteryIcon": false, + "controlCenterShowPrinterIcon": false, + "controlCenterShowScreenSharingIcon": true, + "showPrivacyButton": true, + "privacyShowMicIcon": false, + "privacyShowCameraIcon": false, + "privacyShowScreenShareIcon": false, + "controlCenterWidgets": [ + { + "id": "volumeSlider", + "enabled": true, + "width": 50 + }, + { + "id": "brightnessSlider", + "enabled": true, + "width": 50 + }, + { + "id": "bluetooth", + "enabled": true, + "width": 50 + }, + { + "id": "wifi", + "enabled": true, + "width": 50 + }, + { + "id": "audioOutput", + "enabled": true, + "width": 50 + }, + { + "id": "audioInput", + "enabled": true, + "width": 50 + }, + { + "id": "nightMode", + "enabled": true, + "width": 50 + }, + { + "id": "darkMode", + "enabled": true, + "width": 50 + } + ], + "showWorkspaceIndex": false, + "showWorkspaceName": false, + "showWorkspacePadding": true, + "workspaceScrolling": false, + "showWorkspaceApps": false, + "workspaceDragReorder": true, + "maxWorkspaceIcons": 3, + "workspaceAppIconSizeOffset": 0, + "groupWorkspaceApps": true, + "workspaceFollowFocus": false, + "showOccupiedWorkspacesOnly": false, + "reverseScrolling": false, + "dwlShowAllTags": false, + "workspaceColorMode": "default", + "workspaceOccupiedColorMode": "none", + "workspaceUnfocusedColorMode": "default", + "workspaceUrgentColorMode": "default", + "workspaceFocusedBorderEnabled": false, + "workspaceFocusedBorderColor": "primary", + "workspaceFocusedBorderThickness": 2, + "workspaceNameIcons": {}, + "waveProgressEnabled": true, + "scrollTitleEnabled": true, + "audioVisualizerEnabled": true, + "audioScrollMode": "volume", + "audioWheelScrollAmount": 5, + "clockCompactMode": false, + "focusedWindowCompactMode": false, + "runningAppsCompactMode": true, + "barMaxVisibleApps": 0, + "barMaxVisibleRunningApps": 0, + "barShowOverflowBadge": true, + "appsDockHideIndicators": false, + "appsDockColorizeActive": false, + "appsDockActiveColorMode": "primary", + "appsDockEnlargeOnHover": false, + "appsDockEnlargePercentage": 125, + "appsDockIconSizePercentage": 100, + "keyboardLayoutNameCompactMode": false, + "runningAppsCurrentWorkspace": true, + "runningAppsGroupByApp": false, + "runningAppsCurrentMonitor": false, + "appIdSubstitutions": [ + { + "pattern": "Spotify", + "replacement": "spotify", + "type": "exact" + }, + { + "pattern": "beepertexts", + "replacement": "beeper", + "type": "exact" + }, + { + "pattern": "home assistant desktop", + "replacement": "homeassistant-desktop", + "type": "exact" + }, + { + "pattern": "com.transmissionbt.transmission", + "replacement": "transmission-gtk", + "type": "contains" + }, + { + "pattern": "^steam_app_(\\d+)$", + "replacement": "steam_icon_$1", + "type": "regex" + } + ], + "centeringMode": "geometric", + "clockDateFormat": "", + "lockDateFormat": "ddd d", + "greeterRememberLastSession": true, + "greeterRememberLastUser": true, + "greeterEnableFprint": false, + "greeterEnableU2f": false, + "greeterWallpaperPath": "", + "greeterUse24HourClock": true, + "greeterShowSeconds": false, + "greeterPadHours12Hour": false, + "greeterLockDateFormat": "", + "greeterFontFamily": "", + "greeterWallpaperFillMode": "", + "mediaSize": 1, + "appLauncherViewMode": "list", + "spotlightModalViewMode": "list", + "browserPickerViewMode": "grid", + "browserUsageHistory": {}, + "appPickerViewMode": "grid", + "filePickerUsageHistory": {}, + "sortAppsAlphabetically": false, + "appLauncherGridColumns": 4, + "spotlightCloseNiriOverview": true, + "spotlightSectionViewModes": {}, + "appDrawerSectionViewModes": { + "apps": "list" + }, + "niriOverviewOverlayEnabled": true, + "dankLauncherV2Size": "compact", + "dankLauncherV2BorderEnabled": false, + "dankLauncherV2BorderThickness": 2, + "dankLauncherV2BorderColor": "primary", + "dankLauncherV2ShowFooter": true, + "dankLauncherV2UnloadOnClose": false, + "useAutoLocation": false, + "weatherEnabled": true, + "networkPreference": "auto", + "iconTheme": "Adwaita", + "cursorSettings": { + "theme": "System Default", + "size": 21, + "niri": { + "hideWhenTyping": true, + "hideAfterInactiveMs": 0 + }, + "hyprland": { + "hideOnKeyPress": false, + "hideOnTouch": false, + "inactiveTimeout": 0 + }, + "dwl": { + "cursorHideTimeout": 0 + } + }, + "launcherLogoMode": "compositor", + "launcherLogoCustomPath": "", + "launcherLogoColorOverride": "", + "launcherLogoColorInvertOnMode": false, + "launcherLogoBrightness": 0.5, + "launcherLogoContrast": 1, + "launcherLogoSizeOffset": 0, + "fontFamily": "IosevkaTerm NFM", + "monoFontFamily": "IosevkaTerm Nerd Font Mono", + "fontWeight": 400, + "fontScale": 1.12, + "notepadUseMonospace": true, + "notepadFontFamily": "", + "notepadFontSize": 16, + "notepadShowLineNumbers": true, + "notepadTransparencyOverride": -1, + "notepadLastCustomTransparency": 0.7, + "soundsEnabled": true, + "useSystemSoundTheme": true, + "soundNewNotification": true, + "soundVolumeChanged": true, + "soundPluggedIn": true, + "acMonitorTimeout": 0, + "acLockTimeout": 0, + "acSuspendTimeout": 0, + "acSuspendBehavior": 0, + "acProfileName": "", + "batteryMonitorTimeout": 0, + "batteryLockTimeout": 0, + "batterySuspendTimeout": 0, + "batterySuspendBehavior": 0, + "batteryProfileName": "", + "batteryChargeLimit": 100, + "lockBeforeSuspend": false, + "loginctlLockIntegration": true, + "fadeToLockEnabled": true, + "fadeToLockGracePeriod": 1, + "fadeToDpmsEnabled": true, + "fadeToDpmsGracePeriod": 5, + "launchPrefix": "", + "brightnessDevicePins": {}, + "wifiNetworkPins": {}, + "bluetoothDevicePins": {}, + "audioInputDevicePins": {}, + "audioOutputDevicePins": {}, + "gtkThemingEnabled": false, + "qtThemingEnabled": false, + "syncModeWithPortal": true, + "terminalsAlwaysDark": true, + "runDmsMatugenTemplates": true, + "matugenTemplateGtk": true, + "matugenTemplateNiri": true, + "matugenTemplateHyprland": true, + "matugenTemplateMangowc": true, + "matugenTemplateQt5ct": true, + "matugenTemplateQt6ct": true, + "matugenTemplateFirefox": true, + "matugenTemplatePywalfox": true, + "matugenTemplateZenBrowser": true, + "matugenTemplateVesktop": true, + "matugenTemplateEquibop": true, + "matugenTemplateGhostty": true, + "matugenTemplateKitty": true, + "matugenTemplateFoot": true, + "matugenTemplateAlacritty": true, + "matugenTemplateNeovim": true, + "matugenTemplateWezterm": true, + "matugenTemplateDgop": true, + "matugenTemplateKcolorscheme": true, + "matugenTemplateVscode": true, + "matugenTemplateEmacs": true, + "matugenTemplateZed": true, + "showDock": false, + "dockAutoHide": false, + "dockSmartAutoHide": false, + "dockGroupByApp": false, + "dockOpenOnOverview": false, + "dockPosition": 1, + "dockSpacing": 4, + "dockBottomGap": 0, + "dockMargin": 0, + "dockIconSize": 40, + "dockIndicatorStyle": "circle", + "dockBorderEnabled": false, + "dockBorderColor": "surfaceText", + "dockBorderOpacity": 1, + "dockBorderThickness": 1, + "dockIsolateDisplays": false, + "dockLauncherEnabled": false, + "dockLauncherLogoMode": "apps", + "dockLauncherLogoCustomPath": "", + "dockLauncherLogoColorOverride": "", + "dockLauncherLogoSizeOffset": 0, + "dockLauncherLogoBrightness": 0.5, + "dockLauncherLogoContrast": 1, + "dockMaxVisibleApps": 0, + "dockMaxVisibleRunningApps": 0, + "dockShowOverflowBadge": true, + "notificationOverlayEnabled": true, + "notificationPopupShadowEnabled": true, + "notificationPopupPrivacyMode": false, + "modalDarkenBackground": true, + "lockScreenShowPowerActions": true, + "lockScreenShowSystemIcons": true, + "lockScreenShowTime": true, + "lockScreenShowDate": true, + "lockScreenShowProfileImage": true, + "lockScreenShowPasswordField": true, + "lockScreenShowMediaPlayer": true, + "lockScreenPowerOffMonitorsOnLock": false, + "lockAtStartup": false, + "enableFprint": false, + "maxFprintTries": 15, + "enableU2f": false, + "u2fMode": "or", + "lockScreenActiveMonitor": "all", + "lockScreenInactiveColor": "#000000", + "lockScreenNotificationMode": 0, + "hideBrightnessSlider": false, + "notificationTimeoutLow": 5000, + "notificationTimeoutNormal": 5000, + "notificationTimeoutCritical": 0, + "notificationCompactMode": false, + "notificationPopupPosition": 0, + "notificationAnimationSpeed": 1, + "notificationCustomAnimationDuration": 400, + "notificationHistoryEnabled": true, + "notificationHistoryMaxCount": 50, + "notificationHistoryMaxAgeDays": 7, + "notificationHistorySaveLow": true, + "notificationHistorySaveNormal": true, + "notificationHistorySaveCritical": true, + "notificationRules": [], + "osdAlwaysShowValue": false, + "osdPosition": 5, + "osdVolumeEnabled": true, + "osdMediaVolumeEnabled": true, + "osdMediaPlaybackEnabled": false, + "osdBrightnessEnabled": true, + "osdIdleInhibitorEnabled": true, + "osdMicMuteEnabled": true, + "osdCapsLockEnabled": true, + "osdPowerProfileEnabled": true, + "osdAudioOutputEnabled": true, + "powerActionConfirm": true, + "powerActionHoldDuration": 0.5, + "powerMenuActions": [ + "reboot", + "logout", + "poweroff", + "lock", + "suspend", + "restart" + ], + "powerMenuDefaultAction": "logout", + "powerMenuGridLayout": false, + "customPowerActionLock": "~/.config/niri/lock.sh", + "customPowerActionLogout": "", + "customPowerActionSuspend": "", + "customPowerActionHibernate": "", + "customPowerActionReboot": "", + "customPowerActionPowerOff": "", + "updaterHideWidget": false, + "updaterUseCustomCommand": false, + "updaterCustomCommand": "", + "updaterTerminalAdditionalParams": "", + "displayNameMode": "system", + "screenPreferences": { + "wallpaper": [], + "dock": [] + }, + "showOnLastDisplay": { + "dock": true + }, + "niriOutputSettings": { + "DP-1": { + "vrrOnDemand": true, + "disabled": false, + "hotCorners": { + "corners": [ + "top-left" + ] + }, + "layout": null + } + }, + "hyprlandOutputSettings": {}, + "displayProfiles": { + "niri": { + "profile_1776211496314_g03e3q": { + "id": "profile_1776211496314_g03e3q", + "name": "test0", + "outputSet": [ + "DP-1" + ], + "createdAt": 1776211496314, + "updatedAt": 1776211496314 + } + } + }, + "activeDisplayProfile": { + "niri": "profile_1776211496314_g03e3q" + }, + "displayProfileAutoSelect": false, + "displayShowDisconnected": false, + "displaySnapToEdge": true, + "barConfigs": [ + { + "id": "default", + "name": "Main Bar", + "enabled": true, + "position": 0, + "screenPreferences": [ + "all" + ], + "showOnLastDisplay": true, + "leftWidgets": [ + { + "id": "launcherButton", + "enabled": true + }, + { + "id": "workspaceSwitcher", + "enabled": true + }, + { + "id": "focusedWindow", + "enabled": true, + "focusedWindowCompactMode": true + } + ], + "centerWidgets": [ + { + "id": "spacer", + "enabled": true, + "size": 35 + }, + { + "id": "clock", + "enabled": true + }, + { + "id": "music", + "enabled": true + }, + { + "id": "weather", + "enabled": true + }, + { + "id": "vpn", + "enabled": false + } + ], + "rightWidgets": [ + { + "id": "systemTray", + "enabled": true + }, + { + "id": "privacyIndicator", + "enabled": true + }, + { + "id": "cpuUsage", + "enabled": true, + "minimumWidth": false + }, + { + "id": "memUsage", + "enabled": true, + "minimumWidth": false, + "showSwap": false + }, + { + "id": "controlCenterButton", + "enabled": true + } + ], + "spacing": 10, + "innerPadding": 5, + "bottomGap": 2, + "transparency": 1, + "widgetTransparency": 1, + "squareCorners": false, + "noBackground": false, + "maximizeWidgetIcons": false, + "maximizeWidgetText": false, + "removeWidgetPadding": false, + "widgetPadding": 13, + "gothCornersEnabled": false, + "gothCornerRadiusOverride": false, + "gothCornerRadiusValue": 0, + "borderEnabled": false, + "borderColor": "surfaceText", + "borderOpacity": 1, + "borderThickness": 4, + "widgetOutlineEnabled": false, + "widgetOutlineColor": "primary", + "widgetOutlineOpacity": 1, + "widgetOutlineThickness": 1, + "fontScale": 1.09, + "iconScale": 1.07, + "autoHide": false, + "autoHideDelay": 369, + "showOnWindowsOpen": true, + "openOnOverview": true, + "visible": true, + "popupGapsAuto": false, + "popupGapsManual": 12, + "maximizeDetection": false, + "scrollEnabled": true, + "scrollXBehavior": "column", + "scrollYBehavior": "workspace", + "shadowIntensity": 0, + "shadowOpacity": 60, + "shadowColorMode": "text", + "shadowCustomColor": "#000000", + "clickThrough": false + } + ], + "desktopClockEnabled": false, + "desktopClockStyle": "analog", + "desktopClockTransparency": 0.8, + "desktopClockColorMode": "primary", + "desktopClockCustomColor": { + "r": 1, + "g": 1, + "b": 1, + "a": 1, + "hsvHue": -1, + "hsvSaturation": 0, + "hsvValue": 1, + "hslHue": -1, + "hslSaturation": 0, + "hslLightness": 1, + "valid": true + }, + "desktopClockShowDate": true, + "desktopClockShowAnalogNumbers": false, + "desktopClockShowAnalogSeconds": true, + "desktopClockX": -1, + "desktopClockY": -1, + "desktopClockWidth": 280, + "desktopClockHeight": 180, + "desktopClockDisplayPreferences": [ + "all" + ], + "systemMonitorEnabled": false, + "systemMonitorShowHeader": true, + "systemMonitorTransparency": 0.8, + "systemMonitorColorMode": "primary", + "systemMonitorCustomColor": { + "r": 1, + "g": 1, + "b": 1, + "a": 1, + "hsvHue": -1, + "hsvSaturation": 0, + "hsvValue": 1, + "hslHue": -1, + "hslSaturation": 0, + "hslLightness": 1, + "valid": true + }, + "systemMonitorShowCpu": true, + "systemMonitorShowCpuGraph": true, + "systemMonitorShowCpuTemp": true, + "systemMonitorShowGpuTemp": false, + "systemMonitorGpuPciId": "", + "systemMonitorShowMemory": true, + "systemMonitorShowMemoryGraph": true, + "systemMonitorShowNetwork": true, + "systemMonitorShowNetworkGraph": true, + "systemMonitorShowDisk": true, + "systemMonitorShowTopProcesses": false, + "systemMonitorTopProcessCount": 3, + "systemMonitorTopProcessSortBy": "cpu", + "systemMonitorGraphInterval": 60, + "systemMonitorLayoutMode": "auto", + "systemMonitorX": -1, + "systemMonitorY": -1, + "systemMonitorWidth": 320, + "systemMonitorHeight": 480, + "systemMonitorDisplayPreferences": [ + "all" + ], + "systemMonitorVariants": [], + "desktopWidgetPositions": {}, + "desktopWidgetGridSettings": {}, + "desktopWidgetInstances": [ + { + "id": "dw_1776211089950_f6f0kg7f4", + "widgetType": "desktopClock", + "name": "Desktop Clock", + "enabled": false, + "config": { + "style": "digital", + "transparency": 0, + "colorMode": "secondary", + "customColor": "#ffffff", + "showDate": true, + "showAnalogNumbers": false, + "showAnalogSeconds": true, + "displayPreferences": [ + "all" + ], + "showOnOverlay": false, + "showOnOverview": false, + "showOnOverviewOnly": false, + "clickThrough": false + }, + "positions": { + "DP-1": { + "width": 200, + "height": 200, + "x": 1704.5, + "y": 62.42578125 + } + } + }, + { + "id": "dw_1776211282668_7bg0zbkmd", + "widgetType": "desktopCommand", + "name": "Desktop Command", + "enabled": false, + "config": { + "displayPreferences": [ + "all" + ], + "showOnOverview": false, + "clickThrough": false, + "command": "tclock --color \"#C1D6D6\"", + "autoRefresh": true, + "commandTimeout": "0", + "refreshInterval": "5", + "fontSize": 25, + "backgroundOpacity": 0, + "enableBorder": true + }, + "positions": { + "DP-1": { + "width": 805.3828125, + "height": 506.94140625, + "x": 847.97265625, + "y": 169.49609375 + } + } + } + ], + "desktopWidgetGroups": [], + "builtInPluginSettings": { + "dms_settings_search": { + "trigger": "?" + } + }, + "clipboardEnterToPaste": false, + "launcherPluginVisibility": { + "dms_settings_search": { + "allowWithoutTrigger": true + } + }, + "launcherPluginOrder": [], + "configVersion": 5 +} \ No newline at end of file diff --git a/config/DankMaterialShell/themes/peaceAndQuiet/preview-blue-dark.svg b/config/DankMaterialShell/themes/peaceAndQuiet/preview-blue-dark.svg new file mode 100644 index 0000000..e289846 --- /dev/null +++ b/config/DankMaterialShell/themes/peaceAndQuiet/preview-blue-dark.svg @@ -0,0 +1,23 @@ + + + + + + Peace & Quiet Blue (dark) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + \ No newline at end of file diff --git a/config/DankMaterialShell/themes/peaceAndQuiet/preview-blue-light.svg b/config/DankMaterialShell/themes/peaceAndQuiet/preview-blue-light.svg new file mode 100644 index 0000000..a6965ed --- /dev/null +++ b/config/DankMaterialShell/themes/peaceAndQuiet/preview-blue-light.svg @@ -0,0 +1,23 @@ + + + + + + Peace & Quiet Blue (light) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + \ No newline at end of file diff --git a/config/DankMaterialShell/themes/peaceAndQuiet/preview-blue.svg b/config/DankMaterialShell/themes/peaceAndQuiet/preview-blue.svg new file mode 100644 index 0000000..2106c11 --- /dev/null +++ b/config/DankMaterialShell/themes/peaceAndQuiet/preview-blue.svg @@ -0,0 +1,45 @@ + + + + + + Peace & Quiet Blue (dark) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + + + + + + Peace & Quiet Blue (light) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + \ No newline at end of file diff --git a/config/DankMaterialShell/themes/peaceAndQuiet/preview-cyan-dark.svg b/config/DankMaterialShell/themes/peaceAndQuiet/preview-cyan-dark.svg new file mode 100644 index 0000000..a8e33c3 --- /dev/null +++ b/config/DankMaterialShell/themes/peaceAndQuiet/preview-cyan-dark.svg @@ -0,0 +1,23 @@ + + + + + + Peace & Quiet Cyan (dark) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + \ No newline at end of file diff --git a/config/DankMaterialShell/themes/peaceAndQuiet/preview-cyan-light.svg b/config/DankMaterialShell/themes/peaceAndQuiet/preview-cyan-light.svg new file mode 100644 index 0000000..6ded52b --- /dev/null +++ b/config/DankMaterialShell/themes/peaceAndQuiet/preview-cyan-light.svg @@ -0,0 +1,23 @@ + + + + + + Peace & Quiet Cyan (light) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + \ No newline at end of file diff --git a/config/DankMaterialShell/themes/peaceAndQuiet/preview-cyan.svg b/config/DankMaterialShell/themes/peaceAndQuiet/preview-cyan.svg new file mode 100644 index 0000000..da815a7 --- /dev/null +++ b/config/DankMaterialShell/themes/peaceAndQuiet/preview-cyan.svg @@ -0,0 +1,45 @@ + + + + + + Peace & Quiet Cyan (dark) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + + + + + + Peace & Quiet Cyan (light) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + \ No newline at end of file diff --git a/config/DankMaterialShell/themes/peaceAndQuiet/preview-dark.svg b/config/DankMaterialShell/themes/peaceAndQuiet/preview-dark.svg new file mode 100644 index 0000000..3560e6c --- /dev/null +++ b/config/DankMaterialShell/themes/peaceAndQuiet/preview-dark.svg @@ -0,0 +1,23 @@ + + + + + + Peace & Quiet Salmon (dark) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + \ No newline at end of file diff --git a/config/DankMaterialShell/themes/peaceAndQuiet/preview-lavender-dark.svg b/config/DankMaterialShell/themes/peaceAndQuiet/preview-lavender-dark.svg new file mode 100644 index 0000000..e747b5d --- /dev/null +++ b/config/DankMaterialShell/themes/peaceAndQuiet/preview-lavender-dark.svg @@ -0,0 +1,23 @@ + + + + + + Peace & Quiet Lavender (dark) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + \ No newline at end of file diff --git a/config/DankMaterialShell/themes/peaceAndQuiet/preview-lavender-light.svg b/config/DankMaterialShell/themes/peaceAndQuiet/preview-lavender-light.svg new file mode 100644 index 0000000..38b7b6b --- /dev/null +++ b/config/DankMaterialShell/themes/peaceAndQuiet/preview-lavender-light.svg @@ -0,0 +1,23 @@ + + + + + + Peace & Quiet Lavender (light) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + \ No newline at end of file diff --git a/config/DankMaterialShell/themes/peaceAndQuiet/preview-lavender.svg b/config/DankMaterialShell/themes/peaceAndQuiet/preview-lavender.svg new file mode 100644 index 0000000..2b74f27 --- /dev/null +++ b/config/DankMaterialShell/themes/peaceAndQuiet/preview-lavender.svg @@ -0,0 +1,45 @@ + + + + + + Peace & Quiet Lavender (dark) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + + + + + + Peace & Quiet Lavender (light) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + \ No newline at end of file diff --git a/config/DankMaterialShell/themes/peaceAndQuiet/preview-light.svg b/config/DankMaterialShell/themes/peaceAndQuiet/preview-light.svg new file mode 100644 index 0000000..4c3630e --- /dev/null +++ b/config/DankMaterialShell/themes/peaceAndQuiet/preview-light.svg @@ -0,0 +1,23 @@ + + + + + + Peace & Quiet Salmon (light) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + \ No newline at end of file diff --git a/config/DankMaterialShell/themes/peaceAndQuiet/preview-mint-dark.svg b/config/DankMaterialShell/themes/peaceAndQuiet/preview-mint-dark.svg new file mode 100644 index 0000000..fe7eca2 --- /dev/null +++ b/config/DankMaterialShell/themes/peaceAndQuiet/preview-mint-dark.svg @@ -0,0 +1,23 @@ + + + + + + Peace & Quiet Mint (dark) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + \ No newline at end of file diff --git a/config/DankMaterialShell/themes/peaceAndQuiet/preview-mint-light.svg b/config/DankMaterialShell/themes/peaceAndQuiet/preview-mint-light.svg new file mode 100644 index 0000000..aa5e604 --- /dev/null +++ b/config/DankMaterialShell/themes/peaceAndQuiet/preview-mint-light.svg @@ -0,0 +1,23 @@ + + + + + + Peace & Quiet Mint (light) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + \ No newline at end of file diff --git a/config/DankMaterialShell/themes/peaceAndQuiet/preview-mint.svg b/config/DankMaterialShell/themes/peaceAndQuiet/preview-mint.svg new file mode 100644 index 0000000..4e580fa --- /dev/null +++ b/config/DankMaterialShell/themes/peaceAndQuiet/preview-mint.svg @@ -0,0 +1,45 @@ + + + + + + Peace & Quiet Mint (dark) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + + + + + + Peace & Quiet Mint (light) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + \ No newline at end of file diff --git a/config/DankMaterialShell/themes/peaceAndQuiet/preview-pink-dark.svg b/config/DankMaterialShell/themes/peaceAndQuiet/preview-pink-dark.svg new file mode 100644 index 0000000..4cbf8be --- /dev/null +++ b/config/DankMaterialShell/themes/peaceAndQuiet/preview-pink-dark.svg @@ -0,0 +1,23 @@ + + + + + + Peace & Quiet Pink (dark) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + \ No newline at end of file diff --git a/config/DankMaterialShell/themes/peaceAndQuiet/preview-pink-light.svg b/config/DankMaterialShell/themes/peaceAndQuiet/preview-pink-light.svg new file mode 100644 index 0000000..bc9b224 --- /dev/null +++ b/config/DankMaterialShell/themes/peaceAndQuiet/preview-pink-light.svg @@ -0,0 +1,23 @@ + + + + + + Peace & Quiet Pink (light) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + \ No newline at end of file diff --git a/config/DankMaterialShell/themes/peaceAndQuiet/preview-pink.svg b/config/DankMaterialShell/themes/peaceAndQuiet/preview-pink.svg new file mode 100644 index 0000000..35cc2ed --- /dev/null +++ b/config/DankMaterialShell/themes/peaceAndQuiet/preview-pink.svg @@ -0,0 +1,45 @@ + + + + + + Peace & Quiet Pink (dark) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + + + + + + Peace & Quiet Pink (light) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + \ No newline at end of file diff --git a/config/DankMaterialShell/themes/peaceAndQuiet/preview-salmon-dark.svg b/config/DankMaterialShell/themes/peaceAndQuiet/preview-salmon-dark.svg new file mode 100644 index 0000000..3560e6c --- /dev/null +++ b/config/DankMaterialShell/themes/peaceAndQuiet/preview-salmon-dark.svg @@ -0,0 +1,23 @@ + + + + + + Peace & Quiet Salmon (dark) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + \ No newline at end of file diff --git a/config/DankMaterialShell/themes/peaceAndQuiet/preview-salmon-light.svg b/config/DankMaterialShell/themes/peaceAndQuiet/preview-salmon-light.svg new file mode 100644 index 0000000..4c3630e --- /dev/null +++ b/config/DankMaterialShell/themes/peaceAndQuiet/preview-salmon-light.svg @@ -0,0 +1,23 @@ + + + + + + Peace & Quiet Salmon (light) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + \ No newline at end of file diff --git a/config/DankMaterialShell/themes/peaceAndQuiet/preview-salmon.svg b/config/DankMaterialShell/themes/peaceAndQuiet/preview-salmon.svg new file mode 100644 index 0000000..40bf139 --- /dev/null +++ b/config/DankMaterialShell/themes/peaceAndQuiet/preview-salmon.svg @@ -0,0 +1,45 @@ + + + + + + Peace & Quiet Salmon (dark) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + + + + + + Peace & Quiet Salmon (light) + + Surface Text + Outline color + + Primary + + + + Background + + + + + + Surface Tint Overlay + + \ No newline at end of file diff --git a/config/DankMaterialShell/themes/peaceAndQuiet/theme.json b/config/DankMaterialShell/themes/peaceAndQuiet/theme.json new file mode 100644 index 0000000..390fbad --- /dev/null +++ b/config/DankMaterialShell/themes/peaceAndQuiet/theme.json @@ -0,0 +1,171 @@ +{ + "id": "peaceAndQuiet", + "name": "Peace \u0026 Quiet", + "version": "1.0.2", + "author": "ernestowg", + "description": "Light and dark theme with pastel accents and purple hues", + "dark": { + "primaryText": "#1e1e00", + "surface": "#130f1a", + "surfaceText": "#f0f0f0", + "surfaceVariant": "#221d26", + "background": "#09070d", + "backgroundText": "#f0f0f0", + "surfaceContainer": "#09070d", + "surfaceContainerHigh": "#221f26", + "surfaceContainerHighest": "#17141a", + "error": "#f38ba8", + "warning": "#fab387" + }, + "light": { + "primaryText": "#ffffff", + "surface": "#ede8f5", + "surfaceText": "#1e1824", + "surfaceVariant": "#e0d5ee", + "background": "#f5f0fa", + "backgroundText": "#1e1824", + "surfaceContainer": "#f5f0fa", + "surfaceContainerHigh": "#e8e0f2", + "surfaceContainerHighest": "#ede8f5", + "error": "#b0324e", + "warning": "#b05520" + }, + "variants": { + "default": "salmon", + "options": [ + { + "id": "salmon", + "name": "Salmon", + "dark": { + "primary": "#eda792", + "primaryContainer": "#8c645b", + "secondary": "#49ccd2", + "surfaceVariantText": "#f0f0f0", + "surfaceTint": "#eda792", + "outline": "#d9bcb8", + "info": "#49ccd2" + }, + "light": { + "primary": "#c4613e", + "primaryContainer": "#f5d8cf", + "secondary": "#3a9bb8", + "surfaceVariantText": "#3a2820", + "surfaceTint": "#c4613e", + "outline": "#b89090", + "info": "#3a9bb8" + } + }, + { + "id": "cyan", + "name": "Cyan", + "dark": { + "primary": "#49ccd2", + "primaryContainer": "#5b878c", + "secondary": "#eda792", + "surfaceVariantText": "#b8d5d9", + "surfaceTint": "#49ccd2", + "outline": "#b8d5d9", + "info": "#49ccd2" + }, + "light": { + "primary": "#2e8fad", + "primaryContainer": "#c8ecf5", + "secondary": "#c4613e", + "surfaceVariantText": "#1a3040", + "surfaceTint": "#2e8fad", + "outline": "#6aafc4", + "info": "#2e8fad" + } + }, + { + "id": "mint", + "name": "Mint", + "dark": { + "primary": "#92eda7", + "primaryContainer": "#5b8c7e", + "secondary": "#b8a8f0", + "surfaceVariantText": "#b8d9ce", + "surfaceTint": "#92eda7", + "outline": "#b8d9ce", + "info": "#b8a8f0" + }, + "light": { + "primary": "#2e9e55", + "primaryContainer": "#c8f0d8", + "secondary": "#6b54c7", + "surfaceVariantText": "#1a3028", + "surfaceTint": "#2e9e55", + "outline": "#6abf90", + "info": "#6b54c7" + } + }, + { + "id": "lavender", + "name": "Lavender", + "dark": { + "primary": "#b8a8f0", + "primaryContainer": "#745b8c", + "secondary": "#92eda7", + "surfaceVariantText": "#c9b8d9", + "surfaceTint": "#b8a8f0", + "outline": "#c9b8d9", + "info": "#92eda7" + }, + "light": { + "primary": "#6b54c7", + "primaryContainer": "#ddd8f8", + "secondary": "#2e9e55", + "surfaceVariantText": "#28204a", + "surfaceTint": "#6b54c7", + "outline": "#a090cc", + "info": "#2e9e55" + } + }, + { + "id": "blue", + "name": "Blue", + "dark": { + "primary": "#a2d2ff", + "primaryContainer": "#5b748c", + "secondary": "#ed92d8", + "surfaceVariantText": "#b8c9d9", + "surfaceTint": "#a2d2ff", + "outline": "#b8c9d9", + "info": "#a2d2ff" + }, + "light": { + "primary": "#3a547d", + "primaryContainer": "#cce0f8", + "secondary": "#b83a99", + "surfaceVariantText": "#182840", + "surfaceTint": "#3a547d", + "outline": "#889cbb", + "info": "#3a547d" + } + }, + { + "id": "pink", + "name": "Pink", + "dark": { + "primary": "#ed92d8", + "primaryContainer": "#8c5b6e", + "secondary": "#a2d2ff", + "surfaceVariantText": "#d9b8c4", + "surfaceTint": "#ed92d8", + "outline": "#d9b8c4", + "info": "#a2d2ff" + }, + "light": { + "primary": "#b83a99", + "primaryContainer": "#f5ccec", + "secondary": "#3a547d", + "surfaceVariantText": "#401830", + "surfaceTint": "#b83a99", + "outline": "#c47ab0", + "info": "#3a547d" + } + } + ] + }, + "sourceDir": "peace-and-quiet" +} \ No newline at end of file diff --git a/config/DankMaterialShell/themes/zzz/theme.json b/config/DankMaterialShell/themes/zzz/theme.json new file mode 100644 index 0000000..390fbad --- /dev/null +++ b/config/DankMaterialShell/themes/zzz/theme.json @@ -0,0 +1,171 @@ +{ + "id": "peaceAndQuiet", + "name": "Peace \u0026 Quiet", + "version": "1.0.2", + "author": "ernestowg", + "description": "Light and dark theme with pastel accents and purple hues", + "dark": { + "primaryText": "#1e1e00", + "surface": "#130f1a", + "surfaceText": "#f0f0f0", + "surfaceVariant": "#221d26", + "background": "#09070d", + "backgroundText": "#f0f0f0", + "surfaceContainer": "#09070d", + "surfaceContainerHigh": "#221f26", + "surfaceContainerHighest": "#17141a", + "error": "#f38ba8", + "warning": "#fab387" + }, + "light": { + "primaryText": "#ffffff", + "surface": "#ede8f5", + "surfaceText": "#1e1824", + "surfaceVariant": "#e0d5ee", + "background": "#f5f0fa", + "backgroundText": "#1e1824", + "surfaceContainer": "#f5f0fa", + "surfaceContainerHigh": "#e8e0f2", + "surfaceContainerHighest": "#ede8f5", + "error": "#b0324e", + "warning": "#b05520" + }, + "variants": { + "default": "salmon", + "options": [ + { + "id": "salmon", + "name": "Salmon", + "dark": { + "primary": "#eda792", + "primaryContainer": "#8c645b", + "secondary": "#49ccd2", + "surfaceVariantText": "#f0f0f0", + "surfaceTint": "#eda792", + "outline": "#d9bcb8", + "info": "#49ccd2" + }, + "light": { + "primary": "#c4613e", + "primaryContainer": "#f5d8cf", + "secondary": "#3a9bb8", + "surfaceVariantText": "#3a2820", + "surfaceTint": "#c4613e", + "outline": "#b89090", + "info": "#3a9bb8" + } + }, + { + "id": "cyan", + "name": "Cyan", + "dark": { + "primary": "#49ccd2", + "primaryContainer": "#5b878c", + "secondary": "#eda792", + "surfaceVariantText": "#b8d5d9", + "surfaceTint": "#49ccd2", + "outline": "#b8d5d9", + "info": "#49ccd2" + }, + "light": { + "primary": "#2e8fad", + "primaryContainer": "#c8ecf5", + "secondary": "#c4613e", + "surfaceVariantText": "#1a3040", + "surfaceTint": "#2e8fad", + "outline": "#6aafc4", + "info": "#2e8fad" + } + }, + { + "id": "mint", + "name": "Mint", + "dark": { + "primary": "#92eda7", + "primaryContainer": "#5b8c7e", + "secondary": "#b8a8f0", + "surfaceVariantText": "#b8d9ce", + "surfaceTint": "#92eda7", + "outline": "#b8d9ce", + "info": "#b8a8f0" + }, + "light": { + "primary": "#2e9e55", + "primaryContainer": "#c8f0d8", + "secondary": "#6b54c7", + "surfaceVariantText": "#1a3028", + "surfaceTint": "#2e9e55", + "outline": "#6abf90", + "info": "#6b54c7" + } + }, + { + "id": "lavender", + "name": "Lavender", + "dark": { + "primary": "#b8a8f0", + "primaryContainer": "#745b8c", + "secondary": "#92eda7", + "surfaceVariantText": "#c9b8d9", + "surfaceTint": "#b8a8f0", + "outline": "#c9b8d9", + "info": "#92eda7" + }, + "light": { + "primary": "#6b54c7", + "primaryContainer": "#ddd8f8", + "secondary": "#2e9e55", + "surfaceVariantText": "#28204a", + "surfaceTint": "#6b54c7", + "outline": "#a090cc", + "info": "#2e9e55" + } + }, + { + "id": "blue", + "name": "Blue", + "dark": { + "primary": "#a2d2ff", + "primaryContainer": "#5b748c", + "secondary": "#ed92d8", + "surfaceVariantText": "#b8c9d9", + "surfaceTint": "#a2d2ff", + "outline": "#b8c9d9", + "info": "#a2d2ff" + }, + "light": { + "primary": "#3a547d", + "primaryContainer": "#cce0f8", + "secondary": "#b83a99", + "surfaceVariantText": "#182840", + "surfaceTint": "#3a547d", + "outline": "#889cbb", + "info": "#3a547d" + } + }, + { + "id": "pink", + "name": "Pink", + "dark": { + "primary": "#ed92d8", + "primaryContainer": "#8c5b6e", + "secondary": "#a2d2ff", + "surfaceVariantText": "#d9b8c4", + "surfaceTint": "#ed92d8", + "outline": "#d9b8c4", + "info": "#a2d2ff" + }, + "light": { + "primary": "#b83a99", + "primaryContainer": "#f5ccec", + "secondary": "#3a547d", + "surfaceVariantText": "#401830", + "surfaceTint": "#b83a99", + "outline": "#c47ab0", + "info": "#3a547d" + } + } + ] + }, + "sourceDir": "peace-and-quiet" +} \ No newline at end of file diff --git a/config/DankMaterialShell/themes/zzz/theme1.json b/config/DankMaterialShell/themes/zzz/theme1.json new file mode 100644 index 0000000..5f3b3fc --- /dev/null +++ b/config/DankMaterialShell/themes/zzz/theme1.json @@ -0,0 +1,1272 @@ +{ + "base16": { + "base00": { + "dark": { + "color": "#07090b" + }, + "default": { + "color": "#07090b" + }, + "light": { + "color": "#92c5d6" + } + }, + "base01": { + "dark": { + "color": "#1b2428" + }, + "default": { + "color": "#1b2428" + }, + "light": { + "color": "#7eaab9" + } + }, + "base02": { + "dark": { + "color": "#2f3f45" + }, + "default": { + "color": "#2f3f45" + }, + "light": { + "color": "#6a8f9c" + } + }, + "base03": { + "dark": { + "color": "#435a62" + }, + "default": { + "color": "#435a62" + }, + "light": { + "color": "#56747f" + } + }, + "base04": { + "dark": { + "color": "#56747f" + }, + "default": { + "color": "#56747f" + }, + "light": { + "color": "#435a62" + } + }, + "base05": { + "dark": { + "color": "#6a8f9c" + }, + "default": { + "color": "#6a8f9c" + }, + "light": { + "color": "#2f3f45" + } + }, + "base06": { + "dark": { + "color": "#7eaab9" + }, + "default": { + "color": "#7eaab9" + }, + "light": { + "color": "#1b2428" + } + }, + "base07": { + "dark": { + "color": "#92c5d6" + }, + "default": { + "color": "#92c5d6" + }, + "light": { + "color": "#07090b" + } + }, + "base08": { + "dark": { + "color": "#f46d22" + }, + "default": { + "color": "#f46d22" + }, + "light": { + "color": "#f46d22" + } + }, + "base09": { + "dark": { + "color": "#984140" + }, + "default": { + "color": "#984140" + }, + "light": { + "color": "#984140" + } + }, + "base0a": { + "dark": { + "color": "#91c4d6" + }, + "default": { + "color": "#91c4d6" + }, + "light": { + "color": "#91c4d6" + } + }, + "base0b": { + "dark": { + "color": "#1a3438" + }, + "default": { + "color": "#1a3438" + }, + "light": { + "color": "#1a3438" + } + }, + "base0c": { + "dark": { + "color": "#0f2324" + }, + "default": { + "color": "#0f2324" + }, + "light": { + "color": "#0f2324" + } + }, + "base0d": { + "dark": { + "color": "#081112" + }, + "default": { + "color": "#081112" + }, + "light": { + "color": "#081112" + } + }, + "base0e": { + "dark": { + "color": "#070a0c" + }, + "default": { + "color": "#070a0c" + }, + "light": { + "color": "#070a0c" + } + }, + "base0f": { + "dark": { + "color": "#07090b" + }, + "default": { + "color": "#07090b" + }, + "light": { + "color": "#07090b" + } + } + }, + "colors": { + "background": { + "dark": { + "color": "#15130c" + }, + "default": { + "color": "#15130c" + }, + "light": { + "color": "#fff9ec" + } + }, + "blue": { + "dark": { + "color": "#f5edff" + }, + "default": { + "color": "#f5edff" + }, + "light": { + "color": "#302259" + } + }, + "blue_container": { + "dark": { + "color": "#cab9fa" + }, + "default": { + "color": "#cab9fa" + }, + "light": { + "color": "#4e4078" + } + }, + "blue_source": { + "dark": { + "color": "#0000ff" + }, + "default": { + "color": "#0000ff" + }, + "light": { + "color": "#0000ff" + } + }, + "blue_value": { + "dark": { + "color": "#0000ff" + }, + "default": { + "color": "#0000ff" + }, + "light": { + "color": "#0000ff" + } + }, + "error": { + "dark": { + "color": "#ffece9" + }, + "default": { + "color": "#ffece9" + }, + "light": { + "color": "#600004" + } + }, + "error_container": { + "dark": { + "color": "#ffaea4" + }, + "default": { + "color": "#ffaea4" + }, + "light": { + "color": "#98000a" + } + }, + "green": { + "dark": { + "color": "#e0faaa" + }, + "default": { + "color": "#e0faaa" + }, + "light": { + "color": "#213100" + } + }, + "green_container": { + "dark": { + "color": "#b3cc81" + }, + "default": { + "color": "#b3cc81" + }, + "light": { + "color": "#3c4f13" + } + }, + "green_source": { + "dark": { + "color": "#00ff00" + }, + "default": { + "color": "#00ff00" + }, + "light": { + "color": "#00ff00" + } + }, + "green_value": { + "dark": { + "color": "#00ff00" + }, + "default": { + "color": "#00ff00" + }, + "light": { + "color": "#00ff00" + } + }, + "inverse_on_surface": { + "dark": { + "color": "#000000" + }, + "default": { + "color": "#000000" + }, + "light": { + "color": "#ffffff" + } + }, + "inverse_primary": { + "dark": { + "color": "#534800" + }, + "default": { + "color": "#534800" + }, + "light": { + "color": "#d9c76f" + } + }, + "inverse_surface": { + "dark": { + "color": "#e8e2d4" + }, + "default": { + "color": "#e8e2d4" + }, + "light": { + "color": "#333027" + } + }, + "on_background": { + "dark": { + "color": "#e8e2d4" + }, + "default": { + "color": "#e8e2d4" + }, + "light": { + "color": "#1e1c13" + } + }, + "on_blue": { + "dark": { + "color": "#000000" + }, + "default": { + "color": "#000000" + }, + "light": { + "color": "#ffffff" + } + }, + "on_blue_container": { + "dark": { + "color": "#000000" + }, + "default": { + "color": "#000000" + }, + "light": { + "color": "#ffffff" + } + }, + "on_error": { + "dark": { + "color": "#000000" + }, + "default": { + "color": "#000000" + }, + "light": { + "color": "#ffffff" + } + }, + "on_error_container": { + "dark": { + "color": "#000000" + }, + "default": { + "color": "#000000" + }, + "light": { + "color": "#ffffff" + } + }, + "on_green": { + "dark": { + "color": "#000000" + }, + "default": { + "color": "#000000" + }, + "light": { + "color": "#ffffff" + } + }, + "on_green_container": { + "dark": { + "color": "#000000" + }, + "default": { + "color": "#000000" + }, + "light": { + "color": "#ffffff" + } + }, + "on_primary": { + "dark": { + "color": "#000000" + }, + "default": { + "color": "#000000" + }, + "light": { + "color": "#ffffff" + } + }, + "on_primary_container": { + "dark": { + "color": "#000000" + }, + "default": { + "color": "#000000" + }, + "light": { + "color": "#ffffff" + } + }, + "on_primary_fixed": { + "dark": { + "color": "#000000" + }, + "default": { + "color": "#000000" + }, + "light": { + "color": "#ffffff" + } + }, + "on_primary_fixed_variant": { + "dark": { + "color": "#151100" + }, + "default": { + "color": "#151100" + }, + "light": { + "color": "#ffffff" + } + }, + "on_red": { + "dark": { + "color": "#000000" + }, + "default": { + "color": "#000000" + }, + "light": { + "color": "#ffffff" + } + }, + "on_red_container": { + "dark": { + "color": "#000000" + }, + "default": { + "color": "#000000" + }, + "light": { + "color": "#ffffff" + } + }, + "on_secondary": { + "dark": { + "color": "#000000" + }, + "default": { + "color": "#000000" + }, + "light": { + "color": "#ffffff" + } + }, + "on_secondary_container": { + "dark": { + "color": "#000000" + }, + "default": { + "color": "#000000" + }, + "light": { + "color": "#ffffff" + } + }, + "on_secondary_fixed": { + "dark": { + "color": "#000000" + }, + "default": { + "color": "#000000" + }, + "light": { + "color": "#ffffff" + } + }, + "on_secondary_fixed_variant": { + "dark": { + "color": "#151100" + }, + "default": { + "color": "#151100" + }, + "light": { + "color": "#ffffff" + } + }, + "on_surface": { + "dark": { + "color": "#ffffff" + }, + "default": { + "color": "#ffffff" + }, + "light": { + "color": "#000000" + } + }, + "on_surface_variant": { + "dark": { + "color": "#ffffff" + }, + "default": { + "color": "#ffffff" + }, + "light": { + "color": "#000000" + } + }, + "on_tertiary": { + "dark": { + "color": "#000000" + }, + "default": { + "color": "#000000" + }, + "light": { + "color": "#ffffff" + } + }, + "on_tertiary_container": { + "dark": { + "color": "#000000" + }, + "default": { + "color": "#000000" + }, + "light": { + "color": "#ffffff" + } + }, + "on_tertiary_fixed": { + "dark": { + "color": "#000000" + }, + "default": { + "color": "#000000" + }, + "light": { + "color": "#ffffff" + } + }, + "on_tertiary_fixed_variant": { + "dark": { + "color": "#001509" + }, + "default": { + "color": "#001509" + }, + "light": { + "color": "#ffffff" + } + }, + "outline": { + "dark": { + "color": "#f7f0dd" + }, + "default": { + "color": "#f7f0dd" + }, + "light": { + "color": "#2f2c20" + } + }, + "outline_variant": { + "dark": { + "color": "#c9c2b1" + }, + "default": { + "color": "#c9c2b1" + }, + "light": { + "color": "#4d493c" + } + }, + "primary": { + "dark": { + "color": "#fff0b2" + }, + "default": { + "color": "#fff0b2" + }, + "light": { + "color": "#342c00" + } + }, + "primary_container": { + "dark": { + "color": "#d5c36c" + }, + "default": { + "color": "#d5c36c" + }, + "light": { + "color": "#554900" + } + }, + "primary_fixed": { + "dark": { + "color": "#f6e388" + }, + "default": { + "color": "#f6e388" + }, + "light": { + "color": "#554900" + } + }, + "primary_fixed_dim": { + "dark": { + "color": "#d9c76f" + }, + "default": { + "color": "#d9c76f" + }, + "light": { + "color": "#3b3200" + } + }, + "red": { + "dark": { + "color": "#ffece5" + }, + "default": { + "color": "#ffece5" + }, + "light": { + "color": "#4f1d03" + } + }, + "red_container": { + "dark": { + "color": "#ffb08d" + }, + "default": { + "color": "#ffb08d" + }, + "light": { + "color": "#74391c" + } + }, + "red_source": { + "dark": { + "color": "#ff0000" + }, + "default": { + "color": "#ff0000" + }, + "light": { + "color": "#ff0000" + } + }, + "red_value": { + "dark": { + "color": "#ff0000" + }, + "default": { + "color": "#ff0000" + }, + "light": { + "color": "#ff0000" + } + }, + "scrim": { + "dark": { + "color": "#000000" + }, + "default": { + "color": "#000000" + }, + "light": { + "color": "#000000" + } + }, + "secondary": { + "dark": { + "color": "#fbf0c9" + }, + "default": { + "color": "#fbf0c9" + }, + "light": { + "color": "#312c12" + } + }, + "secondary_container": { + "dark": { + "color": "#ccc39e" + }, + "default": { + "color": "#ccc39e" + }, + "light": { + "color": "#4f492d" + } + }, + "secondary_fixed": { + "dark": { + "color": "#ede3bc" + }, + "default": { + "color": "#ede3bc" + }, + "light": { + "color": "#4f492d" + } + }, + "secondary_fixed_dim": { + "dark": { + "color": "#d0c7a2" + }, + "default": { + "color": "#d0c7a2" + }, + "light": { + "color": "#383318" + } + }, + "shadow": { + "dark": { + "color": "#000000" + }, + "default": { + "color": "#000000" + }, + "light": { + "color": "#000000" + } + }, + "source_color": { + "dark": { + "color": "#fede01" + }, + "default": { + "color": "#fede01" + }, + "light": { + "color": "#fede01" + } + }, + "surface": { + "dark": { + "color": "#15130c" + }, + "default": { + "color": "#15130c" + }, + "light": { + "color": "#fff9ec" + } + }, + "surface_bright": { + "dark": { + "color": "#535046" + }, + "default": { + "color": "#535046" + }, + "light": { + "color": "#fff9ec" + } + }, + "surface_container": { + "dark": { + "color": "#333027" + }, + "default": { + "color": "#333027" + }, + "light": { + "color": "#e8e2d4" + } + }, + "surface_container_high": { + "dark": { + "color": "#3e3b32" + }, + "default": { + "color": "#3e3b32" + }, + "light": { + "color": "#dad4c7" + } + }, + "surface_container_highest": { + "dark": { + "color": "#4a473d" + }, + "default": { + "color": "#4a473d" + }, + "light": { + "color": "#ccc6b9" + } + }, + "surface_container_low": { + "dark": { + "color": "#222017" + }, + "default": { + "color": "#222017" + }, + "light": { + "color": "#f7f0e2" + } + }, + "surface_container_lowest": { + "dark": { + "color": "#000000" + }, + "default": { + "color": "#000000" + }, + "light": { + "color": "#ffffff" + } + }, + "surface_dim": { + "dark": { + "color": "#15130c" + }, + "default": { + "color": "#15130c" + }, + "light": { + "color": "#beb8ac" + } + }, + "surface_tint": { + "dark": { + "color": "#d9c76f" + }, + "default": { + "color": "#d9c76f" + }, + "light": { + "color": "#6c5e10" + } + }, + "surface_variant": { + "dark": { + "color": "#4a4739" + }, + "default": { + "color": "#4a4739" + }, + "light": { + "color": "#e9e2d0" + } + }, + "tertiary": { + "dark": { + "color": "#d1fadd" + }, + "default": { + "color": "#d1fadd" + }, + "light": { + "color": "#0e3320" + } + }, + "tertiary_container": { + "dark": { + "color": "#a5ccb1" + }, + "default": { + "color": "#a5ccb1" + }, + "light": { + "color": "#2d503b" + } + }, + "tertiary_fixed": { + "dark": { + "color": "#c4ecd0" + }, + "default": { + "color": "#c4ecd0" + }, + "light": { + "color": "#2d503b" + } + }, + "tertiary_fixed_dim": { + "dark": { + "color": "#a8d0b4" + }, + "default": { + "color": "#a8d0b4" + }, + "light": { + "color": "#163926" + } + } + }, + "image": "/home/unconfer/image.png", + "is_dark_mode": true, + "mode": "dark", + "palettes": { + "error": { + "0": { + "color": "#000000" + }, + "10": { + "color": "#410002" + }, + "100": { + "color": "#ffffff" + }, + "15": { + "color": "#540003" + }, + "20": { + "color": "#690005" + }, + "25": { + "color": "#7e0007" + }, + "30": { + "color": "#93000a" + }, + "35": { + "color": "#a80710" + }, + "40": { + "color": "#ba1a1a" + }, + "5": { + "color": "#2d0001" + }, + "50": { + "color": "#de3730" + }, + "60": { + "color": "#ff5449" + }, + "70": { + "color": "#ff897d" + }, + "80": { + "color": "#ffb4ab" + }, + "90": { + "color": "#ffdad6" + }, + "95": { + "color": "#ffedea" + }, + "98": { + "color": "#fff8f7" + }, + "99": { + "color": "#fffbff" + } + }, + "neutral": { + "0": { + "color": "#000000" + }, + "10": { + "color": "#1d1b16" + }, + "100": { + "color": "#ffffff" + }, + "15": { + "color": "#272620" + }, + "20": { + "color": "#32302a" + }, + "25": { + "color": "#3d3b35" + }, + "30": { + "color": "#494740" + }, + "35": { + "color": "#55524b" + }, + "40": { + "color": "#615e57" + }, + "5": { + "color": "#12110c" + }, + "50": { + "color": "#7a776f" + }, + "60": { + "color": "#949088" + }, + "70": { + "color": "#afaba2" + }, + "80": { + "color": "#cbc6bd" + }, + "90": { + "color": "#e7e2d9" + }, + "95": { + "color": "#f6f0e7" + }, + "98": { + "color": "#fef9ef" + }, + "99": { + "color": "#fffbff" + } + }, + "neutral_variant": { + "0": { + "color": "#000000" + }, + "10": { + "color": "#1e1c10" + }, + "100": { + "color": "#ffffff" + }, + "15": { + "color": "#29261a" + }, + "20": { + "color": "#333024" + }, + "25": { + "color": "#3f3b2e" + }, + "30": { + "color": "#4a4739" + }, + "35": { + "color": "#565244" + }, + "40": { + "color": "#625e50" + }, + "5": { + "color": "#131107" + }, + "50": { + "color": "#7c7768" + }, + "60": { + "color": "#969080" + }, + "70": { + "color": "#b1ab9a" + }, + "80": { + "color": "#cdc6b4" + }, + "90": { + "color": "#e9e2d0" + }, + "95": { + "color": "#f8f0de" + }, + "98": { + "color": "#fff9ec" + }, + "99": { + "color": "#fffbff" + } + }, + "primary": { + "0": { + "color": "#000000" + }, + "10": { + "color": "#211b00" + }, + "100": { + "color": "#ffffff" + }, + "15": { + "color": "#2d2600" + }, + "20": { + "color": "#393000" + }, + "25": { + "color": "#453b00" + }, + "30": { + "color": "#524700" + }, + "35": { + "color": "#5f5200" + }, + "40": { + "color": "#6d5e00" + }, + "5": { + "color": "#151100" + }, + "50": { + "color": "#897700" + }, + "60": { + "color": "#a69000" + }, + "70": { + "color": "#c4ab00" + }, + "80": { + "color": "#e3c600" + }, + "90": { + "color": "#ffe244" + }, + "95": { + "color": "#fff1b7" + }, + "98": { + "color": "#fff9ec" + }, + "99": { + "color": "#fffbff" + } + }, + "secondary": { + "0": { + "color": "#000000" + }, + "10": { + "color": "#201c04" + }, + "100": { + "color": "#ffffff" + }, + "15": { + "color": "#2b260d" + }, + "20": { + "color": "#363016" + }, + "25": { + "color": "#413b20" + }, + "30": { + "color": "#4d472b" + }, + "35": { + "color": "#595335" + }, + "40": { + "color": "#655e40" + }, + "5": { + "color": "#151100" + }, + "50": { + "color": "#7f7757" + }, + "60": { + "color": "#99916f" + }, + "70": { + "color": "#b4ab88" + }, + "80": { + "color": "#d0c7a2" + }, + "90": { + "color": "#ede3bc" + }, + "95": { + "color": "#fbf1ca" + }, + "98": { + "color": "#fff9ec" + }, + "99": { + "color": "#fffbff" + } + }, + "tertiary": { + "0": { + "color": "#000000" + }, + "10": { + "color": "#002111" + }, + "100": { + "color": "#ffffff" + }, + "15": { + "color": "#062c1a" + }, + "20": { + "color": "#133724" + }, + "25": { + "color": "#1f422e" + }, + "30": { + "color": "#2b4e39" + }, + "35": { + "color": "#365a44" + }, + "40": { + "color": "#426650" + }, + "5": { + "color": "#001509" + }, + "50": { + "color": "#5b7f67" + }, + "60": { + "color": "#749980" + }, + "70": { + "color": "#8eb49a" + }, + "80": { + "color": "#a8d0b4" + }, + "90": { + "color": "#c4ecd0" + }, + "95": { + "color": "#d2fbdd" + }, + "98": { + "color": "#e9ffed" + }, + "99": { + "color": "#f5fff4" + } + } + } +} + diff --git a/config/DankMaterialShell/zen.css b/config/DankMaterialShell/zen.css new file mode 100644 index 0000000..0527486 --- /dev/null +++ b/config/DankMaterialShell/zen.css @@ -0,0 +1,112 @@ +/* DMS Matugen Zen Browser Theme */ +:root { + --zen-primary-color: #745b8c !important; + --toolbarbutton-icon-fill: #b8a8f0 !important; + --toolbar-field-color: #f0f0f0 !important; + --tab-selected-textcolor: #b8a8f0 !important; + --toolbar-color: #f0f0f0 !important; + --arrowpanel-color: #f0f0f0 !important; + --arrowpanel-background: #09070d !important; + --sidebar-text-color: #f0f0f0 !important; + --zen-main-browser-background: #09070d !important; +} + +.sidebar-placesTree { + background-color: #09070d !important; +} + +#zen-workspaces-button { + background-color: #09070d !important; +} + +#TabsToolbar { + background-color: #09070d !important; +} + +.urlbar-background { + background-color: #09070d !important; +} + +.urlbar-input::selection { + color: #1e1e00 !important; + background-color: #b8a8f0 !important; +} + +.urlbarView-url { + color: #c9b8d9 !important; +} + +toolbar .toolbarbutton-1 { + &:not([disabled]) { + &:is([open], [checked]) + > :is( + .toolbarbutton-icon, + .toolbarbutton-text, + .toolbarbutton-badge-stack + ) { + fill: #b8a8f0 + } + } +} + +.identity-color-blue { + --identity-tab-color: #ccbdff !important; + --identity-icon-color: #ccbdff !important; +} + +.identity-color-turquoise { + --identity-tab-color: #b8a8f0 !important; + --identity-icon-color: #b8a8f0 !important; +} + +.identity-color-green { + --identity-tab-color: #a5ffb7 !important; + --identity-icon-color: #a5ffb7 !important; +} + +.identity-color-yellow { + --identity-tab-color: #ffe7a5 !important; + --identity-icon-color: #ffe7a5 !important; +} + +.identity-color-orange { + --identity-tab-color: #ffd972 !important; + --identity-icon-color: #ffd972 !important; +} + +.identity-color-red { + --identity-tab-color: #ff9fb3 !important; + --identity-icon-color: #ff9fb3 !important; +} + +.identity-color-pink { + --identity-tab-color: #d5c9ff !important; + --identity-icon-color: #d5c9ff !important; +} + +.identity-color-purple { + --identity-tab-color: #3f316f !important; + --identity-icon-color: #3f316f !important; +} + +#zen-appcontent-navbar-container { + background-color: #09070d !important; +} + +#PanelUI-menu-button .toolbarbutton-icon, +#downloads-button .toolbarbutton-icon, +#unified-extensions-button .toolbarbutton-icon { + fill: #b8a8f0 !important; + color: #b8a8f0 !important; +} + +#PanelUI-menu-button .toolbarbutton-badge-stack, +#downloads-button .toolbarbutton-badge-stack, +#unified-extensions-button .toolbarbutton-badge-stack { + fill: #b8a8f0 !important; + color: #b8a8f0 !important; +} + +toolbar .toolbarbutton-1 > .toolbarbutton-icon { + fill: #b8a8f0 !important; +} diff --git a/config/Kvantum/KvLibadwaitaDark#/KvLibadwaitaDark#.kvconfig b/config/Kvantum/KvLibadwaitaDark#/KvLibadwaitaDark#.kvconfig new file mode 100644 index 0000000..28df9ef --- /dev/null +++ b/config/Kvantum/KvLibadwaitaDark#/KvLibadwaitaDark#.kvconfig @@ -0,0 +1,568 @@ +[%General] +author=Vince Liuice, based on KvAdapta by Tsu Jan +comment=An uncomplicated theme inspired by the Materia GTK theme +x11drag=menubar_and_primary_toolbar +alt_mnemonic=true +left_tabs=false +attach_active_tab=false +mirror_doc_tabs=false +group_toolbar_buttons=true +toolbar_item_spacing=0 +toolbar_interior_spacing=2 +spread_progressbar=true +composite=false +menu_shadow_depth=16 +spread_menuitems=true +tooltip_shadow_depth=7 +splitter_width=1 +scroll_width=9 +scroll_arrows=false +scroll_min_extent=60 +slider_width=2 +slider_handle_width=23 +slider_handle_length=22 +tickless_slider_handle_size=22 +center_toolbar_handle=true +check_size=24 +textless_progressbar=false +progressbar_thickness=2 +menubar_mouse_tracking=true +toolbutton_style=1 +double_click=false +translucent_windows=false +blurring=false +popup_blurring=false +vertical_spin_indicators=false +spin_button_width=24 +fill_rubberband=false +merge_menubar_with_toolbar=true +small_icon_size=16 +large_icon_size=32 +button_icon_size=16 +toolbar_icon_size=16 +combo_as_lineedit=true +animate_states=true +button_contents_shift=false +combo_menu=true +hide_combo_checkboxes=true +combo_focus_rect=false +groupbox_top_label=true +inline_spin_indicators=true +joined_inactive_tabs=false +layout_spacing=6 +layout_margin=9 +scrollbar_in_view=true +transient_scrollbar=true +transient_groove=true +submenu_overlap=0 +tooltip_delay=0 +tree_branch_line=true +no_window_pattern=false +opaque=kaffeine,kmplayer,subtitlecomposer,kdenlive,vlc,smplayer,smplayer2,avidemux,avidemux2_qt4,avidemux3_qt4,avidemux3_qt5,kamoso,QtCreator,VirtualBox,VirtualBoxVM,trojita,dragon,digikam,lyx +reduce_window_opacity=0 +respect_DE=true +scrollable_menu=true +submenu_delay=150 +no_inactiveness=false +reduce_menu_opacity=0 +click_behavior=0 +contrast=1.00 +dialog_button_layout=0 +intensity=1.00 +saturation=1.00 +shadowless_popup=false +drag_from_buttons=false +menu_blur_radius=0 +tooltip_blur_radius=0 + +[GeneralColors] +window.color=#2c2c2c +base.color=#2c2c2c +alt.base.color=#2e2e2e +button.color=#4d4d4d +light.color=#535353 +mid.light.color=#474747 +dark.color=#282828 +mid.color=#323232 +highlight.color=#3584e4 +inactive.highlight.color=#3584e4 +text.color=#dfdfdf +window.text.color=#dfdfdf +button.text.color=#dfdfdf +disabled.text.color=#696969 +tooltip.text.color=#efefef +highlight.text.color=#ffffff +link.color=#0057AE +link.visited.color=#E040FB +progress.indicator.text.color=#dfdfdf + +[Hacks] +transparent_ktitle_label=true +transparent_dolphin_view=false +transparent_pcmanfm_sidepane=true +blur_translucent=false +transparent_menutitle=true +respect_darkness=true +kcapacitybar_as_progressbar=true +force_size_grip=true +iconless_pushbutton=true +iconless_menu=true +disabled_icon_opacity=100 +lxqtmainmenu_iconsize=16 +normal_default_pushbutton=true +single_top_toolbar=true +tint_on_mouseover=0 +transparent_pcmanfm_view=true +no_selection_tint=true +transparent_arrow_button=true +middle_click_scroll=false +opaque_colors=false +kinetic_scrolling=false +scroll_jump_workaround=true +centered_forms=false +noninteger_translucency=false +style_vertical_toolbars=false +blur_only_active_window=true + +[PanelButtonCommand] +frame=true +frame.element=button +frame.top=6 +frame.bottom=6 +frame.left=6 +frame.right=6 +interior=true +interior.element=button +indicator.size=8 +text.normal.color=#dfdfdf +text.focus.color=white +text.press.color=white +text.toggle.color=#ffffff +text.shadow=0 +text.margin=4 +text.iconspacing=4 +indicator.element=arrow +frame.expansion=0 + +[PanelButtonTool] +inherits=PanelButtonCommand +text.normal.color=#dfdfdf +text.focus.color=white +text.press.color=white +text.toggle.color=#ffffff +text.bold=false +indicator.element=arrow +indicator.size=0 +frame.expansion=0 + +[ToolbarButton] +frame=true +frame.element=tbutton +interior.element=tbutton +frame.top=16 +frame.bottom=16 +frame.left=16 +frame.right=16 +indicator.element=tarrow +text.normal.color=#dfdfdf +text.focus.color=white +text.press.color=white +text.toggle.color=white +text.bold=false +frame.expansion=32 + +[Dock] +inherits=PanelButtonCommand +interior.element=dock +frame.element=dock +frame.top=1 +frame.bottom=1 +frame.left=1 +frame.right=1 +text.normal.color=#dfdfdf + +[DockTitle] +inherits=PanelButtonCommand +frame=false +interior=false +text.normal.color=#dfdfdf +text.focus.color=white +text.bold=false + +[IndicatorSpinBox] +inherits=PanelButtonCommand +frame=true +interior=true +frame.top=2 +frame.bottom=2 +frame.left=2 +frame.right=2 +indicator.element=spin +indicator.size=8 +text.normal.color=#dfdfdf +text.margin.top=2 +text.margin.bottom=2 +text.margin.left=2 +text.margin.right=2 + +[RadioButton] +inherits=PanelButtonCommand +frame=false +interior.element=radio +text.normal.color=#dfdfdf +text.focus.color=white +min_width=+0.3font +min_height=+0.3font + +[CheckBox] +inherits=PanelButtonCommand +frame=false +interior.element=checkbox +text.normal.color=#dfdfdf +text.focus.color=white +min_width=+0.3font +min_height=+0.3font + +[Focus] +inherits=PanelButtonCommand +frame=true +frame.element=focus +frame.top=2 +frame.bottom=2 +frame.left=2 +frame.right=2 +frame.patternsize=14 + +[GenericFrame] +inherits=PanelButtonCommand +frame=true +interior=false +frame.element=common +interior.element=common +frame.top=1 +frame.bottom=1 +frame.left=1 +frame.right=1 + +[LineEdit] +inherits=PanelButtonCommand +frame.element=lineedit +interior.element=lineedit +frame.top=6 +frame.bottom=6 +frame.left=6 +frame.right=6 +text.margin.top=2 +text.margin.bottom=2 +text.margin.left=2 +text.margin.right=2 + +[ToolbarLineEdit] +frame.element=lineedit +interior.element=lineedit + +[DropDownButton] +inherits=PanelButtonCommand +indicator.element=arrow-down + +[IndicatorArrow] +indicator.element=arrow +indicator.size=8 + +[ToolboxTab] +inherits=PanelButtonCommand +text.normal.color=#dfdfdf +text.press.color=#dfdfdf +text.focus.color=white + +[Tab] +inherits=PanelButtonCommand +interior.element=tab +text.margin.left=8 +text.margin.right=8 +text.margin.top=0 +text.margin.bottom=0 +frame.element=tab +indicator.element=tab +indicator.size=22 +frame.top=8 +frame.bottom=8 +frame.left=8 +frame.right=8 +text.normal.color=#dfdfdf +text.focus.color=#dfdfdf +text.press.color=white +text.toggle.color=white +frame.expansion=0 +text.bold=false + +[TabFrame] +inherits=PanelButtonCommand +frame.element=tabframe +interior.element=tabframe +frame.top=24 +frame.bottom=24 +frame.left=24 +frame.right=24 + +[TreeExpander] +inherits=PanelButtonCommand +indicator.size=8 +indicator.element=tree + +[HeaderSection] +inherits=PanelButtonCommand +interior.element=header +frame.element=header +frame.top=0 +frame.bottom=1 +frame.left=1 +frame.right=1 +text.normal.color=#dfdfdf +text.focus.color=white +text.press.color=white +text.toggle.color=white +frame.expansion=0 + +[SizeGrip] +indicator.element=resize-grip + +[Toolbar] +inherits=PanelButtonCommand +indicator.element=toolbar +indicator.size=5 +text.margin=0 +interior.element=menubar +frame.element=menubar +text.normal.color=#dfdfdf +text.focus.color=white +text.press.color=#dfdfdf +text.toggle.color=white +frame.left=6 +frame.right=6 +frame.top=0 +frame.bottom=1 +frame.expansion=0 + +[Slider] +inherits=PanelButtonCommand +frame.element=slider +focusFrame=true +interior.element=slider +frame.top=3 +frame.bottom=3 +frame.left=3 +frame.right=3 + +[SliderCursor] +inherits=PanelButtonCommand +frame=false +interior.element=slidercursor + +[Progressbar] +inherits=PanelButtonCommand +frame.element=progress +interior.element=progress +text.margin=0 +text.normal.color=#dfdfdf +text.focus.color=#dfdfdf +text.press.color=#dfdfdf +text.toggle.color=#dfdfdf +text.bold=false +frame.expansion=8 + +[ProgressbarContents] +inherits=PanelButtonCommand +frame=true +frame.element=progress-pattern +interior.element=progress-pattern + +[ItemView] +inherits=PanelButtonCommand +text.margin=0 +frame.element=itemview +interior.element=itemview +frame.top=4 +frame.bottom=4 +frame.left=4 +frame.right=4 +text.margin.top=0 +text.margin.bottom=0 +text.margin.left=8 +text.margin.right=8 +text.normal.color=#dfdfdf +text.focus.color=#dfdfdf +text.press.color=#ffffff +text.toggle.color=#ffffff +min_width=+0.3font +min_height=+0.3font +frame.expansion=0 + +[Splitter] +interior.element=splitter +frame=false +indicator.size=0 + +[Scrollbar] +inherits=PanelButtonCommand +indicator.element=arrow +indicator.size=12 + +[ScrollbarSlider] +inherits=PanelButtonCommand +frame.element=scrollbarslider +interior=false +frame.left=5 +frame.right=5 +frame.top=5 +frame.bottom=5 +indicator.element=grip +indicator.size=12 + +[ScrollbarGroove] +inherits=PanelButtonCommand +interior=false +frame=false + +[Menu] +inherits=PanelButtonCommand +frame.top=8 +frame.bottom=8 +frame.left=8 +frame.right=8 +frame.element=menu +interior.element=menu +text.normal.color=#dedede +text.shadow=false +text.bold=false + +[MenuItem] +inherits=PanelButtonCommand +frame=true +frame.element=menuitem +interior.element=menuitem +indicator.element=menuitem +text.normal.color=#dedede +text.focus.color=#dedede +text.margin.top=0 +text.margin.bottom=0 +text.margin.left=6 +text.margin.right=6 +frame.top=4 +frame.bottom=4 +frame.left=12 +frame.right=12 +text.bold=false +frame.expansion=0 + +[MenuBar] +inherits=PanelButtonCommand +frame.element=menubar +interior.element=menubar +frame.bottom=0 +text.normal.color=#dfdfdf +text.focus.color=#ffffff +text.press.color=#ffffff +text.toggle.color=#ffffff +frame.expansion=0 +text.bold=false + +[MenuBarItem] +inherits=PanelButtonCommand +interior=true +interior.element=menubaritem +frame.element=menubaritem +frame.top=2 +frame.bottom=2 +frame.left=2 +frame.right=2 +text.margin.left=4 +text.margin.right=4 +text.margin.top=0 +text.margin.bottom=0 +text.normal.color=#dfdfdf +text.focus.color=#ffffff +text.press.color=#ffffff +text.toggle.color=#ffffff +text.bold=false +min_width=+0.3font +min_height=+0.3font +frame.expansion=0 + +[TitleBar] +inherits=PanelButtonCommand +frame=false +text.margin.top=2 +text.margin.bottom=2 +text.margin.left=2 +text.margin.right=2 +interior.element=titlebar +indicator.size=16 +indicator.element=mdi +text.normal.color=#787878 +text.focus.color=#dfdfdf +text.bold=false +text.italic=true +frame.expansion=0 + +[ComboBox] +inherits=PanelButtonCommand +frame.element=combo +interior.element=combo +frame.top=6 +frame.bottom=6 +frame.left=6 +frame.right=6 +text.margin.top=2 +text.margin.bottom=2 +text.margin.left=2 +text.margin.right=2 +text.focus.color=white +text.press.color=#dfdfdf +text.toggle.color=white + +[GroupBox] +inherits=GenericFrame +frame=false +text.shadow=0 +text.margin=0 +text.normal.color=#dfdfdf +text.focus.color=white +text.bold=false +frame.expansion=0 + +[TabBarFrame] +inherits=GenericFrame +frame=false +frame.element=tabBarFrame +interior=false +frame.top=0 +frame.bottom=0 +frame.left=0 +frame.right=0 + +[ToolTip] +inherits=GenericFrame +frame.top=6 +frame.bottom=6 +frame.left=6 +frame.right=6 +interior=true +text.shadow=0 +text.margin=6 +interior.element=tooltip +frame.element=tooltip +frame.expansion=6 + +[StatusBar] +inherits=GenericFrame +frame=false +interior=false + +[Window] +interior=true +interior.element=window +frame=true +frame.element=window +frame.bottom=10 +frame.top=10 diff --git a/config/Kvantum/kvantum.kvconfig b/config/Kvantum/kvantum.kvconfig new file mode 100644 index 0000000..637b379 --- /dev/null +++ b/config/Kvantum/kvantum.kvconfig @@ -0,0 +1,2 @@ +[General] +theme=KvLibadwaitaDark# diff --git a/config/aichat/config.yaml b/config/aichat/config.yaml new file mode 100644 index 0000000..0c970b6 --- /dev/null +++ b/config/aichat/config.yaml @@ -0,0 +1,9 @@ +# see https://github.com/sigoden/aichat/blob/main/config.example.yaml + +model: ollama:gemma4:e4b +clients: +- type: openai-compatible + name: ollama + api_base: http://localhost:11434/v1 + models: + - name: gemma4:e4b diff --git a/config/btop/btop.conf b/config/btop/btop.conf index ffe643c..08a6ec3 100644 --- a/config/btop/btop.conf +++ b/config/btop/btop.conf @@ -53,14 +53,14 @@ graph_symbol_net = "default" graph_symbol_proc = "default" #* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace. -shown_boxes = "mem net proc gpu0 cpu" +shown_boxes = "net proc gpu0 cpu mem" #* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. update_ms = 2000 #* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", #* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. -proc_sorting = "memory" +proc_sorting = "cpu direct" #* Reverse sorting order, True or False. proc_reversed = false @@ -217,7 +217,7 @@ net_upload = 100 net_auto = true #* Sync the auto scaling for download and upload to whichever currently has the highest scale. -net_sync = true +net_sync = false #* Starts with the Network Interface specified here. net_iface = "" diff --git a/config/btop/themes/noctalia.theme b/config/btop/themes/noctalia.theme new file mode 100644 index 0000000..4459c3f --- /dev/null +++ b/config/btop/themes/noctalia.theme @@ -0,0 +1,39 @@ +# btop theme generated by noctalia + +theme[main_bg]="#1a1b26" +theme[main_fg]="#c0caf5" +theme[title]="#7aa2f7" +theme[hi_fg]="#9ece6a" +theme[selected_bg]="#333954" +theme[selected_fg]="#c0caf5" +theme[inactive_fg]="#9aa5ce" +theme[proc_misc]="#bb9af7" +theme[cpu_box]="#586691" +theme[mem_box]="#586691" +theme[net_box]="#586691" +theme[proc_box]="#586691" +theme[div_line]="#3b4561" +theme[temp_start]="#7aa2f7" +theme[temp_mid]="#bb9af7" +theme[temp_end]="#9ece6a" +theme[cpu_start]="#7aa2f7" +theme[cpu_mid]="#bb9af7" +theme[cpu_end]="#9ece6a" +theme[free_start]="#7aa2f7" +theme[free_mid]="#bb9af7" +theme[free_end]="#9ece6a" +theme[cached_start]="#7aa2f7" +theme[cached_mid]="#bb9af7" +theme[cached_end]="#9ece6a" +theme[available_start]="#7aa2f7" +theme[available_mid]="#bb9af7" +theme[available_end]="#9ece6a" +theme[used_start]="#7aa2f7" +theme[used_mid]="#bb9af7" +theme[used_end]="#9ece6a" +theme[download_start]="#7aa2f7" +theme[download_mid]="#bb9af7" +theme[download_end]="#9ece6a" +theme[upload_start]="#7aa2f7" +theme[upload_mid]="#bb9af7" +theme[upload_end]="#9ece6a" diff --git a/config/calcurse/conf b/config/calcurse/conf new file mode 100644 index 0000000..e69de29 diff --git a/config/calcurse/keys b/config/calcurse/keys new file mode 100644 index 0000000..49b4826 --- /dev/null +++ b/config/calcurse/keys @@ -0,0 +1,56 @@ +# +# Calcurse keys configuration file +# +# In this file the keybindings used by Calcurse are defined. +# It is generated automatically by Calcurse and is maintained +# via the key configuration menu of the interactive user +# interface. It should not be edited directly. + +generic-cancel ESC +generic-select SPC +generic-credits @ +generic-help ? +generic-quit q Q +generic-save s S ^S +generic-reload R +generic-copy c +generic-paste p ^V +generic-change-view TAB +generic-prev-view KEY_BTAB +generic-import i I +generic-export x X +generic-goto g G +generic-other-cmd o O +generic-config-menu C +generic-redraw ^R +generic-add-appt ^A +generic-add-todo ^T +generic-prev-day T ^H +generic-next-day t ^L +generic-prev-week W ^K +generic-next-week w +generic-prev-month M +generic-next-month m +generic-prev-year Y +generic-next-year y +generic-scroll-down ^N +generic-scroll-up ^P +generic-goto-today ^G +generic-command : +move-right l L RGT +move-left h H LFT +move-down j J DWN +move-up k K UP +start-of-week 0 +end-of-week $ +add-item a A +del-item d D +edit-item e E +view-item v V RET +pipe-item | +flag-item ! +repeat r +edit-note n N +view-note > +raise-priority + +lower-priority - diff --git a/config/cava/config b/config/cava/config new file mode 100644 index 0000000..708c31b --- /dev/null +++ b/config/cava/config @@ -0,0 +1,320 @@ +## Configuration file for CAVA. +# Remove the ; to change parameters. + + +[general] + +# Smoothing mode. Can be 'normal', 'scientific' or 'waves'. DEPRECATED as of 0.6.0 + mode = normal +# Accepts only non-negative values. +; framerate = 165 + +# 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off +# new as of 0.6.0 autosens of low values (dynamic range) +# 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens. DEPRECATED as of 0.6.0 + autosens = 1 + overshoot = 20 + +# Manual sensitivity in %. If autosens is enabled, this will only be the initial value. +# 200 means double height. Accepts only non-negative values. +; sensitivity = 100 + +# The number of bars (0-512). 0 sets it to auto (fill up console). +# Bars' width and space between bars in number of characters. + ; bars = 100 + ;bar_width = 2 + ; bar_spacing = 1 +# bar_height is only used for output in "noritake" format +; bar_height = 32 + +# For SDL width and space between bars is in pixels, defaults are: +; bar_width = 1 +; bar_spacing = 5 + +# sdl_glsl have these default values, they are only used to calculate max number of bars. +; bar_width = 1 +; bar_spacing = 0 + +# ceter bars in terminal, if there is space. +; center_align = 1 + +# max height of bars in terminal, in percent of terminal height. +; max_height = 100 + + +# Lower and higher cutoff frequencies for lowest and highest bars +# the bandwidth of the visualizer. +# Note: there is a minimum total bandwidth of 43Mhz x number of bars. +# Cava will automatically increase the higher cutoff if a too low band is specified. +; lower_cutoff_freq = 50 +; higher_cutoff_freq = 10000 + + +# Seconds with no input before cava goes to sleep mode. Cava will not perform FFT or drawing and +# only check for input once per second. Cava will wake up once input is detected. 0 = disable. +; sleep_timer = 0 + + +[input] + +# Audio capturing method. Possible methods are: 'fifo', 'portaudio', 'pipewire', 'alsa', 'pulse', 'sndio', 'oss', 'jack' or 'shmem' +# Defaults to 'oss', 'pipewire', 'sndio', 'jack', 'pulse', 'alsa', 'portaudio' or 'fifo', in that order, dependent on what support cava was built with. +# On Mac it defaults to 'portaudio' or 'fifo' +# On windows this is automatic and no input settings are needed. +# +# All input methods uses the same config variable 'source' +# to define where it should get the audio. +# +# For pulseaudio and pipewire 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink +# (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them). +# +# For pipewire 'source' will be the object name or object.serial of the device to capture from. +# Both input and output devices are supported. To capture the monitor source of a sink node, append '.monitor' to the sink's object name. +# +# For alsa 'source' will be the capture device. +# For fifo 'source' will be the path to fifo-file. +# For shmem 'source' will be /squeezelite-AA:BB:CC:DD:EE:FF where 'AA:BB:CC:DD:EE:FF' will be squeezelite's MAC address +# +# For sndio 'source' will be a raw recording audio descriptor or a monitoring sub-device, e.g. 'rsnd/2' or 'snd/1'. Default: 'default'. +# README.md contains further information on how to setup CAVA for sndio. +# +# For oss 'source' will be the path to a audio device, e.g. '/dev/dsp2'. Default: '/dev/dsp', i.e. the default audio device. +# README.md contains further information on how to setup CAVA for OSS on FreeBSD. +# +# For jack 'source' will be the name of the JACK server to connect to, e.g. 'foobar'. Default: 'default'. +# README.md contains further information on how to setup CAVA for JACK. +# +; method = pulse +; source = auto + + method = pipewire + source = auto + +; method = alsa +; source = hw:Loopback,1 + +; method = fifo +; source = /tmp/mpd.fifo + +; method = shmem +; source = /squeezelite-AA:BB:CC:DD:EE:FF + +; method = portaudio +; source = auto + +; method = sndio +; source = default + +; method = oss +; source = /dev/dsp + +; method = jack +; source = default + +# The options 'sample_rate', 'sample_bits', 'channels' and 'autoconnect' can be configured for some input methods: +# sample_rate: fifo, pipewire, sndio, oss +# sample_bits: fifo, pipewire, sndio, oss +# channels: sndio, oss, jack +# autoconnect: jack +# Other methods ignore these settings. +# For pipewire, sample_rate will default to 48000, for all other input methods, sample_rate will default to 44100. +# +# For 'sndio' and 'oss' they are only preferred values, i.e. if the values are not supported +# by the chosen audio device, the device will use other supported values instead. +# Example: 48000, 32 and 2, but the device only supports 44100, 16 and 1, then it +# will use 44100, 16 and 1. +# +# +# The 'pipewire' input method has three options to control linking and mixing: +# active: Force the node to always process. Useful for monitoring sources when no other application is active. +# remix: Allow pipewire to remix audio channels to match cava's channel count. Useful for surround sound. +# virtual: Set the node to virtual, to avoid recording notifications from the DE. +# +; sample_rate = 44100 +; sample_bits = 16 +; channels = 2 +; autoconnect = 2 +; active = 0 +; remix = 1 +; virtual = 1 + + +[output] + +# Output method. Can be 'ncurses', 'noncurses', 'raw', 'noritake', 'sdl' +# or 'sdl_glsl'. +# 'noncurses' (default) uses a buffer and cursor movements to only print +# changes from frame to frame in the terminal. Uses less resources and is less +# prone to tearing (vsync issues) than 'ncurses'. +# +# 'raw' is an 8 or 16 bit (configurable via the 'bit_format' option) data +# stream of the bar heights that can be used to send to other applications. +# 'raw' defaults to 1024 bars stereo (512 bars mono), which can be adjusted in the 'bars' option above. +# +# 'noritake' outputs a bitmap in the format expected by a Noritake VFD display +# in graphic mode. It only support the 3000 series graphical VFDs for now. +# +# 'sdl' uses the Simple DirectMedia Layer to render in a graphical context. +# 'sdl_glsl' uses SDL to create an OpenGL context. Write your own shaders or +# use one of the predefined ones. +; method = noncurses + +# Orientation of the visualization. Can be 'bottom', 'top', 'left', 'right' or +# 'horizontal'. Default is 'bottom'. 'left and 'right' are only supported on sdl +# and ncruses output. 'horizontal' (bars go up and down from center) is only supported +# on noncurses output. +# Note: many fonts have weird or missing glyphs for characters used in orientations +# other than 'bottom', which can make output not look right. +; orientation = bottom + +# Visual channels. Can be 'stereo' or 'mono'. +# 'stereo' mirrors both channels with low frequencies in center. +# 'mono' outputs left to right lowest to highest frequencies. +# 'mono_option' set mono to either take input from 'left', 'right' or 'average'. +# set 'reverse' to 1 to display frequencies the other way around. +; channels = stereo +; mono_option = average + reverse = 10 + +# Raw output target. +# On Linux, a fifo will be created if target does not exist. +# On Windows, a named pipe will be created if target does not exist. +; raw_target = /dev/random + +# Raw data format. Can be 'binary' or 'ascii'. +; data_format = binary + +# Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530). +; bit_format = 16bit + +# Ascii max value. In 'ascii' mode range will run from 0 to value specified here +; ascii_max_range = 1000 + +# Ascii delimiters. In ascii format each bar and frame is separated by a delimiters. +# Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)). +bar_delimiter = 59 +; frame_delimiter = 10 + +# sdl window size and position. -1,-1 is centered. +; sdl_width = 1024 +; sdl_height = 512 +; sdl_x = -1 +; sdl_y= -1 +; sdl_full_screen = 0 + +# set label on bars on the x-axis. Can be 'frequency' or 'none'. Default: 'none' +# 'frequency' displays the lower cut off frequency of the bar above. +# Only supported on ncurses and noncurses output. +; xaxis = none + +# enable synchronized sync. 1 = on, 0 = off +# removes flickering in alacritty terminal emulator. +# defaults to off since the behaviour in other terminal emulators is unknown +; synchronized_sync = 0 + +# Shaders for sdl_glsl, located in $HOME/.config/cava/shaders +; vertex_shader = pass_through.vert +; fragment_shader = bar_spectrum.frag + +; for glsl output mode, keep rendering even if no audio +; continuous_rendering = 0 + +# disable console blank (screen saver) in tty +# (Not supported on FreeBSD) +; disable_blanking = 0 + +# show a flat bar at the bottom of the screen when idle, 1 = on, 0 = off +; show_idle_bar_heads = 1 + +# show waveform instead of frequency spectrum, 1 = on, 0 = off +; waveform = 0 + +[color] + +# Colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow. +# Or defined by hex code '#xxxxxx' (hex code must be within ''). User defined colors requires +# a terminal that can change color definitions such as Gnome-terminal or rxvt. +# default is to keep current terminal color +; background = default + foreground = '#EEF7FD' + +# SDL and sdl_glsl only support hex code colors, these are the default: +; background = '#11111' +; foreground = '#EEF7FD' + + +# Gradient mode, only hex defined colors are supported, +# background must also be defined in hex or remain commented out. 1 = on, 0 = off. +# You can define as many as 8 different colors. They range from bottom to top of screen +; gradient = 0 +; gradient_color_1 = '#59cc33' +; gradient_color_2 = '#80cc33' +; gradient_color_3 = '#a6cc33' +; gradient_color_4 = '#cccc33' +; gradient_color_5 = '#cca633' +; gradient_color_6 = '#cc8033' +; gradient_color_7 = '#cc5933' +; gradient_color_8 = '#cc3333' + + +# Horizontal is only supported on noncurses output. +# Only one color will be calculated per bar. +; horizontal_gradient = 0 +; horizontal_gradient_color_1 = '#c45161' +; horizontal_gradient_color_2 = '#e094a0' +; horizontal_gradient_color_3 = '#f2b6c0' +; horizontal_gradient_color_4 = '#f2dde1' +; horizontal_gradient_color_5 = '#cbc7d8' +; horizontal_gradient_color_6 = '#8db7d2' +; horizontal_gradient_color_7 = '#5e62a9' +; horizontal_gradient_color_8 = '#434279' + + +# If both vertical and horizontal gradient is enabled, vertical will be blended in this direction. +# Can be 'up', 'down', 'left' or 'right'. 'up' means the vertical gradient will be blended in from +# bottom to top. I.e. the bottom will be only the horizontal +# and top will be only the color of the vertical gradient. +; blend_direction = 'up' + +# use theme file instead of defining colors in this file +# themes are located in $HOME/.config/cava/themes +; theme = 'none' + + +[smoothing] + +# Percentage value for integral smoothing. Takes values from 0 - 100. +# Higher values means smoother, but less precise. 0 to disable. +# DEPRECATED as of 0.8.0, use noise_reduction instead +; integral = 77 + +# Disables or enables the so-called "Monstercat smoothing" with or without "waves". Set to 0 to disable. +; monstercat = 0 +; waves = 0 + +# Set gravity percentage for "drop off". Higher values means bars will drop faster. +# Accepts only non-negative values. 50 means half gravity, 200 means double. Set to 0 to disable "drop off". +# DEPRECATED as of 0.8.0, use noise_reduction instead +; gravity = 100 + + +# In bar height, bars that would have been lower that this will not be drawn. +# DEPRECATED as of 0.8.0 +; ignore = 0 + +# Noise reduction, int 0 - 100. default 77 +# the raw visualization is very noisy, this factor adjusts the integral and gravity filters to keep the signal smooth +# 100 will be very slow and smooth, 0 will be fast but noisy. +; noise_reduction = 77 + + +[eq] + +# This one is tricky. You can have as much keys as you want. +# Remember to uncomment more than one key! More keys = more precision. +# Look at readme.md on github for further explanations and examples. +; 1 = 1 # bass +; 2 = 1 +; 3 = 1 # midtone +; 4 = 1 +; 5 = 1 # treble diff --git a/config/cava/shaders/bar_spectrum.frag b/config/cava/shaders/bar_spectrum.frag new file mode 100644 index 0000000..e594618 --- /dev/null +++ b/config/cava/shaders/bar_spectrum.frag @@ -0,0 +1,73 @@ +#version 330 + +in vec2 fragCoord; +out vec4 fragColor; + +// bar values. defaults to left channels first (low to high), then right (high to low). +uniform float bars[512]; + +uniform int bars_count; // number of bars (left + right) (configurable) +uniform int bar_width; // bar width (configurable), not used here +uniform int bar_spacing; // space bewteen bars (configurable) + +uniform vec3 u_resolution; // window resolution + +// colors, configurable in cava config file (r,g,b) (0.0 - 1.0) +uniform vec3 bg_color; // background color +uniform vec3 fg_color; // foreground color + +uniform int gradient_count; +uniform vec3 gradient_colors[8]; // gradient colors + +uniform float shader_time; // shader execution time s (not used here) + +uniform sampler2D inputTexture; // Texture from the last render pass (not used here) + +vec3 normalize_C(float y, vec3 col_1, vec3 col_2, float y_min, float y_max) { + // create color based on fraction of this color and next color + float yr = (y - y_min) / (y_max - y_min); + return col_1 * (1.0 - yr) + col_2 * yr; +} + +void main() { + // find which bar to use based on where we are on the x axis + float x = u_resolution.x * fragCoord.x; + int bar = int(bars_count * fragCoord.x); + + // calculate a bar size + float bar_size = u_resolution.x / bars_count; + + // the y coordinate and bar values are the same + float y = bars[bar]; + + // make sure there is a thin line at bottom + if (y * u_resolution.y < 1.0) { + y = 1.0 / u_resolution.y; + } + + // draw the bar up to current height + if (y > fragCoord.y) { + // make some space between bars basen on settings + if (x > (bar + 1) * (bar_size)-bar_spacing) { + fragColor = vec4(bg_color, 1.0); + } else { + if (gradient_count == 0) { + fragColor = vec4(fg_color, 1.0); + } else { + // find which color in the configured gradient we are at + int color = int((gradient_count - 1) * fragCoord.y); + + // find where on y this and next color is supposed to be + float y_min = color / (gradient_count - 1.0); + float y_max = (color + 1.0) / (gradient_count - 1.0); + + // make color + fragColor = vec4(normalize_C(fragCoord.y, gradient_colors[color], + gradient_colors[color + 1], y_min, y_max), + 1.0); + } + } + } else { + fragColor = vec4(bg_color, 1.0); + } +} \ No newline at end of file diff --git a/config/cava/shaders/eye_of_phi.frag b/config/cava/shaders/eye_of_phi.frag new file mode 100644 index 0000000..e499ee7 --- /dev/null +++ b/config/cava/shaders/eye_of_phi.frag @@ -0,0 +1,117 @@ +#version 330 + +// this shader was stolen from shadertoy user ChunderFPV + +#define SCALE 8.0 +#define PI radians(180.0) +#define TAU (PI * 2.0) +#define CS(a) vec2(cos(a), sin(a)) +#define PT(u, r) smoothstep(0.0, r, r - length(u)) + +in vec2 fragCoord; +out vec4 fragColor; + +uniform float bars[512]; + +uniform int bars_count; // number of bars (left + right) (configurable) +uniform float shader_time; // shader execution time s +uniform int bar_width; // bar width (configurable), not used here +uniform int bar_spacing; // space bewteen bars (configurable) + +uniform vec3 u_resolution; // window resolution + +// colors, configurable in cava config file (r,g,b) (0.0 - 1.0) +uniform vec3 bg_color; // background color +uniform vec3 fg_color; // foreground color + +uniform int gradient_count; +uniform vec3 gradient_colors[8]; // gradient colors + +// gradient map ( color, equation, time, width, shadow, reciprocal ) +vec3 gm(vec3 c, float n, float t, float w, float d, bool i) { + float g = min(abs(n), 1.0 / abs(n)); + float s = abs(sin(n * PI - t)); + if (i) + s = min(s, abs(sin(PI / n + t))); + return (1.0 - pow(abs(s), w)) * c * pow(g, d) * 6.0; +} + +// denominator spiral, use 1/n for numerator +// ( screen xy, spiral exponent, decimal, line width, hardness, rotation ) +float ds(vec2 u, float e, float n, float w, float h, float ro) { + float ur = length(u); // unit radius + float sr = pow(ur, e); // spiral radius + float a = round(sr) * n * TAU; // arc + vec2 xy = CS(a + ro) * ur; // xy coords + float l = PT(u - xy, w); // line + float s = mod(sr + 0.5, 1.0); // gradient smooth + s = min(s, 1.0 - s); // darken filter + return l * s * h; +} + +void main() { + float t = shader_time / PI * 2.0; + vec4 m = vec4(0, 0, 0, 0); // iMouse; + m.xy = m.xy * 2.0 / u_resolution.xy - 1.0; // ±1x, ±1y + if (m.z > 0.0) + t += m.y * SCALE; // move time with mouse y + float z = (m.z > 0.0) ? pow(1.0 - abs(m.y), sign(m.y)) : 1.0; // zoom (+) + float e = (m.z > 0.0) ? pow(1.0 - abs(m.x), -sign(m.x)) + : 1.0; // screen exponent (+) + float se = (m.z > 0.0) ? e * -sign(m.y) : 1.0; // spiral exponent + vec3 bg = vec3(0); // black background + + float aa = 3.0; // anti-aliasing + + for (float j = 0.0; j < aa; j++) + for (float k = 0.0; k < aa; k++) { + vec3 c = vec3(0); + vec2 o = vec2(j, k) / aa; + vec2 uv = (fragCoord * u_resolution.xy - 0.5 * u_resolution.xy + o) / + u_resolution.y * SCALE * z; // apply cartesian, scale and zoom + if (m.z > 0.0) + uv = + exp(log(abs(uv)) * e) * sign(uv); // warp screen space with exponent + + float px = length(fwidth(uv)); // pixel width + float x = uv.x; // every pixel on x + float y = uv.y; // every pixel on y + float l = length(uv); // hypot of xy: sqrt(x*x+y*y) + + float mc = (x * x + y * y - 1.0) / y; // metallic circle at xy + float g = min(abs(mc), 1.0 / abs(mc)); // gradient + vec3 gold = vec3(1.0, 0.6, 0.0) * g * l; + vec3 blue = vec3(0.3, 0.5, 0.9) * (1.0 - g); + vec3 rgb = max(gold, blue); + + float w = 0.1; // line width + float d = 0.4; // shadow depth + c = max(c, gm(rgb, mc, -t, w * bars[0], d, false)); // metallic + c = max(c, gm(rgb, abs(y / x) * sign(y), -t, w * bars[1], d, + false)); // tangent + c = max(c, gm(rgb, (x * x) / (y * y) * sign(y), -t, w * bars[2], d, + false)); // sqrt cotangent + c = max(c, gm(rgb, (x * x) + (y * y), t, w * bars[3], d, + true)); // sqrt circles + + c += rgb * ds(uv, se, t / TAU, px * 2.0 * bars[4], 2.0, 0.0); // spiral 1a + c += rgb * ds(uv, se, t / TAU, px * 2.0 * bars[5], 2.0, PI); // spiral 1b + c += + rgb * ds(uv, -se, t / TAU, px * 2.0 * bars[6], 2.0, 0.0); // spiral 2a + c += rgb * ds(uv, -se, t / TAU, px * 2.0 * bars[7], 2.0, PI); // spiral 2b + c = max(c, 0.0); // clear negative color + + c += pow(max(1.0 - l, 0.0), 3.0 / z); // center glow + + if (m.z > 0.0) // display grid on click + { + vec2 xyg = abs(fract(uv + 0.5) - 0.5) / px; // xy grid + c.gb += 0.2 * (1.0 - min(min(xyg.x, xyg.y), 1.0)); + } + bg += c; + } + bg /= aa * aa; + bg *= sqrt(bg) * 1.5; + + fragColor = vec4(bg, 1.0); +} \ No newline at end of file diff --git a/config/cava/shaders/northern_lights.frag b/config/cava/shaders/northern_lights.frag new file mode 100644 index 0000000..ecd859a --- /dev/null +++ b/config/cava/shaders/northern_lights.frag @@ -0,0 +1,34 @@ +#version 330 + +in vec2 fragCoord; +out vec4 fragColor; + +// bar values. defaults to left channels first (low to high), then right (high to low). +uniform float bars[512]; + +uniform int bars_count; // number of bars (left + right) (configurable) + +uniform vec3 u_resolution; // window resolution, not used here + +//colors, configurable in cava config file +uniform vec3 bg_color; // background color(r,g,b) (0.0 - 1.0), not used here +uniform vec3 fg_color; // foreground color, not used here + +void main() +{ + // find which bar to use based on where we are on the x axis + int bar = int(bars_count * fragCoord.x); + + float bar_y = 1.0 - abs((fragCoord.y - 0.5)) * 2.0; + float y = (bars[bar]) * bar_y; + + float bar_x = (fragCoord.x - float(bar) / float(bars_count)) * bars_count; + float bar_r = 1.0 - abs((bar_x - 0.5)) * 2; + + bar_r = bar_r * bar_r * 2; + + // set color + fragColor.r = fg_color.x * y * bar_r; + fragColor.g = fg_color.y * y * bar_r; + fragColor.b = fg_color.z * y * bar_r; +} diff --git a/config/cava/shaders/pass_through.vert b/config/cava/shaders/pass_through.vert new file mode 100644 index 0000000..a4f20e5 --- /dev/null +++ b/config/cava/shaders/pass_through.vert @@ -0,0 +1,14 @@ +#version 330 + + +// Input vertex data, different for all executions of this shader. +layout(location = 0) in vec3 vertexPosition_modelspace; + +// Output data ; will be interpolated for each fragment. +out vec2 fragCoord; + +void main() +{ + gl_Position = vec4(vertexPosition_modelspace,1); + fragCoord = (vertexPosition_modelspace.xy+vec2(1,1))/2.0; +} diff --git a/config/cava/shaders/spectrogram.frag b/config/cava/shaders/spectrogram.frag new file mode 100644 index 0000000..adce70a --- /dev/null +++ b/config/cava/shaders/spectrogram.frag @@ -0,0 +1,53 @@ +#version 330 + +in vec2 fragCoord; +out vec4 fragColor; + +// bar values. defaults to left channels first (low to high), then right (high +// to low). +uniform float bars[512]; + +uniform int bars_count; // number of bars (left + right) (configurable) +uniform int bar_width; // bar width (configurable), not used here +uniform int bar_spacing; // space bewteen bars (configurable) + +uniform vec3 u_resolution; // window resolution + +// colors, configurable in cava config file (r,g,b) (0.0 - 1.0) +uniform vec3 bg_color; // background color +uniform vec3 fg_color; // foreground color + +uniform int gradient_count; +uniform vec3 gradient_colors[8]; // gradient colors + +uniform sampler2D inputTexture; // Texture from the last render pass + +vec3 normalize_C(float y, vec3 col_1, vec3 col_2, float y_min, float y_max) { + // create color based on fraction of this color and next color + float yr = (y - y_min) / (y_max - y_min); + return col_1 * (1.0 - yr) + col_2 * yr; +} + +void main() { + // find which bar to use based on where we are on the y axis + int bar = int(bars_count * fragCoord.y); + float y = bars[bar]; + float band_size = 1.0 / float(bars_count); + float current_band_min = bar * band_size; + float current_band_max = (bar + 1) * band_size; + + int hist_length = 512; + float win_size = 1.0 / hist_length; + + if (fragCoord.x > 1.0 - win_size) { + + if (fragCoord.y > current_band_min && fragCoord.y < current_band_max) { + + fragColor = vec4(fg_color * y, 1.0); + } + } else { + vec2 offsetCoord = fragCoord; + offsetCoord.x += float(win_size); + fragColor = texture(inputTexture, offsetCoord); + } +} \ No newline at end of file diff --git a/config/cava/shaders/winamp_line_style_spectrum.frag b/config/cava/shaders/winamp_line_style_spectrum.frag new file mode 100644 index 0000000..375ff27 --- /dev/null +++ b/config/cava/shaders/winamp_line_style_spectrum.frag @@ -0,0 +1,112 @@ +#version 330 + +// Emulate the "line style" spectrum analyzer from Winamp 2. +// Try this config for a demonstration: + +/* +[general] +bar_width = 2 +bar_spacing = 0 +higher_cutoff_freq = 22000 + +[output] +method = sdl_glsl +channels = mono +fragment_shader = winamp_line_style_spectrum.frag + +[color] +background = '#000000' +gradient = 1 +gradient_color_1 = '#319C08' +gradient_color_2 = '#29CE10' +gradient_color_3 = '#BDDE29' +gradient_color_4 = '#DEA518' +gradient_color_5 = '#D66600' +gradient_color_6 = '#CE2910' + +[smoothing] +noise_reduction = 10 +*/ + +in vec2 fragCoord; +out vec4 fragColor; + +// bar values. defaults to left channels first (low to high), then right (high to low). +uniform float bars[512]; + +uniform int bars_count; // number of bars (left + right) (configurable) +uniform int bar_width; // bar width (configurable), not used here +uniform int bar_spacing; // space bewteen bars (configurable) + +uniform vec3 u_resolution; // window resolution + +//colors, configurable in cava config file (r,g,b) (0.0 - 1.0) +uniform vec3 bg_color; // background color +uniform vec3 fg_color; // foreground color + +uniform int gradient_count; +uniform vec3 gradient_colors[8]; // gradient colors + +vec3 normalize_C(float y,vec3 col_1, vec3 col_2, float y_min, float y_max) +{ + //create color based on fraction of this color and next color + float yr = (y - y_min) / (y_max - y_min); + return col_1 * (1.0 - yr) + col_2 * yr; +} + +void main() +{ + // find which bar to use based on where we are on the x axis + float x = u_resolution.x * fragCoord.x; + int bar = int(bars_count * fragCoord.x); + + //calculate a bar size + float bar_size = u_resolution.x / bars_count; + + //the y coordinate is stretched by 4X to resemble Winamp + float y = min(bars[bar] * 4.0, 1.0); + + // make sure there is a thin line at bottom + if (y * u_resolution.y < 1.0) + { + y = 1.0 / u_resolution.y; + } + + vec4 bar_color; + + if (gradient_count == 0) + { + bar_color = vec4(fg_color,1.0); + } + else + { + //find color in the configured gradient for the top of the bar + int color = int((gradient_count - 1) * y); + + //find where on y this and next color is supposed to be + float y_min = float(color) / (gradient_count - 1.0); + float y_max = float(color + 1) / (gradient_count - 1.0); + + //make a solid color for the entire bar + bar_color = vec4(normalize_C(y, gradient_colors[color], gradient_colors[color + 1], y_min, y_max), 1.0); + } + + + //draw the bar up to current height + if (y > fragCoord.y) + { + //make some space between bars based on settings + if (x > (bar + 1) * (bar_size) - bar_spacing) + { + fragColor = vec4(bg_color,1.0); + } + else + { + fragColor = bar_color; + } + } + else + { + fragColor = vec4(bg_color,1.0); + } +} \ No newline at end of file diff --git a/config/cava/themes/solarized_dark b/config/cava/themes/solarized_dark new file mode 100644 index 0000000..200057c --- /dev/null +++ b/config/cava/themes/solarized_dark @@ -0,0 +1,15 @@ +[color] +background = '#001e26' +foreground = '#708183' + +gradient = 1 +gradient_color_1 = '#268bd2' +gradient_color_2 = '#6c71c4' +gradient_color_3 = '#cb4b16' + +horizontal_gradient = 1 +horizontal_gradient_color_1 = '#586e75' +horizontal_gradient_color_2 = '#b58900' +horizontal_gradient_color_3 = '#839496' + +blend_direction = 'up' \ No newline at end of file diff --git a/config/cava/themes/tricolor b/config/cava/themes/tricolor new file mode 100644 index 0000000..b908137 --- /dev/null +++ b/config/cava/themes/tricolor @@ -0,0 +1,10 @@ +[color] +horizontal_gradient = 1 +horizontal_gradient_color_1 = '#c45161' +horizontal_gradient_color_2 = '#e094a0' +horizontal_gradient_color_3 = '#f2b6c0' +horizontal_gradient_color_4 = '#f2dde1' +horizontal_gradient_color_5 = '#cbc7d8' +horizontal_gradient_color_6 = '#8db7d2' +horizontal_gradient_color_7 = '#5e62a9' +horizontal_gradient_color_8 = '#434279' \ No newline at end of file diff --git a/config/fastfetch/0.01.jsonc b/config/fastfetch/0.01.jsonc new file mode 100644 index 0000000..c1ffa6b --- /dev/null +++ b/config/fastfetch/0.01.jsonc @@ -0,0 +1,83 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "type": "small", + "padding": { + "top": 2 + }, + "color": { + "1": "white", + "2": "white", + } + }, + "display" : { + + "color": { + "keys": "green", + "title": "white" + }, + "key": { + "type": "both" // string, icon, both, or none + }, + "bar": { + "width": 10, // Width of percentage bars + "char": { + "elapsed": "■", // Character for elapsed portion + "total": "-", // Character for total portion + }, + }, + "percent": { + "type": 9, // 1=number, 2=bar, 3=both, 9=colored number + "color": { + "green": "green", + "yellow": "light_yellow", + "red": "light_red" + } + } + + }, + "modules": [ + "title", + "separator", + { + "type": "datetime", + "format": "{hour-pretty}:{minute-pretty} | {day-pretty}.{month}.{year-short}, {weekday}", + }, + "separator", + { + "type": "memory", + }, + "uptime", + { + "type": "cpu", + "showPeCoreCount": true, + "temp": true + }, + "cpuusage", + { + "type": "gpu", + "driverSpecific": true, + "temp": true + }, + "physicalmemory", + { + "type": "swap", + "separate": true + }, + "disk", + { + "type": "battery", + "temp": true + }, + "poweradapter", + { + "type": "publicip", + "timeout": 1000 + }, + "wifi", + "bluetooth", + "netio", + "tpm", + "break", + ] +} diff --git a/config/fastfetch/0.02.jsonc b/config/fastfetch/0.02.jsonc new file mode 100644 index 0000000..b3609ba --- /dev/null +++ b/config/fastfetch/0.02.jsonc @@ -0,0 +1,186 @@ +// Inspired by https://github.com/usgraphics/TR-100 +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo":null, + "display": { + "pipe": true, + "key": { + "width": 16, + }, + "separator": "│ ", + "percent": { + "type": 9, + "color": { + "green": "green", + "yellow": "light_yellow", + "red": "light_red" + } + + }, + "bar": { + "border": null, + "char": { + "elapsed": "█", + "total": "░" + }, + "width": 40 + }, + "constants": [ + "\u001b[42C" + ] + }, + "modules": [ + { + "type": "custom", + "format": "┌┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┐" + }, + { + "type": "custom", + "format": "├┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┤" + }, + { + "type": "version", + "key": " ", + "format": "│ FASTFETCH v{version} │" + }, + { + "type": "custom", + "format": "│ TR-100 MACHINE REPORT │" + }, + { + "type": "custom", + "format": "├────────────┬──────────────────────────────────────────┤" + }, + { + "type": "datetime", + "key": "│ TIME │{$1}", + "format": "{hour-pretty}:{minute-pretty}", + }, + + { + "type": "datetime", + "key": "│ DATE │{$1}", + "format": "{day-pretty}.{month}.{year-short}, {weekday}", + }, +{ + "type": "custom", + "format": "├────────────┼──────────────────────────────────────────┤" + }, + + + + { + "type": "os", + "key": "│ OS │{$1}" + }, + { + "type": "kernel", + "key": "│ KERNEL │{$1}" + }, + + + +// { +// "type":"display", +// "key":"│ MONITOR │{$1}" +// }, + + // { + // "type": "custom", + // "format": "├────────────┼──────────────────────────────────────────┤" + //}, + //{ + // "type": "localip", + //"key": "│ CLIENT IP │{$1}", + //"format": "{ipv4}" + // }, + // { + // "type": "localip", + // "key": "│ MAC ADDR │{$1}", + // "format": "{mac} ({ifname})", + // "showIpv4": false, + // "showMac": true + // }, + // { + // "type": "dns", + // "key": "│ DNS │{$1}", + // "showType": "ipv4" + // }, + + + + { + "type": "custom", + "format": "├────────────┼──────────────────────────────────────────┤" + }, + { + "type": "cpu", + "key": "│ PROCESSOR │{$1}", + "temp": true, + "format": "{name}, {freq-max}{/freq-max}{freq-base}{/} - {temperature}" + }, + { + "type": "gpu", + "key": "│ GPU │{$1}", + "temp": true, + "format": "{name} - {temperature} {frequency}" + }, + + { + "type": "memory", + "key": "│ RAM │{$1}", + "format": "{used} / {total} [{percentage}]", + "percent": { + "type": ["num"] + } + }, + //{ + // "type": "memory", + // "key": "│ USAGE │{$1}", + // "format": "", + // "percent": { + // "type": ["bar", "hide-others"] + // } + // }, + + + { + "type": "disk", + "key": "│ DISK USAGE │{$1}", + "format": "{size-used} / {size-total} [{size-percentage}]", + "folders": "/", + "percent": { + "type": ["num"] + } + }, + { + "type": "custom", + "format": "├────────────┼──────────────────────────────────────────┤" + }, + + { + "type": "uptime", + "key": "│ UPTIME │{$1}" + }, + + { + "type": "disk", + "format": "{create-time}", + "key": "│ BIRTH TIME │{$1}" + }, + { + "type": "custom", + "format": "├────────────┼──────────────────────────────────────────┤" + }, +{ + "type": "localip", + "key": "│ CLIENT IP │{$1}", + "format": "{ipv4}" + // }, + + { + "type": "custom", + "format": "└────────────┴──────────────────────────────────────────┘" + } + ] + } diff --git a/config/fastfetch/color.jsonc b/config/fastfetch/color.jsonc new file mode 100644 index 0000000..277234d --- /dev/null +++ b/config/fastfetch/color.jsonc @@ -0,0 +1,13 @@ +// Load with --config examples/2.jsonc +// Note that you must replace the image path to an existing image to display it. + +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo":null , + "display": { + "separator": " -> " + }, + "modules": [ + "colors" + ] +} diff --git a/config/fastfetch/setts/all.jsonc b/config/fastfetch/setts/all.jsonc new file mode 100644 index 0000000..74bea1f --- /dev/null +++ b/config/fastfetch/setts/all.jsonc @@ -0,0 +1,113 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "padding": { + "top": 2 + } + }, + "modules": [ + "title", + "separator", + "os", + "host", + "bios", + "bootmgr", + "board", + "chassis", + "kernel", + "initsystem", + "uptime", + "loadavg", + "processes", + "packages", + "shell", + "editor", + "display", + "brightness", + "monitor", + "lm", + "de", + "wm", + "wmtheme", + "theme", + "icons", + "font", + "cursor", + "wallpaper", + "terminal", + "terminalfont", + "terminalsize", + "terminaltheme", + { + "type": "cpu", + "showPeCoreCount": true, + "temp": true + }, + "cpucache", + "cpuusage", + { + "type": "gpu", + "driverSpecific": true, + "temp": true + }, + "memory", + "physicalmemory", + { + "type": "swap", + "separate": true + }, + "disk", + "btrfs", + "zpool", + { + "type": "battery", + "temp": true + }, + "poweradapter", + "player", + "media", + { + "type": "publicip", + "timeout": 1000 + }, + { + "type": "localip", + "showIpv6": true, + "showMac": true, + "showSpeed": true, + "showMtu": true, + "showLoop": true, + "showFlags": true, + "showAllIps": true + }, + "dns", + "wifi", + "datetime", + "locale", + "vulkan", + "opengl", + "opencl", + "users", + "bluetooth", + "bluetoothradio", + "sound", + "camera", + "gamepad", + "mouse", + "keyboard", + { + "type": "weather", + "timeout": 1000 + }, + "netio", + "diskio", + { + "type": "physicaldisk", + "temp": true + }, + "tpm", + "version", + "break", + "colors" + ] +} diff --git a/config/fastfetch/setts/archey.jsonc b/config/fastfetch/setts/archey.jsonc new file mode 100644 index 0000000..bd99c35 --- /dev/null +++ b/config/fastfetch/setts/archey.jsonc @@ -0,0 +1,82 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "modules": [ + { + "type": "title", + "key": "User", + "format": "{user-name}" + }, + { + "type": "title", + "key": "Hostname", + "format": "{host-name}" + }, + { + "type": "host", + "key": "Model" + }, + { + "type": "os", + "format": "{pretty-name} {version-id} {arch}" + }, + "kernel", + "uptime", + { + "type": "loadavg", + "key": "Load Average" + }, + "processes", + { + "type": "wm", + "key": "Window Manager" + }, + { + "type": "de", + "key": "Desktop Environment" + }, + "shell", + { + "type": "terminal", + "format": "{pretty-name} {version} {#37}█{#97}█ {#36}█{#96}█ {#35}█{#95}█ {#34}█{#94}█ {#33}█{#93}█ {#32}█{#92}█ {#31}█{#91}█ {#30}█{#90}█" + }, + { + "type": "packages", + "format": "{all}" + }, + { + "type": "cpu", + "key": "Temperature", + "temp": true, + "format": "{temperature}" + }, + { + "type": "cpu", + "key": "CPU", + "format": "{cores-logical} x {name}" + }, + { + "type": "gpu", + "format": "{name}" + }, + { + "type": "memory", + "key": "RAM" + }, + { + "type": "disk", + "key": "Disk", + "folders": "/" + }, + { + "type": "localip", + "key": "LAN IP", + "showIpv6": true, + "showPrefixLen": false + }, + { + "type": "publicip", + "key": "WAN IP", + "timeout": 1000 + } + ] +} diff --git a/config/fastfetch/setts/ci.jsonc b/config/fastfetch/setts/ci.jsonc new file mode 100644 index 0000000..4203ff7 --- /dev/null +++ b/config/fastfetch/setts/ci.jsonc @@ -0,0 +1,115 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "display": { + "stat": true, + "pipe": true, + "showErrors": true, + "noBuffer": true + }, + "logo": null, + "modules": [ + "title", + "separator", + "os", + "host", + "bios", + "bootmgr", + "board", + "chassis", + "kernel", + "initsystem", + "uptime", + "loadavg", + "processes", + "packages", + "shell", + "editor", + "display", + "brightness", + "monitor", + "lm", + "de", + "wm", + "wmtheme", + "theme", + "icons", + "font", + "cursor", + "wallpaper", + "terminal", + "terminalfont", + "terminalsize", + "terminaltheme", + { + "type": "cpu", + "showPeCoreCount": true, + "temp": true + }, + "cpucache", + "cpuusage", + { + "type": "gpu", + "driverSpecific": true, + "temp": true + }, + "memory", + "physicalmemory", + { + "type": "swap", + "separate": true + }, + "disk", + "btrfs", + "zpool", + { + "type": "battery", + "temp": true + }, + "poweradapter", + "player", + "media", + { + "type": "publicip", + "timeout": 1000 + }, + { + "type": "localip", + "showIpv6": true, + "showMac": true, + "showSpeed": true, + "showMtu": true, + "showLoop": true, + "showFlags": true, + "showAllIps": true + }, + "dns", + "wifi", + "datetime", + "locale", + "vulkan", + "opengl", + "opencl", + "users", + // "bluetooth", // doesn't work on macOS because it requires bluetooth permissions + // "bluetoothradio", + "sound", + "camera", + "gamepad", + "mouse", + "keyboard", + { + "type": "weather", + "timeout": 1000 + }, + "netio", + "diskio", + { + "type": "physicaldisk", + "temp": true + }, + "tpm", + "version", + "break", + "colors" + ] +} diff --git a/config/fastfetch/setts/examples/10.jsonc b/config/fastfetch/setts/examples/10.jsonc new file mode 100644 index 0000000..5d43fe3 --- /dev/null +++ b/config/fastfetch/setts/examples/10.jsonc @@ -0,0 +1,157 @@ +// Load with --load-config examples/2.jsonc +// Note that you must replace the image path to an existing image to display it. + +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "padding": { + "top": 2 + } + }, + "display": { + "separator": " -> ", + "constants": [ + "──────────────────────────────" + ] + }, + "modules": [ + { + "type": "custom", + "format": "┌{$1}{$1}┐", + "outputColor": "90" + }, + { + "type": "title", + "keyWidth": 10 + }, + { + "type": "custom", + "format": "└{$1}{$1}┘", + "outputColor": "90" + }, + { + "type": "custom", + "format": " {#90} {#31} {#32} {#33} {#34} {#35} {#36} {#37} {#38} {#39}  {#38} {#37} {#36} {#35} {#34} {#33} {#32} {#31} {#90}" + }, + { + "type": "custom", + "format": "┌{$1}{$1}┐", + "outputColor": "90" + }, + { + "type": "os", + "key": "{icon} OS", + "keyColor": "yellow" + }, + { + "type": "kernel", + "key": "│ ├", + "keyColor": "yellow" + }, + { + "type": "packages", + "key": "│ ├󰏖", + "keyColor": "yellow" + }, + { + "type": "shell", + "key": "│ └", + "keyColor": "yellow" + }, + { + "type": "wm", + "key": " DE/WM", + "keyColor": "blue" + }, + { + "type": "lm", + "key": "│ ├󰧨", + "keyColor": "blue" + }, + { + "type": "wmtheme", + "key": "│ ├󰉼", + "keyColor": "blue" + }, + { + "type": "icons", + "key": "│ ├󰀻", + "keyColor": "blue" + }, + { + "type": "terminal", + "key": "│ ├", + "keyColor": "blue" + }, + { + "type": "wallpaper", + "key": "│ └󰸉", + "keyColor": "blue" + }, + { + "type": "host", + "key": "󰌢 PC", + "keyColor": "green" + }, + { + "type": "cpu", + "key": "│ ├󰻠", + "keyColor": "green" + }, + { + "type": "gpu", + "key": "│ ├󰍛", + "keyColor": "green" + }, + { + "type": "disk", + "key": "│ ├", + "keyColor": "green" + }, + { + "type": "memory", + "key": "│ ├󰑭", + "keyColor": "green" + }, + { + "type": "swap", + "key": "│ ├󰓡", + "keyColor": "green" + }, + { + "type": "uptime", + "key": "│ ├󰅐", + "keyColor": "green" + }, + { + "type": "display", + "key": "│ └󰍹", + "keyColor": "green" + }, + { + "type": "sound", + "key": " SND", + "keyColor": "cyan" + }, + { + "type": "player", + "key": "│ ├󰥠", + "keyColor": "cyan" + }, + { + "type": "media", + "key": "│ └󰝚", + "keyColor": "cyan" + }, + { + "type": "custom", + "format": "└{$1}{$1}┘", + "outputColor": "90" + }, + "break", + { + "type": "custom", + "format": " {#90} {#31} {#32} {#33} {#34} {#35} {#36} {#37} {#38} {#39}  {#38} {#37} {#36} {#35} {#34} {#33} {#32} {#31} {#90}" + } + ] +} diff --git a/config/fastfetch/setts/examples/11.jsonc b/config/fastfetch/setts/examples/11.jsonc new file mode 100644 index 0000000..50aceb0 --- /dev/null +++ b/config/fastfetch/setts/examples/11.jsonc @@ -0,0 +1,40 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "type": "small" + }, + "display": { + "separator": "-> ", + "color": { + "separator": "red" + } + }, + "modules": [ + { + "key": "Distro ", + "type": "os" + }, + { + "key": "Shell ", + "type": "shell" + }, + { + "key": "Terminal ", + "type": "terminal" + }, + { + "key": "Display ", + "type": "display" + }, + { + "key": "Backlight ", + "type": "brightness" + }, + "break", + { + "type": "colors", + "paddingLeft": 6, + "symbol": "circle" + } + ] +} diff --git a/config/fastfetch/setts/examples/12.jsonc b/config/fastfetch/setts/examples/12.jsonc new file mode 100644 index 0000000..d1dbbcc --- /dev/null +++ b/config/fastfetch/setts/examples/12.jsonc @@ -0,0 +1,115 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "type": "none" + }, + "display": { + "separator": "-> ", + "color": { + "separator": "1" // Bold + }, + "constants": [ + "───────────────────────────" + ], + "key": { + "type": "both", + "paddingLeft": 4 + } + }, + "modules": [ + { + "type": "title", + "format": " {user-name-colored}{at-symbol-colored}{host-name-colored}" + }, + "break", + { + "type": "custom", + "format": "┌{$1} {#1}System Information{#} {$1}┐" + }, + "break", + { + "key": "OS ", + "keyColor": "red", + "type": "os" + }, + { + "key": "Machine ", + "keyColor": "green", + "type": "host" + }, + { + "key": "Kernel ", + "keyColor": "magenta", + "type": "kernel" + }, + { + "key": "Uptime ", + "keyColor": "red", + "type": "uptime" + }, + { + "key": "Resolution ", + "keyColor": "yellow", + "type": "display", + "compactType": "original-with-refresh-rate" + }, + { + "key": "WM ", + "keyColor": "blue", + "type": "wm" + }, + { + "key": "DE ", + "keyColor": "green", + "type": "de" + }, + { + "key": "Shell ", + "keyColor": "cyan", + "type": "shell" + }, + { + "key": "Terminal ", + "keyColor": "red", + "type": "terminal" + }, + { + "key": "CPU ", + "keyColor": "yellow", + "type": "cpu" + }, + { + "key": "GPU ", + "keyColor": "blue", + "type": "gpu" + }, + { + "key": "Memory ", + "keyColor": "magenta", + "type": "memory" + }, + { + "key": "Local IP ", + "keyColor": "red", + "type": "localip", + "compact": true + }, + { + "key": "Public IP ", + "keyColor": "cyan", + "type": "publicip", + "timeout": 1000 + }, + "break", + { + "type": "custom", + "format": "└{$1}────────────────────{$1}┘" + }, + "break", + { + "type": "colors", + "paddingLeft": 34, + "symbol": "circle" + } + ] +} diff --git a/config/fastfetch/setts/examples/13.jsonc b/config/fastfetch/setts/examples/13.jsonc new file mode 100644 index 0000000..b9e6164 --- /dev/null +++ b/config/fastfetch/setts/examples/13.jsonc @@ -0,0 +1,85 @@ +// Inspired by Catnap +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "type": "small", + "padding": { + "top": 1 + } + }, + "display": { + "separator": " " + }, + "modules": [ + { + "key": "╭───────────╮", + "type": "custom" + }, + { + "key": "│ {#31} user {#keys}│", + "type": "title", + "format": "{user-name}" + }, + { + "key": "│ {#32}󰇅 hname {#keys}│", + "type": "title", + "format": "{host-name}" + }, + { + "key": "│ {#33}󰅐 uptime {#keys}│", + "type": "uptime" + }, + { + "key": "│ {#34}{icon} distro {#keys}│", + "type": "os" + }, + { + "key": "│ {#35} kernel {#keys}│", + "type": "kernel" + }, + { + "key": "│ {#36}󰇄 desktop {#keys}│", + "type": "de" + }, + { + "key": "│ {#31} term {#keys}│", + "type": "terminal" + }, + { + "key": "│ {#32} shell {#keys}│", + "type": "shell" + }, + { + "key": "│ {#33}󰍛 cpu {#keys}│", + "type": "cpu", + "showPeCoreCount": true + }, + { + "key": "│ {#34}󰉉 disk {#keys}│", + "type": "disk", + "folders": "/" + }, + { + "key": "│ {#35} memory {#keys}│", + "type": "memory" + }, + { + "key": "│ {#36}󰩟 network {#keys}│", + "type": "localip", + "format": "{ipv4} ({ifname})" + }, + { + "key": "├───────────┤", + "type": "custom" + }, + { + "key": "│ {#39} colors {#keys}│", + "type": "colors", + "symbol": "circle" + }, + { + "key": "╰───────────╯", + "type": "custom" + } + ] +} diff --git a/config/fastfetch/setts/examples/14.jsonc b/config/fastfetch/setts/examples/14.jsonc new file mode 100644 index 0000000..f7df5ce --- /dev/null +++ b/config/fastfetch/setts/examples/14.jsonc @@ -0,0 +1,88 @@ +// Inspired by Catnap +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "type": "small" + }, + "display": { + "separator": "", + "key": { + "width": 15 + } + }, + "modules": [ + { + // draw borders first to make colors of left and right border consistant + "key": " user", + "type": "title", + "format": "{user-name}", + "keyColor": "31" + }, + { + "key": "󰇅 hname", + "type": "title", + "format": "{host-name}", + "keyColor": "32" + + }, + { + "key": "󰅐 uptime", + "type": "uptime", + "keyColor": "33" + }, + { + "key": "{icon} distro", + "type": "os", + "keyColor": "34" + }, + { + "key": " kernel", + "type": "kernel", + "keyColor": "35" + }, + { + "key": "󰇄 desktop", + "type": "de", + "keyColor": "36" + }, + { + "key": " term", + "type": "terminal", + "keyColor": "31" + }, + { + "key": " shell", + "type": "shell", + "keyColor": "32" + }, + { + "key": "󰍛 cpu", + "type": "cpu", + "showPeCoreCount": true, + "keyColor": "33" + }, + { + "key": "󰉉 disk", + "type": "disk", + "folders": "/", + "keyColor": "34" + }, + { + "key": " memory", + "type": "memory", + "keyColor": "35" + }, + { + "key": "󰩟 network", + "type": "localip", + "format": "{ipv4} ({ifname})", + "keyColor": "36" + }, + { + "key": " colors", + "type": "colors", + "symbol": "circle", + "keyColor": "39" + } + ] +} diff --git a/config/fastfetch/setts/examples/15.jsonc b/config/fastfetch/setts/examples/15.jsonc new file mode 100644 index 0000000..c53b083 --- /dev/null +++ b/config/fastfetch/setts/examples/15.jsonc @@ -0,0 +1,85 @@ +// Inspired by Catnap +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "type": "small", + "padding": { + "top": 1 + } + }, + "display": { + "separator": " " + }, + "modules": [ + { + "key": "•••••••••••••", + "type": "custom" + }, + { + "key": "• {#31} user {#keys}•", + "type": "title", + "format": "{user-name}" + }, + { + "key": "• {#32}󰇅 hname {#keys}•", + "type": "title", + "format": "{host-name}" + }, + { + "key": "• {#33}󰅐 uptime {#keys}•", + "type": "uptime" + }, + { + "key": "• {#34}{icon} distro {#keys}•", + "type": "os" + }, + { + "key": "• {#35} kernel {#keys}•", + "type": "kernel" + }, + { + "key": "• {#36}󰇄 desktop {#keys}•", + "type": "de" + }, + { + "key": "• {#31} term {#keys}•", + "type": "terminal" + }, + { + "key": "• {#32} shell {#keys}•", + "type": "shell" + }, + { + "key": "• {#33}󰍛 cpu {#keys}•", + "type": "cpu", + "showPeCoreCount": true + }, + { + "key": "• {#34}󰉉 disk {#keys}•", + "type": "disk", + "folders": "/" + }, + { + "key": "• {#35} memory {#keys}•", + "type": "memory" + }, + { + "key": "• {#36}󰩟 network {#keys}•", + "type": "localip", + "format": "{ipv4} ({ifname})" + }, + { + "key": "•••••••••••••", + "type": "custom" + }, + { + "key": "• {#39} colors {#keys}•", + "type": "colors", + "symbol": "circle" + }, + { + "key": "•••••••••••••", + "type": "custom" + } + ] +} diff --git a/config/fastfetch/setts/examples/16.jsonc b/config/fastfetch/setts/examples/16.jsonc new file mode 100644 index 0000000..0d12c15 --- /dev/null +++ b/config/fastfetch/setts/examples/16.jsonc @@ -0,0 +1,85 @@ +// Inspired by Catnap +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "type": "small", + "padding": { + "top": 1 + } + }, + "display": { + "separator": " " + }, + "modules": [ + { + "key": "╔═══════════╗", + "type": "custom" + }, + { + "key": "║ {#31} user {#keys}║", + "type": "title", + "format": "{user-name}" + }, + { + "key": "║ {#32}󰇅 hname {#keys}║", + "type": "title", + "format": "{host-name}" + }, + { + "key": "║ {#33}󰅐 uptime {#keys}║", + "type": "uptime" + }, + { + "key": "║ {#34}{icon} distro {#keys}║", + "type": "os" + }, + { + "key": "║ {#35} kernel {#keys}║", + "type": "kernel" + }, + { + "key": "║ {#36}󰇄 desktop {#keys}║", + "type": "de" + }, + { + "key": "║ {#31} term {#keys}║", + "type": "terminal" + }, + { + "key": "║ {#32} shell {#keys}║", + "type": "shell" + }, + { + "key": "║ {#33}󰍛 cpu {#keys}║", + "type": "cpu", + "showPeCoreCount": true + }, + { + "key": "║ {#34}󰉉 disk {#keys}║", + "type": "disk", + "folders": "/" + }, + { + "key": "║ {#35} memory {#keys}║", + "type": "memory" + }, + { + "key": "║ {#36}󰩟 network {#keys}║", + "type": "localip", + "format": "{ipv4} ({ifname})" + }, + { + "key": "╠═══════════╣", + "type": "custom" + }, + { + "key": "║ {#39} colors {#keys}║", + "type": "colors", + "symbol": "circle" + }, + { + "key": "╚═══════════╝", + "type": "custom" + } + ] +} diff --git a/config/fastfetch/setts/examples/17.jsonc b/config/fastfetch/setts/examples/17.jsonc new file mode 100644 index 0000000..53808b6 --- /dev/null +++ b/config/fastfetch/setts/examples/17.jsonc @@ -0,0 +1,87 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "type": "small", + "padding": { + "top": 1, + "right": 2 + } + }, + "display": { + "separator": "> ", + "color": { + "separator": "red" + }, + "constants": [ + "───────────────────────────────────────────────────────────────────────────", + "│\u001b[75C│\u001b[75D" + ] + }, + "modules": [ + { + "format": "{#1}{#keys}╭{$1}╮\u001b[76D {user-name-colored}{at-symbol-colored}{host-name-colored} 🖥 ", + "type": "title" + }, + { + "key": "{$2}{#31} kernel ", + "type": "kernel" + }, + { + "key": "{$2}{#32}󰅐 uptime ", + "type": "uptime" + }, + { + "key": "{$2}{#33}{icon} distro ", + "type": "os" + }, + { + "key": "{$2}{#34}󰇄 desktop ", + "type": "de" + }, + { + "key": "{$2}{#35} term ", + "type": "terminal" + }, + { + "key": "{$2}{#36} shell ", + "type": "shell" + }, + { + "key": "{$2}{#35}󰍛 cpu ", + "type": "cpu", + "showPeCoreCount": true, + "temp": true + }, + { + "key": "{$2}{#34}󰍛 gpu ", + "type": "gpu" + }, + { + "key": "{$2}{#33}󰉉 disk ", + "type": "disk", + "folders": "/" + }, + { + "key": "{$2}{#32} memory ", + "type": "memory" + }, + { + "key": "{$2}{#31}󰩟 network ", + "type": "localip", + "format": "{ipv4} ({ifname})" + }, + { + "format": "{#1}{#keys}├{$1}┤", + "type": "custom" + }, + { + "key": "{$2}{#39} colors ", + "type": "colors", + "symbol": "circle" + }, + { + "format": "{#1}{#keys}╰{$1}╯", + "type": "custom" + } + ] +} diff --git a/config/fastfetch/setts/examples/18.jsonc b/config/fastfetch/setts/examples/18.jsonc new file mode 100644 index 0000000..1a90247 --- /dev/null +++ b/config/fastfetch/setts/examples/18.jsonc @@ -0,0 +1,87 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "type": "small", + "padding": { + "top": 1, + "right": 2 + } + }, + "display": { + "separator": "> ", + "color": { + "separator": "red" + }, + "constants": [ + "═══════════════════════════════════════════════════════════════════════════", + "║\u001b[75C║\u001b[75D" + ] + }, + "modules": [ + { + "format": "{#1}{#keys}╔{$1}╗\u001b[76D {user-name-colored}{at-symbol-colored}{host-name-colored} 💻 ", + "type": "title" + }, + { + "key": "{$2}{#31} kernel ", + "type": "kernel" + }, + { + "key": "{$2}{#32}󰅐 uptime ", + "type": "uptime" + }, + { + "key": "{$2}{#33}{icon} distro ", + "type": "os" + }, + { + "key": "{$2}{#34}󰇄 desktop ", + "type": "de" + }, + { + "key": "{$2}{#35} term ", + "type": "terminal" + }, + { + "key": "{$2}{#36} shell ", + "type": "shell" + }, + { + "key": "{$2}{#35}󰍛 cpu ", + "type": "cpu", + "showPeCoreCount": true, + "temp": true + }, + { + "key": "{$2}{#34}󰍛 gpu ", + "type": "gpu" + }, + { + "key": "{$2}{#33}󰉉 disk ", + "type": "disk", + "folders": "/" + }, + { + "key": "{$2}{#32} memory ", + "type": "memory" + }, + { + "key": "{$2}{#31}󰩟 network ", + "type": "localip", + "format": "{ipv4} ({ifname})" + }, + { + "format": "{#1}{#keys}╠{$1}╣", + "type": "custom" + }, + { + "key": "{$2}{#39} colors ", + "type": "colors", + "symbol": "circle" + }, + { + "format": "{#1}{#keys}╚{$1}╝", + "type": "custom" + } + ] +} diff --git a/config/fastfetch/setts/examples/19.jsonc b/config/fastfetch/setts/examples/19.jsonc new file mode 100644 index 0000000..d6ef2a9 --- /dev/null +++ b/config/fastfetch/setts/examples/19.jsonc @@ -0,0 +1,189 @@ +// _____ _____ _____ _____ _____ _____ _____ _____ _____ +// | __| _ | __|_ _| __| __|_ _| | | | +// | __| |__ | | | | __| __| | | | --| | +// |__| |__|__|_____| |_| |__| |_____| |_| |_____|__|__| +// +// By CarterLi - https://github.com/CarterLi +// Homepage - https://github.com/fastfetch-cli/fastfetch +// config.jsonc - ニリ @niri-san +// pokemon-colorscripts - https://gitlab.com/phoneybadger/pokemon-colorscripts +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "source": " _____ _____ _____ _____ _____ _____ _____ _____ _____\n| __| _ | __|_ _| __| __|_ _| | | |\n| __| |__ | | | | __| __| | | | --| |\n|__| |__|__|_____| |_| |__| |_____| |_| |_____|__|__|", + "type": "data", + "position": "top", + "padding": { + "right": 2 + } + }, + "display": { + "separator": " - " + }, + "modules": [ + { + "type": "custom", // HardwareInfo + "format": "• {#green}SYSTEM INFORMATION" + }, + { + "type": "host", + "key": "HOST", + "format": "{name}{?vendor} ({vendor}){?}", + "keyColor": "green" + }, + { + "type": "chassis", + "key": "COMPUTER TYPE", + "keyColor": "green" + }, + { + "type": "cpu", + "key": "CPU", + "keyColor": "green" + }, + { + "type": "gpu", + "key": "GPU", + "keyColor": "green" + }, + { + "type": "memory", + "key": "MEMORY USED", + "keyColor": "green" + }, + { + "type": "swap", + "key": "SWAP USED", + "keyColor": "green" + }, + { + "type": "disk", + "key": "DISK", + "folders": "/", + "keyColor": "green" + }, + { + "type": "custom", // SoftwareInfo + "format": "• {#red}SOFTWARE INFORMATION" + }, + { + "type": "os", + "key": "DISTRO", + "keyColor": "red" + }, + { + "type": "disk", + "folders": "/", // Use "/System/Volumes/VM" or something else on macOS + "format": "{create-time}", + "key": "INSTALLED DATE", + "keyColor": "red" + }, + { + "type": "kernel", + "key": "KERNEL", + "keyColor": "red" + }, + { + "type": "packages", + "key": "PACKAGES", + "keyColor": "red" + }, + { + "type": "uptime", + "key": "UPTIME", + "keyColor": "red" + }, + { + "type": "custom", // DisplayInfo + "format": "• {#blue}DISPLAY INFORMATION" + }, + { + "type": "de", + "key": "DESKTOP ENVIRONMENT", + "keyColor": "blue" + }, + { + "type": "lm", + "key": "LOGIN MANAGER", + "format": "{type}", + "keyColor": "blue" + }, + { + "type": "wm", + "key": "WM", + "keyColor": "blue" + }, + { + "type": "wmtheme", + "key": "WM THEME", + "keyColor": "blue" + }, + { + "type": "display", + "key": "MONITOR ({name})", + "keyColor": "blue", + "format": "{width}x{height} @ {refresh-rate} Hz - {physical-width}x{physical-height} mm ({inch} inches, {ppi} ppi)" + }, + { + "type": "custom", // DesignInfo + "format": "• {#yellow}DESIGN INFORMATION" + }, + { + "type": "wallpaper", + "key": "WALLPAPER", + "keyColor": "yellow" + }, + { + "type": "theme", + "key": "KDE THEME", + "format": "{1}", + "keyColor": "yellow" + }, + { + "type": "icons", + "key": "ICON THEME", + "format": "{1}", + "keyColor": "yellow" + }, + { + "type": "font", + "key": "FONT", + "format": "{?1}{1} [Qt]{?}{/1}Unknown", // Remove "[Qt]" if not using Qt + "keyColor": "yellow" + }, + { + "type": "terminalfont", + "key": "TERMINAL FONT", + "keyColor": "yellow" + }, + { + "type": "cursor", + "key": "CURSOR", + "keyColor": "yellow" + }, + { + "type": "custom", // OtherInfo + "format": "• {#cyan}VARIOUS INFORMATION" + }, + { + "type": "media", + "key": "NOW PLAYING", + "format": "{?artist}{artist} - {?}{title}", + "keyColor": "cyan" + }, + { + "type": "weather", + "key": "WEATHER", + "timeout": 1000, + "keyColor": "cyan" + }, + { + "type": "version", + "key": "INFO", + "keyColor": "cyan" + }, + "break", + "colors", + "break" + ] +} diff --git a/config/fastfetch/setts/examples/2.jsonc b/config/fastfetch/setts/examples/2.jsonc new file mode 100644 index 0000000..0ed382a --- /dev/null +++ b/config/fastfetch/setts/examples/2.jsonc @@ -0,0 +1,88 @@ +// Load with --load-config examples/2.jsonc +// Note that you must replace the image path to an existing image to display it. + +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + // "logo": { + // "type": "iterm", + // "source": "~/Desktop/apple1.png", + // "width": 28, + // "height": 12 + // }, + "display": { + "separator": "  ", + "constants": [ + "─────────────────" // {$1}, used in Custom module + ], + "key": { + "type": "icon", + "paddingLeft": 2 + } + }, + "modules": [ + { + "type": "custom", // HardwareStart + // {#1} is equivalent to `\u001b[1m`. {#} is equivalent to `\u001b[m` + "format": "┌{$1} {#1}Hardware Information{#} {$1}┐" + }, + "host", + "cpu", + "gpu", + "disk", + "memory", + "swap", + "display", + "brightness", + "battery", + "poweradapter", + "bluetooth", + "sound", + "gamepad", + { + "type": "custom", // SoftwareStart + "format": "├{$1} {#1}Software Information{#} {$1}┤" + }, + { + "type": "title", + "keyIcon": "", + "key": "Title", // Title module has no key by default, so that icon is not displayed + "format": "{user-name}@{host-name}" + }, + "os", + "kernel", + "lm", + "de", + "wm", + "shell", + "terminal", + "terminalfont", + "theme", + "icons", + "wallpaper", + "packages", + "uptime", + "media", + { + "type": "localip", + "compact": true + }, + { + "type": "publicip", + "timeout": 1000 + }, + { + "type": "wifi", + "format": "{ssid}" + }, + "locale", + { + "type": "custom", // InformationEnd + "format": "└{$1}──────────────────────{$1}┘" + }, + { + "type": "colors", + "paddingLeft": 2, + "symbol": "circle" + } + ] +} diff --git a/config/fastfetch/setts/examples/20.jsonc b/config/fastfetch/setts/examples/20.jsonc new file mode 100644 index 0000000..7f16be9 --- /dev/null +++ b/config/fastfetch/setts/examples/20.jsonc @@ -0,0 +1,177 @@ +// Inspired by https://github.com/usgraphics/TR-100 +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": null, + "display": { + "pipe": true, + "key": { + "width": 16 + }, + "separator": "│ ", + "percent": { + "type": ["bar", "hide-others"] + }, + "bar": { + "border": null, + "char": { + "elapsed": "█", + "total": "░" + }, + "width": 40 + }, + "constants": [ + "\u001b[42C" + ] + }, + "modules": [ + { + "type": "custom", + "format": "┌┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┐" + }, + { + "type": "custom", + "format": "├┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┤" + }, + { + "type": "version", + "key": " ", + "format": "│ FASTFETCH v{version} │" + }, + { + "type": "custom", + "format": "│ TR-100 MACHINE REPORT │" + }, + { + "type": "custom", + "format": "├────────────┬──────────────────────────────────────────┤" + }, + { + "type": "os", + "key": "│ OS │{$1}" + }, + { + "type": "kernel", + "key": "│ KERNEL │{$1}" + }, + { + "type": "custom", + "format": "├────────────┼──────────────────────────────────────────┤" + }, + { + "type": "title", + "key": "│ HOSTNAME │{$1}", + "format": "{host-name}" + }, + { + "type": "localip", + "key": "│ CLIENT IP │{$1}", + "format": "{ipv4}" + }, + { + "type": "localip", + "key": "│ MAC ADDR │{$1}", + "format": "{mac} ({ifname})", + "showIpv4": false, + "showMac": true + }, + { + "type": "dns", + "key": "│ DNS │{$1}", + "showType": "ipv4" + }, + { + "type": "title", + "key": "│ USER │{$1}", + "format": "{user-name}" + }, + { + "type": "host", + "key": "│ MACHINE │{$1}", + "format": "{name}" + }, + { + "type": "custom", + "format": "├────────────┼──────────────────────────────────────────┤" + }, + { + "type": "cpu", + "key": "│ PROCESSOR │{$1}", + "format": "{name}" + }, + { + "type": "cpu", + "key": "│ CORES │{$1}", + "format": "{cores-physical} PHYSICAL CORES / {cores-logical} THREADS", + "showPeCoreCount": false + }, + { + "type": "cpu", + "key": "│ CPU FREQ │{$1}", + "format": "{freq-max}{/freq-max}{freq-base}{/}" + }, + { + "type": "loadavg", + "compact": false, + "key": "│ LOAD {duration>2}m │{$1}" // pad duration to 2 chars + }, + { + "type": "custom", + "format": "├────────────┼──────────────────────────────────────────┤" + }, + { + "type": "memory", + "key": "│ MEMORY │{$1}", + "format": "{used} / {total} [{percentage}]", + "percent": { + "type": ["num"] + } + }, + { + "type": "memory", + "key": "│ USAGE │{$1}", + "format": "", + "percent": { + "type": ["bar", "hide-others"] + } + }, + { + "type": "custom", + "format": "├────────────┼──────────────────────────────────────────┤" + }, + { + "type": "disk", + "key": "│ VOLUME │{$1}", + "format": "{size-used} / {size-total} [{size-percentage}]", + "folders": "/", + "percent": { + "type": ["num"] + } + }, + { + "type": "disk", + "key": "│ DISK USAGE │{$1}", + "format": "", + "percent": { + "type": ["bar", "hide-others"] + } + }, + { + "type": "custom", + "format": "├────────────┼──────────────────────────────────────────┤" + }, + { + "type": "users", + "key": "│ LAST LOGIN │{$1}", + "format": "{login-time}{?client-ip} ({client-ip})", + "myselfOnly": true + }, + { + "type": "uptime", + "key": "│ UPTIME │{$1}" + }, + { + "type": "custom", + "format": "└────────────┴──────────────────────────────────────────┘" + } + ] + } diff --git a/config/fastfetch/setts/examples/21.jsonc b/config/fastfetch/setts/examples/21.jsonc new file mode 100644 index 0000000..6f59778 --- /dev/null +++ b/config/fastfetch/setts/examples/21.jsonc @@ -0,0 +1,48 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "type": "small" + }, + "display": { + "constants": [ + "██ " + ] + }, + "modules": [ + { + "key": "{$1}Distro", + "keyColor": "38;5;210", + "type": "os" + }, + { + "key": "{$1}Kernel", + "keyColor": "38;5;84", + "type": "kernel" + }, + { + "key": "{$1}Shell", + "keyColor": "38;5;147", + "type": "shell" + }, + { + "key": "{$1}Packages", + "keyColor": "38;5;200", + "type": "packages" + }, + { + "key": "{$1}WM", + "keyColor": "38;5;44", + "type": "wm" + }, + { + "key": "{$1}CPU", + "keyColor": "38;5;75", + "type": "cpu" + }, + { + "key": "{$1}Memory", + "keyColor": "38;5;123", + "type": "memory" + } + ] +} diff --git a/config/fastfetch/setts/examples/22.jsonc b/config/fastfetch/setts/examples/22.jsonc new file mode 100644 index 0000000..f804506 --- /dev/null +++ b/config/fastfetch/setts/examples/22.jsonc @@ -0,0 +1,113 @@ +// Designed for Arch Linux +// Modified from: https://github.com/fastfetch-cli/fastfetch/pull/1025#issuecomment-2177566138 +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "source": "arch3", + "color": { + "1": "red", + "2": "yellow" + } + }, + "display": { + "color": { + "separator": "blue" + }, + "separator": " | ", + "constants": [ + ">-----------<+>---------------------------------------------<" + ] + }, + "modules": [ + { + "type": "kernel", + "key": " /\\rch Linux", + "keyColor": "magenta" + }, + { + "type": "custom", + "format": "{$1}", + "outputColor": "separator" + }, + { + "type": "uptime", + "key": " Uptime ", + "keyColor": "green" + }, + { + "type": "shell", + "key": " Shell ", + "keyColor": "green" + }, + { + "type": "terminal", + "key": " Terminal ", + "keyColor": "green" + }, + { + "type": "terminalfont", + "key": " Font ", + "keyColor": "green" + }, + { + "type": "packages", + "key": " Packages ", + "keyColor": "green" + }, + { + "type": "localip", + "key": " Local IP ", + "keyColor": "green" + }, + { + "type": "custom", + "format": "{$1}", + "outputColor": "separator" + }, + { + "type": "display", + "key": " Display ", + "keyColor": "cyan" + }, + { + "type": "cpu", + "key": " CPU ", + "keyColor": "cyan" + }, + { + "type": "gpu", + "key": " GPU ", + "keyColor": "cyan" + }, + { + "type": "memory", + "key": " RAM ", + "keyColor": "cyan" + }, + { + "type": "swap", + "key": " SWAP ", + "keyColor": "cyan" + }, + { + "type": "disk", + "key": " Disk ", + "keyColor": "cyan" + }, + { + "type": "battery", + "key": " Battery ", + "keyColor": "cyan" + }, + { + "type": "custom", + "format": "{$1}", + "outputColor": "separator" + }, + "break", + { + "type": "colors", + "paddingLeft": 15 + } + ] +} diff --git a/config/fastfetch/setts/examples/23.jsonc b/config/fastfetch/setts/examples/23.jsonc new file mode 100644 index 0000000..effc39a --- /dev/null +++ b/config/fastfetch/setts/examples/23.jsonc @@ -0,0 +1,63 @@ +// designed for presenting Vanilla Linux +// inspired from imstilllearnin's Vanilla Logo Ultra +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "type": "small" + }, + "display": { + "color": { + "output": "cyan" + }, + "separator": "" + }, + "modules": [ + { + "type": "kernel", + "key": "[_Kernel___> ", + "keyColor": "blue" + }, + { + "type": "packages", + "outputColor": "white", + "key": " [_Packages_> ", + "keyColor": "green" + }, + { + "type": "localip", + "outputColor": "white", + "key": " [_Local_IP_> ", + "keyColor": "green" + }, + { + "type": "memory", + "format": "[{3}] {1} / {2}", + "key": " [_RAM______> ", + "keyColor": "magenta" + }, + { + "type": "swap", + "format": "[{3}] {1} / {2}", + "key": " [_SWAP_____> ", + "keyColor": "magenta" + }, + { + "type": "disk", + "format": "[{3}] {1} / {2} {9}", + "key": " [_Disk_____> ", + "keyColor": "magenta" + }, + { + "type": "battery", + "format": "[{4}] {5}", + "key": " [_Battery__> ", + "keyColor": "magenta" + }, + "break", + { + "type": "colors", + "paddingLeft": 9, + "symbol": "circle" + } + ] +} diff --git a/config/fastfetch/setts/examples/24.jsonc b/config/fastfetch/setts/examples/24.jsonc new file mode 100644 index 0000000..b9f8fef --- /dev/null +++ b/config/fastfetch/setts/examples/24.jsonc @@ -0,0 +1,152 @@ +// By jan-rex +// Modified from: https://github.com/fastfetch-cli/fastfetch/discussions/1269 +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "padding": { + "top": 2 + } + }, + "display": { + "separator": "", + "constants": [ + // CONSTANT {$1} - COLOR BACKGROUND FOR KEY + "\u001b[48;2;43;43;69m", + // CONSTANT {$2} - COLOR BACKGROUND FOR OUTPUT + "\u001b[48;2;56;59;78m", + // CONSTANT {$3} - VERTICAL BARS AT START AND 75th CHARACTERS FORWARD AND BACKWARD + "\u001b[90m│ │\u001b[60D\u001b[39m", + ] + }, + "modules": [ + // CUSTOM - Top UI bar + { + "type": "custom", + "key": "{#90}{$1}╭─────────────╮", + "format": "{#90}{$2}╭────────────────────────────────────────────────────────────╮", + }, + { + "type": "title", + "key": "{#90}{$1}│ {#92}User {#90}│", + "format": "{$2}{$3}{user-name} {#2}[{home-dir}]" + }, + { + "type": "users", + "key": "{#90}{$1}│ {#92}Users {#90}│", + "myselfOnly": false, + "format": "{$2}{$3}{1}@{host-name}{/host-name}localhost{/}{?client-ip} {#2}[IP:{client-ip}]{?} [Login time: {login-time}]" + }, + { + "type": "datetime", + "key": "{#90}{$1}│ {#92}Datetime {#90}│", + "format": "{$2}{$3}{year}-{month-pretty}-{day-in-month} {hour-pretty}:{minute-pretty}:{second-pretty} [{weekday}] [W{week}] [UTC{offset-from-utc}]" + }, + { + "type": "title", + "key": "{#90}{$1}│ {#93}Host {#90}│", + "format": "{$2}{$3}{host-name}" + }, + { + "type": "host", + "key": "{#90}{$1}│ {#93}Machine {#90}│", + "format": "{$2}{$3}{name} {#2}{version}" + }, + { + "type": "os", + "key": "{#90}{$1}│ {#93}OS {#90}│", + "format": "{$2}{$3}{?pretty-name}{pretty-name}{?}{/pretty-name}{name}{/} {codename} {#2}[v{version}] [{arch}]" + }, + { + "type": "kernel", + "key": "{#90}{$1}│ {#93}Kernel {#90}│", + "format": "{$2}{$3}{sysname} {#2}[v{release}]" + }, + { + "type": "uptime", + "key": "{#90}{$1}│ {#93}Uptime {#90}│", + "format": "{$2}{$3}{?days}{days} Days + {?}{hours}:{minutes}:{seconds}" + }, + { + "type": "cpu", + "key": "{#90}{$1}│ {#91}CPU {#90}│", + "showPeCoreCount": true, + "temp": true, + "format": "{$2}{$3}{name} {#2}[C:{core-types}] [{freq-max}]" + }, + { + "type": "gpu", + "key": "{#90}{$1}│ {#91}GPU {#90}│", + "detectionMethod": "auto", + "driverSpecific": true, + "format": "{$2}{$3}{name} {#2}[C:{core-count}]{?frequency} [{frequency}]{?} [{type}]" + }, + { + "type": "memory", + "key": "{#90}{$1}│ {#91}Memory {#90}│", + "format": "{$2}{$3}{used} / {total} ({percentage}{$2})" + }, + { + "type": "disk", + "key": "{#90}{$1}│ {#91}Disk {#90}│", + "format": "{$2}{$3}{size-used} / {size-total} ({size-percentage}{$2})" + }, + { + "type": "poweradapter", + "key": "{#90}{$1}│ {#91}Power {#90}│", + "format": "{$2}{$3}{name}" + }, + { + "type": "terminal", + "key": "{#90}{$1}│ {#95}Terminal {#90}│", + "format": "{$2}{$3}{pretty-name} {#2}[{version}] [PID:{pid}]" + }, + { + "type": "terminalfont", + "key": "{#90}{$1}│ {#95}Font {#90}│", + "format": "{$2}{$3}{name} {#2}[{size}]" + }, + { + "type": "shell", + "key": "{#90}{$1}│ {#95}Shell {#90}│", + "format": "{$2}{$3}{pretty-name} {#2}[v{version}] [PID:{pid}]" + }, + { + // localip IPv4 + "type": "localip", + "key": "{#90}{$1}│ {#94}Local IPv4 {#90}│", + "showPrefixLen": true, + "showIpv4": true, + "showIpv6": false, + "showMtu": true, + "format": "{$2}{$3}{ifname}: {ipv4} {#2}[MTU:{mtu}]" + }, + { + // localip IPv6 + "type": "localip", + "key": "{#90}{$1}│ {#94}Local IPv6 {#90}│", + "showPrefixLen": true, + "showIpv4": false, + "showIpv6": true, + "showMtu": true, + "format": "{$2}{$3}{ifname}: {ipv6} {#2}[MTU:{mtu}]" + }, + { + "type": "publicip", + "key": "{#90}{$1}│ {#94}Public IPv4 {#90}│", + "ipv6": false, + "format": "{$2}{$3}{ip} {#2}[{location}]" + }, + { + "type": "publicip", + "key": "{#90}{$1}│ {#94}Public IPv6 {#90}│", + "ipv6": true, + "format": "{$2}{$3}{ip} {#2}[{location}]" + }, + // CUSTOM - Button UI bar + { + "type": "custom", + "key": "{#90}{$1}╰─────────────╯", + "format": "{#90}{$2}╰────────────────────────────────────────────────────────────╯", + } + ] + } diff --git a/config/fastfetch/setts/examples/25.jsonc b/config/fastfetch/setts/examples/25.jsonc new file mode 100644 index 0000000..c002657 --- /dev/null +++ b/config/fastfetch/setts/examples/25.jsonc @@ -0,0 +1,315 @@ +// Based on #1576 +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "display": { + "color": { + "keys": "blue" + }, + "separator": "", + // Constants are reusable strings referenced by {$1}, {$2}, etc. + // These contain ANSI escape codes for cursor positioning + "constants": [ + "──────────────────────────────────────────────", // {$1} - horizontal line for borders + "\u001b[47D", // {$2} - move cursor left 47 columns + "\u001b[47C", // {$3} - move cursor right 47 columns + "\u001b[46C" // {$4} - move cursor right 46 columns + ], + "brightColor": false + }, + "modules": [ + { + "type": "version", + "key": "┌───────────────┬─{$1}┐\u001b[41D", + "format": "\u001b[1m{#keys} {1} - {2} " + }, + { + "type": "os", + // Key format breakdown for OS module: + // "│ {icon} \u001b[s{sysname}\u001b[u\u001b[10C│{$3}│{$2}" + // + // │ - Left border of key block + // {icon} - OS icon (defined internally by fastfetch) + // \u001b[s - ANSI escape: save cursor position (ESC[s) + // {sysname} - Format variable: system name (e.g., "Linux", "Darwin") + // \u001b[u - ANSI escape: restore cursor to saved position (ESC[u) + // Necessary because the length of `{sysname}` differs between different platforms + // \u001b[10C - ANSI escape: move cursor right 10 columns (ESC[10C) + // │ - Right border of key block (always 10 columns from left border) + // {$3} - Reference to constants[2]: move cursor right 47 columns + // │ - Right border of value block + // {$2} - Reference to constants[1]: move cursor left 47 columns + // + // This creates a fixed-width layout where the key block is exactly 10 columns wide, + // regardless of the actual content length. The cursor manipulation ensures proper + // alignment for the table-like structure. + "key": "│ {icon} \u001b[s{sysname}\u001b[u\u001b[10C│{$3}│{$2}" + }, + { + "type": "datetime", + "key": "│ {icon} Fetched │{$3}│{$2}", + "format": "{year}-{month-pretty}-{day-pretty} {hour-pretty}:{minute-pretty}:{second-pretty} {timezone-name}" + }, + { + "type": "locale", + "key": "│ {icon} Locale │{$3}│{$2}" + }, + + // Hardware section with cyan color theme + { + "type": "custom", + "key": "│{#cyan}┌──────────────┬{$1}┐{#keys}│\u001b[37D", + "format": "{#bright_cyan} Hardware " + }, + { + "type": "chassis", + // Similar structure but with cyan color formatting: + // │{#cyan}│ - Left border with cyan color + // {icon} - Chassis icon + // Chassis - Fixed label text + // │{$4}│{#keys}│{$2} - Positioning and borders for value area + "key": "│{#cyan}│ {icon} Chassis │{$4}│{#keys}│{$2}" + }, + { + "type": "memory", + "key": "│{#cyan}│ {icon} RAM │{$4}│{#keys}│{$2}" + }, + { + "type": "swap", + "key": "│{#cyan}│ {icon} SWAP │{$4}│{#keys}│{$2}" + }, + { + "type": "cpu", + "key": "│{#cyan}│ {icon} CPU │{$4}│{#keys}│{$2}", + "showPeCoreCount": true + }, + { + "type": "gpu", + "key": "│{#cyan}│ {icon} GPU │{$4}│{#keys}│{$2}" + }, + { + "type": "disk", + "key": "│{#cyan}│ {icon} Disk │{$4}│{#keys}│{$2}", + "format": "{size-used} \/ {size-total} ({size-percentage}) - {filesystem}", + }, + { + "type": "battery", + "key": "│{#cyan}│ {icon} Battery │{$4}│{#keys}│{$2}" + }, + { + "type": "custom", + "key": "│{#cyan}└──────────────┴{$1}┘{#keys}│", + "format": "" + }, + + // Desktop section with green color theme + { + "type": "custom", + "key": "│{#green}┌──────────────┬{$1}┐{#keys}│\u001b[37D", + "format": "{#bright_green} Desktop " + }, + { + "type": "de", + "key": "│{#green}│ {icon} Desktop │{$4}│{#keys}│{$2}" + }, + { + "type": "wm", + "key": "│{#green}│ {icon} Session │{$4}│{#keys}│{$2}" + }, + { + "type": "display", + "key": "│{#green}│ {icon} Display │{$4}│{#keys}│{$2}", + "compactType": "original-with-refresh-rate" + }, + { + "type": "gpu", + "key": "│{#green}│ {icon} G-Driver │{$4}│{#keys}│{$2}", + "format": "{driver}" + }, + { + "type": "custom", + "key": "│{#green}└──────────────┴{$1}┘{#keys}│", + "format": "" + }, + + // Terminal section with yellow color theme + { + "type": "custom", + "key": "│{#yellow}┌──────────────┬{$1}┐{#keys}│\u001b[37D", + "format": "{#bright_yellow} Terminal " + }, + { + "type": "shell", + "key": "│{#yellow}│ {icon} Shell │{$4}│{#keys}│{$2}" + }, + { + "type": "terminal", + "key": "│{#yellow}│ {icon} Terminal │{$4}│{#keys}│{$2}" + }, + { + "type": "terminalfont", + "key": "│{#yellow}│ {icon} Term Font │{$4}│{#keys}│{$2}" + }, + { + "type": "terminaltheme", + "key": "│{#yellow}│ {icon} Colors │{$4}│{#keys}│{$2}" + }, + { + "type": "packages", + "key": "│{#yellow}│ {icon} Packages │{$4}│{#keys}│{$2}" + }, + { + "type": "custom", + "key": "│{#yellow}└──────────────┴{$1}┘{#keys}│", + "format": "" + }, + + // Development section with red color theme + { + "type": "custom", + "key": "│{#red}┌──────────────┬{$1}┐{#keys}│\u001b[39D", + "format": "{#bright_red} Development " + }, + { + "type": "command", + "keyIcon": "", // Custom icon override + "key": "│{#red}│ {icon} Rust │{$4}│{#keys}│{$2}", + "text": "rustc --version", + "format": "rustc {~6,13}" // Print 6th to 13th characters (version number) + }, + { + "type": "command", + "condition": { + "!system": "Windows" // Posix version + }, + "keyIcon": "", + "key": "│{#red}│ {icon} Clang │{$4}│{#keys}│{$2}", + "text": "clang --version | sed -n 's/.*version \\([0-9][0-9.]*\\).*/\\1/p'", + "format": "clang {}" + }, + { + "type": "command", + "condition": { + "system": "Windows" // Windows version + }, + "keyIcon": "", + "key": "│{#red}│ {icon} Clang │{$4}│{#keys}│{$2}", + "text": "clang --version | findstr version", // Finds the line with "version" + "format": "clang {~-6}" // Prints the last 6 characters (version number) + }, + { + "type": "command", + "keyIcon": "", + "key": "│{#red}│ {icon} NodeJS │{$4}│{#keys}│{$2}", + "text": "node --version", + "format": "node {~1}" // {~1} removes first character (v) + }, + { + "type": "command", + "keyIcon": "", + "key": "│{#red}│ {icon} Go │{$4}│{#keys}│{$2}", + "text": "go version | cut -d' ' -f3", + "format": "go {~2}" // {~2} removes first 2 characters (go) + }, + { + "type": "command", + "keyIcon": "", + "key": "│{#red}│ {icon} Zig │{$4}│{#keys}│{$2}", + "text": "zig version", + "format": "zig {}" + }, + { + "type": "editor", + "key": "│{#red}│ {icon} Editor │{$4}│{#keys}│{$2}" + }, + { + "type": "command", + "keyIcon": "󰊢", + "key": "│{#red}│ {icon} Git │{$4}│{#keys}│{$2}", + "text": "git version", + "format": "git {~12}" + }, + { + "type": "font", + "key": "│{#red}│ {icon} Interface │{$4}│{#keys}│{$2}" + }, + { + "type": "custom", + "key": "│{#red}└──────────────┴{$1}┘{#keys}│", + "format": "" + }, + + // Uptime section with magenta color theme + { + "type": "custom", + "key": "│{#magenta}┌──────────────┬{$1}┐{#keys}│\u001b[36D", + "format": "{#bright_magenta} Uptime " + }, + { + "type": "uptime", + "key": "│{#magenta}│ {icon} Uptime │{$4}│{#keys}│{$2}" + }, + { + "type": "users", + "myselfOnly": true, // Only show current user + "keyIcon": "", + "key": "│{#magenta}│ {icon} Login │{$4}│{#keys}│{$2}" + }, + { + "condition": { // Conditional module: only show on non-macOS + "!system": "macOS" + }, + "type": "disk", + "keyIcon": "", + "key": "│{#magenta}│ {icon} OS Age │{$4}│{#keys}│{$2}", + "folders": "/", // Check root filesystem + "format": "{create-time:10} [{days} days]" // Show creation time and age in days + }, + { + "condition": { // Conditional module: only show on macOS + "system": "macOS" + }, + "type": "disk", + "keyIcon": "", + "key": "│{#magenta}│ {icon} OS Age │{$4}│{#keys}│{$2}", + "folders": "/System/Volumes/VM", // Work around for APFS on macOS + "format": "{create-time:10} [{days} days]" + }, + { + "type": "custom", + "key": "│{#magenta}└──────────────┴{$1}┘{#keys}│", + "format": "" + }, + { + "type": "custom", + "key": "└─────────────────{$1}┘", // Bottom border of the entire layout + "format": "" + }, + + // End with color palette and line break + "break", // Add a blank line + "colors" // Display color palette + ] +} + +/* +Key Format Structure Explanation: + +The key format uses a combination of: +1. Unicode box drawing characters (│ ┌ ┐ └ ┘ ┬ ┴) for borders +2. ANSI escape codes for cursor positioning (\u001b[...) +3. Format variables ({icon}, {sysname}, etc.) +4. Constant references ({$1}, {$2}, etc.) +5. Color formatting ({#color}) + +ANSI Escape Codes Used: +- \u001b[s - Save cursor position (ESC[s) +- \u001b[u - Restore cursor position (ESC[u) +- \u001b[nC - Move cursor right n columns (ESC[nC) +- \u001b[nD - Move cursor left n columns (ESC[nD) + +This creates a table-like layout with fixed column widths and proper alignment, +regardless of the actual content length in each field. + +For more ANSI escape code reference, see: +https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797#cursor-controls +*/ diff --git a/config/fastfetch/setts/examples/26.jsonc b/config/fastfetch/setts/examples/26.jsonc new file mode 100644 index 0000000..9029f5a --- /dev/null +++ b/config/fastfetch/setts/examples/26.jsonc @@ -0,0 +1,165 @@ +// Modified from: 24.jsonc +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "padding": { + "top": 2 + } + }, + "display": { + "separator": "", + "constants": [ + // CONSTANT {$1} - VERTICAL BARS AT START AND 75th CHARACTERS FORWARD AND BACKWARD + "\u001b[90m│ │\u001b[60D\u001b[39m" + ] + }, + "modules": [ + // CUSTOM - Top UI bar + { + "type": "custom", + "key": "{#90}╭ Keys ───────╮", + "format": "{#90}╭ Values ────────────────────────────────────────────────────╮", + }, + { + "type": "title", + "key": "{#90}│ {#92}User {#90}│", + "format": "{$1}{user-name} {#2}[{home-dir}]" + }, + { + "type": "users", + "key": "{#90}│ {#92}Users {#90}│", + "myselfOnly": false, + "format": "{$1}{1}@{host-name}{/host-name}localhost{/}{?client-ip} {#2}[IP:{client-ip}]{?} [Login time: {login-time}]" + }, + { + "type": "datetime", + "key": "{#90}│ {#92}Datetime {#90}│", + "format": "{$1}{year}-{month-pretty}-{day-in-month} {hour-pretty}:{minute-pretty}:{second-pretty} {#2}[{weekday}] [W{week}] [UTC{offset-from-utc}]" + }, + { + "type": "title", + "key": "{#90}│ {#93}Host {#90}│", + "format": "{$1}{host-name}" + }, + { + "type": "host", + "key": "{#90}│ {#93}Machine {#90}│", + "format": "{$1}{name} {#2}{version}" + }, + { + "type": "os", + "key": "{#90}│ {#93}OS {#90}│", + "format": "{$1}{?pretty-name}{pretty-name}{?}{/pretty-name}{name}{/} {codename} {#2}[v{version}] [{arch}]" + }, + { + "type": "kernel", + "key": "{#90}│ {#93}Kernel {#90}│", + "format": "{$1}{sysname} {#2}[v{release}]" + }, + { + "type": "uptime", + "key": "{#90}│ {#93}Uptime {#90}│", + "format": "{$1}{?days}{days} Days + {?}{hours}:{minutes}:{seconds}" + }, + { + "type": "cpu", + "key": "{#90}│ {#91}CPU {#90}│", + "showPeCoreCount": true, + "temp": true, + "format": "{$1}{name} {#2}[C:{core-types}] [{freq-max}]" + }, + { + "type": "gpu", + "key": "{#90}│ {#91}GPU {#90}│", + "detectionMethod": "auto", + "driverSpecific": true, + "format": "{$1}{name} {#2}[C:{core-count}]{?frequency} [{frequency}]{?} {#2}[{type}]" + }, + { + "type": "memory", + "key": "{#90}│ {#91}Memory {#90}│", + "format": "{$1}{used} / {total} ({percentage})" + }, + { + "type": "disk", + "key": "{#90}│ {#91}Disk {#90}│", + "format": "{$1}{size-used} / {size-total} ({size-percentage})" + }, + { + "type": "poweradapter", + "key": "{#90}│ {#91}Power {#90}│", + "format": "{$1}{name}" + }, + { + "type": "terminal", + "key": "{#90}│ {#95}Terminal {#90}│", + "format": "{$1}{pretty-name} {#2}[{version}] [PID:{pid}]" + }, + { + "type": "terminalfont", + "key": "{#90}│ {#95}Font {#90}│", + "format": "{$1}{name} {#2}[{size}]" + }, + { + "type": "shell", + "key": "{#90}│ {#95}Shell {#90}│", + "format": "{$1}{pretty-name} {#2}[v{version}] [PID:{pid}]" + }, + { + // localip IPv4 + "type": "localip", + "key": "{#90}│ {#94}Local IPv4 {#90}│", + "showPrefixLen": true, + "showIpv4": true, + "showIpv6": false, + "showMtu": true, + "format": "{$1}{ifname}: {ipv4} {#2}[MTU:{mtu}]" + }, + { + // localip IPv6 + "type": "localip", + "key": "{#90}│ {#94}Local IPv6 {#90}│", + "showPrefixLen": true, + "showIpv4": false, + "showIpv6": true, + "showMtu": true, + "format": "{$1}{ifname}: {ipv6} {#2}[MTU:{mtu}]" + }, + { + "type": "publicip", + "key": "{#90}│ {#94}Public IPv4 {#90}│", + "ipv6": false, + "format": "{$1}{ip} {#2}[{location}]" + }, + { + "type": "publicip", + "key": "{#90}│ {#94}Public IPv6 {#90}│", + "ipv6": true, + "format": "{$1}{ip} {#2}[{location}]" + }, + // CUSTOM - Button UI bar + { + "type": "custom", + "key": "{#90}╰─────────────╯", + "format": "{#90}╰────────────────────────────────────────────────────────────╯", + }, + "break", + { + "type": "custom", + "key": " ", + "format": "{#90}╭ Colors ───────────────────────────────────────────────────────────────────╮", + }, + { + "type": "custom", + "format": "{#90}│ {#40} {#41} {#42} {#43} {#44} {#45} {#46} {#47} {#} {#90}│", + }, + { + "type": "custom", + "format": "{#90}│ {#100} {#101} {#102} {#103} {#104} {#105} {#106} {#107} {#} {#90}│", + }, + { + "type": "custom", + "format": "{#90}╰───────────────────────────────────────────────────────────────────────────╯", + }, + ] + } diff --git a/config/fastfetch/setts/examples/27.jsonc b/config/fastfetch/setts/examples/27.jsonc new file mode 100644 index 0000000..9fd3ead --- /dev/null +++ b/config/fastfetch/setts/examples/27.jsonc @@ -0,0 +1,49 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "type": "small", + "padding": { + "top": 1 + } + }, + "display": { + "separator": " " + }, + "modules": [ + "break", + "title", + { + "type": "os", + "key": "os ", + "keyColor": "red" + }, + { + "type": "kernel", + "key": "kernel", + "keyColor": "green" + }, + { + "type": "host", + "format": "{vendor} {family}", + "key": "host ", + "keyColor": "yellow" + }, + { + "type": "packages", + "key": "pkgs ", + "keyColor": "blue" + }, + { + "type": "uptime", + "format": "{?days}{days}d {?}{hours}h {minutes}m", + "key": "uptime", + "keyColor": "magenta" + }, + { + "type": "memory", + "key": "memory", + "keyColor": "cyan" + }, + "break" + ] +} diff --git a/config/fastfetch/setts/examples/28.jsonc b/config/fastfetch/setts/examples/28.jsonc new file mode 100644 index 0000000..f49c2ca --- /dev/null +++ b/config/fastfetch/setts/examples/28.jsonc @@ -0,0 +1,63 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "type": "small" + }, + "display": { + "separator": " ", + "key": { + "type": "both" + }, + "bar": { + "border": { + "left": "\uee00", + "leftElapsed": "\uee03", + "right": "\uee02", + "rightElapsed": "\uee05" + }, + "char": { + "total": "\uee01", + "elapsed": "\uee04" + }, + "color": { + "total": null + } + }, + "percent": { + "type": [ + "bar", + "bar-monochrome" + ] + } + }, + "modules": [ + "title", + "separator", + { + "type": "memory", + "key": "MEM" + }, + { + "type": "swap", + "key": "SWP" + }, + { + "type": "disk", + "folders": "/", + "key": "DSK" + }, + { + "type": "battery", + "key": "BAT" + }, + { + "type": "brightness", + "key": "BGT" + }, + { + "type": "colors", + "paddingLeft": 6, + "symbol": "circle" + } + ] +} diff --git a/config/fastfetch/setts/examples/29.jsonc b/config/fastfetch/setts/examples/29.jsonc new file mode 100644 index 0000000..2dcd1c9 --- /dev/null +++ b/config/fastfetch/setts/examples/29.jsonc @@ -0,0 +1,136 @@ +// #1887 +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": null, + "display": { + "constants": [ + "\u001b[s\u001b[33C│\u001b[u", + " » " + ], + "separator": "", + "percent": { + "type": ["num", "bar"] + }, + "brightColor": false, + "bar": { + "border": { + "left": "[", + "leftElapsed": "[", + "right": "]", + "rightElapsed": "]" + }, + "char": { + "elapsed": "─", + "total": "─" + }, + "color": { + "elapsed": "default", + "total": "light_black" + }, + "width": 16 + }, + "color": { + "separator": "default", + "keys": "default", + "output": "default" + } + }, + "modules": [ + "title", + { + "type": "custom", + "format": "┌────「 {#1}OS{#} 」────────────────────────────┐" + }, + { + "type": "os", + "key": "│ {icon}{$2}{$1}" + }, + { + "type": "disk", + "folders": "/", + "key": "│ {$1}", + "format": "{size-percentage-bar} {size-percentage}" + }, + { + "type": "disk", + "folders": "/", + "key": "│ {$1}", + "format": "{size-used} / {size-total}" + }, + { + "type": "custom", + "format": "└────────────────────────────────────────┘" + }, + "break", + { + "type": "custom", + "format": "┌────「 {#1}UI{#} 」────────────────────────────┐" + }, + { + "type": "wm", + "key": "│ {icon}{$2}{$1}" + }, + { + "type": "wmtheme", + "key": "│ {icon}{$2}{$1}" + }, + { + "type": "custom", + "key": "│ {$1}" + }, + { + "type": "display", + "key": "│ {icon}{$2}{$1}", + "format": "{width}x{height} @ {refresh-rate} Hz" + }, + { + "type": "custom", + "key": "│ {$1}" + }, + { + "type": "terminal", + "key": "│ {icon}{$2}{$1}" + }, + { + "type": "terminalfont", + "key": "│ {icon}{$2}{$1}" + }, + { + "type": "custom", + "format": "└────────────────────────────────────────┘" + }, + "break", + { + "type": "custom", + "format": "┌────「 {#1}HW{#} 」────────────────────────────┐" + }, + { + "type": "cpu", + "key": "│ {icon}{$2}{$1}", + "format": "{name}" + }, + { + "type": "gpu", + "key": "│ {icon}{$2}{$1}", + "format": "{name}" + }, + { + "type": "custom", + "key": "│ {$1}" + }, + { + "type": "memory", + "key": "│ {icon}{$2}{$1}", + "format": "{percentage-bar} {percentage}" + }, + { + "type": "memory", + "key": "│ {$1}", + "format": "{used} / {total}" + }, + { + "type": "custom", + "format": "└────────────────────────────────────────┘" + } + ] +} diff --git a/config/fastfetch/setts/examples/3.jsonc b/config/fastfetch/setts/examples/3.jsonc new file mode 100644 index 0000000..f3cb7d4 --- /dev/null +++ b/config/fastfetch/setts/examples/3.jsonc @@ -0,0 +1,24 @@ +// Load with --load-config examples/3.jsonc + +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "type": "small" + }, + "display": { + "size": { + "binaryPrefix": "si" + } + }, + "modules": [ + "vulkan", + "opengl", + "opencl", + "memory", + { + "type": "disk", + "folders": "/:/home:/boot:/efi" + }, + "localip" + ] +} diff --git a/config/fastfetch/setts/examples/30.jsonc b/config/fastfetch/setts/examples/30.jsonc new file mode 100644 index 0000000..5914c7d --- /dev/null +++ b/config/fastfetch/setts/examples/30.jsonc @@ -0,0 +1,87 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": null, + "display": { + "key": { + "type": "both", + "paddingLeft": 6, + "width": 17 + } + }, + "modules": [ + { + "type": "custom", + "format": "|---------------------: {#1}Hardware{#} : ---------------------|" + }, + "break", + { + "keyColor": "green", + "type": "host" + }, + { + "keyColor": "green", + "type": "cpu" + }, + { + "keyColor": "yellow", + "type": "memory" + }, + { + "keyColor": "yellow", + "type": "swap" + }, + { + "type": "custom", + "keyIcon": "", + "key": "Disks" + }, + { + "type": "disk", + "key": " ", + "format": " [{mountpoint}] - {size-used} / {size-total} ({size-percentage})" + }, + "break", + { + "type": "title", + "format": "|-------------------------------------------------------|\u001b[40D: {#1}{user-name} @ {host-name}{#} :" + }, + "break", + { + "type": "os", + "keyColor": "cyan" + }, + { + "type": "kernel", + "keyColor": "cyan" + }, + { + "type": "packages", + "keyColor": "red", + "key": "Pkgs" + }, + { + "type": "shell", + "keyColor": "red" + }, + { + "type": "terminal", + "key": "Term", + "keyColor": "red" + }, + { + "type": "locale", + "keyColor": "magenta" + }, + "break", + { + "type": "custom", + "format": "|---------------------: {#1}Software{#} : ---------------------|" + }, + "break", + { + "type": "colors", + "symbol": "circle", + "paddingLeft": 8 + } + ] +} diff --git a/config/fastfetch/setts/examples/4.jsonc b/config/fastfetch/setts/examples/4.jsonc new file mode 100644 index 0000000..9631644 --- /dev/null +++ b/config/fastfetch/setts/examples/4.jsonc @@ -0,0 +1,33 @@ +// Load with --load-config examples/4.jsonc + +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "type": "small", + "padding": { + "right": 1 + } + }, + "display": { + "size": { + "binaryPrefix": "si" + }, + "color": "blue", + "separator": "  " + }, + "modules": [ + { + "type": "datetime", + "key": "Date", + "format": "{1}-{3}-{11}" + }, + { + "type": "datetime", + "key": "Time", + "format": "{14}:{17}:{20}" + }, + "break", + "player", + "media" + ] +} diff --git a/config/fastfetch/setts/examples/5.jsonc b/config/fastfetch/setts/examples/5.jsonc new file mode 100644 index 0000000..11b9c05 --- /dev/null +++ b/config/fastfetch/setts/examples/5.jsonc @@ -0,0 +1,27 @@ +// Load with --load-config examples/5.jsonc + +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": null, + "display": { + "color": "magenta" + }, + "modules": [ + { + "type": "theme", + "key": "T" + }, + { + "type": "icons", + "key": "I" + }, + { + "type": "font", + "key": "F" + }, + { + "type": "cursor", + "key": "C" + } + ] +} diff --git a/config/fastfetch/setts/examples/6.jsonc b/config/fastfetch/setts/examples/6.jsonc new file mode 100644 index 0000000..5eba94e --- /dev/null +++ b/config/fastfetch/setts/examples/6.jsonc @@ -0,0 +1,179 @@ +// Load with --load-config examples/2.jsonc +// Note that you must replace the image path to an existing image to display it. + +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "display": { + "separator": " " + }, + "modules": [ + { + "type": "host", + "key": "╭─󰌢", + "keyColor": "green" + }, + { + "type": "cpu", + "key": "├─󰻠", + "keyColor": "green" + }, + { + "type": "gpu", + "key": "├─󰍛", + "keyColor": "green" + }, + { + "type": "disk", + "key": "├─", + "keyColor": "green" + }, + { + "type": "memory", + "key": "├─󰑭", + "keyColor": "green" + }, + { + "type": "swap", + "key": "├─󰓡", + "keyColor": "green" + }, + { + "type": "display", + "key": "├─󰍹", + "keyColor": "green" + }, + { + "type": "brightness", + "key": "├─󰃞", + "keyColor": "green" + }, + { + "type": "battery", + "key": "├─", + "keyColor": "green" + }, + { + "type": "poweradapter", + "key": "├─", + "keyColor": "green" + }, + { + "type": "gamepad", + "key": "├─", + "keyColor": "green" + }, + { + "type": "bluetooth", + "key": "├─", + "keyColor": "green" + }, + { + "type": "sound", + "key": "╰─", + "keyColor": "green" + }, + "break", + + { + "type": "shell", + "key": "╭─", + "keyColor": "yellow" + }, + { + "type": "terminal", + "key": "├─", + "keyColor": "yellow" + }, + { + "type": "terminalfont", + "key": "├─", + "keyColor": "yellow" + }, + { + "type": "lm", + "key": "├─󰧨", + "keyColor": "yellow" + }, + { + "type": "de", + "key": "├─", + "keyColor": "yellow" + }, + { + "type": "wm", + "key": "├─", + "keyColor": "yellow" + }, + { + "type": "theme", + "key": "├─󰉼", + "keyColor": "yellow" + }, + { + "type": "icons", + "key": "├─󰀻", + "keyColor": "yellow" + }, + { + "type": "wallpaper", + "key": "╰─󰸉", + "keyColor": "yellow" + }, + "break", + + { + "type": "title", + "key": "╭─", + "format": "{user-name}@{host-name}", + "keyColor": "blue" + }, + { + "type": "os", + "key": "├─{icon}", // Just get your distro's logo off nerdfonts.com + "keyColor": "blue" + }, + { + "type": "kernel", + "key": "├─", + "keyColor": "blue" + }, + { + "type": "packages", + "key": "├─󰏖", + "keyColor": "blue" + }, + { + "type": "uptime", + "key": "├─󰅐", + "keyColor": "blue" + }, + { + "type": "media", + "key": "├─󰝚", + "keyColor": "blue" + }, + { + "type": "localip", + "key": "├─󰩟", + "compact": true, + "keyColor": "blue" + }, + { + "type": "publicip", + "key": "├─󰩠", + "keyColor": "blue", + "timeout": 1000 + }, + { + "type": "wifi", + "key": "├─", + "format": "{ssid}", + "keyColor": "blue" + }, + { + "type": "locale", + "key": "╰─", + "keyColor": "blue" + } + ] +} diff --git a/config/fastfetch/setts/examples/7.jsonc b/config/fastfetch/setts/examples/7.jsonc new file mode 100644 index 0000000..7a3056e --- /dev/null +++ b/config/fastfetch/setts/examples/7.jsonc @@ -0,0 +1,138 @@ +// Load with --load-config examples/2.jsonc +// Note that you must replace the image path to an existing image to display it. + +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "padding": { + "top": 2 + } + }, + "display": { + "separator": " -> " + }, + "modules": [ + "title", + "separator", + { + "type": "os", + "key": " OS", + "keyColor": "yellow", + "format": "{2}" + }, + { + "type": "os", + "key": "├{icon}", // Just get your distro's logo off nerdfonts.com + "keyColor": "yellow" + }, + { + "type": "kernel", + "key": "├", + "keyColor": "yellow" + }, + { + "type": "packages", + "key": "├󰏖", + "keyColor": "yellow" + }, + { + "type": "shell", + "key": "└", + "keyColor": "yellow" + }, + "break", + + { + "type": "wm", + "key": " DE/WM", + "keyColor": "blue" + }, + { + "type": "lm", + "key": "├󰧨", + "keyColor": "blue" + }, + { + "type": "wmtheme", + "key": "├󰉼", + "keyColor": "blue" + }, + { + "type": "icons", + "key": "├󰀻", + "keyColor": "blue" + }, + { + "type": "terminal", + "key": "├", + "keyColor": "blue" + }, + { + "type": "wallpaper", + "key": "└󰸉", + "keyColor": "blue" + }, + + "break", + { + "type": "host", + "key": "󰌢 PC", + "keyColor": "green" + }, + { + "type": "cpu", + "key": "├󰻠", + "keyColor": "green" + }, + { + "type": "gpu", + "key": "├󰍛", + "keyColor": "green" + }, + { + "type": "disk", + "key": "├", + "keyColor": "green" + }, + { + "type": "memory", + "key": "├󰑭", + "keyColor": "green" + }, + { + "type": "swap", + "key": "├󰓡", + "keyColor": "green" + }, + { + "type": "display", + "key": "├󰍹", + "keyColor": "green" + }, + { + "type": "uptime", + "key": "└󰅐", + "keyColor": "green" + }, + + "break", + { + "type": "sound", + "key": " SOUND", + "keyColor": "cyan" + }, + { + "type": "player", + "key": "├󰥠", + "keyColor": "cyan" + }, + { + "type": "media", + "key": "└󰝚", + "keyColor": "cyan" + }, + + "break", + "colors" + ] +} diff --git a/config/fastfetch/setts/examples/8.jsonc b/config/fastfetch/setts/examples/8.jsonc new file mode 100644 index 0000000..7cea371 --- /dev/null +++ b/config/fastfetch/setts/examples/8.jsonc @@ -0,0 +1,41 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "type": "small" + }, + "display": { + "separator": " ", + "color": { + "keys": "magenta" + }, + "size": { + "ndigits": 0, + "maxPrefix": "MB" + }, + "key": { + "type": "icon" + } + }, + "modules": [ + { + "type": "title", + "color": { + "user": "green", + "at": "red", + "host": "blue" + } + }, + "os", + "kernel", + "memory", + "packages", + "uptime", + { + "type": "colors", + "key": "Colors", // For printing icon + "block": { + "range": [1, 6] + } + } + ] +} diff --git a/config/fastfetch/setts/examples/9.jsonc b/config/fastfetch/setts/examples/9.jsonc new file mode 100644 index 0000000..2fc1da3 --- /dev/null +++ b/config/fastfetch/setts/examples/9.jsonc @@ -0,0 +1,40 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "type": "small" + }, + "display": { + "key": { + "width": 11 + }, + "bar": { + "char": { + "elapsed": "=", + "total": "-" + }, + "width": 13 + }, + "percent": { + "type": 2 + } + }, + "modules": [ + "title", + "separator", + "memory", + "swap", + { + "type": "disk", + "folders": "/" + }, + { + "type": "battery", + "key": "Battery" + }, + { + "type": "colors", + "paddingLeft": 10, + "symbol": "circle" + } + ] +} diff --git a/config/fastfetch/setts/neofetch.jsonc b/config/fastfetch/setts/neofetch.jsonc new file mode 100644 index 0000000..0f38ed5 --- /dev/null +++ b/config/fastfetch/setts/neofetch.jsonc @@ -0,0 +1,57 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "display": { + "size": { + "maxPrefix": "MB", + "ndigits": 0, + "spaceBeforeUnit": "never" + }, + "freq": { + "ndigits": 3, + "spaceBeforeUnit": "never" + } + }, + "modules": [ + "title", + "separator", + "os", + "host", + { + "type": "kernel", + "format": "{release}" + }, + "uptime", + { + "type": "packages", + "combined": true + }, + "shell", + { + "type": "display", + "compactType": "original", + "key": "Resolution" + }, + "de", + "wm", + "wmtheme", + "theme", + "icons", + "terminal", + { + "type": "terminalfont", + "format": "{/name}{-}{/}{name}{?size} {size}{?}" + }, + "cpu", + { + "type": "gpu", + "key": "GPU", + "format": "{name}" + }, + { + "type": "memory", + "format": "{used} / {total}" + }, + "break", + "colors" + ] +} diff --git a/config/fastfetch/setts/paleofetch.jsonc b/config/fastfetch/setts/paleofetch.jsonc new file mode 100644 index 0000000..b832452 --- /dev/null +++ b/config/fastfetch/setts/paleofetch.jsonc @@ -0,0 +1,32 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "modules": [ + "title", + "separator", + "os", + { + "type": "host", + "format": "{/2}{-}{/}{2}{?3} {3}{?}" + }, + "kernel", + "uptime", + { + "type": "battery", + "format": "{/4}{-}{/}{4}{?5} [{5}]{?}" + }, + "break", + "packages", + "shell", + "display", + "terminal", + "break", + "cpu", + { + "type": "gpu", + "key": "GPU" + }, + "memory", + "break", + "colors" + ] +} diff --git a/config/fastfetch/setts/screenfetch.jsonc b/config/fastfetch/setts/screenfetch.jsonc new file mode 100644 index 0000000..68dfbac --- /dev/null +++ b/config/fastfetch/setts/screenfetch.jsonc @@ -0,0 +1,37 @@ +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "modules": [ + "title", + "os", + "kernel", + "uptime", + { + "type": "packages", + "format": "{all}" + }, + "shell", + { + "type": "display", + "key": "Resolution", + "compactType": "original" + }, + "de", + "wm", + "wmtheme", + { + "type": "terminalfont", + "key": "font" + }, + { + "type": "disk", + "folders": "/", + "key": "Disk" + }, + "cpu", + "gpu", + { + "type": "memory", + "key": "RAM" + } + ] +} diff --git a/config/fish/config.fish b/config/fish/config.fish index e426ed9..72535e9 100644 --- a/config/fish/config.fish +++ b/config/fish/config.fish @@ -1,4 +1,8 @@ if status is-interactive + starship init fish | source set -U fish_cursor_replace_one underscore + set -gx TERMINAL foot + alias cat='bat' + zoxide init fish | source # Commands to run in interactive sessions can go here end diff --git a/config/fish/fish_variables b/config/fish/fish_variables index 0745b63..dca36cd 100644 --- a/config/fish/fish_variables +++ b/config/fish/fish_variables @@ -1,6 +1,7 @@ # This file contains fish universal variable definitions. # VERSION: 3.0 SETUVAR --export EDITOR:nvim +SETUVAR --export TERMINAL:foot SETUVAR __fish_initialized:4300 SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fisher\x2efish\x1e\x7e/\x2econfig/fish/completions/fisher\x2efish SETUVAR _fisher_patrickf1_2F_fzf_2E_fish_files:\x7e/\x2econfig/fish/functions/_fzf_configure_bindings_help\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_extract_var_info\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_preview_changed_file\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_preview_file\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_report_diff_type\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_report_file_type\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_directory\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_git_log\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_git_status\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_history\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_processes\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_variables\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_wrapper\x2efish\x1e\x7e/\x2econfig/fish/functions/fzf_configure_bindings\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/fzf\x2efish\x1e\x7e/\x2econfig/fish/completions/fzf_configure_bindings\x2efish diff --git a/config/fish/fish_variables2DWmNcGa9T b/config/fish/fish_variables2DWmNcGa9T new file mode 100644 index 0000000..9889703 --- /dev/null +++ b/config/fish/fish_variables2DWmNcGa9T @@ -0,0 +1,184 @@ +# This file contains fish universal variable definitions. +# VERSION: 3.0 +SETUVAR --export EDITOR:nvim +SETUVAR --export TERMINAL:foot +SETUVAR VIRTUAL_ENV_DISABLE_PROMPT:true +SETUVAR __fish_initialized:4300 +SETUVAR _fisher_ilancosman_2F_tide_40_v6_files:\x7e/\x2econfig/fish/functions/_tide_1_line_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_2_line_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_cache_variables\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_detect_os\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_find_and_remove\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_fish_colorize\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_aws\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_bun\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_character\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_cmd_duration\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_context\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_crystal\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_direnv\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_distrobox\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_docker\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_elixir\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_gcloud\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_git\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_go\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_java\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_jobs\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_kubectl\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_nix_shell\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_node\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_os\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_php\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_private_mode\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_pulumi\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_python\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_ruby\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_rustc\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_shlvl\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_status\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_terraform\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_time\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_toolbox\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_vi_mode\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_item_zig\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_parent_dirs\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_print_item\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_pwd\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_remove_unusable_items\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_sub_bug\x2dreport\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_sub_configure\x2efish\x1e\x7e/\x2econfig/fish/functions/_tide_sub_reload\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_mode_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/tide\x1e\x7e/\x2econfig/fish/functions/tide\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/_tide_init\x2efish\x1e\x7e/\x2econfig/fish/completions/tide\x2efish +SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fisher\x2efish\x1e\x7e/\x2econfig/fish/completions/fisher\x2efish +SETUVAR _fisher_patrickf1_2F_fzf_2E_fish_files:\x7e/\x2econfig/fish/functions/_fzf_configure_bindings_help\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_extract_var_info\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_preview_changed_file\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_preview_file\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_report_diff_type\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_report_file_type\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_directory\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_git_log\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_git_status\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_history\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_processes\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_search_variables\x2efish\x1e\x7e/\x2econfig/fish/functions/_fzf_wrapper\x2efish\x1e\x7e/\x2econfig/fish/functions/fzf_configure_bindings\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/fzf\x2efish\x1e\x7e/\x2econfig/fish/completions/fzf_configure_bindings\x2efish +SETUVAR _fisher_plugins:jorgebucaran/fisher\x1epatrickf1/fzf\x2efish\x1eilancosman/tide\x40v6 +SETUVAR _fisher_upgraded_to_4_4:\x1d +SETUVAR _tide_left_items:pwd\x1egit\x1enewline\x1echaracter +SETUVAR _tide_prompt_114603:\x1b\x5bm\x1b\x5b49m\x40PWD\x40\x1b\x5bm\x20\x1e\x1b\x5b92m\u276e\x1e\x1b\x5bm\x20\x1b\x5b90\x3b49m4s\x1b\x5bm +SETUVAR _tide_prompt_34562:\x1b\x5bm\x1b\x5b49m\x40PWD\x40\x1b\x5bm\x20\x1e\x1b\x5b92m\u276e\x1e\x1b\x5bm\x20\x1b\x5b90\x3b49m17m\x2041s\x1b\x5bm +SETUVAR _tide_prompt_37046:\x1b\x5bm\x1b\x5b49m\x40PWD\x40\x1b\x5bm\x20\x1e\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\u276e +SETUVAR _tide_prompt_37209:\x1b\x5bm\x1b\x5b49m\x40PWD\x40\x1b\x5bm\x20\x1e\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\u276e +SETUVAR _tide_prompt_37745:\x1b\x5bm\x1b\x5b49m\x40PWD\x40\x1b\x5bm\x20\x1e\x1b\x5b38\x3b2\x3b95\x3b215\x3b0m\u276e\x1e\x1b\x5bm\x20\x1b\x5b38\x3b2\x3b95\x3b135\x3b135\x3b49m18\x3a57\x3a36\x1b\x5bm +SETUVAR _tide_prompt_38113:\x1b\x5bm\x1b\x5b97\x3b49m\uf303\x1b\x5b90m\x20\x1b\x5b49m\x40PWD\x40\x1b\x5bm\x20\x1e\x1b\x5b92m\u276e\x1e\x1b\x5bm\x20\x1b\x5b90\x3b49m18\x3a59\x3a05\x1b\x5bm +SETUVAR _tide_prompt_38389:\x1b\x5bm\x1b\x5b49m\x40PWD\x40\x1b\x5bm\x20\x1e\x1b\x5b92m\u276e\x1e\x1b\x5bm\x20\x1b\x5b90\x3b49m12s\x1b\x5bm +SETUVAR _tide_prompt_38826:\x1b\x5bm\x1b\x5b49m\x40PWD\x40\x1b\x5b90m\x20\x1b\x5b49m\x1b\x5b37m\x1b\x5b92mmain\x1b\x5b91m\x1b\x5b92m\x1b\x5b92m\x1b\x5b91m\x1b\x5b93m\x1b\x5b93m\x1b\x5b94m\x20\x3f2\x1b\x5bm\x20\x1e\x1b\x5b92m\u276e +SETUVAR _tide_prompt_39133:\x1b\x5bm\x1b\x5b49m\x40PWD\x40\x1b\x5bm\x20\x1e\x1b\x5b92m\u276e +SETUVAR _tide_right_items:status\x1ecmd_duration\x1econtext\x1ejobs\x1enode\x1epython\x1erustc\x1ejava\x1eruby\x1ego\x1enix_shell +SETUVAR fish_cursor_default:block +SETUVAR fish_cursor_replace_one:underscore +SETUVAR fish_greeting:\x1d +SETUVAR tide_aws_bg_color:normal +SETUVAR tide_aws_color:yellow +SETUVAR tide_aws_icon:\uf270 +SETUVAR tide_bun_bg_color:normal +SETUVAR tide_bun_color:white +SETUVAR tide_bun_icon:\U000f0cd3 +SETUVAR tide_character_color:brgreen +SETUVAR tide_character_color_failure:brred +SETUVAR tide_character_icon:\u276f +SETUVAR tide_character_vi_icon_default:\u276e +SETUVAR tide_character_vi_icon_replace:\u25b6 +SETUVAR tide_character_vi_icon_visual:V +SETUVAR tide_cmd_duration_bg_color:normal +SETUVAR tide_cmd_duration_color:brblack +SETUVAR tide_cmd_duration_decimals:0 +SETUVAR tide_cmd_duration_icon:\x1d +SETUVAR tide_cmd_duration_threshold:3000 +SETUVAR tide_context_always_display:false +SETUVAR tide_context_bg_color:normal +SETUVAR tide_context_color_default:yellow +SETUVAR tide_context_color_root:bryellow +SETUVAR tide_context_color_ssh:yellow +SETUVAR tide_context_hostname_parts:1 +SETUVAR tide_crystal_bg_color:normal +SETUVAR tide_crystal_color:brwhite +SETUVAR tide_crystal_icon:\ue62f +SETUVAR tide_direnv_bg_color:normal +SETUVAR tide_direnv_bg_color_denied:normal +SETUVAR tide_direnv_color:bryellow +SETUVAR tide_direnv_color_denied:brred +SETUVAR tide_direnv_icon:\u25bc +SETUVAR tide_distrobox_bg_color:normal +SETUVAR tide_distrobox_color:brmagenta +SETUVAR tide_distrobox_icon:\U000f01a7 +SETUVAR tide_docker_bg_color:normal +SETUVAR tide_docker_color:blue +SETUVAR tide_docker_default_contexts:default\x1ecolima +SETUVAR tide_docker_icon:\uf308 +SETUVAR tide_elixir_bg_color:normal +SETUVAR tide_elixir_color:magenta +SETUVAR tide_elixir_icon:\ue62d +SETUVAR tide_gcloud_bg_color:normal +SETUVAR tide_gcloud_color:blue +SETUVAR tide_gcloud_icon:\U000f02ad +SETUVAR tide_git_bg_color:normal +SETUVAR tide_git_bg_color_unstable:normal +SETUVAR tide_git_bg_color_urgent:normal +SETUVAR tide_git_color_branch:brgreen +SETUVAR tide_git_color_conflicted:brred +SETUVAR tide_git_color_dirty:bryellow +SETUVAR tide_git_color_operation:brred +SETUVAR tide_git_color_staged:bryellow +SETUVAR tide_git_color_stash:brgreen +SETUVAR tide_git_color_untracked:brblue +SETUVAR tide_git_color_upstream:brgreen +SETUVAR tide_git_icon:\x1d +SETUVAR tide_git_truncation_length:24 +SETUVAR tide_git_truncation_strategy:\x1d +SETUVAR tide_go_bg_color:normal +SETUVAR tide_go_color:brcyan +SETUVAR tide_go_icon:\ue627 +SETUVAR tide_java_bg_color:normal +SETUVAR tide_java_color:yellow +SETUVAR tide_java_icon:\ue256 +SETUVAR tide_jobs_bg_color:normal +SETUVAR tide_jobs_color:green +SETUVAR tide_jobs_icon:\uf013 +SETUVAR tide_jobs_number_threshold:1000 +SETUVAR tide_kubectl_bg_color:normal +SETUVAR tide_kubectl_color:blue +SETUVAR tide_kubectl_icon:\U000f10fe +SETUVAR tide_left_prompt_frame_enabled:false +SETUVAR tide_left_prompt_items:pwd\x1egit\x1enewline\x1echaracter +SETUVAR tide_left_prompt_prefix: +SETUVAR tide_left_prompt_separator_diff_color:\x20 +SETUVAR tide_left_prompt_separator_same_color:\x20 +SETUVAR tide_left_prompt_suffix:\x20 +SETUVAR tide_nix_shell_bg_color:normal +SETUVAR tide_nix_shell_color:brblue +SETUVAR tide_nix_shell_icon:\uf313 +SETUVAR tide_node_bg_color:normal +SETUVAR tide_node_color:green +SETUVAR tide_node_icon:\ue24f +SETUVAR tide_os_bg_color:normal +SETUVAR tide_os_color:brwhite +SETUVAR tide_os_icon:\uf303 +SETUVAR tide_php_bg_color:normal +SETUVAR tide_php_color:blue +SETUVAR tide_php_icon:\ue608 +SETUVAR tide_private_mode_bg_color:normal +SETUVAR tide_private_mode_color:brwhite +SETUVAR tide_private_mode_icon:\U000f05f9 +SETUVAR tide_prompt_add_newline_before:false +SETUVAR tide_prompt_color_frame_and_connection:brblack +SETUVAR tide_prompt_color_separator_same_color:brblack +SETUVAR tide_prompt_icon_connection:\x20 +SETUVAR tide_prompt_min_cols:34 +SETUVAR tide_prompt_pad_items:false +SETUVAR tide_prompt_transient_enabled:false +SETUVAR tide_pulumi_bg_color:normal +SETUVAR tide_pulumi_color:yellow +SETUVAR tide_pulumi_icon:\uf1b2 +SETUVAR tide_pwd_bg_color:normal +SETUVAR tide_pwd_color_anchors:brcyan +SETUVAR tide_pwd_color_dirs:cyan +SETUVAR tide_pwd_color_truncated_dirs:magenta +SETUVAR tide_pwd_icon:\x1d +SETUVAR tide_pwd_icon_home:\x1d +SETUVAR tide_pwd_icon_unwritable:\uf023 +SETUVAR tide_pwd_markers:\x2ebzr\x1e\x2ecitc\x1e\x2egit\x1e\x2ehg\x1e\x2enode\x2dversion\x1e\x2epython\x2dversion\x1e\x2eruby\x2dversion\x1e\x2eshorten_folder_marker\x1e\x2esvn\x1e\x2eterraform\x1ebun\x2elockb\x1eCargo\x2etoml\x1ecomposer\x2ejson\x1eCVS\x1ego\x2emod\x1epackage\x2ejson\x1ebuild\x2ezig +SETUVAR tide_python_bg_color:normal +SETUVAR tide_python_color:cyan +SETUVAR tide_python_icon:\U000f0320 +SETUVAR tide_right_prompt_frame_enabled:false +SETUVAR tide_right_prompt_items:status\x1ecmd_duration\x1econtext\x1ejobs\x1edirenv\x1ebun\x1enode\x1epython\x1erustc\x1ejava\x1ephp\x1epulumi\x1eruby\x1ego\x1egcloud\x1ekubectl\x1edistrobox\x1etoolbox\x1eterraform\x1eaws\x1enix_shell\x1ecrystal\x1eelixir\x1ezig +SETUVAR tide_right_prompt_prefix:\x20 +SETUVAR tide_right_prompt_separator_diff_color:\x20 +SETUVAR tide_right_prompt_separator_same_color:\x20 +SETUVAR tide_right_prompt_suffix: +SETUVAR tide_ruby_bg_color:normal +SETUVAR tide_ruby_color:red +SETUVAR tide_ruby_icon:\ue23e +SETUVAR tide_rustc_bg_color:normal +SETUVAR tide_rustc_color:red +SETUVAR tide_rustc_icon:\ue7a8 +SETUVAR tide_shlvl_bg_color:normal +SETUVAR tide_shlvl_color:yellow +SETUVAR tide_shlvl_icon:\uf120 +SETUVAR tide_shlvl_threshold:1 +SETUVAR tide_status_bg_color:normal +SETUVAR tide_status_bg_color_failure:normal +SETUVAR tide_status_color:green +SETUVAR tide_status_color_failure:red +SETUVAR tide_status_icon:\u2714 +SETUVAR tide_status_icon_failure:\u2718 +SETUVAR tide_terraform_bg_color:normal +SETUVAR tide_terraform_color:magenta +SETUVAR tide_terraform_icon:\U000f1062 +SETUVAR tide_time_bg_color:normal +SETUVAR tide_time_color:brblack +SETUVAR tide_time_format: +SETUVAR tide_toolbox_bg_color:normal +SETUVAR tide_toolbox_color:magenta +SETUVAR tide_toolbox_icon:\ue24f +SETUVAR tide_vi_mode_bg_color_default:normal +SETUVAR tide_vi_mode_bg_color_insert:normal +SETUVAR tide_vi_mode_bg_color_replace:normal +SETUVAR tide_vi_mode_bg_color_visual:normal +SETUVAR tide_vi_mode_color_default:white +SETUVAR tide_vi_mode_color_insert:cyan +SETUVAR tide_vi_mode_color_replace:green +SETUVAR tide_vi_mode_color_visual:yellow +SETUVAR tide_vi_mode_icon_default:D +SETUVAR tide_vi_mode_icon_insert:I +SETUVAR tide_vi_mode_icon_replace:R +SETUVAR tide_vi_mode_icon_visual:V +SETUVAR tide_zig_bg_color:normal +SETUVAR tide_zig_color:yellow +SETUVAR tide_zig_icon:\ue6a9 diff --git a/config/fish/functions/ffcolor.fish b/config/fish/functions/ffcolor.fish new file mode 100644 index 0000000..1356815 --- /dev/null +++ b/config/fish/functions/ffcolor.fish @@ -0,0 +1,3 @@ +function ffcolor --wraps='--config /home/unconfer/.config/fastfetch/color.jsonc' --description 'alias ffcolor=--config /home/unconfer/.config/fastfetch/color.jsonc' + --config /home/unconfer/.config/fastfetch/color.jsonc $argv +end diff --git a/config/fish/functions/fish_prompt.fish.bak b/config/fish/functions/fish_prompt.fish.bak index 670976c..d58bf64 100644 --- a/config/fish/functions/fish_prompt.fish.bak +++ b/config/fish/functions/fish_prompt.fish.bak @@ -1,31 +1,30 @@ function fish_prompt --description 'Write out the prompt' - set -l last_pipestatus $pipestatus - set -lx __fish_last_status $status # Export for __fish_print_pipestatus. - set -l normal (set_color normal) - set -q fish_color_status - or set -g fish_color_status red - - # Color the prompt differently when we're root - set -l color_cwd $fish_color_cwd - set -l suffix '>' - if functions -q fish_is_root_user; and fish_is_root_user - if set -q fish_color_cwd_root - set color_cwd $fish_color_cwd_root - end - set suffix '#' + set -l last_status $status + set -l normal (set_color normal) + set -l status_color (set_color brgreen) + set -l cwd_color (set_color $fish_color_cwd) + set -l vcs_color (set_color brpurple) + set -l prompt_status "" + + # Since we display the prompt on a new line allow the directory names to be longer. + set -q fish_prompt_pwd_dir_length + or set -lx fish_prompt_pwd_dir_length 0 + + # Color the prompt differently when we're root + set -l suffix '❯' + if functions -q fish_is_root_user; and fish_is_root_user + if set -q fish_color_cwd_root + set cwd_color (set_color $fish_color_cwd_root) end - - # Write pipestatus - # If the status was carried over (if no command is issued or if `set` leaves the status untouched), don't bold it. - set -l bold_flag --bold - set -q __fish_prompt_status_generation; or set -g __fish_prompt_status_generation $status_generation - if test $__fish_prompt_status_generation = $status_generation - set bold_flag - end - set __fish_prompt_status_generation $status_generation - set -l status_color (set_color $fish_color_status) - set -l statusb_color (set_color $bold_flag $fish_color_status) - set -l prompt_status (__fish_print_pipestatus "[" "]" "|" "$status_color" "$statusb_color" $last_pipestatus) - - echo -n -s (prompt_login)' ' (set_color $color_cwd) (prompt_pwd) $normal (fish_vcs_prompt) $normal " "$prompt_status $suffix " " + set suffix '#' + end + + # Color the prompt in red on error + if test $last_status -ne 0 + set status_color (set_color $fish_color_error) + set prompt_status $status_color "[" $last_status "]" $normal + end + + echo -s (prompt_login) ' ' $cwd_color (prompt_pwd) $vcs_color (fish_vcs_prompt) $normal ' ' $prompt_status + echo -n -s $status_color $suffix ' ' $normal end diff --git a/config/fish/functions/lt.fish b/config/fish/functions/lt.fish new file mode 100644 index 0000000..028c421 --- /dev/null +++ b/config/fish/functions/lt.fish @@ -0,0 +1,3 @@ +function lt --wraps='eza --tree' --description 'alias lt=eza --tree' + eza --tree $argv +end diff --git a/config/fish/functions/p.fish b/config/fish/functions/p.fish index 8dbe5a1..bea9037 100644 --- a/config/fish/functions/p.fish +++ b/config/fish/functions/p.fish @@ -1,3 +1,3 @@ -function p --wraps='paru -Syu' --description 'alias p=paru -Syu' - paru -Syu $argv +function p --wraps=paru --description 'alias p=paru' + paru $argv end diff --git a/config/fish/functions/tide/configure/icons.fish b/config/fish/functions/tide/configure/icons.fish new file mode 100644 index 0000000..87d5f7f --- /dev/null +++ b/config/fish/functions/tide/configure/icons.fish @@ -0,0 +1,41 @@ +tide_aws_icon  # Actual aws glyph is harder to see +tide_bun_icon 󰳓 +tide_character_icon ❯ +tide_character_vi_icon_default ❯ +tide_character_vi_icon_replace ▶ +tide_character_vi_icon_visual V +tide_cmd_duration_icon +tide_crystal_icon  +tide_direnv_icon ▼ +tide_distrobox_icon 󰆧 +tide_docker_icon  +tide_elixir_icon  +tide_gcloud_icon 󰊭 # Actual google cloud glyph is harder to see +tide_git_icon +tide_go_icon  +tide_java_icon  +tide_jobs_icon  +tide_kubectl_icon 󱃾 +tide_nix_shell_icon  +tide_node_icon  # Actual nodejs glyph is harder to see +tide_os_icon $os_branding_icon +tide_php_icon  +tide_private_mode_icon 󰗹 +tide_prompt_icon_connection ' ' +tide_pulumi_icon  +tide_pwd_icon +tide_pwd_icon_home +tide_pwd_icon_unwritable  +tide_python_icon 󰌠 +tide_ruby_icon  +tide_rustc_icon  +tide_shlvl_icon  +tide_status_icon ✔ +tide_status_icon_failure ✘ +tide_terraform_icon 󱁢 +tide_toolbox_icon  +tide_vi_mode_icon_default D +tide_vi_mode_icon_insert I +tide_vi_mode_icon_replace R +tide_vi_mode_icon_visual V +tide_zig_icon  diff --git a/config/fish/functions/vpn-debug.fish b/config/fish/functions/vpn-debug.fish new file mode 100644 index 0000000..5c85c2b --- /dev/null +++ b/config/fish/functions/vpn-debug.fish @@ -0,0 +1,3 @@ +function vpn-debug --wraps='journalctl -u vpn-singbox.service -f' --description 'alias vpn-debug=journalctl -u vpn-singbox.service -f' + journalctl -u vpn-singbox.service -f $argv +end diff --git a/config/fish/functions/vpn.fish b/config/fish/functions/vpn.fish index 822acdd..2805a04 100644 --- a/config/fish/functions/vpn.fish +++ b/config/fish/functions/vpn.fish @@ -1,3 +1,3 @@ -function vpn --wraps='sudo ~/./sing-box-sh' --description 'alias vpn=sudo ~/./sing-box-sh' - sudo ~/./sing-box-sh $argv +function vpn --wraps='bash ~/.sing-box/sing-box-sh' --description 'alias vpn=bash ~/.sing-box/sing-box-sh' + bash ~/.sing-box/sing-box-sh $argv end diff --git a/config/foot/dank-colors.ini b/config/foot/dank-colors.ini new file mode 100644 index 0000000..693ccfe --- /dev/null +++ b/config/foot/dank-colors.ini @@ -0,0 +1,25 @@ +[colors-dark] +foreground=f0f0f0 +background=09070d +selection-foreground=f0f0f0 +selection-background=745b8c +cursor = 09070d b8a8f0 + +regular0=130f1a +regular1=ff7290 +regular2=78f090 +regular3=ffd972 +regular4=a491e3 +regular5=3f316f +regular6=b8a8f0 +regular7=f0ecfc +bright0=92909c +bright1=ff9fb3 +bright2=a5ffb7 +bright3=ffe7a5 +bright4=ccbdff +bright5=d5c9ff +bright6=e4dcff +bright7=faf8ff + +dim-blend-towards=black diff --git a/config/foot/foot.ini b/config/foot/foot.ini index b158360..da660f4 100644 --- a/config/foot/foot.ini +++ b/config/foot/foot.ini @@ -4,12 +4,13 @@ # term=foot (or xterm-256color if built with -Dterminfo=disabled) # login-shell=no -#a app-id=foot # globally set wayland app-id. Default values are "foot" and "footclient" for desktop and server mode -# title=foot +#app-id=foot +#title=foot locked-title=no -include=~/.config/foot/themes/theme.ini -#font=IosevkaTerm NF:size=15 -font=IosevkaTerm NF:size=15:weight=semibold +include=~/.config/foot/themes/theme.ini +font=monospace +font=IosevkaTerm Nerd Font:size=15:weight=semibold +#font=Noto Color Emoji:size=12 # font-bold= # font-italic= # font-bold-italic= @@ -30,7 +31,7 @@ dpi-aware=yes # initial-window-size-chars= # initial-window-mode=windowed # pad=0x0 center-when-maximized-and-fullscreen -pad=7x7 +pad=10x10 # resize-by-cells=yes # resize-keep-grid=yes # resize-delay-ms=100 @@ -51,10 +52,10 @@ pad=7x7 # osc52=enabled # disabled|copy-enabled|paste-enabled|enabled [bell] -# system=yes -# urgent=no -# notify=no -# visual=no +system=yes +urgent=yes +notify=yes +visual=yes # command= # command-focused=no @@ -271,6 +272,7 @@ pad=7x7 [text-bindings] # \x03=Mod4+c # Map Super+c -> Ctrl+c + [mouse-bindings] # scrollback-up-mouse=BTN_WHEEL_BACK # scrollback-down-mouse=BTN_WHEEL_FORWARD diff --git a/config/fsel/config.toml b/config/fsel/config.toml new file mode 100644 index 0000000..f1e9f01 --- /dev/null +++ b/config/fsel/config.toml @@ -0,0 +1,47 @@ +# Colors +highlight_color = "LightBlue" +cursor = "█" + +# App launcher +terminal_launcher = "kitty -e" + +[app_launcher] +filter_desktop = true # Filter apps by desktop environment +list_executables_in_path = false # Show CLI tools from $PATH +hide_before_typing = false # Hide list until you start typing +match_mode = "fuzzy" # "fuzzy" or "exact" +confirm_first_launch = false # Confirm before launching new apps with -p + +# Pin/favorite settings +pin_color = "rgb(255,165,0)" # Color for pin icon (orange) +pin_icon = "📌" # Icon for pinned apps + + +# UI customization +rounded_borders = true +main_border_color = "White" +apps_border_color = "White" +input_border_color = "White" + +# Layout (percentages) +title_panel_height_percent = 30 # Top panel height (10-70%) +input_panel_height = 3 # Input panel height in lines +title_panel_position = "top" # "top", "middle", or "bottom" + +# Dmenu mode +[dmenu] +password_character = "*" +exit_if_empty = false + +# Clipboard mode +[cclip] +image_preview = true +hide_inline_image_message = false + +# Custom keybinds (optional) +[keybinds] +up = ["up", { key = "k", modifiers = "ctrl" }] +down = ["down", { key = "j", modifiers = "ctrl" }] +select = ["enter"] +exit = ["esc", { key = "q", modifiers = "ctrl" }] +pin = [{ key = "space", modifiers = "ctrl" }] diff --git a/config/fuzzel/fuzzel.ini b/config/fuzzel/fuzzel.ini index 8b2ae4d..e49e59c 100644 --- a/config/fuzzel/fuzzel.ini +++ b/config/fuzzel/fuzzel.ini @@ -2,12 +2,12 @@ font=IosevkaTerm NFP ExtraBold:size=15 dpi-aware=auto # use-bold=no -# prompt="> " -# placeholder= +prompt=" " +placeholder="what do you wanna run?" icon-theme=hicolor -# icons-enabled=yes +icons-enabled=yes # hide-before-typing=no -# fields=filename,name,generic +fields=filename,name,generic # password-character=* # filter-desktop=no match-mode=fzf @@ -15,25 +15,25 @@ icon-theme=hicolor # match-counter=no # delayed-filter-ms=300 # delayed-filter-limit=20000 -# show-actions=no +show-actions=no terminal=kitty -e # launch-prefix= -# list-executables-in-path=no +list-executables-in-path=no anchor=center -# x-margin=0 -# y-margin=0 -# lines=15 -# width=30 -tabs=4 -horizontal-pad=40 -# vertical-pad=8 -# inner-pad=0 +x-margin=0 +y-margin=0 +lines=15 +width=35 +tabs=10 +horizontal-pad=15 +vertical-pad=15 +inner-pad=10 -# image-size-ratio=0.5 +image-size-ratio=0.75 -# line-height= -# letter-spacing=0 +line-height=23 +letter-spacing=0 # layer=overlay # keyboard-focus=on-demand @@ -46,22 +46,22 @@ horizontal-pad=40 [colors] background=07090Bff -text=c1d6d6ff - prompt=E2F9F9ff -placeholder=07090Bff - input=e2f9f9ff - match=07090bff -selection=e2f9f9ff -selection-text=5A6B7Eff -selection-match=5A6B7Eff +text=EEF7FDff +prompt=EEF7FDff +placeholder=5C6871ff +input=e2f9f9ff +match=82D1B9ff +selection=EEF7FDff +selection-text=07090Bff +selection-match=25C39Fff counter=e2f9f9ff - border=c1d6d6ff +border=EEF7FDff [border] width=2 - radius=8 - #selection-radius=01 + radius=0 + selection-radius=01 [dmenu] # mode=text # text|index diff --git a/config/hyprwave/config.conf b/config/hyprwave/config.conf index d1fcd60..948b7c9 100644 --- a/config/hyprwave/config.conf +++ b/config/hyprwave/config.conf @@ -3,7 +3,7 @@ [General] # Edge to anchor HyprWave to # Options: right, left, top, bottom -edge = top +edge = left # Margin from the screen edge (in pixels) @@ -18,7 +18,7 @@ idle_timeout= 1 exclusive_zone = -1 [Notifications] -enabled = true +enabled = false now_playing = true [Visualizer] diff --git a/config/hyprwhspr/config.json b/config/hyprwhspr/config.json new file mode 100644 index 0000000..e2dbde5 --- /dev/null +++ b/config/hyprwhspr/config.json @@ -0,0 +1,9 @@ +{ + "$schema": "https://raw.githubusercontent.com/goodroot/hyprwhspr/main/share/config.schema.json", + "use_hypr_bindings": true, + "primary_shortcut": "SUPER+ALT+D", + "transcription_backend": "faster-whisper", + "paste_mode": "ctrl_shift", + "recording_mode": "auto", + "language": "ru" +} diff --git a/config/hyprwhspr/mic_osd.pid b/config/hyprwhspr/mic_osd.pid new file mode 100644 index 0000000..84a3f85 --- /dev/null +++ b/config/hyprwhspr/mic_osd.pid @@ -0,0 +1 @@ +1774 \ No newline at end of file diff --git a/config/i3/config b/config/i3/config new file mode 100644 index 0000000..2121f79 --- /dev/null +++ b/config/i3/config @@ -0,0 +1,190 @@ +# This file has been auto-generated by i3-config-wizard(1). +# It will not be overwritten, so edit it as you like. +# +# Should you change your keyboard layout some time, delete +# this file and re-run i3-config-wizard(1). +# + +# i3 config file (v4) +# +# Please see https://i3wm.org/docs/userguide.html for a complete reference! + +set $mod Mod4 + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +font pango:monospace 8 + +# This font is widely installed, provides lots of unicode glyphs, right-to-left +# text rendering and scalability on retina/hidpi displays (thanks to pango). +#font pango:DejaVu Sans Mono 8 + +# Start XDG autostart .desktop files using dex. See also +# https://wiki.archlinux.org/index.php/XDG_Autostart +exec --no-startup-id dex --autostart --environment i3 + +# The combination of xss-lock, nm-applet and pactl is a popular choice, so +# they are included here as an example. Modify as you see fit. + +# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the +# screen before suspend. Use loginctl lock-session to lock your screen. +exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork + +# NetworkManager is the most popular way to manage wireless networks on Linux, +# and nm-applet is a desktop environment-independent system tray GUI for it. +exec --no-startup-id nm-applet + +# Use pactl to adjust volume in PulseAudio. +set $refresh_i3status killall -SIGUSR1 i3status +bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status +bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status +bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status +bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status + +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +# move tiling windows via drag & drop by left-clicking into the title bar, +# or left-clicking anywhere into the window while holding the floating modifier. +tiling_drag modifier titlebar + +# start a terminal +bindsym $mod+Return exec kitty + +# kill focused window +bindsym $mod+Shift+q kill + +# start dmenu (a program launcher) +bindsym $mod+d exec --no-startup-id dmenu_run +# A more modern dmenu replacement is rofi: +# bindcode $mod+40 exec "rofi -modi drun,run -show drun" +# There also is i3-dmenu-desktop which only displays applications shipping a +# .desktop file. It is a wrapper around dmenu, so you need that installed. +# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+semicolon focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+j move left +bindsym $mod+Shift+k move down +bindsym $mod+Shift+l move up +bindsym $mod+Shift+semicolon move right + +# alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# split in horizontal orientation +bindsym $mod+h split h + +# split in vertical orientation +bindsym $mod+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# focus the parent container +bindsym $mod+a focus parent + +# focus the child container +#bindsym $mod+d focus child + +# Define names for default workspaces for which we configure key bindings later on. +# We use variables to avoid repeating the names in multiple places. +set $ws1 "1" +set $ws2 "2" +set $ws3 "3" +set $ws4 "4" +set $ws5 "5" +set $ws6 "6" +set $ws7 "7" +set $ws8 "8" +set $ws9 "9" +set $ws10 "10" + +# switch to workspace +bindsym $mod+1 workspace number $ws1 +bindsym $mod+2 workspace number $ws2 +bindsym $mod+3 workspace number $ws3 +bindsym $mod+4 workspace number $ws4 +bindsym $mod+5 workspace number $ws5 +bindsym $mod+6 workspace number $ws6 +bindsym $mod+7 workspace number $ws7 +bindsym $mod+8 workspace number $ws8 +bindsym $mod+9 workspace number $ws9 +bindsym $mod+0 workspace number $ws10 + +# move focused container to workspace +bindsym $mod+Shift+1 move container to workspace number $ws1 +bindsym $mod+Shift+2 move container to workspace number $ws2 +bindsym $mod+Shift+3 move container to workspace number $ws3 +bindsym $mod+Shift+4 move container to workspace number $ws4 +bindsym $mod+Shift+5 move container to workspace number $ws5 +bindsym $mod+Shift+6 move container to workspace number $ws6 +bindsym $mod+Shift+7 move container to workspace number $ws7 +bindsym $mod+Shift+8 move container to workspace number $ws8 +bindsym $mod+Shift+9 move container to workspace number $ws9 +bindsym $mod+Shift+0 move container to workspace number $ws10 + +# reload the configuration file +bindsym $mod+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Shift+r restart +# exit i3 (logs you out of your X session) +bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'" + +# resize window (you can also use the mouse for that) +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym j resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym l resize shrink height 10 px or 10 ppt + bindsym semicolon resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape or $mod+r + bindsym Return mode "default" + bindsym Escape mode "default" + bindsym $mod+r mode "default" +} + +bindsym $mod+r mode "resize" + +# Start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) +bar { + status_command i3status +} diff --git a/config/ironbar/config.json b/config/ironbar/config.json new file mode 100644 index 0000000..64d353c --- /dev/null +++ b/config/ironbar/config.json @@ -0,0 +1,115 @@ + +{ + + "anchor_to_edges": true, + "exclusive_zone": true, + "position": "left", + "height": 30, + "start": [ + { + "type": "custom", + "bar": [ + { + "type": "button", + "name": "my-btn", + "class": "my-btn-class", + "on_click": "!walker", + "widgets": [ + { + "type": "label", + "label": " ", + "size": 16 + } + ] + } + ] + }, + { + "type": "custom", + "bar": [ + { + "type": "button", + "name": "hyprwave", + "class": "hyprwave-class", + "on_click": "!hyprwave-toggle visibility", + "widgets": [ + { + "type": "label", + "label": " ", + "size": 16 + } + ] + } + ] + }, + { + "type": "notifications", + "show_count": true, + "icons": { + "closed_none": "󰍥 ", + "closed_some": "󱥂 ", + "closed_dnd": "󱅯 ", + "open_none": "󰍡 ", + "open_some": "󱥁 ", + "open_dnd": "󱅮 " + } + }, + + + { + "type": "focused", + "show_icon": true, + "show_title": false, + "icon_size": 32, + "truncate": "end", + "height": 30 + } + ], + "center": [ + { + "type": "workspaces", + "format": "{index}", + "on_scroll_up": "niri msg action focus-workspace-up", + "on_scroll_down": "niri msg action focus-workspace-down", + "on_click_right": "niri msg action toggle-overview", + "smooth_scroll_speed": 5.0 + } + ], + "end": [ + + + { + "type": "tray", + "icon_size": 16, + "direction": "v" + }, + { + "type": "custom", + "bar": [ + { + "type": "button", + "name": "pomo", + "class": "pomo-class", + "on_click": "!~/.config/ironbar/scripts/pomo", + "widgets": [ + { + "type": "label", + "label": "  ", + "size": 16 + } + ] + } + ] + }, + + { + "type": "clock", + + "format": "%H\n%M\n\n%d\n%m\n%y", + "orientation": "h", + "justify": "center" + + } + + ] +} diff --git a/config/ironbar/schema-v0.18.0.json b/config/ironbar/schema-v0.18.0.json new file mode 100644 index 0000000..515e14e --- /dev/null +++ b/config/ironbar/schema-v0.18.0.json @@ -0,0 +1,6374 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Config", + "description": "The following is a list of all top-level bar config options.\n\nThese options can either be written at the very top object of your config,\nor within an object in the [monitors](#monitors) config,\ndepending on your [use-case](#2-pick-your-use-case).", + "type": "object", + "properties": { + "anchor_to_edges": { + "description": "Whether to anchor the bar to the edges of the screen.\nSetting to false centers the bar.\n\n**Default**: `true`", + "type": "boolean", + "default": true + }, + "autohide": { + "description": "The duration in milliseconds before the bar is hidden after the cursor leaves.\nLeave unset to disable auto-hide behaviour.\n\n**Default**: `null`", + "type": [ + "integer", + "null" + ], + "format": "uint64", + "default": null, + "minimum": 0 + }, + "center": { + "description": "An array of modules to append to the center of the bar.\n\n**Default**: `[]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/$defs/ModuleConfig" + } + }, + "double_click_time": { + "description": "The time in milliseconds to wait for a double-click.\nCan be set to a number (e.g., `250`) or `\"gtk\"` to use GTK's setting.\n\n**Default**: `250`", + "$ref": "#/$defs/DoubleClickTime" + }, + "end": { + "description": "An array of modules to append to the end of the bar.\nDepending on the orientation, this is either the bottom or right edge.\n\n**Default**: `[]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/$defs/ModuleConfig" + } + }, + "exclusive_zone": { + "description": "Whether the bar should reserve an exclusive zone around it.\n\nWhen true, this prevents windows from rendering in the same space\nas the bar, causing them to shift.\n\n**Default**: `true` unless `start_hidden` is set.", + "type": [ + "boolean", + "null" + ], + "default": null + }, + "height": { + "description": "The bar's height in pixels.\n\nNote that GTK treats this as a target minimum,\nand if content inside the bar is over this,\nit will automatically expand to fit.\n\n**Default**: `42`", + "type": "integer", + "format": "int32", + "default": 42 + }, + "icon_overrides": { + "description": "Map of app IDs (or classes) to icon names,\noverriding the app's default icon.\n\n**Default**: `{}`", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "default": {} + }, + "icon_theme": { + "description": "The name of the GTK icon theme to use.\nLeave unset to use the default system theme.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ], + "default": null + }, + "ironvar_defaults": { + "description": "A map of [ironvar](ironvar) keys and values\nto initialize Ironbar with on startup.\n\n**Default**: `{}`\n\n# Example\n\nThe following initializes an ironvar called `foo` set to `bar` on startup:\n\n```corn\n{ ironvar_defaults.foo = \"bar\" }\n```\n\nThe variable can then be immediately fetched without needing to be manually set:\n\n```sh\n$ ironbar get foo\nok\nbar\n```", + "type": [ + "object", + "null" + ], + "additionalProperties": { + "type": "string" + }, + "default": null + }, + "layer": { + "description": "The layer-shell layer to place the bar on.\n\nTaken from the\n[wlr_layer_shell](https://wayland.app/protocols/wlr-layer-shell-unstable-v1#zwlr_layer_shell_v1:enum:layer) definition:\n\n> These values indicate which layers a surface can be rendered in.\n> They are ordered by z depth, bottom-most first.\n> Traditional shell surfaces will typically be rendered between the bottom and top layers.\n> Fullscreen shell surfaces are typically rendered at the top layer.\n> Multiple surfaces can share a single layer, and ordering within a single layer is undefined.\n\n**Valid options**: `background`, `bottom`, `top`, `overlay`\n
\n**Default**: `top`", + "type": "string", + "enum": [ + "background", + "bottom", + "top", + "overlay" + ] + }, + "margin": { + "description": "The margin to use on each side of the bar, in pixels.\nObject which takes `top`, `bottom`, `left` and `right` keys.\n\n**Default**: `0` on all sides.\n\n# Example\n\nThe following would set a 10px margin around each edge.\n\n```corn\n{\n margin.top = 10\n margin.bottom = 10\n margin.left = 10\n margin.right = 10\n}\n```", + "$ref": "#/$defs/MarginConfig" + }, + "monitors": { + "description": "A map of monitor names to configs.\nMonitor names can be supplied in two formats:\n\n- Connector names (`DP-1`, `HDMI-2`)\n- Descriptions (`ASUSTek COMPUTER INC PA278QV M4LMQS060475`).\n A `starts_with` is applied allowing you to omit part of the description if convenient.\n\nThe config values can be either:\n\n- a single object, which denotes a single bar for that monitor,\n- an array of multiple objects, which denotes multiple for that monitor.\n\nProviding this option overrides the single, global `bar` option.", + "type": [ + "object", + "null" + ], + "additionalProperties": { + "$ref": "#/$defs/MonitorConfig" + } + }, + "name": { + "description": "A unique identifier for the bar, used for controlling it over IPC.\nIf not set, uses a generated integer suffix.\n\n**Default**: `bar-n`", + "type": [ + "string", + "null" + ], + "default": null + }, + "popup_autohide": { + "description": "Whether to enable autohide behaviour on the popup.\n\nWhen enabled, clicking outside the popup will close it.\nOn some compositors, this may also aggressively steal mouse/keyboard focus.\n\n**Default**: `false`", + "type": "boolean", + "default": false + }, + "popup_gap": { + "description": "The size of the gap in pixels\nbetween the bar and the popup window.\n\n**Default**: `5`", + "type": "integer", + "format": "int32", + "default": 5 + }, + "position": { + "description": "The bar's position on screen.\n\n**Valid options**: `top`, `bottom`, `left`, `right`\n
\n**Default**: `bottom`", + "$ref": "#/$defs/BarPosition" + }, + "start": { + "description": "An array of modules to append to the start of the bar.\nDepending on the orientation, this is either the top of the left edge.\n\n**Default**: `[]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/$defs/ModuleConfig" + } + }, + "start_hidden": { + "description": "Whether the bar should be hidden when Ironbar starts.\n\n**Default**: `false`, unless `autohide` is set.", + "type": [ + "boolean", + "null" + ], + "default": null + } + }, + "$defs": { + "AdapterStatus": { + "type": "object", + "properties": { + "disabled": { + "description": "The value of `{adapter_status}` formatting token when adapter is disabled.\n\n**Default**: `\"Bluetooth disabled\"`", + "type": "string", + "default": "Bluetooth disabled" + }, + "disabling": { + "description": "The value of `{adapter_status}` formatting token when adapter is disabling.\n\n**Default**: `\"Disabling Bluetooth...\"`", + "type": "string", + "default": "Disabling Bluetooth..." + }, + "enabled": { + "description": "The value of `{adapter_status}` formatting token when adapter is enabled.\n\n**Default**: `\"Bluetooth enabled\"`", + "type": "string", + "default": "Bluetooth enabled" + }, + "enabling": { + "description": "The value of `{adapter_status}` formatting token when adapter is enabling.\n\n**Default**: `\"Enabling Bluetooth...\"`", + "type": "string", + "default": "Enabling Bluetooth..." + }, + "not_found": { + "description": "The value of `{adapter_status}` formatting token when adapter not found.\n\n**Default**: `\"No Bluetooth adapters found\"`", + "type": "string", + "default": "No Bluetooth adapters found" + } + } + }, + "BarConfig": { + "description": "The following is a list of all top-level bar config options.\n\nThese options can either be written at the very top object of your config,\nor within an object in the [monitors](#monitors) config,\ndepending on your [use-case](#2-pick-your-use-case).", + "type": "object", + "properties": { + "anchor_to_edges": { + "description": "Whether to anchor the bar to the edges of the screen.\nSetting to false centers the bar.\n\n**Default**: `true`", + "type": "boolean", + "default": true + }, + "autohide": { + "description": "The duration in milliseconds before the bar is hidden after the cursor leaves.\nLeave unset to disable auto-hide behaviour.\n\n**Default**: `null`", + "type": [ + "integer", + "null" + ], + "format": "uint64", + "default": null, + "minimum": 0 + }, + "center": { + "description": "An array of modules to append to the center of the bar.\n\n**Default**: `[]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/$defs/ModuleConfig" + } + }, + "end": { + "description": "An array of modules to append to the end of the bar.\nDepending on the orientation, this is either the bottom or right edge.\n\n**Default**: `[]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/$defs/ModuleConfig" + } + }, + "exclusive_zone": { + "description": "Whether the bar should reserve an exclusive zone around it.\n\nWhen true, this prevents windows from rendering in the same space\nas the bar, causing them to shift.\n\n**Default**: `true` unless `start_hidden` is set.", + "type": [ + "boolean", + "null" + ], + "default": null + }, + "height": { + "description": "The bar's height in pixels.\n\nNote that GTK treats this as a target minimum,\nand if content inside the bar is over this,\nit will automatically expand to fit.\n\n**Default**: `42`", + "type": "integer", + "format": "int32", + "default": 42 + }, + "layer": { + "description": "The layer-shell layer to place the bar on.\n\nTaken from the\n[wlr_layer_shell](https://wayland.app/protocols/wlr-layer-shell-unstable-v1#zwlr_layer_shell_v1:enum:layer) definition:\n\n> These values indicate which layers a surface can be rendered in.\n> They are ordered by z depth, bottom-most first.\n> Traditional shell surfaces will typically be rendered between the bottom and top layers.\n> Fullscreen shell surfaces are typically rendered at the top layer.\n> Multiple surfaces can share a single layer, and ordering within a single layer is undefined.\n\n**Valid options**: `background`, `bottom`, `top`, `overlay`\n
\n**Default**: `top`", + "type": "string", + "enum": [ + "background", + "bottom", + "top", + "overlay" + ] + }, + "margin": { + "description": "The margin to use on each side of the bar, in pixels.\nObject which takes `top`, `bottom`, `left` and `right` keys.\n\n**Default**: `0` on all sides.\n\n# Example\n\nThe following would set a 10px margin around each edge.\n\n```corn\n{\n margin.top = 10\n margin.bottom = 10\n margin.left = 10\n margin.right = 10\n}\n```", + "$ref": "#/$defs/MarginConfig" + }, + "name": { + "description": "A unique identifier for the bar, used for controlling it over IPC.\nIf not set, uses a generated integer suffix.\n\n**Default**: `bar-n`", + "type": [ + "string", + "null" + ], + "default": null + }, + "popup_autohide": { + "description": "Whether to enable autohide behaviour on the popup.\n\nWhen enabled, clicking outside the popup will close it.\nOn some compositors, this may also aggressively steal mouse/keyboard focus.\n\n**Default**: `false`", + "type": "boolean", + "default": false + }, + "popup_gap": { + "description": "The size of the gap in pixels\nbetween the bar and the popup window.\n\n**Default**: `5`", + "type": "integer", + "format": "int32", + "default": 5 + }, + "position": { + "description": "The bar's position on screen.\n\n**Valid options**: `top`, `bottom`, `left`, `right`\n
\n**Default**: `bottom`", + "$ref": "#/$defs/BarPosition" + }, + "start": { + "description": "An array of modules to append to the start of the bar.\nDepending on the orientation, this is either the top of the left edge.\n\n**Default**: `[]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/$defs/ModuleConfig" + } + }, + "start_hidden": { + "description": "Whether the bar should be hidden when Ironbar starts.\n\n**Default**: `false`, unless `autohide` is set.", + "type": [ + "boolean", + "null" + ], + "default": null + } + } + }, + "BarPosition": { + "type": "string", + "enum": [ + "top", + "bottom", + "left", + "right" + ] + }, + "BatteryModule": { + "description": "The following are module-level options which are present on **all** modules.\n\nEach module also provides options specific to its type.\nFor details on those, check the relevant module documentation.\n\nFor information on the Script type, and embedding scripts in strings,\nsee [here](script).\nFor information on styling, please see the [styling guide](styling-guide).", + "type": "object", + "properties": { + "class": { + "description": "Sets one or more CSS classes,\nallowing you to target it in CSS using `.class`.\n\nUnlike [name](#name), the `class` property is not expected to be unique.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "disable_popup": { + "description": "Prevents the popup from opening on-click for this widget.", + "type": "boolean", + "default": false + }, + "format": { + "description": "The format string to use for the widget button label.\nFor available tokens, see [below](#formatting-tokens).\n\n**Default**: `{percentage}%`", + "type": "string", + "default": "{percentage}%" + }, + "icon_size": { + "description": "The size to render the icon at, in pixels.\n\n**Default**: `24`", + "type": "integer", + "format": "int32", + "default": 24 + }, + "justify": { + "description": "The justification (alignment) of the widget text shown on the bar.\n\n**Valid options**: `left`, `right`, `center`, `fill`\n
\n**Default**: `left`", + "$ref": "#/$defs/ModuleJustification" + }, + "name": { + "description": "Sets the unique widget name,\nallowing you to target it in CSS using `#name`.\n\nIt is best practise (although not required) to ensure that the value is\nglobally unique throughout the Ironbar instance\nto avoid clashes.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "on_click_left": { + "description": "A [script](scripts) to run when the module is left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_left_double": { + "description": "A [script](scripts) to run when the module is double-left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle": { + "description": "A [script](scripts) to run when the module is middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_click_middle = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle_double": { + "description": "A [script](scripts) to run when the module is double-middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_middle_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right": { + "description": "A [script](scripts) to run when the module is right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n/// # Example\n\n```corn\n{ on_click_right = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right_double": { + "description": "A [script](scripts) to run when the module is double-right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_right_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_enter": { + "description": "A [script](scripts) to run when the cursor begins hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_enter = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_exit": { + "description": "A [script](scripts) to run when the cursor stops hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_exit = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_down": { + "description": "A [script](scripts) to run when the module is scrolled down on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_down = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_up": { + "description": "A [script](scripts) to run when the module is scrolled up on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_up = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "orientation": { + "description": "The orientation to display the widget contents.\nSetting to vertical will rotate text 90 degrees.\n\n**Valid options**: `horizontal`, `vertical`\n
\n**Default**: `horizontal`", + "anyOf": [ + { + "$ref": "#/$defs/ModuleOrientation" + }, + { + "type": "null" + } + ] + }, + "show_if": { + "description": "Shows the module only if the dynamic boolean evaluates to true.\n\nThis allows for modules to be dynamically shown or hidden\nbased on custom events.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/DynamicBool" + }, + { + "type": "null" + } + ] + }, + "smooth_scroll_speed": { + "description": "A multiplier from `0.0` - `10.0` to control the speed\nof smooth scrolling on trackpad.\n\n**Default**: `1.0`", + "type": [ + "number", + "null" + ], + "format": "double" + }, + "thresholds": { + "description": "A map of threshold names to apply as classes,\nagainst the battery percentage at which to apply them.\n\nThresholds work by applying the nearest value\nabove the current percentage, if present.\n\nFor example, using the below config:\n```corn\n{\n end = [\n {\n type = \"battery\"\n format = \"{percentage}%\"\n thresholds.warning = 20\n thresholds.critical = 5\n }\n ]\n}\n```\nAt battery levels below 20%,\nthe `.warning` class will be applied to the top-level widget.\nBelow 5%, `.critical` will be applied instead.\nAbove 20%, no class applies.\n\n**Default**: `{}`", + "type": "object", + "additionalProperties": { + "type": "number", + "format": "double" + }, + "default": {} + }, + "tooltip": { + "description": "Shows this text on hover.\nSupports embedding scripts between `{{double braces}}`.\n\nNote that full dynamic string support is not currently supported.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "transition_duration": { + "description": "The length in milliseconds\nof the transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Default**: `250`", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + }, + "transition_type": { + "description": "The transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Valid options**: `slide_start`, `slide_end`, `crossfade`, `none`\n
\n**Default**: `slide_start`", + "anyOf": [ + { + "$ref": "#/$defs/TransitionType" + }, + { + "type": "null" + } + ] + } + } + }, + "Bindmode": { + "description": "The following are module-level options which are present on **all** modules.\n\nEach module also provides options specific to its type.\nFor details on those, check the relevant module documentation.\n\nFor information on the Script type, and embedding scripts in strings,\nsee [here](script).\nFor information on styling, please see the [styling guide](styling-guide).", + "type": "object", + "properties": { + "class": { + "description": "Sets one or more CSS classes,\nallowing you to target it in CSS using `.class`.\n\nUnlike [name](#name), the `class` property is not expected to be unique.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "disable_popup": { + "description": "Prevents the popup from opening on-click for this widget.", + "type": "boolean", + "default": false + }, + "justify": { + "description": "The justification (alignment) of the widget text shown on the bar.\n\n**Valid options**: `left`, `right`, `center`, `fill`\n
\n**Default**: `left`", + "$ref": "#/$defs/ModuleJustification" + }, + "name": { + "description": "Sets the unique widget name,\nallowing you to target it in CSS using `#name`.\n\nIt is best practise (although not required) to ensure that the value is\nglobally unique throughout the Ironbar instance\nto avoid clashes.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "on_click_left": { + "description": "A [script](scripts) to run when the module is left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_left_double": { + "description": "A [script](scripts) to run when the module is double-left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle": { + "description": "A [script](scripts) to run when the module is middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_click_middle = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle_double": { + "description": "A [script](scripts) to run when the module is double-middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_middle_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right": { + "description": "A [script](scripts) to run when the module is right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n/// # Example\n\n```corn\n{ on_click_right = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right_double": { + "description": "A [script](scripts) to run when the module is double-right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_right_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_enter": { + "description": "A [script](scripts) to run when the cursor begins hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_enter = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_exit": { + "description": "A [script](scripts) to run when the cursor stops hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_exit = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_down": { + "description": "A [script](scripts) to run when the module is scrolled down on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_down = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_up": { + "description": "A [script](scripts) to run when the module is scrolled up on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_up = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "orientation": { + "description": "The orientation to display the widget contents.\nSetting to vertical will rotate text 90 degrees.\n\n**Valid options**: `horizontal`, `vertical`\n
\n**Default**: `horizontal`", + "anyOf": [ + { + "$ref": "#/$defs/ModuleOrientation" + }, + { + "type": "null" + } + ] + }, + "show_if": { + "description": "Shows the module only if the dynamic boolean evaluates to true.\n\nThis allows for modules to be dynamically shown or hidden\nbased on custom events.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/DynamicBool" + }, + { + "type": "null" + } + ] + }, + "smooth_scroll_speed": { + "description": "A multiplier from `0.0` - `10.0` to control the speed\nof smooth scrolling on trackpad.\n\n**Default**: `1.0`", + "type": [ + "number", + "null" + ], + "format": "double" + }, + "tooltip": { + "description": "Shows this text on hover.\nSupports embedding scripts between `{{double braces}}`.\n\nNote that full dynamic string support is not currently supported.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "transition_duration": { + "description": "The length in milliseconds\nof the transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Default**: `250`", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + }, + "transition_type": { + "description": "The transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Valid options**: `slide_start`, `slide_end`, `crossfade`, `none`\n
\n**Default**: `slide_start`", + "anyOf": [ + { + "$ref": "#/$defs/TransitionType" + }, + { + "type": "null" + } + ] + }, + "truncate": { + "description": "See [truncate options](module-level-options#truncate-mode).\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/TruncateMode" + }, + { + "type": "null" + } + ] + } + } + }, + "BluetoothModule": { + "description": "The following are module-level options which are present on **all** modules.\n\nEach module also provides options specific to its type.\nFor details on those, check the relevant module documentation.\n\nFor information on the Script type, and embedding scripts in strings,\nsee [here](script).\nFor information on styling, please see the [styling guide](styling-guide).", + "type": "object", + "properties": { + "adapter_status": { + "description": "Values of `{adapter_status}` formatting token.", + "$ref": "#/$defs/AdapterStatus" + }, + "class": { + "description": "Sets one or more CSS classes,\nallowing you to target it in CSS using `.class`.\n\nUnlike [name](#name), the `class` property is not expected to be unique.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "device_status": { + "description": "Values of `{device_status}` formatting token.", + "$ref": "#/$defs/DeviceStatus" + }, + "disable_popup": { + "description": "Prevents the popup from opening on-click for this widget.", + "type": "boolean", + "default": false + }, + "format": { + "description": "Format strings for on-bar button.", + "$ref": "#/$defs/FormatConfig" + }, + "icon_size": { + "description": "Size to render the icons at, in pixels (image icons only).\n\n**Default** `32`", + "type": "integer", + "format": "int32", + "default": 32 + }, + "name": { + "description": "Sets the unique widget name,\nallowing you to target it in CSS using `#name`.\n\nIt is best practise (although not required) to ensure that the value is\nglobally unique throughout the Ironbar instance\nto avoid clashes.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "on_click_left": { + "description": "A [script](scripts) to run when the module is left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_left_double": { + "description": "A [script](scripts) to run when the module is double-left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle": { + "description": "A [script](scripts) to run when the module is middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_click_middle = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle_double": { + "description": "A [script](scripts) to run when the module is double-middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_middle_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right": { + "description": "A [script](scripts) to run when the module is right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n/// # Example\n\n```corn\n{ on_click_right = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right_double": { + "description": "A [script](scripts) to run when the module is double-right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_right_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_enter": { + "description": "A [script](scripts) to run when the cursor begins hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_enter = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_exit": { + "description": "A [script](scripts) to run when the cursor stops hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_exit = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_down": { + "description": "A [script](scripts) to run when the module is scrolled down on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_down = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_up": { + "description": "A [script](scripts) to run when the module is scrolled up on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_up = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "popup": { + "description": "Popup related configuration.", + "$ref": "#/$defs/PopupConfig" + }, + "show_if": { + "description": "Shows the module only if the dynamic boolean evaluates to true.\n\nThis allows for modules to be dynamically shown or hidden\nbased on custom events.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/DynamicBool" + }, + { + "type": "null" + } + ] + }, + "smooth_scroll_speed": { + "description": "A multiplier from `0.0` - `10.0` to control the speed\nof smooth scrolling on trackpad.\n\n**Default**: `1.0`", + "type": [ + "number", + "null" + ], + "format": "double" + }, + "tooltip": { + "description": "Shows this text on hover.\nSupports embedding scripts between `{{double braces}}`.\n\nNote that full dynamic string support is not currently supported.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "transition_duration": { + "description": "The length in milliseconds\nof the transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Default**: `250`", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + }, + "transition_type": { + "description": "The transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Valid options**: `slide_start`, `slide_end`, `crossfade`, `none`\n
\n**Default**: `slide_start`", + "anyOf": [ + { + "$ref": "#/$defs/TransitionType" + }, + { + "type": "null" + } + ] + } + } + }, + "BoxWidget": { + "type": "object", + "properties": { + "class": { + "description": "Widget class name.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "halign": { + "description": "Horizontal alignment of the box relative to its parent.\n\n**Valid options**: `start`, `center`, `end`, `fill`\n**Default**: `fill`", + "anyOf": [ + { + "$ref": "#/$defs/ModuleAlignment" + }, + { + "type": "null" + } + ] + }, + "name": { + "description": "Widget name.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "orientation": { + "description": "Whether child widgets should be horizontally or vertically added.\n\n**Valid options**: `horizontal`, `vertical`, `h`, `v`\n**Default**: `horizontal`", + "anyOf": [ + { + "$ref": "#/$defs/ModuleOrientation" + }, + { + "type": "null" + } + ] + }, + "valign": { + "description": "Vertical alignment of the box relative to its parent.\n\n**Valid options**: `start`, `center`, `end`, `fill`\n**Default**: `fill`", + "anyOf": [ + { + "$ref": "#/$defs/ModuleAlignment" + }, + { + "type": "null" + } + ] + }, + "widgets": { + "description": "Modules and widgets to add to this box.\n\n**Default**: `null`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/$defs/WidgetConfig" + } + } + } + }, + "ButtonWidget": { + "type": "object", + "properties": { + "class": { + "description": "Widget class name.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "justify": { + "description": "The justification (alignment) of the widget text shown on the bar.\n\n**Valid options**: `left`, `right`, `center`, `fill`\n
\n**Default**: `left`", + "$ref": "#/$defs/ModuleJustification" + }, + "label": { + "description": "Widget text label. Pango markup and embedded scripts are supported.\n\nThis is a shorthand for adding a label widget to the button.\nIgnored if `widgets` is set.\n\nThis is a [Dynamic String](dynamic-values#dynamic-string).\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "name": { + "description": "Widget name.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "on_click": { + "description": "Command to execute. More on this [below](#commands).\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "orientation": { + "description": "The orientation to display the widget contents.\nSetting to vertical will rotate text 90 degrees.\n\n**Valid options**: `horizontal`, `vertical`\n
\n**Default**: `horizontal`", + "anyOf": [ + { + "$ref": "#/$defs/ModuleOrientation" + }, + { + "type": "null" + } + ] + }, + "widgets": { + "description": "Modules and widgets to add to this box.\n\n**Default**: `null`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/$defs/WidgetConfig" + } + } + } + }, + "CairoModule": { + "type": "object", + "properties": { + "common": { + "description": "See [common options](module-level-options#common-options).", + "anyOf": [ + { + "$ref": "#/$defs/CommonConfig" + }, + { + "type": "null" + } + ] + }, + "frequency": { + "description": "The number of milliseconds between each draw call.\n\n**Default**: `200`", + "type": "integer", + "format": "uint64", + "default": 200, + "minimum": 0 + }, + "height": { + "description": "The canvas height in pixels.\n\n**Default**: `42`", + "type": "integer", + "format": "uint32", + "default": 42, + "minimum": 0 + }, + "path": { + "description": "The path to the Lua script to load.\nThis can be absolute, or relative to the working directory.\n\nThe script must contain the entry `draw` function.\n\n**Required**", + "type": "string", + "default": "" + }, + "width": { + "description": "The canvas width in pixels.\n\n**Default**: `42`", + "type": "integer", + "format": "uint32", + "default": 42, + "minimum": 0 + } + } + }, + "ClipboardModule": { + "description": "The following are module-level options which are present on **all** modules.\n\nEach module also provides options specific to its type.\nFor details on those, check the relevant module documentation.\n\nFor information on the Script type, and embedding scripts in strings,\nsee [here](script).\nFor information on styling, please see the [styling guide](styling-guide).", + "type": "object", + "properties": { + "class": { + "description": "Sets one or more CSS classes,\nallowing you to target it in CSS using `.class`.\n\nUnlike [name](#name), the `class` property is not expected to be unique.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "disable_popup": { + "description": "Prevents the popup from opening on-click for this widget.", + "type": "boolean", + "default": false + }, + "icon": { + "description": "The icon to show on the bar widget button.\nSupports [image](images) icons.\n\n**Default**: `󰨸`", + "type": "string", + "default": "󰨸" + }, + "icon_size": { + "description": "The size to render the icon at.\nNote this only applies to image-type icons.\n\n**Default**: `32`", + "type": "integer", + "format": "int32", + "default": 32 + }, + "image_max_height": { + "description": "The maximum height to render copied images at.\n\n**Default**: `64.0`", + "type": "number", + "format": "double", + "default": 64.0 + }, + "image_max_width": { + "description": "The maximum width to render copied images at.\n\n**Default**: `256.0`", + "type": "number", + "format": "double", + "default": 256.0 + }, + "justify": { + "description": "The justification (alignment) of the widget text shown on the bar.\n\n**Valid options**: `left`, `right`, `center`, `fill`\n
\n**Default**: `left`", + "$ref": "#/$defs/ModuleJustification" + }, + "max_items": { + "description": "The maximum number of items to keep in the history,\nand to show in the popup.\n\n**Default**: `10`", + "type": "integer", + "format": "uint", + "default": 10, + "minimum": 0 + }, + "name": { + "description": "Sets the unique widget name,\nallowing you to target it in CSS using `#name`.\n\nIt is best practise (although not required) to ensure that the value is\nglobally unique throughout the Ironbar instance\nto avoid clashes.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "on_click_left": { + "description": "A [script](scripts) to run when the module is left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_left_double": { + "description": "A [script](scripts) to run when the module is double-left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle": { + "description": "A [script](scripts) to run when the module is middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_click_middle = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle_double": { + "description": "A [script](scripts) to run when the module is double-middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_middle_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right": { + "description": "A [script](scripts) to run when the module is right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n/// # Example\n\n```corn\n{ on_click_right = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right_double": { + "description": "A [script](scripts) to run when the module is double-right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_right_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_enter": { + "description": "A [script](scripts) to run when the cursor begins hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_enter = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_exit": { + "description": "A [script](scripts) to run when the cursor stops hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_exit = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_down": { + "description": "A [script](scripts) to run when the module is scrolled down on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_down = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_up": { + "description": "A [script](scripts) to run when the module is scrolled up on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_up = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "orientation": { + "description": "The orientation to display the widget contents.\nSetting to vertical will rotate text 90 degrees.\n\n**Valid options**: `horizontal`, `vertical`\n
\n**Default**: `horizontal`", + "anyOf": [ + { + "$ref": "#/$defs/ModuleOrientation" + }, + { + "type": "null" + } + ] + }, + "show_if": { + "description": "Shows the module only if the dynamic boolean evaluates to true.\n\nThis allows for modules to be dynamically shown or hidden\nbased on custom events.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/DynamicBool" + }, + { + "type": "null" + } + ] + }, + "smooth_scroll_speed": { + "description": "A multiplier from `0.0` - `10.0` to control the speed\nof smooth scrolling on trackpad.\n\n**Default**: `1.0`", + "type": [ + "number", + "null" + ], + "format": "double" + }, + "tooltip": { + "description": "Shows this text on hover.\nSupports embedding scripts between `{{double braces}}`.\n\nNote that full dynamic string support is not currently supported.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "transition_duration": { + "description": "The length in milliseconds\nof the transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Default**: `250`", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + }, + "transition_type": { + "description": "The transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Valid options**: `slide_start`, `slide_end`, `crossfade`, `none`\n
\n**Default**: `slide_start`", + "anyOf": [ + { + "$ref": "#/$defs/TransitionType" + }, + { + "type": "null" + } + ] + }, + "truncate": { + "description": "See [truncate options](module-level-options#truncate-mode).\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/TruncateMode" + }, + { + "type": "null" + } + ] + } + } + }, + "ClockModule": { + "description": "The following are module-level options which are present on **all** modules.\n\nEach module also provides options specific to its type.\nFor details on those, check the relevant module documentation.\n\nFor information on the Script type, and embedding scripts in strings,\nsee [here](script).\nFor information on styling, please see the [styling guide](styling-guide).", + "type": "object", + "properties": { + "class": { + "description": "Sets one or more CSS classes,\nallowing you to target it in CSS using `.class`.\n\nUnlike [name](#name), the `class` property is not expected to be unique.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "disable_popup": { + "description": "Prevents the popup from opening on-click for this widget.", + "type": "boolean", + "default": false + }, + "format": { + "description": "The format string to use for the date/time shown on the bar.\nPango markup is supported.\n\nDetail on available tokens can be found here:\n\n\n**Default**: `%d/%m/%Y %H:%M`", + "type": "string", + "default": "%d/%m/%Y %H:%M" + }, + "format_popup": { + "description": "The format string to use for the date/time shown in the popup header.\nPango markup is supported.\n\nDetail on available tokens can be found here:\n\n\n**Default**: `%H:%M:%S`", + "type": "string", + "default": "%H:%M:%S" + }, + "justify": { + "description": "The justification (alignment) of the widget text shown on the bar.\n\n**Valid options**: `left`, `right`, `center`, `fill`\n
\n**Default**: `left`", + "$ref": "#/$defs/ModuleJustification" + }, + "locale": { + "description": "The locale to use when formatting dates.\n\nNote this will not control the calendar -\nfor that you must set `LC_TIME`.\n\n**Valid options**: See [here](https://docs.rs/pure-rust-locales/0.8.1/pure_rust_locales/enum.Locale.html#variants)\n
\n**Default**: `$LC_TIME` or `$LANG` or `'POSIX'`", + "type": "string", + "default": "en_GB" + }, + "name": { + "description": "Sets the unique widget name,\nallowing you to target it in CSS using `#name`.\n\nIt is best practise (although not required) to ensure that the value is\nglobally unique throughout the Ironbar instance\nto avoid clashes.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "on_click_left": { + "description": "A [script](scripts) to run when the module is left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_left_double": { + "description": "A [script](scripts) to run when the module is double-left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle": { + "description": "A [script](scripts) to run when the module is middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_click_middle = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle_double": { + "description": "A [script](scripts) to run when the module is double-middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_middle_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right": { + "description": "A [script](scripts) to run when the module is right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n/// # Example\n\n```corn\n{ on_click_right = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right_double": { + "description": "A [script](scripts) to run when the module is double-right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_right_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_enter": { + "description": "A [script](scripts) to run when the cursor begins hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_enter = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_exit": { + "description": "A [script](scripts) to run when the cursor stops hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_exit = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_down": { + "description": "A [script](scripts) to run when the module is scrolled down on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_down = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_up": { + "description": "A [script](scripts) to run when the module is scrolled up on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_up = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "orientation": { + "description": "The orientation to display the widget contents.\nSetting to vertical will rotate text 90 degrees.\n\n**Valid options**: `horizontal`, `vertical`\n
\n**Default**: `horizontal`", + "anyOf": [ + { + "$ref": "#/$defs/ModuleOrientation" + }, + { + "type": "null" + } + ] + }, + "show_if": { + "description": "Shows the module only if the dynamic boolean evaluates to true.\n\nThis allows for modules to be dynamically shown or hidden\nbased on custom events.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/DynamicBool" + }, + { + "type": "null" + } + ] + }, + "smooth_scroll_speed": { + "description": "A multiplier from `0.0` - `10.0` to control the speed\nof smooth scrolling on trackpad.\n\n**Default**: `1.0`", + "type": [ + "number", + "null" + ], + "format": "double" + }, + "tooltip": { + "description": "Shows this text on hover.\nSupports embedding scripts between `{{double braces}}`.\n\nNote that full dynamic string support is not currently supported.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "transition_duration": { + "description": "The length in milliseconds\nof the transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Default**: `250`", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + }, + "transition_type": { + "description": "The transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Valid options**: `slide_start`, `slide_end`, `crossfade`, `none`\n
\n**Default**: `slide_start`", + "anyOf": [ + { + "$ref": "#/$defs/TransitionType" + }, + { + "type": "null" + } + ] + } + } + }, + "CommonConfig": { + "description": "The following are module-level options which are present on **all** modules.\n\nEach module also provides options specific to its type.\nFor details on those, check the relevant module documentation.\n\nFor information on the Script type, and embedding scripts in strings,\nsee [here](script).\nFor information on styling, please see the [styling guide](styling-guide).", + "type": "object", + "properties": { + "class": { + "description": "Sets one or more CSS classes,\nallowing you to target it in CSS using `.class`.\n\nUnlike [name](#name), the `class` property is not expected to be unique.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "disable_popup": { + "description": "Prevents the popup from opening on-click for this widget.", + "type": "boolean", + "default": false + }, + "name": { + "description": "Sets the unique widget name,\nallowing you to target it in CSS using `#name`.\n\nIt is best practise (although not required) to ensure that the value is\nglobally unique throughout the Ironbar instance\nto avoid clashes.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "on_click_left": { + "description": "A [script](scripts) to run when the module is left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_left_double": { + "description": "A [script](scripts) to run when the module is double-left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle": { + "description": "A [script](scripts) to run when the module is middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_click_middle = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle_double": { + "description": "A [script](scripts) to run when the module is double-middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_middle_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right": { + "description": "A [script](scripts) to run when the module is right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n/// # Example\n\n```corn\n{ on_click_right = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right_double": { + "description": "A [script](scripts) to run when the module is double-right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_right_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_enter": { + "description": "A [script](scripts) to run when the cursor begins hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_enter = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_exit": { + "description": "A [script](scripts) to run when the cursor stops hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_exit = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_down": { + "description": "A [script](scripts) to run when the module is scrolled down on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_down = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_up": { + "description": "A [script](scripts) to run when the module is scrolled up on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_up = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "show_if": { + "description": "Shows the module only if the dynamic boolean evaluates to true.\n\nThis allows for modules to be dynamically shown or hidden\nbased on custom events.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/DynamicBool" + }, + { + "type": "null" + } + ] + }, + "smooth_scroll_speed": { + "description": "A multiplier from `0.0` - `10.0` to control the speed\nof smooth scrolling on trackpad.\n\n**Default**: `1.0`", + "type": [ + "number", + "null" + ], + "format": "double" + }, + "tooltip": { + "description": "Shows this text on hover.\nSupports embedding scripts between `{{double braces}}`.\n\nNote that full dynamic string support is not currently supported.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "transition_duration": { + "description": "The length in milliseconds\nof the transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Default**: `250`", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + }, + "transition_type": { + "description": "The transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Valid options**: `slide_start`, `slide_end`, `crossfade`, `none`\n
\n**Default**: `slide_start`", + "anyOf": [ + { + "$ref": "#/$defs/TransitionType" + }, + { + "type": "null" + } + ] + } + } + }, + "CustomEntry": { + "description": "Individual shell command entry.", + "type": "object", + "properties": { + "icon": { + "description": "Name of the image icon to show next to the label.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "label": { + "description": "Text to display on the button.", + "type": "string", + "default": "" + }, + "on_click": { + "description": "Shell command to execute when the button is clicked.\nThis is run using `sh -c`.", + "type": "string", + "default": "" + } + } + }, + "CustomModule": { + "description": "The following are module-level options which are present on **all** modules.\n\nEach module also provides options specific to its type.\nFor details on those, check the relevant module documentation.\n\nFor information on the Script type, and embedding scripts in strings,\nsee [here](script).\nFor information on styling, please see the [styling guide](styling-guide).", + "type": "object", + "properties": { + "bar": { + "description": "Modules and widgets to add to the bar container.\n\n**Default**: `[]`", + "type": "array", + "items": { + "$ref": "#/$defs/WidgetConfig" + } + }, + "class": { + "description": "Sets one or more CSS classes,\nallowing you to target it in CSS using `.class`.\n\nUnlike [name](#name), the `class` property is not expected to be unique.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "disable_popup": { + "description": "Prevents the popup from opening on-click for this widget.", + "type": "boolean", + "default": false + }, + "name": { + "description": "Sets the unique widget name,\nallowing you to target it in CSS using `#name`.\n\nIt is best practise (although not required) to ensure that the value is\nglobally unique throughout the Ironbar instance\nto avoid clashes.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "on_click_left": { + "description": "A [script](scripts) to run when the module is left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_left_double": { + "description": "A [script](scripts) to run when the module is double-left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle": { + "description": "A [script](scripts) to run when the module is middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_click_middle = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle_double": { + "description": "A [script](scripts) to run when the module is double-middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_middle_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right": { + "description": "A [script](scripts) to run when the module is right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n/// # Example\n\n```corn\n{ on_click_right = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right_double": { + "description": "A [script](scripts) to run when the module is double-right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_right_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_enter": { + "description": "A [script](scripts) to run when the cursor begins hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_enter = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_exit": { + "description": "A [script](scripts) to run when the cursor stops hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_exit = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_down": { + "description": "A [script](scripts) to run when the module is scrolled down on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_down = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_up": { + "description": "A [script](scripts) to run when the module is scrolled up on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_up = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "popup": { + "description": "Modules and widgets to add to the popup container.\n\n**Default**: `null`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/$defs/WidgetConfig" + } + }, + "show_if": { + "description": "Shows the module only if the dynamic boolean evaluates to true.\n\nThis allows for modules to be dynamically shown or hidden\nbased on custom events.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/DynamicBool" + }, + { + "type": "null" + } + ] + }, + "smooth_scroll_speed": { + "description": "A multiplier from `0.0` - `10.0` to control the speed\nof smooth scrolling on trackpad.\n\n**Default**: `1.0`", + "type": [ + "number", + "null" + ], + "format": "double" + }, + "tooltip": { + "description": "Shows this text on hover.\nSupports embedding scripts between `{{double braces}}`.\n\nNote that full dynamic string support is not currently supported.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "transition_duration": { + "description": "The length in milliseconds\nof the transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Default**: `250`", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + }, + "transition_type": { + "description": "The transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Valid options**: `slide_start`, `slide_end`, `crossfade`, `none`\n
\n**Default**: `slide_start`", + "anyOf": [ + { + "$ref": "#/$defs/TransitionType" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "bar" + ] + }, + "DeviceStatus": { + "type": "object", + "properties": { + "connected": { + "description": "The value of `{device_status}` formatting token when device is connected.\n\n**Default**: `\"Connected\"`", + "type": "string", + "default": "Connected" + }, + "connecting": { + "description": "The value of `{device_status}` formatting token when device is connecting.\n\n**Default**: `\"Connecting...\"`", + "type": "string", + "default": "Connecting..." + }, + "disconnected": { + "description": "The value of `{device_status}` formatting token when device is disconnected.\n\n**Default**: `\"Disconnect\"`", + "type": "string", + "default": "Disconnected" + }, + "disconnecting": { + "description": "The value of `{device_status}` formatting token when device is disconnecting.\n\n**Default**: `\"Disconnecting...\"`", + "type": "string", + "default": "Disconnecting..." + } + } + }, + "DoubleClickTime": { + "description": "Double-click time configuration", + "anyOf": [ + { + "description": "Use GTK's gtk-double-click-time setting", + "type": "string", + "const": "gtk" + }, + { + "description": "Milliseconds", + "type": "integer", + "format": "uint64", + "minimum": 0 + } + ] + }, + "DynamicBool": { + "anyOf": [ + { + "description": "Either a script or variable, to be determined.", + "type": "string" + }, + { + "$ref": "#/$defs/Script" + }, + { + "type": "string" + } + ] + }, + "EllipsizeMode": { + "type": "string", + "enum": [ + "none", + "start", + "middle", + "end" + ] + }, + "Favorites": { + "anyOf": [ + { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "FocusedModule": { + "description": "The following are module-level options which are present on **all** modules.\n\nEach module also provides options specific to its type.\nFor details on those, check the relevant module documentation.\n\nFor information on the Script type, and embedding scripts in strings,\nsee [here](script).\nFor information on styling, please see the [styling guide](styling-guide).", + "type": "object", + "properties": { + "class": { + "description": "Sets one or more CSS classes,\nallowing you to target it in CSS using `.class`.\n\nUnlike [name](#name), the `class` property is not expected to be unique.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "disable_popup": { + "description": "Prevents the popup from opening on-click for this widget.", + "type": "boolean", + "default": false + }, + "icon_size": { + "description": "Icon size in pixels.\n\n**Default**: `32`", + "type": "integer", + "format": "int32", + "default": 32 + }, + "justify": { + "description": "The justification (alignment) of the widget text shown on the bar.\n\n**Valid options**: `left`, `right`, `center`, `fill`\n
\n**Default**: `left`", + "$ref": "#/$defs/ModuleJustification" + }, + "name": { + "description": "Sets the unique widget name,\nallowing you to target it in CSS using `#name`.\n\nIt is best practise (although not required) to ensure that the value is\nglobally unique throughout the Ironbar instance\nto avoid clashes.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "on_click_left": { + "description": "A [script](scripts) to run when the module is left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_left_double": { + "description": "A [script](scripts) to run when the module is double-left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle": { + "description": "A [script](scripts) to run when the module is middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_click_middle = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle_double": { + "description": "A [script](scripts) to run when the module is double-middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_middle_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right": { + "description": "A [script](scripts) to run when the module is right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n/// # Example\n\n```corn\n{ on_click_right = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right_double": { + "description": "A [script](scripts) to run when the module is double-right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_right_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_enter": { + "description": "A [script](scripts) to run when the cursor begins hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_enter = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_exit": { + "description": "A [script](scripts) to run when the cursor stops hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_exit = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_down": { + "description": "A [script](scripts) to run when the module is scrolled down on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_down = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_up": { + "description": "A [script](scripts) to run when the module is scrolled up on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_up = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "orientation": { + "description": "The orientation to display the widget contents.\nSetting to vertical will rotate text 90 degrees.\n\n**Valid options**: `horizontal`, `vertical`\n
\n**Default**: `horizontal`", + "anyOf": [ + { + "$ref": "#/$defs/ModuleOrientation" + }, + { + "type": "null" + } + ] + }, + "show_icon": { + "description": "Whether to show icon on the bar.\n\n**Default**: `true`", + "type": "boolean", + "default": true + }, + "show_if": { + "description": "Shows the module only if the dynamic boolean evaluates to true.\n\nThis allows for modules to be dynamically shown or hidden\nbased on custom events.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/DynamicBool" + }, + { + "type": "null" + } + ] + }, + "show_title": { + "description": "Whether to show app name on the bar.\n\n**Default**: `true`", + "type": "boolean", + "default": true + }, + "smooth_scroll_speed": { + "description": "A multiplier from `0.0` - `10.0` to control the speed\nof smooth scrolling on trackpad.\n\n**Default**: `1.0`", + "type": [ + "number", + "null" + ], + "format": "double" + }, + "tooltip": { + "description": "Shows this text on hover.\nSupports embedding scripts between `{{double braces}}`.\n\nNote that full dynamic string support is not currently supported.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "transition_duration": { + "description": "The length in milliseconds\nof the transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Default**: `250`", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + }, + "transition_type": { + "description": "The transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Valid options**: `slide_start`, `slide_end`, `crossfade`, `none`\n
\n**Default**: `slide_start`", + "anyOf": [ + { + "$ref": "#/$defs/TransitionType" + }, + { + "type": "null" + } + ] + }, + "truncate": { + "description": "See [truncate options](module-level-options#truncate-mode).\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/TruncateMode" + }, + { + "type": "null" + } + ] + } + } + }, + "FormatConfig": { + "type": "object", + "properties": { + "connected": { + "description": "Format string to use for the widget button when bluetooth adapter is enabled and a device is connected.\n\n**Default**: `\" {device_alias}\"`", + "type": "string", + "default": " {device_alias}" + }, + "connected_battery": { + "description": "Format string to use for the widget button when bluetooth adapter is enabled, a device is connected and `{device_battery_percent}` is available.\n\n**Default**: `\" {device_alias} • {device_battery_percent}%\"`", + "type": "string", + "default": " {device_alias} • {device_battery_percent}%" + }, + "disabled": { + "description": "Format string to use for the widget button when bluetooth adapter is disabled.\n\n**Default**: `\" Off\"`", + "type": "string", + "default": " Off" + }, + "enabled": { + "description": "Format string to use for the widget button when bluetooth adapter is enabled but no devices are connected.\n\n**Default**: `\" On\"`", + "type": "string", + "default": " On" + }, + "not_found": { + "description": "Format string to use for the widget button when bluetooth adapter not found.\n\n**Default**: `\"\"`", + "type": "string", + "default": "" + } + } + }, + "Icons": { + "type": "object", + "properties": { + "caps_off": { + "description": "Icon to show when capslock is disabled.\n\n**Default**: `\"\"`", + "type": "string", + "default": "" + }, + "caps_on": { + "description": "Icon to show when capslock is enabled.\n\n**Default**: `󰪛`", + "type": "string", + "default": "󰪛" + }, + "layout_map": { + "description": "Map of icons or labels to show for a particular keyboard layout.\n\nIf a layout is not present in the map,\nit will fall back to using its actual name.\n\n**Default**: `{}`\n\n# Example\n\n```corn\n{\n type = \"keyboard\"\n show_layout = true\n icons.layout_map.'English (US)' = \"EN\"\n icons.layout_map.Ukrainian = \"UA\"\n}\n```", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "default": {} + }, + "num_off": { + "description": "Icon to show when num lock is disabled.\n\n**Default**: `\"\"`", + "type": "string", + "default": "" + }, + "num_on": { + "description": "Icon to show when num lock is enabled.\n\n**Default**: ``", + "type": "string", + "default": "" + }, + "scroll_off": { + "description": "Icon to show when scroll lock is disabled.\n\n**Default**: `\"\"`", + "type": "string", + "default": "" + }, + "scroll_on": { + "description": "Icon to show when scroll lock is enabled.\n\n**Default**: ``", + "type": "string", + "default": "" + } + } + }, + "Icons2": { + "type": "object", + "properties": { + "page_back": { + "description": "Icon to show for page back button.\n\n**Default**: `󰅁`", + "type": "string", + "default": "󰅁" + }, + "page_forward": { + "description": "Icon to show for page back button.\n\n**Default**: `>`", + "type": "string", + "default": "󰅂" + } + } + }, + "Icons3": { + "type": "object", + "properties": { + "album": { + "description": "Icon to display nex to album name.\n\n**Default**: `󰀥`", + "type": "string", + "default": "󰀥" + }, + "artist": { + "description": "Icon to display nex to artist name.\n\n**Default**: `󰠃`", + "type": "string", + "default": "󰠃" + }, + "next": { + "description": "Icon to display for next button.\n\n**Default**: `󰒭`", + "type": "string", + "default": "󰒭" + }, + "pause": { + "description": "Icon to display when paused.\n\n**Default**: ``", + "type": "string", + "default": "" + }, + "play": { + "description": "Icon to display when playing.\n\n**Default**: ``", + "type": "string", + "default": "" + }, + "prev": { + "description": "Icon to display for previous button.\n\n**Default**: `󰒮`", + "type": "string", + "default": "󰒮" + }, + "track": { + "description": "Icon to display nex to track title.\n\n**Default**: `󰎈`", + "type": "string", + "default": "󰎈" + }, + "volume": { + "description": "Icon to display under volume slider.\n\n**Default**: `󰕾`", + "type": "string", + "default": "󰕾" + } + } + }, + "Icons4": { + "type": "object", + "properties": { + "closed_dnd": { + "description": "Icon to show when the panel is closed, with DnD enabled.\nTakes higher priority than count-based icons.\n\n**Default**: `󱅯`", + "type": "string", + "default": "󱅯" + }, + "closed_none": { + "description": "Icon to show when the panel is closed, with no notifications.\n\n**Default**: `󰍥`", + "type": "string", + "default": "󰍥" + }, + "closed_some": { + "description": "Icon to show when the panel is closed, with notifications.\n\n**Default**: `󱥂`", + "type": "string", + "default": "󱥂" + }, + "open_dnd": { + "description": "Icon to show when the panel is open, with DnD enabled.\nTakes higher priority than count-based icons.\n\n**Default**: `󱅮`", + "type": "string", + "default": "󱅮" + }, + "open_none": { + "description": "Icon to show when the panel is open, with no notifications.\n\n**Default**: `󰍡`", + "type": "string", + "default": "󰍡" + }, + "open_some": { + "description": "Icon to show when the panel is open, with notifications.\n\n**Default**: `󱥁`", + "type": "string", + "default": "󱥁" + } + } + }, + "Icons5": { + "type": "object", + "properties": { + "muted": { + "description": "Icon to show for muted outputs.\n\n**Default**: `󰝟`", + "type": "string", + "default": "󰝟" + }, + "volume_high": { + "description": "Icon to show for high volume levels.\n\n**Default**: `󰕾`", + "type": "string", + "default": "󰕾" + }, + "volume_low": { + "description": "Icon to show for low volume levels.\n\n**Default**: `󰕿`", + "type": "string", + "default": "󰕿" + }, + "volume_medium": { + "description": "Icon to show for medium volume levels.\n\n**Default**: `󰖀`", + "type": "string", + "default": "󰖀" + } + } + }, + "ImageWidget": { + "type": "object", + "properties": { + "class": { + "description": "Widget class name.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ], + "default": null + }, + "name": { + "description": "Widget name.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ], + "default": null + }, + "size": { + "description": "The width/height of the image.\nAspect ratio is preserved.\n\n**Default**: `32`", + "type": "integer", + "format": "int32", + "default": 32 + }, + "src": { + "description": "Image source.\n\nThis is an [image](image) via [Dynamic String](dynamic-values#dynamic-string).\n\n**Required**", + "type": "string", + "default": "" + } + } + }, + "Interval": { + "anyOf": [ + { + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + { + "$ref": "#/$defs/Intervals" + } + ] + }, + "Intervals": { + "type": "object", + "properties": { + "cpu": { + "description": "The number of seconds between refreshing CPU data.\n\n**Default**: `5`", + "type": "integer", + "format": "uint64", + "default": 5, + "minimum": 0 + }, + "disks": { + "description": "The number of seconds between refreshing disk data.\n\n**Default**: `5`", + "type": "integer", + "format": "uint64", + "default": 5, + "minimum": 0 + }, + "memory": { + "description": "The number of seconds between refreshing memory data.\n\n**Default**: `5`", + "type": "integer", + "format": "uint64", + "default": 5, + "minimum": 0 + }, + "networks": { + "description": "The number of seconds between refreshing network data.\n\n**Default**: `5`", + "type": "integer", + "format": "uint64", + "default": 5, + "minimum": 0 + }, + "system": { + "description": "The number of seconds between refreshing system data.\n\n**Default**: `5`", + "type": "integer", + "format": "uint64", + "default": 5, + "minimum": 0 + }, + "temps": { + "description": "The number of seconds between refreshing temperature data.\n\n**Default**: `5`", + "type": "integer", + "format": "uint64", + "default": 5, + "minimum": 0 + } + } + }, + "KeyboardModule": { + "description": "The following are module-level options which are present on **all** modules.\n\nEach module also provides options specific to its type.\nFor details on those, check the relevant module documentation.\n\nFor information on the Script type, and embedding scripts in strings,\nsee [here](script).\nFor information on styling, please see the [styling guide](styling-guide).", + "type": "object", + "properties": { + "class": { + "description": "Sets one or more CSS classes,\nallowing you to target it in CSS using `.class`.\n\nUnlike [name](#name), the `class` property is not expected to be unique.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "disable_popup": { + "description": "Prevents the popup from opening on-click for this widget.", + "type": "boolean", + "default": false + }, + "icon_size": { + "description": "Size to render the icons at, in pixels (image icons only).\n\n**Default** `32`", + "type": "integer", + "format": "int32", + "default": 32 + }, + "icons": { + "description": "Player state icons.\n\nSee [icons](#icons).", + "$ref": "#/$defs/Icons" + }, + "justify": { + "description": "The justification (alignment) of the widget text shown on the bar.\n\n**Valid options**: `left`, `right`, `center`, `fill`\n
\n**Default**: `left`", + "$ref": "#/$defs/ModuleJustification" + }, + "name": { + "description": "Sets the unique widget name,\nallowing you to target it in CSS using `#name`.\n\nIt is best practise (although not required) to ensure that the value is\nglobally unique throughout the Ironbar instance\nto avoid clashes.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "on_click_left": { + "description": "A [script](scripts) to run when the module is left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_left_double": { + "description": "A [script](scripts) to run when the module is double-left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle": { + "description": "A [script](scripts) to run when the module is middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_click_middle = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle_double": { + "description": "A [script](scripts) to run when the module is double-middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_middle_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right": { + "description": "A [script](scripts) to run when the module is right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n/// # Example\n\n```corn\n{ on_click_right = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right_double": { + "description": "A [script](scripts) to run when the module is double-right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_right_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_enter": { + "description": "A [script](scripts) to run when the cursor begins hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_enter = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_exit": { + "description": "A [script](scripts) to run when the cursor stops hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_exit = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_down": { + "description": "A [script](scripts) to run when the module is scrolled down on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_down = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_up": { + "description": "A [script](scripts) to run when the module is scrolled up on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_up = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "orientation": { + "description": "The orientation to display the widget contents.\nSetting to vertical will rotate text 90 degrees.\n\n**Valid options**: `horizontal`, `vertical`\n
\n**Default**: `horizontal`", + "anyOf": [ + { + "$ref": "#/$defs/ModuleOrientation" + }, + { + "type": "null" + } + ] + }, + "seat": { + "description": "The Wayland seat to attach to.\nYou almost certainly do not need to change this.\n\n**Default**: `seat0`", + "type": "string", + "default": "seat0" + }, + "show_caps": { + "description": "Whether to show capslock indicator.\n\n**Default**: `true`", + "type": "boolean", + "default": true + }, + "show_if": { + "description": "Shows the module only if the dynamic boolean evaluates to true.\n\nThis allows for modules to be dynamically shown or hidden\nbased on custom events.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/DynamicBool" + }, + { + "type": "null" + } + ] + }, + "show_layout": { + "description": "Whether to show the current keyboard layout.\n\n **Default**: `true`", + "type": "boolean", + "default": true + }, + "show_num": { + "description": "Whether to show num lock indicator.\n\n **Default**: `true`", + "type": "boolean", + "default": true + }, + "show_scroll": { + "description": "Whether to show scroll lock indicator.\n\n **Default**: `true`", + "type": "boolean", + "default": true + }, + "smooth_scroll_speed": { + "description": "A multiplier from `0.0` - `10.0` to control the speed\nof smooth scrolling on trackpad.\n\n**Default**: `1.0`", + "type": [ + "number", + "null" + ], + "format": "double" + }, + "tooltip": { + "description": "Shows this text on hover.\nSupports embedding scripts between `{{double braces}}`.\n\nNote that full dynamic string support is not currently supported.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "transition_duration": { + "description": "The length in milliseconds\nof the transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Default**: `250`", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + }, + "transition_type": { + "description": "The transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Valid options**: `slide_start`, `slide_end`, `crossfade`, `none`\n
\n**Default**: `slide_start`", + "anyOf": [ + { + "$ref": "#/$defs/TransitionType" + }, + { + "type": "null" + } + ] + } + } + }, + "LabelModule": { + "description": "The following are module-level options which are present on **all** modules.\n\nEach module also provides options specific to its type.\nFor details on those, check the relevant module documentation.\n\nFor information on the Script type, and embedding scripts in strings,\nsee [here](script).\nFor information on styling, please see the [styling guide](styling-guide).", + "type": "object", + "properties": { + "class": { + "description": "Sets one or more CSS classes,\nallowing you to target it in CSS using `.class`.\n\nUnlike [name](#name), the `class` property is not expected to be unique.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "disable_popup": { + "description": "Prevents the popup from opening on-click for this widget.", + "type": "boolean", + "default": false + }, + "justify": { + "description": "The justification (alignment) of the widget text shown on the bar.\n\n**Valid options**: `left`, `right`, `center`, `fill`\n
\n**Default**: `left`", + "$ref": "#/$defs/ModuleJustification" + }, + "label": { + "description": "The text to show on the label.\nThis is a [Dynamic String](dynamic-values#dynamic-string).\n\n**Required**", + "type": "string" + }, + "name": { + "description": "Sets the unique widget name,\nallowing you to target it in CSS using `#name`.\n\nIt is best practise (although not required) to ensure that the value is\nglobally unique throughout the Ironbar instance\nto avoid clashes.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "on_click_left": { + "description": "A [script](scripts) to run when the module is left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_left_double": { + "description": "A [script](scripts) to run when the module is double-left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle": { + "description": "A [script](scripts) to run when the module is middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_click_middle = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle_double": { + "description": "A [script](scripts) to run when the module is double-middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_middle_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right": { + "description": "A [script](scripts) to run when the module is right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n/// # Example\n\n```corn\n{ on_click_right = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right_double": { + "description": "A [script](scripts) to run when the module is double-right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_right_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_enter": { + "description": "A [script](scripts) to run when the cursor begins hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_enter = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_exit": { + "description": "A [script](scripts) to run when the cursor stops hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_exit = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_down": { + "description": "A [script](scripts) to run when the module is scrolled down on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_down = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_up": { + "description": "A [script](scripts) to run when the module is scrolled up on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_up = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "orientation": { + "description": "The orientation to display the widget contents.\nSetting to vertical will rotate text 90 degrees.\n\n**Valid options**: `horizontal`, `vertical`\n
\n**Default**: `horizontal`", + "anyOf": [ + { + "$ref": "#/$defs/ModuleOrientation" + }, + { + "type": "null" + } + ] + }, + "show_if": { + "description": "Shows the module only if the dynamic boolean evaluates to true.\n\nThis allows for modules to be dynamically shown or hidden\nbased on custom events.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/DynamicBool" + }, + { + "type": "null" + } + ] + }, + "smooth_scroll_speed": { + "description": "A multiplier from `0.0` - `10.0` to control the speed\nof smooth scrolling on trackpad.\n\n**Default**: `1.0`", + "type": [ + "number", + "null" + ], + "format": "double" + }, + "tooltip": { + "description": "Shows this text on hover.\nSupports embedding scripts between `{{double braces}}`.\n\nNote that full dynamic string support is not currently supported.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "transition_duration": { + "description": "The length in milliseconds\nof the transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Default**: `250`", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + }, + "transition_type": { + "description": "The transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Valid options**: `slide_start`, `slide_end`, `crossfade`, `none`\n
\n**Default**: `slide_start`", + "anyOf": [ + { + "$ref": "#/$defs/TransitionType" + }, + { + "type": "null" + } + ] + }, + "truncate": { + "description": "See [truncate options](module-level-options#truncate-mode).\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/TruncateMode" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "label" + ] + }, + "LabelWidget": { + "type": "object", + "properties": { + "class": { + "description": "Widget class name.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "justify": { + "description": "The justification (alignment) of the widget text shown on the bar.\n\n**Valid options**: `left`, `right`, `center`, `fill`\n
\n**Default**: `left`", + "$ref": "#/$defs/ModuleJustification" + }, + "label": { + "description": "Widget text label. Pango markup and embedded scripts are supported.\n\nThis is a [Dynamic String](dynamic-values#dynamic-string).\n\n**Required**", + "type": "string" + }, + "name": { + "description": "Widget name.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "orientation": { + "description": "The orientation to display the widget contents.\nSetting to vertical will rotate text 90 degrees.\n\n**Valid options**: `horizontal`, `vertical`\n
\n**Default**: `horizontal`", + "anyOf": [ + { + "$ref": "#/$defs/ModuleOrientation" + }, + { + "type": "null" + } + ] + }, + "truncate": { + "description": "See [truncate options](module-level-options#truncate-mode).\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/TruncateMode" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "label" + ] + }, + "LauncherModule": { + "description": "The following are module-level options which are present on **all** modules.\n\nEach module also provides options specific to its type.\nFor details on those, check the relevant module documentation.\n\nFor information on the Script type, and embedding scripts in strings,\nsee [here](script).\nFor information on styling, please see the [styling guide](styling-guide).", + "type": "object", + "properties": { + "class": { + "description": "Sets one or more CSS classes,\nallowing you to target it in CSS using `.class`.\n\nUnlike [name](#name), the `class` property is not expected to be unique.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "disable_popup": { + "description": "Prevents the popup from opening on-click for this widget.", + "type": "boolean", + "default": false + }, + "favorites": { + "description": "List of app IDs (or classes) to always show regardless of open state,\nin the order specified.\n\n**Default**: `null`", + "type": [ + "array", + "null" + ], + "default": null, + "items": { + "type": "string" + } + }, + "icon_size": { + "description": "Size in pixels to render icon at (image icons only).\n\n**Default**: `32`", + "type": "integer", + "format": "int32", + "default": 32 + }, + "icons": { + "description": "Module UI icons (separate from app icons shown for items).\n\nSee [icons](#icons).", + "$ref": "#/$defs/Icons2" + }, + "justify": { + "description": "The justification (alignment) of the widget text shown on the bar.\n\n**Valid options**: `left`, `right`, `center`, `fill`\n
\n**Default**: `left`", + "$ref": "#/$defs/ModuleJustification" + }, + "launch_command": { + "description": "Command used to launch applications.\n\n**Default**: `gtk-launch`", + "type": "string", + "default": "gtk-launch {app_name}" + }, + "minimize_focused": { + "description": "Whether to minimize a window if it is focused when clicked.\n\n**Default**: `true`", + "type": "boolean", + "default": true + }, + "name": { + "description": "Sets the unique widget name,\nallowing you to target it in CSS using `#name`.\n\nIt is best practise (although not required) to ensure that the value is\nglobally unique throughout the Ironbar instance\nto avoid clashes.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "on_click_left": { + "description": "A [script](scripts) to run when the module is left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_left_double": { + "description": "A [script](scripts) to run when the module is double-left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle": { + "description": "A [script](scripts) to run when the module is middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_click_middle = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle_double": { + "description": "A [script](scripts) to run when the module is double-middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_middle_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right": { + "description": "A [script](scripts) to run when the module is right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n/// # Example\n\n```corn\n{ on_click_right = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right_double": { + "description": "A [script](scripts) to run when the module is double-right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_right_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_enter": { + "description": "A [script](scripts) to run when the cursor begins hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_enter = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_exit": { + "description": "A [script](scripts) to run when the cursor stops hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_exit = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_down": { + "description": "A [script](scripts) to run when the module is scrolled down on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_down = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_up": { + "description": "A [script](scripts) to run when the module is scrolled up on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_up = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "orientation": { + "description": "The orientation to display the widget contents.\nSetting to vertical will rotate text 90 degrees.\n\n**Valid options**: `horizontal`, `vertical`\n
\n**Default**: `horizontal`", + "anyOf": [ + { + "$ref": "#/$defs/ModuleOrientation" + }, + { + "type": "null" + } + ] + }, + "page_size": { + "description": "The number of items to show on a page.\n\nWhen the number of items reaches the page size,\npagination controls appear at the start of the widget\nwhich can be used to move forward/back through the list of items.\n\nIf there are too many to fit, the overflow will be truncated\nby the next widget.\n\n**Default**: `1000`.", + "type": "integer", + "format": "uint", + "default": 1000, + "minimum": 0 + }, + "pagination_icon_size": { + "description": "Size in pixels to render pagination icons at (image icons only).\n\n**Default**: `16`", + "type": "integer", + "format": "int32", + "default": 16 + }, + "reversed": { + "description": "Whether items should be added from right-to-left\ninstead of left-to-right.\n\nThis includes favourites.\n\n**Default**: `false`", + "type": "boolean", + "default": false + }, + "show_icons": { + "description": "Whether to show application icons on the bar.\n\n**Default**: `true`", + "type": "boolean", + "default": true + }, + "show_if": { + "description": "Shows the module only if the dynamic boolean evaluates to true.\n\nThis allows for modules to be dynamically shown or hidden\nbased on custom events.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/DynamicBool" + }, + { + "type": "null" + } + ] + }, + "show_names": { + "description": "Whether to show application names on the bar.\n\n**Default**: `false`", + "type": "boolean", + "default": false + }, + "smooth_scroll_speed": { + "description": "A multiplier from `0.0` - `10.0` to control the speed\nof smooth scrolling on trackpad.\n\n**Default**: `1.0`", + "type": [ + "number", + "null" + ], + "format": "double" + }, + "tooltip": { + "description": "Shows this text on hover.\nSupports embedding scripts between `{{double braces}}`.\n\nNote that full dynamic string support is not currently supported.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "transition_duration": { + "description": "The length in milliseconds\nof the transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Default**: `250`", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + }, + "transition_type": { + "description": "The transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Valid options**: `slide_start`, `slide_end`, `crossfade`, `none`\n
\n**Default**: `slide_start`", + "anyOf": [ + { + "$ref": "#/$defs/TransitionType" + }, + { + "type": "null" + } + ] + }, + "truncate": { + "description": "Truncate application names on the bar if they get too long.\nSee [truncate options](module-level-options#truncate-mode).\n\n**Default**: `Auto (end)`", + "$ref": "#/$defs/TruncateMode" + }, + "truncate_popup": { + "description": "Truncate application names in popups if they get too long.\nSee [truncate options](module-level-options#truncate-mode).\n\n**Default**: `{ mode = \"middle\" max_length = 25 }`", + "$ref": "#/$defs/TruncateMode" + } + } + }, + "MarginConfig": { + "type": "object", + "properties": { + "bottom": { + "type": "integer", + "format": "int32", + "default": 0 + }, + "left": { + "type": "integer", + "format": "int32", + "default": 0 + }, + "right": { + "type": "integer", + "format": "int32", + "default": 0 + }, + "top": { + "type": "integer", + "format": "int32", + "default": 0 + } + } + }, + "MenuConfig": { + "description": "An individual entry in the main menu section.", + "oneOf": [ + { + "description": "Contains all applications matching the configured `categories`.", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "xdg_entry" + } + }, + "$ref": "#/$defs/XdgEntry", + "required": [ + "type" + ] + }, + { + "description": "Contains all applications not covered by `xdg_entry` categories.", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "xdg_other" + } + }, + "required": [ + "type" + ] + }, + { + "description": "Individual shell command entry.", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "custom" + } + }, + "$ref": "#/$defs/CustomEntry", + "required": [ + "type" + ] + } + ] + }, + "MenuModule": { + "description": "The following are module-level options which are present on **all** modules.\n\nEach module also provides options specific to its type.\nFor details on those, check the relevant module documentation.\n\nFor information on the Script type, and embedding scripts in strings,\nsee [here](script).\nFor information on styling, please see the [styling guide](styling-guide).", + "type": "object", + "properties": { + "center": { + "description": "Items to add to the start of the main menu.\n\nBy default, this shows a number of XDG entries\nthat should cover all common applications.\n\n**Default**: See `examples/menu/default`", + "type": "array", + "items": { + "$ref": "#/$defs/MenuConfig" + } + }, + "class": { + "description": "Sets one or more CSS classes,\nallowing you to target it in CSS using `.class`.\n\nUnlike [name](#name), the `class` property is not expected to be unique.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "disable_popup": { + "description": "Prevents the popup from opening on-click for this widget.", + "type": "boolean", + "default": false + }, + "end": { + "description": "Items to add to the end of the main menu.\n\n**Default**: `[]`", + "type": "array", + "items": { + "$ref": "#/$defs/MenuConfig" + } + }, + "height": { + "description": "Fixed height of the menu.\n\nWhen set, if the number of (sub)menu entries exceeds this value,\na scrollbar will be shown.\n\nLeave null to resize dynamically.\n\n**Default**: `null`", + "type": [ + "integer", + "null" + ], + "format": "int32", + "default": null + }, + "label": { + "description": "Label to show on the menu button on the bar.\n\n**Default**: `≡`", + "type": [ + "string", + "null" + ], + "default": "≡" + }, + "label_icon": { + "description": "Icon to show on the menu button on the bar.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ], + "default": null + }, + "label_icon_size": { + "description": "Size of the `label_icon` image.", + "type": "integer", + "format": "int32", + "default": 16 + }, + "launch_command": { + "description": "Command used to launch applications.\n\n**Default**: `gtk-launch`", + "type": "string", + "default": "gtk-launch {app_name}" + }, + "name": { + "description": "Sets the unique widget name,\nallowing you to target it in CSS using `#name`.\n\nIt is best practise (although not required) to ensure that the value is\nglobally unique throughout the Ironbar instance\nto avoid clashes.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "on_click_left": { + "description": "A [script](scripts) to run when the module is left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_left_double": { + "description": "A [script](scripts) to run when the module is double-left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle": { + "description": "A [script](scripts) to run when the module is middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_click_middle = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle_double": { + "description": "A [script](scripts) to run when the module is double-middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_middle_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right": { + "description": "A [script](scripts) to run when the module is right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n/// # Example\n\n```corn\n{ on_click_right = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right_double": { + "description": "A [script](scripts) to run when the module is double-right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_right_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_enter": { + "description": "A [script](scripts) to run when the cursor begins hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_enter = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_exit": { + "description": "A [script](scripts) to run when the cursor stops hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_exit = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_down": { + "description": "A [script](scripts) to run when the module is scrolled down on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_down = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_up": { + "description": "A [script](scripts) to run when the module is scrolled up on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_up = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "show_if": { + "description": "Shows the module only if the dynamic boolean evaluates to true.\n\nThis allows for modules to be dynamically shown or hidden\nbased on custom events.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/DynamicBool" + }, + { + "type": "null" + } + ] + }, + "smooth_scroll_speed": { + "description": "A multiplier from `0.0` - `10.0` to control the speed\nof smooth scrolling on trackpad.\n\n**Default**: `1.0`", + "type": [ + "number", + "null" + ], + "format": "double" + }, + "start": { + "description": "Items to add to the start of the main menu.\n\n**Default**: `[]`", + "type": "array", + "items": { + "$ref": "#/$defs/MenuConfig" + } + }, + "tooltip": { + "description": "Shows this text on hover.\nSupports embedding scripts between `{{double braces}}`.\n\nNote that full dynamic string support is not currently supported.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "transition_duration": { + "description": "The length in milliseconds\nof the transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Default**: `250`", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + }, + "transition_type": { + "description": "The transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Valid options**: `slide_start`, `slide_end`, `crossfade`, `none`\n
\n**Default**: `slide_start`", + "anyOf": [ + { + "$ref": "#/$defs/TransitionType" + }, + { + "type": "null" + } + ] + }, + "truncate": { + "description": "Truncate options to apply to (sub)menu item labels.\n\nSee [truncate options](module-level-options#truncate-mode).\n\n**Default**: `Auto (end)`", + "$ref": "#/$defs/TruncateMode" + }, + "width": { + "description": "Fixed width of the menu.\n\nCan be used with `truncate` options\nto customise how item labels are truncated.\n\n**Default**: `null`", + "type": [ + "integer", + "null" + ], + "format": "int32", + "default": null + } + } + }, + "ModuleAlignment": { + "oneOf": [ + { + "description": "Align widget to the start (left for horizontal, top for vertical).", + "type": "string", + "const": "start" + }, + { + "description": "Align widget to the center.", + "type": "string", + "const": "center" + }, + { + "description": "Align widget to the end (right for horizontal, bottom for vertical).", + "type": "string", + "const": "end" + }, + { + "description": "Stretch widget to fill available space.", + "type": "string", + "const": "fill" + } + ] + }, + "ModuleConfig": { + "oneOf": [ + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "battery" + } + }, + "$ref": "#/$defs/BatteryModule", + "required": [ + "type" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "bindmode" + } + }, + "$ref": "#/$defs/Bindmode", + "required": [ + "type" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "bluetooth" + } + }, + "$ref": "#/$defs/BluetoothModule", + "required": [ + "type" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "cairo" + } + }, + "$ref": "#/$defs/CairoModule", + "required": [ + "type" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "clipboard" + } + }, + "$ref": "#/$defs/ClipboardModule", + "required": [ + "type" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "clock" + } + }, + "$ref": "#/$defs/ClockModule", + "required": [ + "type" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "custom" + } + }, + "$ref": "#/$defs/CustomModule", + "required": [ + "type" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "focused" + } + }, + "$ref": "#/$defs/FocusedModule", + "required": [ + "type" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "keyboard" + } + }, + "$ref": "#/$defs/KeyboardModule", + "required": [ + "type" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "label" + } + }, + "$ref": "#/$defs/LabelModule", + "required": [ + "type" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "launcher" + } + }, + "$ref": "#/$defs/LauncherModule", + "required": [ + "type" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "menu" + } + }, + "$ref": "#/$defs/MenuModule", + "required": [ + "type" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "music" + } + }, + "$ref": "#/$defs/MusicModule", + "required": [ + "type" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "network_manager" + } + }, + "$ref": "#/$defs/NetworkManagerModule", + "required": [ + "type" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "notifications" + } + }, + "$ref": "#/$defs/NotificationsModule", + "required": [ + "type" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "script" + } + }, + "$ref": "#/$defs/ScriptModule", + "required": [ + "type" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "sys_info" + } + }, + "$ref": "#/$defs/SysInfoModule", + "required": [ + "type" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "tray" + } + }, + "$ref": "#/$defs/TrayModule", + "required": [ + "type" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "volume" + } + }, + "$ref": "#/$defs/VolumeModule", + "required": [ + "type" + ] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "workspaces" + } + }, + "$ref": "#/$defs/WorkspacesModule", + "required": [ + "type" + ] + } + ] + }, + "ModuleJustification": { + "type": "string", + "enum": [ + "left", + "right", + "center", + "fill" + ] + }, + "ModuleOrientation": { + "type": "string", + "enum": [ + "horizontal", + "vertical" + ] + }, + "MonitorConfig": { + "oneOf": [ + { + "type": "object", + "properties": { + "Single": { + "$ref": "#/$defs/BarConfig" + } + }, + "additionalProperties": false, + "required": [ + "Single" + ] + }, + { + "type": "object", + "properties": { + "Multiple": { + "type": "array", + "items": { + "$ref": "#/$defs/BarConfig" + } + } + }, + "additionalProperties": false, + "required": [ + "Multiple" + ] + } + ] + }, + "MusicModule": { + "description": "The following are module-level options which are present on **all** modules.\n\nEach module also provides options specific to its type.\nFor details on those, check the relevant module documentation.\n\nFor information on the Script type, and embedding scripts in strings,\nsee [here](script).\nFor information on styling, please see the [styling guide](styling-guide).", + "type": "object", + "properties": { + "class": { + "description": "Sets one or more CSS classes,\nallowing you to target it in CSS using `.class`.\n\nUnlike [name](#name), the `class` property is not expected to be unique.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "cover_image_size": { + "description": "Size to render the album art image at inside the popup, in pixels.\n\n**Default**: `128`", + "type": "integer", + "format": "int32", + "default": 128 + }, + "disable_popup": { + "description": "Prevents the popup from opening on-click for this widget.", + "type": "boolean", + "default": false + }, + "format": { + "description": "Format of current song info to display on the bar.\n\nInfo on formatting tokens [below](#formatting-tokens).\n\n**Default**: `{title} / {artist}`", + "type": "string", + "default": "{title} / {artist}" + }, + "host": { + "description": "*[MPD Only]*\nTCP or Unix socket address of the MPD server.\nFor TCP, this should include the port number.\n\n**Default**: `localhost:6600`", + "type": "string", + "default": "localhost:6600" + }, + "icon_size": { + "description": "Size to render the icons at, in pixels (image icons only).\n\n**Default** `32`", + "type": "integer", + "format": "int32", + "default": 32 + }, + "icons": { + "description": "Player state icons.\n\nSee [icons](#icons).", + "$ref": "#/$defs/Icons3" + }, + "justify": { + "description": "The justification (alignment) of the widget text shown on the bar.\n\n**Valid options**: `left`, `right`, `center`, `fill`\n
\n**Default**: `left`", + "$ref": "#/$defs/ModuleJustification" + }, + "music_dir": { + "description": "*[MPD Only]*\nPath to root of the MPD server's music directory.\nThis is required for displaying album art.\n\n**Default**: `$HOME/Music`", + "type": "string", + "default": "/home/jake/Music" + }, + "name": { + "description": "Sets the unique widget name,\nallowing you to target it in CSS using `#name`.\n\nIt is best practise (although not required) to ensure that the value is\nglobally unique throughout the Ironbar instance\nto avoid clashes.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "on_click_left": { + "description": "A [script](scripts) to run when the module is left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_left_double": { + "description": "A [script](scripts) to run when the module is double-left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle": { + "description": "A [script](scripts) to run when the module is middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_click_middle = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle_double": { + "description": "A [script](scripts) to run when the module is double-middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_middle_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right": { + "description": "A [script](scripts) to run when the module is right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n/// # Example\n\n```corn\n{ on_click_right = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right_double": { + "description": "A [script](scripts) to run when the module is double-right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_right_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_enter": { + "description": "A [script](scripts) to run when the cursor begins hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_enter = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_exit": { + "description": "A [script](scripts) to run when the cursor stops hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_exit = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_down": { + "description": "A [script](scripts) to run when the module is scrolled down on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_down = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_up": { + "description": "A [script](scripts) to run when the module is scrolled up on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_up = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "orientation": { + "description": "The orientation to display the widget contents.\nSetting to vertical will rotate text 90 degrees.\n\n**Valid options**: `horizontal`, `vertical`\n
\n**Default**: `horizontal`", + "anyOf": [ + { + "$ref": "#/$defs/ModuleOrientation" + }, + { + "type": "null" + } + ] + }, + "player_type": { + "description": "Type of player to connect to", + "$ref": "#/$defs/PlayerType" + }, + "show_if": { + "description": "Shows the module only if the dynamic boolean evaluates to true.\n\nThis allows for modules to be dynamically shown or hidden\nbased on custom events.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/DynamicBool" + }, + { + "type": "null" + } + ] + }, + "show_status_icon": { + "description": "Whether to show the play/pause status icon\non the bar.\n\n**Default**: `true`", + "type": "boolean", + "default": true + }, + "smooth_scroll_speed": { + "description": "A multiplier from `0.0` - `10.0` to control the speed\nof smooth scrolling on trackpad.\n\n**Default**: `1.0`", + "type": [ + "number", + "null" + ], + "format": "double" + }, + "tooltip": { + "description": "Shows this text on hover.\nSupports embedding scripts between `{{double braces}}`.\n\nNote that full dynamic string support is not currently supported.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "transition_duration": { + "description": "The length in milliseconds\nof the transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Default**: `250`", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + }, + "transition_type": { + "description": "The transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Valid options**: `slide_start`, `slide_end`, `crossfade`, `none`\n
\n**Default**: `slide_start`", + "anyOf": [ + { + "$ref": "#/$defs/TransitionType" + }, + { + "type": "null" + } + ] + }, + "truncate": { + "description": "See [truncate options](module-level-options#truncate-mode).\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/TruncateMode" + }, + { + "type": "null" + } + ] + }, + "truncate_popup_album": { + "description": "See [truncate options](module-level-options#truncate-mode).\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/TruncateMode" + }, + { + "type": "null" + } + ] + }, + "truncate_popup_artist": { + "description": "See [truncate options](module-level-options#truncate-mode).\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/TruncateMode" + }, + { + "type": "null" + } + ] + }, + "truncate_popup_title": { + "description": "See [truncate options](module-level-options#truncate-mode).\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/TruncateMode" + }, + { + "type": "null" + } + ] + } + } + }, + "NetworkManagerModule": { + "description": "The following are module-level options which are present on **all** modules.\n\nEach module also provides options specific to its type.\nFor details on those, check the relevant module documentation.\n\nFor information on the Script type, and embedding scripts in strings,\nsee [here](script).\nFor information on styling, please see the [styling guide](styling-guide).", + "type": "object", + "properties": { + "class": { + "description": "Sets one or more CSS classes,\nallowing you to target it in CSS using `.class`.\n\nUnlike [name](#name), the `class` property is not expected to be unique.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "disable_popup": { + "description": "Prevents the popup from opening on-click for this widget.", + "type": "boolean", + "default": false + }, + "icon_size": { + "type": "integer", + "format": "int32", + "default": 24 + }, + "name": { + "description": "Sets the unique widget name,\nallowing you to target it in CSS using `#name`.\n\nIt is best practise (although not required) to ensure that the value is\nglobally unique throughout the Ironbar instance\nto avoid clashes.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "on_click_left": { + "description": "A [script](scripts) to run when the module is left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_left_double": { + "description": "A [script](scripts) to run when the module is double-left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle": { + "description": "A [script](scripts) to run when the module is middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_click_middle = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle_double": { + "description": "A [script](scripts) to run when the module is double-middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_middle_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right": { + "description": "A [script](scripts) to run when the module is right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n/// # Example\n\n```corn\n{ on_click_right = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right_double": { + "description": "A [script](scripts) to run when the module is double-right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_right_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_enter": { + "description": "A [script](scripts) to run when the cursor begins hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_enter = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_exit": { + "description": "A [script](scripts) to run when the cursor stops hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_exit = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_down": { + "description": "A [script](scripts) to run when the module is scrolled down on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_down = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_up": { + "description": "A [script](scripts) to run when the module is scrolled up on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_up = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "show_if": { + "description": "Shows the module only if the dynamic boolean evaluates to true.\n\nThis allows for modules to be dynamically shown or hidden\nbased on custom events.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/DynamicBool" + }, + { + "type": "null" + } + ] + }, + "smooth_scroll_speed": { + "description": "A multiplier from `0.0` - `10.0` to control the speed\nof smooth scrolling on trackpad.\n\n**Default**: `1.0`", + "type": [ + "number", + "null" + ], + "format": "double" + }, + "tooltip": { + "description": "Shows this text on hover.\nSupports embedding scripts between `{{double braces}}`.\n\nNote that full dynamic string support is not currently supported.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "transition_duration": { + "description": "The length in milliseconds\nof the transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Default**: `250`", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + }, + "transition_type": { + "description": "The transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Valid options**: `slide_start`, `slide_end`, `crossfade`, `none`\n
\n**Default**: `slide_start`", + "anyOf": [ + { + "$ref": "#/$defs/TransitionType" + }, + { + "type": "null" + } + ] + } + } + }, + "NotificationsModule": { + "description": "The following are module-level options which are present on **all** modules.\n\nEach module also provides options specific to its type.\nFor details on those, check the relevant module documentation.\n\nFor information on the Script type, and embedding scripts in strings,\nsee [here](script).\nFor information on styling, please see the [styling guide](styling-guide).", + "type": "object", + "properties": { + "class": { + "description": "Sets one or more CSS classes,\nallowing you to target it in CSS using `.class`.\n\nUnlike [name](#name), the `class` property is not expected to be unique.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "disable_popup": { + "description": "Prevents the popup from opening on-click for this widget.", + "type": "boolean", + "default": false + }, + "icons": { + "description": "SwayNC state icons.\n\nSee [icons](#icons).", + "$ref": "#/$defs/Icons4" + }, + "name": { + "description": "Sets the unique widget name,\nallowing you to target it in CSS using `#name`.\n\nIt is best practise (although not required) to ensure that the value is\nglobally unique throughout the Ironbar instance\nto avoid clashes.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "on_click_left": { + "description": "A [script](scripts) to run when the module is left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_left_double": { + "description": "A [script](scripts) to run when the module is double-left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle": { + "description": "A [script](scripts) to run when the module is middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_click_middle = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle_double": { + "description": "A [script](scripts) to run when the module is double-middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_middle_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right": { + "description": "A [script](scripts) to run when the module is right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n/// # Example\n\n```corn\n{ on_click_right = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right_double": { + "description": "A [script](scripts) to run when the module is double-right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_right_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_enter": { + "description": "A [script](scripts) to run when the cursor begins hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_enter = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_exit": { + "description": "A [script](scripts) to run when the cursor stops hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_exit = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_down": { + "description": "A [script](scripts) to run when the module is scrolled down on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_down = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_up": { + "description": "A [script](scripts) to run when the module is scrolled up on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_up = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "show_count": { + "description": "Whether to show the current notification count.\n\n**Default**: `true`", + "type": "boolean", + "default": true + }, + "show_if": { + "description": "Shows the module only if the dynamic boolean evaluates to true.\n\nThis allows for modules to be dynamically shown or hidden\nbased on custom events.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/DynamicBool" + }, + { + "type": "null" + } + ] + }, + "smooth_scroll_speed": { + "description": "A multiplier from `0.0` - `10.0` to control the speed\nof smooth scrolling on trackpad.\n\n**Default**: `1.0`", + "type": [ + "number", + "null" + ], + "format": "double" + }, + "tooltip": { + "description": "Shows this text on hover.\nSupports embedding scripts between `{{double braces}}`.\n\nNote that full dynamic string support is not currently supported.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "transition_duration": { + "description": "The length in milliseconds\nof the transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Default**: `250`", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + }, + "transition_type": { + "description": "The transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Valid options**: `slide_start`, `slide_end`, `crossfade`, `none`\n
\n**Default**: `slide_start`", + "anyOf": [ + { + "$ref": "#/$defs/TransitionType" + }, + { + "type": "null" + } + ] + } + } + }, + "PlayerType": { + "type": "string", + "enum": [ + "mpd", + "mpris" + ] + }, + "PopupConfig": { + "type": "object", + "properties": { + "device": { + "description": "Device box related configuration", + "$ref": "#/$defs/PopupDeviceConfig" + }, + "disabled": { + "description": "Format string to use for the message that is displayed when the adapter is not found or disabled.\n\n**Default**: `\"{adapter_status}\"`", + "type": "string", + "default": "{adapter_status}" + }, + "header": { + "description": "Format string to use for the header of popup window.\n\n**Default**: `\" Enable Bluetooth\"`", + "type": "string", + "default": " Enable Bluetooth" + }, + "max_height": { + "description": "The maximum height the window can reach before scrolling.\nSpecify either as `pixels` or `devices`.\nLeave blank to allow the popup to grow indefinitely.\n\n**Default**: `Some(SizeLimit::Pixel(330))`", + "anyOf": [ + { + "$ref": "#/$defs/SizeLimit" + }, + { + "type": "null" + } + ] + } + } + }, + "PopupDeviceConfig": { + "type": "object", + "properties": { + "footer": { + "description": "Format string to use for the footer of device box.\n\n**Default**: `\"{device_status}\"`", + "type": "string", + "default": "{device_status}" + }, + "footer_battery": { + "description": "Format string to use for the footer of device box when `{device_battery_percent}` is available.\n\n**Default**: `\"{device_status} • Battery {device_battery_percent}%\"`", + "type": "string", + "default": "{device_status} • Battery {device_battery_percent}%" + }, + "header": { + "description": "Format string to use for the header of device box.\n\n**Default**: `\"{device_alias}\"`", + "type": "string", + "default": "{device_alias}" + }, + "header_battery": { + "description": "Format string to use for the header of device box when `{device_battery_percent}` is available.\n\n**Default**: `\"{device_alias}\"`", + "type": "string", + "default": "{device_alias}" + } + } + }, + "ProgressWidget": { + "type": "object", + "properties": { + "class": { + "description": "Widget class name.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ], + "default": null + }, + "label": { + "description": "Text label to show for the progress bar.\n\nThis is a [Dynamic String](dynamic-values#dynamic-string).\n\n**Default**: `null`", + "type": [ + "string", + "null" + ], + "default": null + }, + "length": { + "description": "The progress bar length, in pixels.\nGTK will automatically determine the size if left blank.\n\n**Default**: `null`", + "type": [ + "integer", + "null" + ], + "format": "int32", + "default": null + }, + "max": { + "description": "The maximum progress bar value.\n\n**Default**: `100`", + "type": "number", + "format": "double", + "default": 100.0 + }, + "name": { + "description": "Widget name.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ], + "default": null + }, + "orientation": { + "description": "Orientation of the progress bar.\n\n**Valid options**: `horizontal`, `vertical`, `h`, `v`\n
\n**Default**: `horizontal`", + "$ref": "#/$defs/ModuleOrientation" + }, + "value": { + "description": "Script to run to get the progress bar value.\nOutput must be a valid percentage.\n\nNote that this expects a numeric value between `0`-`max` as output.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + } + } + }, + "ReservedTrayAction": { + "description": "Reserved tray click actions", + "oneOf": [ + { + "description": "Open the tray icon's popup menu", + "type": "string", + "const": "menu" + }, + { + "description": "Trigger the tray icon's default (primary) action", + "type": "string", + "const": "default" + }, + { + "description": "Trigger the tray icon's secondary action", + "type": "string", + "const": "secondary" + }, + { + "description": "Do nothing", + "type": "string", + "const": "none" + } + ] + }, + "Script": { + "type": "object", + "properties": { + "cmd": { + "type": "string", + "default": "" + }, + "interval": { + "type": "integer", + "format": "uint64", + "default": 5000, + "minimum": 0 + }, + "mode": { + "$ref": "#/$defs/ScriptMode" + } + } + }, + "ScriptInput": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/$defs/Script" + } + ] + }, + "ScriptMode": { + "type": "string", + "enum": [ + "poll", + "watch" + ] + }, + "ScriptModule": { + "description": "The following are module-level options which are present on **all** modules.\n\nEach module also provides options specific to its type.\nFor details on those, check the relevant module documentation.\n\nFor information on the Script type, and embedding scripts in strings,\nsee [here](script).\nFor information on styling, please see the [styling guide](styling-guide).", + "type": "object", + "properties": { + "class": { + "description": "Sets one or more CSS classes,\nallowing you to target it in CSS using `.class`.\n\nUnlike [name](#name), the `class` property is not expected to be unique.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "cmd": { + "description": "Path to script to execute.\n\nThis can be an absolute path,\nor relative to the working directory.\n\n**Required**", + "type": "string", + "default": "" + }, + "disable_popup": { + "description": "Prevents the popup from opening on-click for this widget.", + "type": "boolean", + "default": false + }, + "interval": { + "description": "Time in milliseconds between executions.\n\n**Default**: `5000`", + "type": "integer", + "format": "uint64", + "default": 5000, + "minimum": 0 + }, + "justify": { + "description": "The justification (alignment) of the widget text shown on the bar.\n\n**Valid options**: `left`, `right`, `center`, `fill`\n
\n**Default**: `left`", + "$ref": "#/$defs/ModuleJustification" + }, + "mode": { + "description": "Script execution mode.\nSee [modes](#modes) for more info.\n\n**Valid options**: `poll`, `watch`\n
\n**Default**: `poll`", + "$ref": "#/$defs/ScriptMode" + }, + "name": { + "description": "Sets the unique widget name,\nallowing you to target it in CSS using `#name`.\n\nIt is best practise (although not required) to ensure that the value is\nglobally unique throughout the Ironbar instance\nto avoid clashes.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "on_click_left": { + "description": "A [script](scripts) to run when the module is left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_left_double": { + "description": "A [script](scripts) to run when the module is double-left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle": { + "description": "A [script](scripts) to run when the module is middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_click_middle = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle_double": { + "description": "A [script](scripts) to run when the module is double-middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_middle_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right": { + "description": "A [script](scripts) to run when the module is right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n/// # Example\n\n```corn\n{ on_click_right = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right_double": { + "description": "A [script](scripts) to run when the module is double-right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_right_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_enter": { + "description": "A [script](scripts) to run when the cursor begins hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_enter = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_exit": { + "description": "A [script](scripts) to run when the cursor stops hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_exit = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_down": { + "description": "A [script](scripts) to run when the module is scrolled down on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_down = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_up": { + "description": "A [script](scripts) to run when the module is scrolled up on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_up = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "orientation": { + "description": "The orientation to display the widget contents.\nSetting to vertical will rotate text 90 degrees.\n\n**Valid options**: `horizontal`, `vertical`\n
\n**Default**: `horizontal`", + "anyOf": [ + { + "$ref": "#/$defs/ModuleOrientation" + }, + { + "type": "null" + } + ] + }, + "show_if": { + "description": "Shows the module only if the dynamic boolean evaluates to true.\n\nThis allows for modules to be dynamically shown or hidden\nbased on custom events.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/DynamicBool" + }, + { + "type": "null" + } + ] + }, + "smooth_scroll_speed": { + "description": "A multiplier from `0.0` - `10.0` to control the speed\nof smooth scrolling on trackpad.\n\n**Default**: `1.0`", + "type": [ + "number", + "null" + ], + "format": "double" + }, + "tooltip": { + "description": "Shows this text on hover.\nSupports embedding scripts between `{{double braces}}`.\n\nNote that full dynamic string support is not currently supported.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "transition_duration": { + "description": "The length in milliseconds\nof the transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Default**: `250`", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + }, + "transition_type": { + "description": "The transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Valid options**: `slide_start`, `slide_end`, `crossfade`, `none`\n
\n**Default**: `slide_start`", + "anyOf": [ + { + "$ref": "#/$defs/TransitionType" + }, + { + "type": "null" + } + ] + } + } + }, + "SizeLimit": { + "oneOf": [ + { + "type": "object", + "properties": { + "devices": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false, + "required": [ + "devices" + ] + }, + { + "type": "object", + "properties": { + "pixels": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false, + "required": [ + "pixels" + ] + } + ] + }, + "SliderWidget": { + "type": "object", + "properties": { + "class": { + "description": "Widget class name.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ], + "default": null + }, + "length": { + "description": "The slider length.\nGTK will automatically determine the size if left blank.\n\n**Default**: `null`", + "type": [ + "integer", + "null" + ], + "format": "int32", + "default": null + }, + "max": { + "description": "Maximum slider value.\n\n**Default**: `100`", + "type": "number", + "format": "double", + "default": 100.0 + }, + "min": { + "description": "Minimum slider value.\n\n**Default**: `0`", + "type": "number", + "format": "double", + "default": 0.0 + }, + "name": { + "description": "Widget name.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ], + "default": null + }, + "on_change": { + "description": "Command to execute when the slider changes.\nMore on this [below](#slider).\n\nNote that this will provide the floating point value as an argument.\nIf your input program requires an integer, you will need to round it.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ], + "default": null + }, + "orientation": { + "description": "Orientation of the slider.\n\n**Valid options**: `horizontal`, `vertical`, `h`, `v`\n
\n**Default**: `horizontal`", + "$ref": "#/$defs/ModuleOrientation" + }, + "show_label": { + "description": "Whether to show the value label above the slider.\n\n**Default**: `true`", + "type": "boolean", + "default": true + }, + "step": { + "description": "If the increment to change when scrolling with the mousewheel.\nIf left blank, GTK will use the default value,\ndetermined by the current environment.\n\n**Default**: `null`", + "type": [ + "number", + "null" + ], + "format": "double", + "default": null + }, + "value": { + "description": "Script to run to get the slider value.\nOutput must be a valid number.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + } + } + }, + "SortOrder": { + "oneOf": [ + { + "description": "Shows workspaces in the order they're added", + "type": "string", + "const": "added" + }, + { + "description": "Shows workspaces in the order of their displayed labels,\naccounting for any mappings supplied in `name_map`.\nIn most cases, this is likely their number.\n\nWorkspaces are sorted numerically first,\nand named workspaces are added to the end in alphabetical order.", + "type": "string", + "const": "label" + }, + { + "description": "Shows workspaces in the order of their real names,\nas supplied by the compositor.\nIn most cases, this is likely their number.\n\nWorkspaces are sorted numerically first,\nand named workspaces are added to the end in alphabetical order.", + "type": "string", + "const": "name" + } + ] + }, + "SysInfoModule": { + "description": "The following are module-level options which are present on **all** modules.\n\nEach module also provides options specific to its type.\nFor details on those, check the relevant module documentation.\n\nFor information on the Script type, and embedding scripts in strings,\nsee [here](script).\nFor information on styling, please see the [styling guide](styling-guide).", + "type": "object", + "properties": { + "class": { + "description": "Sets one or more CSS classes,\nallowing you to target it in CSS using `.class`.\n\nUnlike [name](#name), the `class` property is not expected to be unique.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "direction": { + "description": "The orientation by which the labels are laid out.\n\n**Valid options**: `horizontal`, `vertical`, `h`, `v`\n
\n**Default** : `horizontal`", + "anyOf": [ + { + "$ref": "#/$defs/ModuleOrientation" + }, + { + "type": "null" + } + ] + }, + "disable_popup": { + "description": "Prevents the popup from opening on-click for this widget.", + "type": "boolean", + "default": false + }, + "format": { + "description": "List of strings including formatting tokens.\nFor available tokens, see [below](#formatting-tokens).\n\n**Required**", + "type": "array", + "default": [], + "items": { + "type": "string" + } + }, + "interval": { + "description": "Number of seconds between refresh.\n\nThis can be set as a global interval,\nor passed as an object to customize the interval per-system.\n\n**Default**: `5`", + "$ref": "#/$defs/Interval" + }, + "justify": { + "description": "The justification (alignment) of the widget text shown on the bar.\n\n**Valid options**: `left`, `right`, `center`, `fill`\n
\n**Default**: `left`", + "$ref": "#/$defs/ModuleJustification" + }, + "name": { + "description": "Sets the unique widget name,\nallowing you to target it in CSS using `#name`.\n\nIt is best practise (although not required) to ensure that the value is\nglobally unique throughout the Ironbar instance\nto avoid clashes.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "on_click_left": { + "description": "A [script](scripts) to run when the module is left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_left_double": { + "description": "A [script](scripts) to run when the module is double-left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle": { + "description": "A [script](scripts) to run when the module is middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_click_middle = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle_double": { + "description": "A [script](scripts) to run when the module is double-middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_middle_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right": { + "description": "A [script](scripts) to run when the module is right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n/// # Example\n\n```corn\n{ on_click_right = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right_double": { + "description": "A [script](scripts) to run when the module is double-right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_right_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_enter": { + "description": "A [script](scripts) to run when the cursor begins hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_enter = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_exit": { + "description": "A [script](scripts) to run when the cursor stops hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_exit = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_down": { + "description": "A [script](scripts) to run when the module is scrolled down on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_down = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_up": { + "description": "A [script](scripts) to run when the module is scrolled up on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_up = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "orientation": { + "description": "The orientation to display the widget contents.\nSetting to vertical will rotate text 90 degrees.\n\n**Valid options**: `horizontal`, `vertical`\n
\n**Default**: `horizontal`", + "anyOf": [ + { + "$ref": "#/$defs/ModuleOrientation" + }, + { + "type": "null" + } + ] + }, + "show_if": { + "description": "Shows the module only if the dynamic boolean evaluates to true.\n\nThis allows for modules to be dynamically shown or hidden\nbased on custom events.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/DynamicBool" + }, + { + "type": "null" + } + ] + }, + "smooth_scroll_speed": { + "description": "A multiplier from `0.0` - `10.0` to control the speed\nof smooth scrolling on trackpad.\n\n**Default**: `1.0`", + "type": [ + "number", + "null" + ], + "format": "double" + }, + "tooltip": { + "description": "Shows this text on hover.\nSupports embedding scripts between `{{double braces}}`.\n\nNote that full dynamic string support is not currently supported.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "transition_duration": { + "description": "The length in milliseconds\nof the transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Default**: `250`", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + }, + "transition_type": { + "description": "The transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Valid options**: `slide_start`, `slide_end`, `crossfade`, `none`\n
\n**Default**: `slide_start`", + "anyOf": [ + { + "$ref": "#/$defs/TransitionType" + }, + { + "type": "null" + } + ] + } + } + }, + "TransitionType": { + "type": "string", + "enum": [ + "none", + "crossfade", + "slide_start", + "slide_end" + ] + }, + "TrayClickAction": { + "description": "Action to perform when clicking on a tray icon", + "anyOf": [ + { + "description": "Reserved action", + "$ref": "#/$defs/ReservedTrayAction" + }, + { + "description": "Run a custom shell command", + "type": "string" + } + ] + }, + "TrayModule": { + "description": "Click action handlers for tray icons", + "type": "object", + "properties": { + "class": { + "description": "Sets one or more CSS classes,\nallowing you to target it in CSS using `.class`.\n\nUnlike [name](#name), the `class` property is not expected to be unique.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "direction": { + "description": "The direction in which to pack tray icons.\n\n**Valid options**: `horizontal`, `vertical`\n
\n**Default**: `horizontal` for horizontal bars, `vertical` for vertical bars", + "anyOf": [ + { + "$ref": "#/$defs/ModuleOrientation" + }, + { + "type": "null" + } + ] + }, + "disable_popup": { + "description": "Prevents the popup from opening on-click for this widget.", + "type": "boolean", + "default": false + }, + "icon_size": { + "description": "Size in pixels to display the tray icons as.\n\n**Default**: `16`", + "type": "integer", + "format": "uint32", + "default": 16, + "minimum": 0 + }, + "name": { + "description": "Sets the unique widget name,\nallowing you to target it in CSS using `#name`.\n\nIt is best practise (although not required) to ensure that the value is\nglobally unique throughout the Ironbar instance\nto avoid clashes.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "on_click_left": { + "description": "A [script](scripts) to run when the module is left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_left_double": { + "description": "A [script](scripts) to run when the module is double-left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle": { + "description": "A [script](scripts) to run when the module is middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_click_middle = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle_double": { + "description": "A [script](scripts) to run when the module is double-middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_middle_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right": { + "description": "A [script](scripts) to run when the module is right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n/// # Example\n\n```corn\n{ on_click_right = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right_double": { + "description": "A [script](scripts) to run when the module is double-right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_right_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_enter": { + "description": "A [script](scripts) to run when the cursor begins hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_enter = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_exit": { + "description": "A [script](scripts) to run when the cursor stops hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_exit = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_down": { + "description": "A [script](scripts) to run when the module is scrolled down on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_down = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_up": { + "description": "A [script](scripts) to run when the module is scrolled up on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_up = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "prefer_theme_icons": { + "description": "Requests that icons from the theme be used over the item-provided item.\nMost items only provide one or the other so this will have no effect in most circumstances.\n\n**Default**: `true`", + "type": "boolean", + "default": true + }, + "show_if": { + "description": "Shows the module only if the dynamic boolean evaluates to true.\n\nThis allows for modules to be dynamically shown or hidden\nbased on custom events.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/DynamicBool" + }, + { + "type": "null" + } + ] + }, + "smooth_scroll_speed": { + "description": "A multiplier from `0.0` - `10.0` to control the speed\nof smooth scrolling on trackpad.\n\n**Default**: `1.0`", + "type": [ + "number", + "null" + ], + "format": "double" + }, + "tooltip": { + "description": "Shows this text on hover.\nSupports embedding scripts between `{{double braces}}`.\n\nNote that full dynamic string support is not currently supported.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "transition_duration": { + "description": "The length in milliseconds\nof the transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Default**: `250`", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + }, + "transition_type": { + "description": "The transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Valid options**: `slide_start`, `slide_end`, `crossfade`, `none`\n
\n**Default**: `slide_start`", + "anyOf": [ + { + "$ref": "#/$defs/TransitionType" + }, + { + "type": "null" + } + ] + } + } + }, + "TruncateMode": { + "description": "Some modules provide options for truncating text.\nThis is controlled using a common `TruncateMode` type,\nwhich is defined below.\n\nThe option can be configured in one of two modes.\n\n**Default**: `Auto (end)`", + "anyOf": [ + { + "description": "Do not truncate content.\n\nSetting this option may cause excessively long content to overflow other widgets,\nshifting them off-screen.\n\n# Example\n\n```corn\n{ truncate = \"off\" }", + "type": "null" + }, + { + "description": "Auto mode lets GTK decide when to ellipsize.\n\nTo use this mode, set the truncate option to a string\ndeclaring the location to truncate text from and place the ellipsis.\n\n# Example\n\n```corn\n{ truncate = \"start\" }\n```\n\n**Valid options**: `start`, `middle`, `end`\n
\n**Default**: `end`", + "$ref": "#/$defs/EllipsizeMode" + }, + { + "description": "Length mode defines a fixed point at which to ellipsize.\n\nGenerally you will want to set only one of `length` or `max_length`,\nbut you can set both if required.\n\n# Example\n\n```corn\n{\n truncate.mode = \"start\"\n truncate.length = 50\n truncate.max_length = 70\n}\n```", + "type": "object", + "properties": { + "length": { + "description": "The fixed width (in characters) of the widget.\n\nThe widget will be expanded to this width\nif it would have otherwise been smaller.\n\nLeave unset to let GTK automatically handle.\n\n**Default**: `null`", + "type": [ + "integer", + "null" + ], + "format": "int32" + }, + "max_length": { + "description": "The maximum number of characters to show\nbefore truncating.\n\nLeave unset to let GTK automatically handle.\n\n**Default**: `null`", + "type": [ + "integer", + "null" + ], + "format": "int32" + }, + "mode": { + "description": "The location to truncate text from and place the ellipsis.\n**Valid options**: `start`, `middle`, `end`\n
\n**Default**: `null`", + "$ref": "#/$defs/EllipsizeMode" + } + }, + "required": [ + "mode" + ] + } + ] + }, + "VolumeModule": { + "description": "The following are module-level options which are present on **all** modules.\n\nEach module also provides options specific to its type.\nFor details on those, check the relevant module documentation.\n\nFor information on the Script type, and embedding scripts in strings,\nsee [here](script).\nFor information on styling, please see the [styling guide](styling-guide).", + "type": "object", + "properties": { + "class": { + "description": "Sets one or more CSS classes,\nallowing you to target it in CSS using `.class`.\n\nUnlike [name](#name), the `class` property is not expected to be unique.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "disable_popup": { + "description": "Prevents the popup from opening on-click for this widget.", + "type": "boolean", + "default": false + }, + "format": { + "description": "The format string to use for the widget button label.\nFor available tokens, see [below](#formatting-tokens).\n\n**Default**: `{icon} {percentage}%`", + "type": "string", + "default": "{icon} {percentage}%" + }, + "icons": { + "description": "Volume state icons.\n\nSee [icons](#icons).", + "$ref": "#/$defs/Icons5" + }, + "justify": { + "description": "The justification (alignment) of the widget text shown on the bar.\n\n**Valid options**: `left`, `right`, `center`, `fill`\n
\n**Default**: `left`", + "$ref": "#/$defs/ModuleJustification" + }, + "max_volume": { + "description": "Maximum value to allow volume sliders to reach.\nPulse supports values > 100 but this may result in distortion.\n\n**Default**: `100`", + "type": "number", + "format": "double", + "default": 100.0 + }, + "name": { + "description": "Sets the unique widget name,\nallowing you to target it in CSS using `#name`.\n\nIt is best practise (although not required) to ensure that the value is\nglobally unique throughout the Ironbar instance\nto avoid clashes.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "on_click_left": { + "description": "A [script](scripts) to run when the module is left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_left_double": { + "description": "A [script](scripts) to run when the module is double-left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle": { + "description": "A [script](scripts) to run when the module is middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_click_middle = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle_double": { + "description": "A [script](scripts) to run when the module is double-middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_middle_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right": { + "description": "A [script](scripts) to run when the module is right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n/// # Example\n\n```corn\n{ on_click_right = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right_double": { + "description": "A [script](scripts) to run when the module is double-right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_right_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_enter": { + "description": "A [script](scripts) to run when the cursor begins hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_enter = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_exit": { + "description": "A [script](scripts) to run when the cursor stops hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_exit = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_down": { + "description": "A [script](scripts) to run when the module is scrolled down on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_down = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_up": { + "description": "A [script](scripts) to run when the module is scrolled up on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_up = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "orientation": { + "description": "The orientation to display the widget contents.\nSetting to vertical will rotate text 90 degrees.\n\n**Valid options**: `horizontal`, `vertical`\n
\n**Default**: `horizontal`", + "anyOf": [ + { + "$ref": "#/$defs/ModuleOrientation" + }, + { + "type": "null" + } + ] + }, + "show_if": { + "description": "Shows the module only if the dynamic boolean evaluates to true.\n\nThis allows for modules to be dynamically shown or hidden\nbased on custom events.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/DynamicBool" + }, + { + "type": "null" + } + ] + }, + "smooth_scroll_speed": { + "description": "A multiplier from `0.0` - `10.0` to control the speed\nof smooth scrolling on trackpad.\n\n**Default**: `1.0`", + "type": [ + "number", + "null" + ], + "format": "double" + }, + "tooltip": { + "description": "Shows this text on hover.\nSupports embedding scripts between `{{double braces}}`.\n\nNote that full dynamic string support is not currently supported.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "transition_duration": { + "description": "The length in milliseconds\nof the transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Default**: `250`", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + }, + "transition_type": { + "description": "The transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Valid options**: `slide_start`, `slide_end`, `crossfade`, `none`\n
\n**Default**: `slide_start`", + "anyOf": [ + { + "$ref": "#/$defs/TransitionType" + }, + { + "type": "null" + } + ] + }, + "truncate": { + "description": "See [truncate options](module-level-options#truncate-mode).\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/TruncateMode" + }, + { + "type": "null" + } + ] + } + } + }, + "Widget": { + "oneOf": [ + { + "description": "A container to place nested widgets inside.", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "box" + } + }, + "$ref": "#/$defs/BoxWidget", + "required": [ + "type" + ] + }, + { + "description": "A text label. Pango markup is supported.", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "label" + } + }, + "$ref": "#/$defs/LabelWidget", + "required": [ + "type" + ] + }, + { + "description": "A clickable button, which can run a command when clicked.", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "button" + } + }, + "$ref": "#/$defs/ButtonWidget", + "required": [ + "type" + ] + }, + { + "description": "An image or icon from disk or http.", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "image" + } + }, + "$ref": "#/$defs/ImageWidget", + "required": [ + "type" + ] + }, + { + "description": "A draggable slider.", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "slider" + } + }, + "$ref": "#/$defs/SliderWidget", + "required": [ + "type" + ] + }, + { + "description": "A progress bar.", + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "progress" + } + }, + "$ref": "#/$defs/ProgressWidget", + "required": [ + "type" + ] + } + ] + }, + "WidgetConfig": { + "description": "The following are module-level options which are present on **all** modules.\n\nEach module also provides options specific to its type.\nFor details on those, check the relevant module documentation.\n\nFor information on the Script type, and embedding scripts in strings,\nsee [here](script).\nFor information on styling, please see the [styling guide](styling-guide).", + "type": "object", + "properties": { + "class": { + "description": "Sets one or more CSS classes,\nallowing you to target it in CSS using `.class`.\n\nUnlike [name](#name), the `class` property is not expected to be unique.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "disable_popup": { + "description": "Prevents the popup from opening on-click for this widget.", + "type": "boolean", + "default": false + }, + "name": { + "description": "Sets the unique widget name,\nallowing you to target it in CSS using `#name`.\n\nIt is best practise (although not required) to ensure that the value is\nglobally unique throughout the Ironbar instance\nto avoid clashes.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "on_click_left": { + "description": "A [script](scripts) to run when the module is left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_left_double": { + "description": "A [script](scripts) to run when the module is double-left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle": { + "description": "A [script](scripts) to run when the module is middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_click_middle = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle_double": { + "description": "A [script](scripts) to run when the module is double-middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_middle_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right": { + "description": "A [script](scripts) to run when the module is right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n/// # Example\n\n```corn\n{ on_click_right = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right_double": { + "description": "A [script](scripts) to run when the module is double-right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_right_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_enter": { + "description": "A [script](scripts) to run when the cursor begins hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_enter = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_exit": { + "description": "A [script](scripts) to run when the cursor stops hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_exit = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_down": { + "description": "A [script](scripts) to run when the module is scrolled down on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_down = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_up": { + "description": "A [script](scripts) to run when the module is scrolled up on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_up = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "show_if": { + "description": "Shows the module only if the dynamic boolean evaluates to true.\n\nThis allows for modules to be dynamically shown or hidden\nbased on custom events.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/DynamicBool" + }, + { + "type": "null" + } + ] + }, + "smooth_scroll_speed": { + "description": "A multiplier from `0.0` - `10.0` to control the speed\nof smooth scrolling on trackpad.\n\n**Default**: `1.0`", + "type": [ + "number", + "null" + ], + "format": "double" + }, + "tooltip": { + "description": "Shows this text on hover.\nSupports embedding scripts between `{{double braces}}`.\n\nNote that full dynamic string support is not currently supported.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "transition_duration": { + "description": "The length in milliseconds\nof the transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Default**: `250`", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + }, + "transition_type": { + "description": "The transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Valid options**: `slide_start`, `slide_end`, `crossfade`, `none`\n
\n**Default**: `slide_start`", + "anyOf": [ + { + "$ref": "#/$defs/TransitionType" + }, + { + "type": "null" + } + ] + } + }, + "anyOf": [ + { + "description": "A custom-module specific basic widget", + "$ref": "#/$defs/Widget" + }, + { + "description": "A native Ironbar module, such as `clock` or `focused`.\nAll widgets are supported, including their popups.", + "$ref": "#/$defs/ModuleConfig" + } + ] + }, + "WorkspacesModule": { + "description": "The following are module-level options which are present on **all** modules.\n\nEach module also provides options specific to its type.\nFor details on those, check the relevant module documentation.\n\nFor information on the Script type, and embedding scripts in strings,\nsee [here](script).\nFor information on styling, please see the [styling guide](styling-guide).", + "type": "object", + "properties": { + "all_monitors": { + "description": "Whether to display workspaces from all monitors.\nWhen false, only shows workspaces on the current monitor.\n\n**Default**: `false`", + "type": "boolean", + "default": false + }, + "class": { + "description": "Sets one or more CSS classes,\nallowing you to target it in CSS using `.class`.\n\nUnlike [name](#name), the `class` property is not expected to be unique.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "disable_popup": { + "description": "Prevents the popup from opening on-click for this widget.", + "type": "boolean", + "default": false + }, + "favorites": { + "description": "Workspaces which should always be shown.\nThis can either be an array of workspace names,\nor a map of monitor names to arrays of workspace names.\n\n**Default**: `{}`\n\n# Example\n\n```corn\n// array format\n{\n type = \"workspaces\"\n favorites = [\"1\", \"2\", \"3\"]\n}\n\n// map format\n{\n type = \"workspaces\"\n favorites.DP-1 = [\"1\", \"2\", \"3\"]\n favorites.DP-2 = [\"4\", \"5\", \"6\"]\n}\n```", + "$ref": "#/$defs/Favorites" + }, + "hidden": { + "description": "A list of workspace names to never show.\n\nThis may be useful for scratchpad/special workspaces, for example.\n\n**Default**: `[]`", + "type": "array", + "default": [], + "items": { + "type": "string" + } + }, + "icon_size": { + "description": "The size to render icons at (image icons only).\n\n**Default**: `32`", + "type": "integer", + "format": "int32", + "default": 32 + }, + "justify": { + "description": "The justification (alignment) of the widget text shown on the bar.\n\n**Valid options**: `left`, `right`, `center`, `fill`\n
\n**Default**: `left`", + "$ref": "#/$defs/ModuleJustification" + }, + "name": { + "description": "Sets the unique widget name,\nallowing you to target it in CSS using `#name`.\n\nIt is best practise (although not required) to ensure that the value is\nglobally unique throughout the Ironbar instance\nto avoid clashes.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "name_map": { + "description": "Map of actual workspace names to custom names.\n\nCustom names can be [images](images).\n\nIf a workspace is not present in the map,\nit will fall back to using its actual name.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "default": {} + }, + "on_click_left": { + "description": "A [script](scripts) to run when the module is left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_left_double": { + "description": "A [script](scripts) to run when the module is double-left-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_left_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle": { + "description": "A [script](scripts) to run when the module is middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_click_middle = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_middle_double": { + "description": "A [script](scripts) to run when the module is double-middle-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_middle_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right": { + "description": "A [script](scripts) to run when the module is right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n/// # Example\n\n```corn\n{ on_click_right = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_click_right_double": { + "description": "A [script](scripts) to run when the module is double-right-clicked.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n\n# Example\n\n```corn\n{ on_click_right_double = \"echo 'double click' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_enter": { + "description": "A [script](scripts) to run when the cursor begins hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_enter = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_mouse_exit": { + "description": "A [script](scripts) to run when the cursor stops hovering over the module.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_mouse_exit = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_down": { + "description": "A [script](scripts) to run when the module is scrolled down on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_down = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "on_scroll_up": { + "description": "A [script](scripts) to run when the module is scrolled up on.\n\n**Supported script types**: `oneshot`.\n
\n**Default**: `null`\n# Example\n\n```corn\n{ on_scroll_up = \"echo 'event' >> log.txt\" }\n```", + "anyOf": [ + { + "$ref": "#/$defs/ScriptInput" + }, + { + "type": "null" + } + ] + }, + "orientation": { + "description": "The orientation to display the widget contents.\nSetting to vertical will rotate text 90 degrees.\n\n**Valid options**: `horizontal`, `vertical`\n
\n**Default**: `horizontal`", + "anyOf": [ + { + "$ref": "#/$defs/ModuleOrientation" + }, + { + "type": "null" + } + ] + }, + "show_if": { + "description": "Shows the module only if the dynamic boolean evaluates to true.\n\nThis allows for modules to be dynamically shown or hidden\nbased on custom events.\n\n**Default**: `null`", + "anyOf": [ + { + "$ref": "#/$defs/DynamicBool" + }, + { + "type": "null" + } + ] + }, + "smooth_scroll_speed": { + "description": "A multiplier from `0.0` - `10.0` to control the speed\nof smooth scrolling on trackpad.\n\n**Default**: `1.0`", + "type": [ + "number", + "null" + ], + "format": "double" + }, + "sort": { + "description": "The method used for sorting workspaces.\n\n- `added` always appends to the end.\n- `label` sorts by displayed value.\n- `name` sorts by workspace name.\n\n**Valid options**: `added`, `label`, `name`.\n
\n**Default**: `label`", + "$ref": "#/$defs/SortOrder" + }, + "tooltip": { + "description": "Shows this text on hover.\nSupports embedding scripts between `{{double braces}}`.\n\nNote that full dynamic string support is not currently supported.\n\n**Default**: `null`", + "type": [ + "string", + "null" + ] + }, + "transition_duration": { + "description": "The length in milliseconds\nof the transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Default**: `250`", + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0 + }, + "transition_type": { + "description": "The transition animation to use when showing/hiding the widget.\n\nNote this has no effect if `show_if` is not configured.\n\n**Valid options**: `slide_start`, `slide_end`, `crossfade`, `none`\n
\n**Default**: `slide_start`", + "anyOf": [ + { + "$ref": "#/$defs/TransitionType" + }, + { + "type": "null" + } + ] + } + } + }, + "XdgEntry": { + "type": "object", + "properties": { + "categories": { + "description": "XDG categories the associated submenu should contain.", + "type": "array", + "default": [], + "items": { + "type": "string" + } + }, + "icon": { + "description": "Name of the image icon to show next to the label.", + "type": [ + "string", + "null" + ], + "default": null + }, + "label": { + "description": "Text to display on the button.", + "type": "string", + "default": "" + } + } + } + } +} diff --git a/config/ironbar/scripts/pomo b/config/ironbar/scripts/pomo new file mode 100755 index 0000000..6e2892c --- /dev/null +++ b/config/ironbar/scripts/pomo @@ -0,0 +1,9 @@ +#!/bin/bash + +ID=$(niri msg -j windows | jq -r '.[] | select(.app_id == "pomo") | .id' | head -1) + +if [ -n "$ID" ] && [ "$ID" != "null" ]; then + niri msg action focus-window --id "$ID" +else + footclient --app-id=pomo pomo +fi diff --git a/config/ironbar/scripts/walker.sh b/config/ironbar/scripts/walker.sh new file mode 100755 index 0000000..b3881b1 --- /dev/null +++ b/config/ironbar/scripts/walker.sh @@ -0,0 +1,2 @@ +#!/bin/bash +walker diff --git a/config/ironbar/style.css b/config/ironbar/style.css new file mode 100644 index 0000000..1e9f574 --- /dev/null +++ b/config/ironbar/style.css @@ -0,0 +1,183 @@ +:root { + --color-dark-primary: #07090b; + --color-dark-secondary: #1f2830; + --color-white: #eef7fd; + --color-active: #00fed4; + --color-urgent: #ff0100; + + --margin-lg: 1em; + --margin-sm: 1em; +} + +* { + border: none; + box-shadow: none; + background-image: none; + font-family: IosevkaTerm NF; + min-height: 20px; + min-width: 20px; +} + +scale>trough { + background-color: var(--color-dark-secondary); +} + +scale>trough>highlight { + background-color: var(--color-active); + border-style: solid; + border-color: var(--color-active); + border-width: 0em; +} + +scale>trough>slider { + background-color: var(--color-white); +} + +switch>slider { + background-color: var(--color-white); +} + +switch:checked { + background-color: var(--color-active); +} + +switch:not(:checked) { + background-color: var(--color-dark-secondary); +} + +#bar, +popover, +popover contents, +calendar { + background-color: var(--color-dark-primary); +} + +box, +button, +label { + background-color: #0000; + color: var(--color-white); +} + +button { + padding-left: var(--margin-sm); + padding-right: var(--margin-sm); +} + +button:hover, +button:active { + background-color: var(--color-dark-secondary); +} + +#end>*+* {} + +.sysinfo>*+* { + margin-left: var(--margin-sm); +} + +.clock { + font-weight: bold; +} + +.popup-clock .calendar-clock { + font-size: 2.0em; +} + +.popup-clock .calendar .today { + background-color: var(--color-active); +} + +.focused .icon { + padding-top: 0.5em; + +} + +.workspaces { + /*(max-width: 5px; + max-height: 5px; + + ga:width: ;p: 10em; + */ + padding-left: 15px; + padding-right: 15px; + min-width: 15px; + min-height: 15px; + +} + +.workspaces .item { + min-width: 15px; + + min-height: 15px; + border-radius: 50%; + padding: 0px; + background-color: var(--color-dark-secondary); + box-shadow: none; + margin: 5px 1px 0px 1px; +} + +.workspaces .item.visible { + background-color: var(--color-white); + box-shadow: none; +} + +.workspaces .item.focused { + background-color: var(--color-active); + border-radius: 10px; + min-height: 35px; + box-shadow: none; + +} + +.workspaces .item.urgent { + background-color: var(--color-urgent); + box-shadow: none; + min-width: 10px; + padding-left: 0px; + padding-right: 0px; +} + +.workspaces .item .text-icon { + font-size: 0; + min-width: 0; +} + +.workspaces .item label { + opacity: 0; + font-size: 0; + min-width: 15px; + min-height: 15px; + + +} + +.notifications .count { + /*max-height: 10px; + + max-width: 10px; + +*/ +} + +.notifications label { + /*max-height: 10px; + + max-width: 10px; + +*/ +} + + +/* по name на кнопке */ +#my-btn { + border-radius: 8px; + + padding-top: 10px; +} + +#pomo { + border-radius: 8px; + + padding-top: 10px; + padding-left: 10px; +} diff --git a/config/keymap.xkb b/config/keymap.xkb new file mode 100644 index 0000000..4041036 --- /dev/null +++ b/config/keymap.xkb @@ -0,0 +1,21 @@ +xkb_keymap { + xkb_keycodes { include "evdev+aliases(qwerty)" }; + xkb_types { include "complete" }; + xkb_compat { include "complete" }; + xkb_symbols { + include "pc+us+ru:2+inet(evdev)" + + // Физический Caps → Escape + key { [ Escape ] }; + + // Физический Esc → переключение раскладки + key { [ ISO_Next_Group ] }; + + // Alt ↔ Super + key { [ Super_L ] }; + key { [ Alt_L, Meta_L ] }; + key { [ Super_R ] }; + key { [ Alt_R, Meta_R ] }; + }; + xkb_geometry { include "pc(pc105)" }; +}; diff --git a/config/kitty/dank-tabs.conf b/config/kitty/dank-tabs.conf new file mode 100644 index 0000000..0922283 --- /dev/null +++ b/config/kitty/dank-tabs.conf @@ -0,0 +1,23 @@ +tab_bar_edge top +tab_bar_style powerline +tab_powerline_style slanted +tab_bar_align left +tab_bar_min_tabs 2 +tab_bar_margin_width 0.0 +tab_bar_margin_height 2.5 1.5 +tab_bar_margin_color #09070d + +tab_bar_background #09070d + +active_tab_foreground #1e1e00 +active_tab_background #b8a8f0 +active_tab_font_style bold + +inactive_tab_foreground #c9b8d9 +inactive_tab_background #09070d +inactive_tab_font_style normal + +tab_activity_symbol " ● " + +tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title[:30]}{title[30:] and '…'} [{index}]" +active_tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title[:30]}{title[30:] and '…'} [{index}]" diff --git a/config/kitty/dank-theme.conf b/config/kitty/dank-theme.conf new file mode 100644 index 0000000..cfdf370 --- /dev/null +++ b/config/kitty/dank-theme.conf @@ -0,0 +1,25 @@ +cursor #f0f0f0 +cursor_text_color #c9b8d9 + +foreground #f0f0f0 +background #09070d +selection_foreground #1e1e00 +selection_background #92eda7 +url_color #b8a8f0 + +color0 #130f1a +color1 #ff7290 +color2 #78f090 +color3 #ffd972 +color4 #a491e3 +color5 #3f316f +color6 #b8a8f0 +color7 #f0ecfc +color8 #92909c +color9 #ff9fb3 +color10 #a5ffb7 +color11 #ffe7a5 +color12 #ccbdff +color13 #d5c9ff +color14 #e4dcff +color15 #faf8ff diff --git a/config/matugen/config.toml b/config/matugen/config.toml new file mode 100644 index 0000000..b73422c --- /dev/null +++ b/config/matugen/config.toml @@ -0,0 +1,124 @@ +[config] +# If set to enabled, it will check for updates when you run the matugen command, notifying you that an update is avaiable. +# WARNING: Matugen needs to be compiled with the `update-informer` feature for this to work. +version_check = false + +# The color which should be used as the source_color if no good color was found from an image. +# Can be defined in any css format. +# The cli flag will override this if used. +fallback_color = "#ffbf9b" + +# Which color to choose if multiple good colors were found from an image. +# choices: [darkness, lightness, saturation, less-saturation, value, closest-to-fallback] +# The cli flag will override this if used. +prefer = "closest-to-fallback" + +# Enables caching which will cache the colorscheme, custom colors, etc. into a cache folder located in +# Windows: C:\Users\user\AppData\Roaming\InioX\matugen\cache\images\ +# Linux: $XDG_CACHE_HOME/matugen/ or $HOME/.cache/matugen/images/ +# MacOS: $HOME/Library/Caches/matugen/images/ +# The file follows this naming: ...json +# For example: testimage.png.0cfd2d624b3d09bf6246b7be9ca79e207e7aa1189d961d44949628b99811bb9d.json +# You can modify the cache and it will then be loaded when using the same image. +# The colors are defined using the #RRGGBBAA format. +caching = false + +# Changing the syntax +# Expr is for keywords like {{ }} +expr_prefix = "{{" +expr_postfix = "}}" + +# Block is for stuff like for loops etc. +block_prefix = "<*" +block_postfix = "*>" + +# Imports json files just like `--import-json` does. +# Relative paths will be resolved from the path `config.toml` is in. +#import_json_files = ["./custom3.json"] + +# Defaults to the contrast from CLI if unspecified. +# Value from -1 to 1. +# -1 represents minimum contrast, 0 represents standard (i.e. the design as spec'd), +# and 1 represents maximum contrast. +contrast = 1.0 + +[config.wallpaper] +# Whether to set the wallpaper or not +set = true + +# The base command to run for applying the wallpaper. +# Keywords like {{ image }} or anything that works inside of hooks works here. +# You could also set a static color if you use the color keywords and the wallpaper setter supports it. +command = "awww img --transition-type center {{ image }}" + +# For example, killing the wallpaper daemon. Usage is like a normal hook. +# pre_hook = "" +[templates] +#[templates.includeme] +#input_path = "./include.txt" +# The output path is optional if you just want to import the template anyways. +# output_path = "./a/include.txt" + +#[templates.name1] +# Relative paths will be resolved from the path `config.toml` is in. +#input_path = "./colors.whatever-extension" +#output_path = "./a/colors-generated.whatever-extension" + +# Defaults to a value of 0 if unspecified, determines the order that each template is processed. +# You can use index = n to force a particular template hook to run after everything else, and index = -n for before everything else +#index = 1 + +# Defaults to the type from CLI if unspecified. +# One of `SchemeContent`, `SchemeExpressive`, `SchemeFidelity`, `SchemeFruitSalad`, `SchemeMonochrome`, `SchemeNeutral`, `SchemeRainbow`, `SchemeTonalSpot`, `SchemeVibrant` +#type = "SchemeExpressive" + +# For testing of the `--continue-on-error` flag +# [templates.ishoulderror] +# Relative paths will be resolved from the path `config.toml` is in. +# input_path = "./error-testing.txt" +# output_path = "./a/error-testing.txt" + +# This will use a different input path depending on what mode you use. +# input_path_modes = { dark = "./colors.whatever-extension", light = "./colors.whatever-extension" } + +# This will compare all of the colors inside the array with the color you set as `compare_to`, and returns the closest color to it. +# You can then use `{{closest_color}}` inside hooks. +#colors_to_compare = [ +# { name = "black", color = "#000000" }, +# { name = "red", color = "#ff0000" }, +# { name = "maroon", color = "#800000" }, +# { name = "yellow", color = "#ffff00" }, +# { name = "olive", color = "#808000" }, +# { name = "lime", color = "#00ff00" }, +# { name = "green", color = "#008000" }, +# { name = "aqua", color = "#00ffff" }, +# { name = "teal", color = "#008080" }, +# { name = "blue", color = "#0000ff" }, +# { name = "navy", color = "#000080" }, +# { name = "fuchsia", color = "#ff00ff" }, +# { name = "purple", color = "#800080" }, +#] +#compare_to = "{{colors.primary.default.hex}}" + +# Runs before the template is exported. You can use keywords here. +# If you want the command to be async, add an & symbol to the end of the command on unix. +#pre_hook = 'echo "source color {{colors.source_color.default.hex}}, source image {{image}}, closest color {{closest_color}}"' +# Runs after the template is exported. You can use keywords here. +# If you want the command to be async, add an & symbol to the end of the command on unix. +#post_hook = 'echo "after gen"' + +# For overriding the prefix for a specific template only +#expr_prefix = "{{" +#expr_postfix = "}}" + +# Only hex values +# https://m3.material.io/styles/color/advanced/adjust-existing-colors#1cc12e43-237b-45b9-8fe0-9a3549c1f61e +# If you want to use the original color without any harmonization, add `_source` after the name like: `{{ color_source }}` +# Example: To use the original red color you would use `{{ red_source }}` instead of `{{ red }}` + +# If you don't want to use the other colors that are automatically generated (on_color, on_color_container) you can just import a custom json with the colors instead. +# For an example of importing json see: https://iniox.github.io/#matugen/usage/importing-json +[config.custom_colors] +red = "#ff0000" +blue = "#0000ff" +green = "#00ff00" diff --git a/config/matugen/custom3.json b/config/matugen/custom3.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/config/matugen/custom3.json @@ -0,0 +1 @@ +{} diff --git a/config/mimeapps.list b/config/mimeapps.list index b1ecd67..6abaefe 100644 --- a/config/mimeapps.list +++ b/config/mimeapps.list @@ -6,7 +6,7 @@ application/x-extension-html=firefox.desktop;userapp-Zen-PIXJK3.desktop;zen.desk application/x-extension-shtml=firefox.desktop;userapp-Zen-PIXJK3.desktop;zen.desktop; application/x-extension-xht=firefox.desktop;userapp-Zen-PIXJK3.desktop;zen.desktop; application/x-extension-xhtml=firefox.desktop;userapp-Zen-PIXJK3.desktop;zen.desktop; -application/x-msdownload=ru.launcher.StartWine.desktop; +application/x-msdownload=ru.launcher.StartWine.desktop;ru.linux_gaming.PortProton.desktop; application/x-php=mpv.desktop; application/xhtml+xml=firefox.desktop;userapp-Zen-PIXJK3.desktop;zen.desktop; application/zip=org.gnome.Nautilus.desktop; @@ -28,8 +28,12 @@ x-scheme-handler/chrome=zen.desktop;userapp-Zen-PIXJK3.desktop;firefox.desktop; x-scheme-handler/http=zen.desktop;userapp-Zen-PIXJK3.desktop;firefox.desktop; x-scheme-handler/https=zen.desktop;userapp-Zen-PIXJK3.desktop;firefox.desktop; x-scheme-handler/mailto=zen.desktop; -x-scheme-handler/tg=org.telegram.desktop.desktop;userapp-AyuGram Desktop-YAGQF3.desktop;userapp-AyuGram Desktop-352WJ3.desktop;org.fagram.desktop; -x-scheme-handler/tonsite=org.telegram.desktop.desktop;userapp-AyuGram Desktop-UNJQF3.desktop;userapp-AyuGram Desktop-31ZUJ3.desktop;org.fagram.desktop; +x-scheme-handler/tg=org.telegram.desktop.desktop;userapp-AyuGram Desktop-YAGQF3.desktop;userapp-AyuGram Desktop-352WJ3.desktop;org.fagram.desktop;org.fagram._54c5bda1f706fd3ba4d74713b044bfea.desktop; +x-scheme-handler/tonsite=org.telegram.desktop.desktop;userapp-AyuGram Desktop-UNJQF3.desktop;userapp-AyuGram Desktop-31ZUJ3.desktop;org.fagram.desktop;org.fagram._54c5bda1f706fd3ba4d74713b044bfea.desktop; +application/vnd.sqlite3=neovide.desktop; +text/x-csrc=neovide.desktop; +video/mpeg=mpv.desktop; +text/x-c++hdr=neovide.desktop; [Default Applications] application/fb2=org.pwmt.zathura.desktop @@ -42,7 +46,7 @@ application/x-extension-shtml=zen.desktop application/x-extension-xht=zen.desktop application/x-extension-xhtml=zen.desktop application/x-ms-dos-executable;application/x-wine-extension-msp;application/x-msi;application/x-msdos-program;text/win-bat;=PortProton.desktop -application/x-msdownload=ru.launcher.StartWine.desktop +application/x-msdownload=ru.linux_gaming.PortProton.desktop application/x-php=mpv.desktop application/x-zip-compressed-fb2=org.pwmt.zathura.desktop application/xhtml+xml=zen.desktop @@ -67,9 +71,15 @@ video/mp4=mpv.desktop video/webm=mpv.desktop x-scheme-handler/anytype=anytype.desktop x-scheme-handler/chrome=zen.desktop -x-scheme-handler/discord=vesktop.desktop +x-scheme-handler/discord=equibop.desktop x-scheme-handler/http=zen.desktop x-scheme-handler/https=zen.desktop x-scheme-handler/mailto=zen.desktop; -x-scheme-handler/tg=org.fagram.desktop -x-scheme-handler/tonsite=org.fagram.desktop +x-scheme-handler/tg=org.telegram.desktop.desktop +x-scheme-handler/tonsite=org.telegram.desktop.desktop +text/x-csrc=neovide.desktop +video/=mpv.desktop +video/mkv=mpv.desktop +video/x-matroska=mpv.desktop +video/all=mplayer.desktop +text/x-c++hdr=neovide.desktop diff --git a/config/mpDris2/mpDris2.conf b/config/mpDris2/mpDris2.conf index bd43e87..0175abb 100644 --- a/config/mpDris2/mpDris2.conf +++ b/config/mpDris2/mpDris2.conf @@ -12,19 +12,19 @@ music_dir = ~/mus/ cover_regex = ^(album|cover|\.?folder|front).*\.(gif|jpeg|jpg|png)$ [Bling] -#mmkeys = True -notify = False +mmkeys = True +notify = True # Send notifications while paused? -#notify_paused = True +notify_paused = True # CD-like previous command: if playback is past 3 seconds, seek to the beginning -#cdprev = True +cdprev = True -#[Notify] +[Notify] # Urgency of the notification: 0 for low, 1 for medium and 2 for high. -#urgency = 0 +urgency = 0 # Timeout of the notification in milliseconds. -1 uses the notification's default # and 0 sets the notification to never timeout. -#timeout = -1 +timeout = -1 # Format the notification's summary and body in either playing or paused state. # Leave blank to use mpDris2's internal defaults. # Possible values: diff --git a/config/niri/animation.kdl b/config/niri/animation.kdl new file mode 100644 index 0000000..d2cc79c --- /dev/null +++ b/config/niri/animation.kdl @@ -0,0 +1,60 @@ +animations { + // Uncomment to turn off all animations. + // off + + // Slow down all animations by this factor. Values below 1 speed them up instead. + slowdown 1.0 + workspace-switch { + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + } + window-open { + // duration-ms 200 + // curve "ease-out-quad" + // + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + + + } + window-close { + //duration-ms 200 + + //curve "ease-out-quad" + // + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + } + horizontal-view-movement { + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + } + + window-movement { + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + } + + window-resize { + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + } + + config-notification-open-close { + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + } + + exit-confirmation-open-close { + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + } + + screenshot-ui-open { + // duration-ms 200 + //curve "ease-out-quad" + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + } + + overview-open-close { + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + } + + recent-windows-close { + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + + } + +} diff --git a/config/niri/bak.config.kdl b/config/niri/bak.config.kdl new file mode 100644 index 0000000..afdaae4 --- /dev/null +++ b/config/niri/bak.config.kdl @@ -0,0 +1,803 @@ +input { + disable-power-key-handling + keyboard { + xkb { + // layout "us,ru" + //options "grp:caps_toggle,altwin:swap_alt_win" + file "~/.config/keymap.xkb" + } + repeat-delay 200 + repeat-rate 25 + // track-layout "global" + track-layout "global" + numlock + } + touchpad { + // off + tap + // dwt + // dwep + // drag false + // drag-lock + natural-scroll + // accel-speed 0.2 + // accel-profile "flat" + // scroll-method "two-finger" + // disabled-on-external-mouse + } + + mouse { + // off + // natural-scroll + // accel-speed 0.2 + accel-profile "adaptive" + scroll-button 274 + // scroll-button-lock + middle-emulation + scroll-method "on-button-down" + } + warp-mouse-to-focus + focus-follows-mouse max-scroll-amount="0%" + + trackpoint { + // off + // natural-scroll + // accel-speed 0.2 + // accel-profile "flat" + // scroll-method "on-button-down" + // scroll-button 273 + // scroll-button-lock + // middle-emulation + } + +} +output "DP-1" { + // off + mode "1920x1080@165.000" + scale 1.0 + transform "normal" + position x=1280 y=0 + variable-refresh-rate on-demand=true + +} + +layout { + gaps 10 + background-color "transparent" + center-focused-column "never" + default-column-display "normal" + preset-column-widths { + proportion 0.33333 + proportion 0.5 + proportion 0.66666 + } + + preset-window-heights { + proportion 0.5 + proportion 1.0 + } + + default-column-width { proportion 1.0; } + + // By default focus ring and border are rendered as a solid background rectangle + // behind windows. That is, they will show up through semitransparent windows. + // This is because windows using client-side decorations can have an arbitrary shape. + // + // If you don't like that, you should uncomment `prefer-no-csd` below. + // Niri will draw focus ring and border *around* windows that agree to omit their + // client-side decorations. + // + // Alternatively, you can override it with a window rule called + // `draw-border-with-background`. + + // You can change how the focus ring looks. + focus-ring { + off + + width 2 + // - CSS named colors: "red" + // - RGB hex: "#rgb", "#rgba", "#rrggbb", "#rrggbbaa" + // - CSS-like notation: "rgb(255, 127, 0)", rgba(), hsl() and a few others. + // active-color "#EEF7FD" + //active-color "#EEF7FD" +// foreground #C1D6D6 + //background #07090B + // inactive-color "#5C6871" + // Changing the color space is also supported, check the wiki for more info. + // + // active-gradient from="#80c8ff" to="#c7ff7f" angle=45 + + // You can also color the gradient relative to the entire view + // of the workspace, rather than relative to just the window itself. + // To do that, set relative-to="workspace-view". + // + // inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view" + } + + // You can also add a border. It's similar to the focus ring, but always visible. + border { + //off + width 4 + active-color "#A8ADBB" + + //active-color "#d2dee7" + inactive-color "#1f2830" + } + + shadow { + off + color "#0007" + } + + // Struts shrink the area occupied by windows, similarly to layer-shell panels. + // You can think of them as a kind of outer gaps. They are set in logical pixels. + // Left and right struts will cause the next window to the side to always be visible. + // Top and bottom struts will simply add outer gaps in addition to the area occupied by + // layer-shell panels and regular gaps. + struts { + left 0 + right 0 + top 0 + bottom 0 + } + tab-indicator { + //off + active-color "#eef7fd" + inactive-color "#1f2830" + urgent-color "#f79de7" + width 8 + } + insert-hint { + //off + color "#EEF7FD" + } + + + + +} +overview { + zoom 0.4 + backdrop-color "#07090b" + + workspace-shadow { + off + } +} +clipboard { + disable-primary +} +cursor { + xcursor-theme "Bibata-Modern-Ice" + xcursor-size 20 + hide-when-typing + hide-after-inactive-ms 500 +} + +spawn-at-startup "niri-screen-time" "-daemon" + +spawn-sh-at-startup "foot --server" + +spawn-sh-at-startup "bash ~/.config/niri/caps" + +spawn-at-startup "mpDris2" +spawn-at-startup "swayosd-server" +//spawn-at-startup "walker" "--gapplication-service" + +spawn-at-startup "hyprwave" +spawn-at-startup "swaync" +spawn-at-startup "clipse" "-listen" +spawn-sh-at-startup "swaybg -c 07090b" + +// To run a shell command (with variables, pipes, etc.), use spawn-sh-at-startup: +// spawn-sh-at-startup "qs -c ~/source/qs/MyAwesomeShell" +// + spawn-sh-at-startup "walker --gapplication-service" + +hotkey-overlay { + // Uncomment this line to disable the "Important Hotkeys" pop-up at startup. + skip-at-startup +} + +// Uncomment this line to ask the clients to omit their client-side decorations if possible. +// If the client will specifically ask for CSD, the request will be honored. +// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners. +// This option will also fix border/focus ring drawing behind some semitransparent windows. +// After enabling or disabling this, you need to restart the apps for this to take effect. +prefer-no-csd + +// You can change the path where screenshots are saved. +// A ~ at the front will be expanded to the home directory. +// The path is formatted with strftime(3) to give you the screenshot date and time. +screenshot-path "~/imgs/screenshots/screenshot-from-%Y-%m-%d %H-%M-%S.png" +//spawn-at-startup "throne" +//spawn-at-startup "kitty" "sudo" "sing-box" "run" "-c" "/home/unconfer/.sing-box/sing-box-03.json" + +// You can also set this to null to disable saving screenshots to disk. +// screenshot-path null + +// Animation settings. +// The wiki explains how to configure individual animations: +// https://yalter.github.io/niri/Configuration:-Animations +animations { + // Uncomment to turn off all animations. + // off + + // Slow down all animations by this factor. Values below 1 speed them up instead. + slowdown 1.0 + workspace-switch { + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + } + window-open { + // duration-ms 200 + // curve "ease-out-quad" + // + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + + + } + window-close { + //duration-ms 200 + + //curve "ease-out-quad" + // + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + } + horizontal-view-movement { + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + } + + window-movement { + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + } + + window-resize { + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + } + + config-notification-open-close { + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + } + + exit-confirmation-open-close { + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + } + + screenshot-ui-open { + // duration-ms 200 + //curve "ease-out-quad" + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + } + + overview-open-close { + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + } + + recent-windows-close { + spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 + + } + +} + +recent-windows { + // off + debounce-ms 750 + + open-delay-ms 100 + + highlight { + active-color "#eef7fd" + urgent-color "#eef7fd" + padding 20 + corner-radius 10 + } + + previews { + max-height 480 + max-scale 0.4 + } + + binds { + Mod+Tab { next-window; } + Mod+Shift+Tab { previous-window; } + Mod+grave { next-window filter="app-id"; } + Mod+Shift+grave { previous-window filter="app-id"; } + + Alt+Tab { next-window; } + Alt+Shift+Tab { previous-window; } + Alt+grave { next-window filter="app-id"; } + Alt+Shift+grave { previous-window filter="app-id"; } + } +} +// Window rules let you adjust behavior for individual windows. +// Find more information on the wiki: +// https://yalter.github.io/niri/Configuration:-Window-Rules + +// Work around WezTerm's initial configure bug +// by setting an empty default-column-width. +window-rule { + // This regular expression is intentionally made as specific as possible, + // since this is the default config, and we want no false positives. + // You can get away with just app-id="wezterm" if you want. + match app-id=r#"^org\.wezfurlong\.wezterm$"# + default-column-width { + proportion 0.5 + } +} +window-rule { + match title="Walker" + open-floating true + border { + off + } + + +} + +window-rule { + match title="clipse" +match is-floating=true + open-floating true + open-focused true + block-out-from "screencast" + default-column-width { proportion 0.9; } + default-window-height { proportion 0.9; } + scroll-factor 1.0 +border { + off + } + + + + + +} + + window-rule { + match app-id="one.alynx.showmethekey" + open-floating true + open-focused false + default-floating-position x=990 y=28 relative-to="top-left" + min-width 900 + min-height 170 + + border { + off + } +} + +// Open the Firefox picture-in-picture player as floating by default. +window-rule { + // This app-id regular expression will work for both: + // - host Firefox (app-id is "firefox") + // - Flatpak Firefox (app-id is "org.mozilla.firefox") + match app-id=r#"firefox$"# title="^Picture-in-Picture$" + open-floating true +} + +// Example: block out two password managers from screen capture. +// (This example rule is commented out with a "/-" in front.) +/-window-rule { + match app-id=r#"^org\.keepassxc\.KeePassXC$"# + match app-id=r#"^org\.gnome\.World\.Secrets$"# + + block-out-from "screen-capture" + + // Use this instead if you want them visible on third-party screenshot tools. + // block-out-from "screencast" +} +window-rule { + match title="Media viewer" + default-column-width { + proportion 0.5 + } + +} +window-rule { + match title="sudo" + + border { + active-color "#ff0100" + } +} + +// Example: enable rounded corners for all windows. +// (This example rule is commented out with a "/-" in front.) + +window-rule { + // open-maximized false + geometry-corner-radius 10 + tiled-state true + clip-to-geometry true + open-maximized true + + } +layer-rule { + match namespace="waybar" + match at-startup=true + + // Properties that apply continuously. + // block-out-from "screen-capture" + + shadow { + + off + softness 40 + spread 5 + offset x=0 y=5 + draw-behind-window true + // inactive-color "#00000064" + } + + geometry-corner-radius 20 + place-within-backdrop true +} +// Put swaybg inside the overview backdrop. +layer-rule { + match namespace="^mpvpaper$" + + place-within-backdrop true +} + + +environment{ + + +} +xwayland-satellite { + // off + path "xwayland-satellite" +} + +binds { + + // MOD+SHIFT+M { spawn "hyprwave-toggle visibility"; } + // MOD+M { spawn-sh "hyprwave-toggle expand"; } + + //Mod+M { spawn "hyprwave-toggle" "visibility"; } + // Media Controls + Mod+P { spawn-sh "playerctl -p mpd play-pause"; } + Mod+Period { spawn-sh "playerctl -p mpd next"; } + Mod+Comma { spawn-sh "playerctl -p mpd previous"; } + Ctrl+Alt+V {spawn "/home/unconfer/.sh/paste-txt-file.sh";} + Mod+G { spawn "wl-kbptr" "-o" "modes=floating,click" "-o" "mode_floating.source=detect"; } + + // Theme Switching (v1.0) + // MOD+SHIFT+T { spawn-sh "hyprwave-toggle set-theme zzz"; } + + // Position Switching (v1.0) + // MOD+SHIFT+LEFT { spawn-sh "hyprwave-toggle set-position left"; } + //MOD+SHIFT+RIGHT { spawn-sh "hyprwave-toggle set-position right"; } + //MOD+SHIFT+UP { spawn-sh "hyprwave-toggle set-position top"; } + //MOD+SHIFT+DOWN { spawn-sh "hyprwave-toggle set-position bottom"; } + + + + + //ВНИМАНИЕ СЕКЦИЯ НЕЙРОСЛОПА + + // Keys consist of modifiers separated by + signs, followed by an XKB key name + // in the end. To find an XKB name for a particular key, you may use a program + // like wev. + // + // "Mod" is a special modifier equal to Super when running on a TTY, and to Alt + // when running as a winit window. + // + // Most actions that you can bind here can also be invoked programmatically with + // `niri msg action do-something`. + + // Mod-Shift-/, which is usually the same as Mod-?, + // shows a list of important hotkeys. + Mod+Shift+Slash { show-hotkey-overlay; } + Super+F{ maximize-column;} + Mod+M { spawn "hyprwave-toggle" "visibility"; } + + // Suggested binds for running programs: terminal, app launcher, screen locker. + Mod+Q repeat=false { spawn "footclient"; } + //Mod+D { spawn "fuzzel"; } + + Mod+D repeat=false { spawn "walker"; } + // Mod+Grave repeat=false { toggle-overview; } + // Mod+Shift+Grave repeat=false { spawn "kitty" "--class" "-e" "btop" ; } + Super+W { spawn-sh "footclient -T clipse clipse"; } + Mod+Escape { spawn "hyprlock"; } + Mod+Shift+Return { spawn "shutdown" "now"; } + Mod+Ctrl+S { screenshot-window write-to-disk=false; } + Mod+T repeat=false { spawn "swaync-client" "--toggle-panel";} + + + Mod+Ctrl+Return { spawn "reboot"; } + Mod+Shift+P{spawn "shutdown" "-c";} + Alt+I repeat=false {spawn "hyprpicker" "-a";} + // Mod+Alt+C {;} + + // Use spawn-sh to run a shell command. Do this if you need pipes, multiple commands, etc. + // Note: the entire command goes as a single argument. It's passed verbatim to `sh -c`. + // For example, this is a standard bind to toggle the screen reader (orca). + // Super+Alt+S allow-when-locked=true hotkey-overlay-title=null { spawn-sh "pkill orca || exec orca"; } + + // Example volume keys mappings for PipeWire & WirePlumber. + // + // The allow-when-locked=true property makes them work even when the session is locked. + // Using spawn-sh allows to pass multiple arguments together with the command. +// XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"; } +// XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; } + // XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; } + //XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; } + + // XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; } + + XF86AudioRaiseVolume { spawn "swayosd-client" "--output-volume" "5" "--max-volume" "200";} + + XF86AudioMute allow-when-locked=true { spawn "swayosd-client" "--output-volume" "mute-toggle"; } + + XF86AudioLowerVolume { spawn "swayosd-client" "--output-volume" "-5" "--max-volume" "200";} + Mod+Y allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; } + + // Example brightness key mappings for brightnessctl. + // You can use regular spawn with multiple arguments too (to avoid going through "sh"), + // but you need to manually put each argument in separate "" quotes. + XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; } + XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; } + + // Open/close the Overview: a zoomed-out view of workspaces and windows. + // You can also move the mouse into the top-left hot corner, + // or do a four-finger swipe up on a touchpad. + Mod+O repeat=false { toggle-overview; } + + //Mod+Escape repeat=false { toggle-overview; } + + Mod+Shift+C repeat=false { close-window; } + Mod+Alt+D repeat=false {spawn "hyprwhspr" "record" "toggle";} + Mod+Left { focus-column-left; } + Mod+Down { focus-window-down; } + Mod+Up { focus-window-up; } + Mod+Right { focus-column-right; } + Mod+H { focus-column-left; } + Mod+J { focus-window-down; } + Mod+K { focus-window-up; } + Mod+L { focus-column-right; } + + + Mod+Shift+Z { focus-column-left; } + Mod+Shift+X { focus-column-right; } + + Mod+Ctrl+Left { move-column-left; } + Mod+Ctrl+Down { move-window-down; } + Mod+Ctrl+Up { move-window-up; } + Mod+Ctrl+Right { move-column-right; } + Mod+Ctrl+H { move-column-left; } + Mod+Ctrl+J { move-window-down; } + Mod+Ctrl+K { move-window-up; } + Mod+Ctrl+L { move-column-right; } + + Mod+Ctrl+MouseForward { move-column-right; } + Mod+Ctrl+MouseBack { move-column-left; } + + // Alternative commands that move across workspaces when reaching + // the first or last window in a column. + // Mod+J { focus-window-or-workspace-down; } + // Mod+K { focus-window-or-workspace-up; } + // Mod+Ctrl+J { move-window-down-or-to-workspace-down; } + // Mod+Ctrl+K { move-window-up-or-to-workspace-up; } + + Mod+Home { focus-column-first; } + Mod+End { focus-column-last; } + Mod+Ctrl+Home { move-column-to-first; } + Mod+Ctrl+End { move-column-to-last; } + + Mod+Shift+Left { focus-monitor-left; } + Mod+Shift+Down { focus-monitor-down; } + Mod+Shift+Up { focus-monitor-up; } + Mod+Shift+Right { focus-monitor-right; } + Mod+Shift+H { focus-monitor-left; } + Mod+Shift+J { focus-monitor-down; } + Mod+Shift+K { focus-monitor-up; } + // Mod+Shift+L { focus-monitor-right; } + + Mod+Shift+Ctrl+Left { move-column-to-monitor-left; } + Mod+Shift+Ctrl+Down { move-column-to-monitor-down; } + Mod+Shift+Ctrl+Up { move-column-to-monitor-up; } + Mod+Shift+Ctrl+Right { move-column-to-monitor-right; } + Mod+Shift+Ctrl+H { move-column-to-monitor-left; } + Mod+Shift+Ctrl+J { move-column-to-monitor-down; } + Mod+Shift+Ctrl+K { move-column-to-monitor-up; } + Mod+Shift+Ctrl+L { move-column-to-monitor-right; } + + // Alternatively, there are commands to move just a single window: + // Mod+Shift+Ctrl+Left { move-window-to-monitor-left; } + // ... + + // And you can also move a whole workspace to another monitor: + // Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; } + // ... + + Mod+Page_Down { focus-workspace-down; } + Mod+Page_Up { focus-workspace-up; } + Mod+U { focus-workspace-down; } + Mod+I { focus-workspace-up; } + + Mod+2 { focus-workspace-down; } + Mod+1 { focus-workspace-up; } + + Mod+Ctrl+2 { move-column-to-workspace-down; } + Mod+Ctrl+1 { move-column-to-workspace-up; } + + + Mod+Shift+1 {focus-column-left;} + Mod+Shift+2 {focus-column-right;} + + Mod+Ctrl+Page_Down { move-column-to-workspace-down; } + Mod+Ctrl+Page_Up { move-column-to-workspace-up; } + Mod+Ctrl+U { move-column-to-workspace-down; } + Mod+Ctrl+I { move-column-to-workspace-up; } + + // Alternatively, there are commands to move just a single window: + // Mod+Ctrl+Page_Down { move-window-to-workspace-down; } + // ... + + Mod+Shift+Page_Down { move-workspace-down; } + Mod+Shift+Page_Up { move-workspace-up; } + Mod+Shift+U { move-workspace-down; } + Mod+Shift+I { move-workspace-up; } + + + + + Mod+Shift+MouseForward { focus-workspace-down; } + Mod+Shift+MouseBack { focus-workspace-up; } + + Mod+MouseForward { focus-column-right; } + Mod+MouseBack { focus-column-left; } + // You can bind mouse wheel scroll ticks using the following syntax. + // These binds will change direction based on the natural-scroll setting. + // + // To avoid scrolling through workspaces really fast, you can use + // the cooldown-ms property. The bind will be rate-limited to this value. + // You can set a cooldown on any bind, but it's most useful for the wheel. + Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } + Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } + + //Mod+Shift+WheelScrollDown cooldown-ms=150 { focus-column-left; } + //Mod+Shift+WheelScrollUp cooldown-ms=150 { focus-column-right; } + + Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } + Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } + + Mod+WheelScrollRight { focus-column-right; } + Mod+WheelScrollLeft { focus-column-left; } + Mod+Ctrl+WheelScrollRight { move-column-right; } + Mod+Ctrl+WheelScrollLeft { move-column-left; } + + // Usually scrolling up and down with Shift in applications results in + // horizontal scrolling; these binds replicate that. + Mod+Shift+WheelScrollDown { focus-column-right; } + Mod+Shift+WheelScrollUp { focus-column-left; } + Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } + Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } + + // Similarly, you can bind touchpad scroll "ticks". + // Touchpad scrolling is continuous, so for these binds it is split into + // discrete intervals. + // These binds are also affected by touchpad's natural-scroll, so these + // example binds are "inverted", since we have natural-scroll enabled for + // touchpads by default. + // Mod+TouchpadScrollDown { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02+"; } + // Mod+TouchpadScrollUp { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02-"; } + + // You can refer to workspaces by index. However, keep in mind that + // niri is a dynamic workspace system, so these commands are kind of + // "best effort". Trying to refer to a workspace index bigger than + // the current workspace count will instead refer to the bottommost + // (empty) workspace. + // + // For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on + // will all refer to the 3rd workspace. + // Mod+1 { focus-workspace 1; } + //Mod+2 { focus-workspace 2; } + //Mod+3 repeat=false { toggle-overview; } + // Mod+4 { focus-workspace 4; } + //Mod+5 { focus-workspace 5; } + //Mod+6 { focus-workspace 6; } + //Mod+7 { focus-workspace 7; } + //Mod+8 { focus-workspace 8; } + //Mod+9 { focus-workspace 9; } + //Mod+Ctrl+1 { move-column-to-workspace 1; } + //Mod+Ctrl+2 { move-column-to-workspace 2; } + Mod+Ctrl+3 { move-column-to-workspace 3; } + //Mod+Ctrl+4 { move-column-to-workspace 4; } + //Mod+Ctrl+5 { move-column-to-workspace 5; } + //Mod+Ctrl+6 { move-column-to-workspace 6; } + //Mod+Ctrl+7 { move-column-to-workspace 7; } + //Mod+Ctrl+8 { move-column-to-workspace 8; } + //Mod+Ctrl+9 { move-column-to-workspace 9; } + + // Alternatively, there are commands to move just a single window: + // Mod+Ctrl+1 { move-window-to-workspace 1; } + + // Switches focus between the current and the previous workspace. + //Mod+Tab { focus-workspace-previous; } + + // The following binds move the focused window in and out of a column. + // If the window is alone, they will consume it into the nearby column to the side. + // If the window is already in a column, they will expel it out. + Mod+BracketLeft { consume-or-expel-window-left; } + Mod+BracketRight { consume-or-expel-window-right; } + + // Consume one window from the right to the bottom of the focused column. + Mod+3 { consume-window-into-column; } + // Expel the bottom window from the focused column to the right. + Mod+4 { expel-window-from-column; } + + Mod+A repeat=false { switch-preset-column-width; } + Mod+Shift+W { toggle-column-tabbed-display; } + // Cycling through the presets in reverse order is also possible. + // Mod+R { switch-preset-column-width-back; } + Mod+Shift+R repeat=false { switch-preset-window-height; } + Mod+Ctrl+R { reset-window-height; } + Mod+Shift+F repeat=false { fullscreen-window; } + + // Expand the focused column to space not taken up by other fully visible columns. + // Makes the column "fill the rest of the space". + Mod+Ctrl+F { expand-column-to-available-width; } + + //Mod+M { center-column; } + + // Center all fully visible columns on screen. + Mod+C { center-column; } + + // Finer width adjustments. + // This command can also: + // * set width in pixels: "1000" + // * adjust width in pixels: "-5" or "+5" + // * set width as a percentage of screen width: "25%" + // * adjust width as a percentage of screen width: "-10%" or "+10%" + // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0, + // set-column-width "100" will make the column occupy 200 physical screen pixels. + Mod+Minus { set-column-width "-5%"; } + Mod+Equal { set-column-width "+5%"; } + + // Finer height adjustments when in column with other windows. + Mod+Shift+Minus { set-window-height "-5%"; } + Mod+Shift+Equal { set-window-height "+5%"; } + + Mod+V { toggle-window-floating; } + // Move the focused window between the floating and the tiling layout. + //Mod+V {spawn "pavucontrol"; } + Mod+Shift+V { switch-focus-between-floating-and-tiling; } + + // Toggle tabbed column display mode. + // Windows in this column will appear as vertical tabs, + // rather than stacked on top of each other. + Mod+N { toggle-column-tabbed-display; } + + // Actions to switch layouts. + // Note: if you uncomment these, make sure you do NOT have + // a matching layout switch hotkey configured in xkb options above. + // Having both at once on the same hotkey will break the switching, + // since it will switch twice upon pressing the hotkey (once by xkb, once by niri). + // Mod+Space { switch-layout "next"; } + // Mod+Shift+Space { switch-layout "prev"; } + + Mod+S { screenshot; } + Super+Shift+S { screenshot-screen; } + + // Applications such as remote-desktop clients and software KVM switches may + // request that niri stops processing the keyboard shortcuts defined here + // so they may, for example, forward the key presses as-is to a remote machine. + // It's a good idea to bind an escape hatch to toggle the inhibitor, + // so a buggy application can't hold your session hostage. + // + // The allow-inhibiting=false property can be applied to other binds as well, + // which ensures niri always processes them, even when an inhibitor is active. + //Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } + + // The quit action will show a confirmation dialog to avoid accidental exits. + Mod+Shift+Escape { quit; } + Ctrl+Alt+Delete { quit; } + + // Powers off the monitors. To turn them back on, do any input like + // moving the mouse or pressing any other key. + //Mod+Shift+P { power-off-monitors; } +} diff --git a/config/niri/binds.kdl b/config/niri/binds.kdl new file mode 100644 index 0000000..9ab82c4 --- /dev/null +++ b/config/niri/binds.kdl @@ -0,0 +1,302 @@ + +binds { + // Media Controls + Mod+P { spawn-sh "playerctl -p mpd play-pause"; } + Mod+Period { spawn-sh "playerctl -p mpd next"; } + Mod+Comma { spawn-sh "playerctl -p mpd previous"; } + Ctrl+Alt+V {spawn "/home/unconfer/.sh/paste-txt-file.sh";} + Mod+G { spawn "wl-kbptr" "-o" "modes=floating,click" "-o" "mode_floating.source=detect"; } + + + + Mod+Shift+Slash { show-hotkey-overlay; } + Super+F{ maximize-column;} + Mod+M { spawn "hyprwave-toggle" "visibility"; } + // Suggested binds for running programs: terminal, app launcher, screen locker. + Mod+Q repeat=false { spawn "footclient"; } + //Mod+D { spawn "fuzzel"; } + + Mod+D repeat=false { spawn "walker"; } + Mod+Alt+N repeat=false { spawn-sh "bash ~/.config/niri/noctalia-toggle.sh";} + + Mod+Alt+I repeat=false { spawn-sh "bash ~/.config/niri/ironbar-toggle.sh";} + // Mod+D repeat=false { spawn-sh "qs -c noctalia-shell ipc call launcher toggle"; } + Mod+Grave repeat=false { toggle-overview; } + Super+W { spawn-sh "footclient -T clipse clipse"; } + Mod+Escape { spawn "hyprlock"; } + Mod+Shift+Return { spawn "shutdown" "now"; } + Mod+Ctrl+S { screenshot-window write-to-disk=false; } + Mod+T repeat=false { spawn "swaync-client" "--toggle-panel";} + Mod+Ctrl+Return { spawn "reboot"; } + Mod+Shift+P{spawn "shutdown" "-c";} + Alt+I repeat=false {spawn "hyprpicker" "-a";} + Mod+Alt+S allow-when-locked=true hotkey-overlay-title=null { spawn-sh "pkill orca || exec orca"; } // такое себе + // Mod+Shift+G {} + + // Example volume keys mappings for PipeWire & WirePlumber. + // + // The allow-when-locked=true property makes them work even when the session is locked. + // Using spawn-sh allows to pass multiple arguments together with the command. +// XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"; } +// XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; } + // XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; } + //XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; } + + // XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; } + + XF86AudioRaiseVolume { spawn "swayosd-client" "--output-volume" "5" "--max-volume" "200";} + + XF86AudioMute allow-when-locked=true { spawn "swayosd-client" "--output-volume" "mute-toggle"; } + + XF86AudioLowerVolume { spawn "swayosd-client" "--output-volume" "-5" "--max-volume" "200";} + Mod+Y allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; } + + // Example brightness key mappings for brightnessctl. + // You can use regular spawn with multiple arguments too (to avoid going through "sh"), + // but you need to manually put each argument in separate "" quotes. + XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; } + XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; } + + // Open/close the Overview: a zoomed-out view of workspaces and windows. + // You can also move the mouse into the top-left hot corner, + // or do a four-finger swipe up on a touchpad. + Mod+O repeat=false { toggle-overview; } + + //Mod+Escape repeat=false { toggle-overview; } + + Mod+Shift+C repeat=false { close-window; } + Mod+Alt+D repeat=false {spawn-sh "hyprwhspr record toggle";} + Mod+Left { focus-column-left; } + Mod+Down { focus-window-down; } + Mod+Up { focus-window-up; } + Mod+Right { focus-column-right; } + Mod+H { focus-column-left; } + Mod+J { focus-window-down; } + Mod+K { focus-window-up; } + Mod+L { focus-column-right; } + + + Mod+Shift+Z { focus-column-left; } + Mod+Shift+X { focus-column-right; } + + Mod+Ctrl+Left { move-column-left; } + Mod+Ctrl+Down { move-window-down; } + Mod+Ctrl+Up { move-window-up; } + Mod+Ctrl+Right { move-column-right; } + Mod+Ctrl+H { move-column-left; } + Mod+Ctrl+J { move-window-down; } + Mod+Ctrl+K { move-window-up; } + Mod+Ctrl+L { move-column-right; } + + Mod+Ctrl+MouseForward { move-column-right; } + Mod+Ctrl+MouseBack { move-column-left; } + + // Alternative commands that move across workspaces when reaching + // the first or last window in a column. + // Mod+J { focus-window-or-workspace-down; } + // Mod+K { focus-window-or-workspace-up; } + // Mod+Ctrl+J { move-window-down-or-to-workspace-down; } + // Mod+Ctrl+K { move-window-up-or-to-workspace-up; } + + Mod+Home { focus-column-first; } + Mod+End { focus-column-last; } + Mod+Ctrl+Home { move-column-to-first; } + Mod+Ctrl+End { move-column-to-last; } + + Mod+Shift+Left { focus-monitor-left; } + Mod+Shift+Down { focus-monitor-down; } + Mod+Shift+Up { focus-monitor-up; } + Mod+Shift+Right { focus-monitor-right; } + Mod+Shift+H { focus-monitor-left; } + Mod+Shift+J { focus-monitor-down; } + Mod+Shift+K { focus-monitor-up; } + // Mod+Shift+L { focus-monitor-right; } + + Mod+Shift+Ctrl+Left { move-column-to-monitor-left; } + Mod+Shift+Ctrl+Down { move-column-to-monitor-down; } + Mod+Shift+Ctrl+Up { move-column-to-monitor-up; } + Mod+Shift+Ctrl+Right { move-column-to-monitor-right; } + Mod+Shift+Ctrl+H { move-column-to-monitor-left; } + Mod+Shift+Ctrl+J { move-column-to-monitor-down; } + Mod+Shift+Ctrl+K { move-column-to-monitor-up; } + Mod+Shift+Ctrl+L { move-column-to-monitor-right; } + + // Alternatively, there are commands to move just a single window: + // Mod+Shift+Ctrl+Left { move-window-to-monitor-left; } + // ... + + // And you can also move a whole workspace to another monitor: + // Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; } + // ... + + Mod+Page_Down { focus-workspace-down; } + Mod+Page_Up { focus-workspace-up; } + Mod+U { focus-workspace-down; } + Mod+I { focus-workspace-up; } + + Mod+2 { focus-workspace-down; } + Mod+1 { focus-workspace-up; } + + Mod+Ctrl+2 { move-column-to-workspace-down; } + Mod+Ctrl+1 { move-column-to-workspace-up; } + + + Mod+Shift+1 {focus-column-left;} + Mod+Shift+2 {focus-column-right;} + + Mod+Ctrl+Page_Down { move-column-to-workspace-down; } + Mod+Ctrl+Page_Up { move-column-to-workspace-up; } + Mod+Ctrl+U { move-column-to-workspace-down; } + Mod+Ctrl+I { move-column-to-workspace-up; } + + // Alternatively, there are commands to move just a single window: + // Mod+Ctrl+Page_Down { move-window-to-workspace-down; } + // ... + + Mod+Shift+Page_Down { move-workspace-down; } + Mod+Shift+Page_Up { move-workspace-up; } + Mod+Shift+U { move-workspace-down; } + Mod+Shift+I { move-workspace-up; } + + Mod+Shift+MouseForward { focus-workspace-down; } + Mod+Shift+MouseBack { focus-workspace-up; } + + Mod+MouseForward { focus-column-right; } + Mod+MouseBack { focus-column-left; } + // You can bind mouse wheel scroll ticks using the following syntax. + // These binds will change direction based on the natural-scroll setting. + // + // To avoid scrolling through workspaces really fast, you can use + // the cooldown-ms property. The bind will be rate-limited to this value. + // You can set a cooldown on any bind, but it's most useful for the wheel. + Mod+WheelScrollDown cooldown-ms=0 { focus-workspace-down; } + Mod+WheelScrollUp cooldown-ms=0 { focus-workspace-up; } + + //Mod+Shift+WheelScrollDown cooldown-ms=150 { focus-column-left; } + //Mod+Shift+WheelScrollUp cooldown-ms=150 { focus-column-right; } + + Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } + Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } + + Mod+WheelScrollRight { focus-column-right; } + Mod+WheelScrollLeft { focus-column-left; } + Mod+Ctrl+WheelScrollRight { move-column-right; } + Mod+Ctrl+WheelScrollLeft { move-column-left; } + + // Usually scrolling up and down with Shift in applications results in + // horizontal scrolling; these binds replicate that. + Mod+Shift+WheelScrollDown { focus-column-right; } + Mod+Shift+WheelScrollUp { focus-column-left; } + Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } + Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } + + // Similarly, you can bind touchpad scroll "ticks". + // Touchpad scrolling is continuous, so for these binds it is split into + // discrete intervals. + // These binds are also affected by touchpad's natural-scroll, so these + // example binds are "inverted", since we have natural-scroll enabled for + // touchpads by default. + // Mod+TouchpadScrollDown { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02+"; } + // Mod+TouchpadScrollUp { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02-"; } + + // You can refer to workspaces by index. However, keep in mind that + // niri is a dynamic workspace system, so these commands are kind of + // "best effort". Trying to refer to a workspace index bigger than + // the current workspace count will instead refer to the bottommost + // (empty) workspace. + // + // For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on + // will all refer to the 3rd workspace. + // Mod+1 { focus-workspace 1; } + //Mod+2 { focus-workspace 2; } + //Mod+3 repeat=false { toggle-overview; } + // Mod+4 { focus-workspace 4; } + //Mod+5 { focus-workspace 5; } + //Mod+6 { focus-workspace 6; } + //Mod+7 { focus-workspace 7; } + //Mod+8 { focus-workspace 8; } + //Mod+9 { focus-workspace 9; } + //Mod+Ctrl+1 { move-column-to-workspace 1; } + //Mod+Ctrl+2 { move-column-to-workspace 2; } + Mod+Ctrl+3 { move-column-to-workspace 3; } + //Mod+Ctrl+4 { move-column-to-workspace 4; } + //Mod+Ctrl+5 { move-column-to-workspace 5; } + //Mod+Ctrl+6 { move-column-to-workspace 6; } + //Mod+Ctrl+7 { move-column-to-workspace 7; } + //Mod+Ctrl+8 { move-column-to-workspace 8; } + //Mod+Ctrl+9 { move-column-to-workspace 9; } + + // Alternatively, there are commands to move just a single window: + // Mod+Ctrl+1 { move-window-to-workspace 1; } + + // Switches focus between the current and the previous workspace. + //Mod+Tab { focus-workspace-previous; } + + // The following binds move the focused window in and out of a column. + // If the window is alone, they will consume it into the nearby column to the side. + // If the window is already in a column, they will expel it out. + Mod+BracketLeft { consume-or-expel-window-left; } + Mod+BracketRight { consume-or-expel-window-right; } + + // Consume one window from the right to the bottom of the focused column. + Mod+3 { consume-window-into-column; } + // Expel the bottom window from the focused column to the right. + Mod+4 { expel-window-from-column; } + + Mod+A repeat=false { switch-preset-column-width; } + Mod+Shift+W { toggle-column-tabbed-display; } + // Cycling through the presets in reverse order is also possible. + // Mod+R { switch-preset-column-width-back; } + Mod+Shift+R repeat=false { switch-preset-window-height; } + Mod+Ctrl+R { reset-window-height; } + Mod+Shift+F repeat=false { fullscreen-window; } + + // Expand the focused column to space not taken up by other fully visible columns. + // Makes the column "fill the rest of the space". + Mod+Ctrl+F { expand-column-to-available-width; } + + //Mod+M { center-column; } + + // Center all fully visible columns on screen. + Mod+C { center-column; } + + // Finer width adjustments. + // This command can also: + // * set width in pixels: "1000" + // * adjust width in pixels: "-5" or "+5" + // * set width as a percentage of screen width: "25%" + // * adjust width as a percentage of screen width: "-10%" or "+10%" + // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0, + // set-column-width "100" will make the column occupy 200 physical screen pixels. + Mod+Minus { set-column-width "-5%"; } + Mod+Equal { set-column-width "+5%"; } + + // Finer height adjustments when in column with other windows. + Mod+Shift+Minus { set-window-height "-5%"; } + Mod+Shift+Equal { set-window-height "+5%"; } + + Mod+V { toggle-window-floating; } + // Move the focused window between the floating and the tiling layout. + //Mod+V {spawn "pavucontrol"; } + Mod+Shift+V { switch-focus-between-floating-and-tiling; } + + // Toggle tabbed column display mode. + // Windows in this column will appear as vertical tabs, + // rather than stacked on top of each other. + Mod+N { toggle-column-tabbed-display; } + + // Actions to switch layouts. + // Note: if you uncomment these, make sure you do NOT have + // a matching layout switch hotkey configured in xkb options above. + // Having both at once on the same hotkey will break the switching, + // since it will switch twice upon pressing the hotkey (once by xkb, once by niri). + // Mod+Space { switch-layout "next"; } + // Mod+Shift+Space { switch-layout "prev"; } + + Mod+S { screenshot; } + Super+Shift+S { screenshot-screen; } + //Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } + Mod+Shift+Escape { quit; } + Ctrl+Alt+Delete { quit; } + //Mod+Shift+P { power-off-monitors; } +} diff --git a/config/niri/caps b/config/niri/caps new file mode 100755 index 0000000..7aff6bf --- /dev/null +++ b/config/niri/caps @@ -0,0 +1,35 @@ +#!/bin/bash + +NOTIFY_ID="" +LAST_LAYOUT="" + +while IFS= read -r line; do + if [[ "$line" == *"Keyboard layout switched"* ]]; then + # Извлекаем индекс раскладки встроенным регулярным выражением + if [[ "$line" =~ ([0-9]+) ]]; then + layout="${BASH_REMATCH[1]}" + else + continue + fi + + # Пропускаем дубликаты событий (снижает нагрузку и мигание индикаторов) + if [[ "$layout" == "$LAST_LAYOUT" ]]; then + continue + fi + LAST_LAYOUT="$layout" + + if [[ "$layout" == "1" ]]; then + brightnessctl -d 'input12::capslock' s 1 + msg="RU" + else + brightnessctl -d 'input12::capslock' s 0 + msg="EN" + fi + + if [[ -z "$NOTIFY_ID" ]]; then + NOTIFY_ID=$(notify-send --print-id "keymap" "$msg") + else + notify-send -r "$NOTIFY_ID" "keymap" "$msg" + fi + fi +done < <(niri msg event-stream) diff --git a/config/niri/config.kdl b/config/niri/config.kdl index d049bba..3ee0277 100644 --- a/config/niri/config.kdl +++ b/config/niri/config.kdl @@ -1,159 +1,13 @@ -input { - keyboard { - xkb { - layout "us,ru" - options "grp:caps_toggle" - } - repeat-delay 225 - repeat-rate 25 - // track-layout "global" - numlock - } - touchpad { - // off - tap - // dwt - // dwtp - // drag false - // drag-lock - natural-scroll - // accel-speed 0.2 - // accel-profile "flat" - // scroll-method "two-finger" - // disabled-on-external-mouse - } - - mouse { - // off - // natural-scroll - // accel-speed 0.2 - accel-profile "adaptive" - scroll-button 274 - - scroll-method "on-button-down" - } - warp-mouse-to-focus - focus-follows-mouse max-scroll-amount="0%" - - trackpoint { - // off - // natural-scroll - // accel-speed 0.2 - // accel-profile "flat" - // scroll-method "on-button-down" - // scroll-button 273 - // scroll-button-lock - // middle-emulation - } - -} -output "DP-1" { - // off - mode "1920x1080@165.000" - scale 1.0 - transform "normal" - position x=1280 y=0 - variable-refresh-rate on-demand=true - -} - -layout { - gaps 10 - background-color "transparent" - center-focused-column "never" - default-column-display "normal" - preset-column-widths { - proportion 0.33333 - proportion 0.5 - proportion 0.66666 - } - - preset-window-heights { - proportion 0.5 - proportion 1.0 - } - - default-column-width { proportion 1.0; } - - // By default focus ring and border are rendered as a solid background rectangle - // behind windows. That is, they will show up through semitransparent windows. - // This is because windows using client-side decorations can have an arbitrary shape. - // - // If you don't like that, you should uncomment `prefer-no-csd` below. - // Niri will draw focus ring and border *around* windows that agree to omit their - // client-side decorations. - // - // Alternatively, you can override it with a window rule called - // `draw-border-with-background`. - - // You can change how the focus ring looks. - focus-ring { - off - - width 2 - // - CSS named colors: "red" - // - RGB hex: "#rgb", "#rgba", "#rrggbb", "#rrggbbaa" - // - CSS-like notation: "rgb(255, 127, 0)", rgba(), hsl() and a few others. - // active-color "#EEF7FD" - //active-color "#EEF7FD" -// foreground #C1D6D6 - //background #07090B - // inactive-color "#5C6871" - // Changing the color space is also supported, check the wiki for more info. - // - // active-gradient from="#80c8ff" to="#c7ff7f" angle=45 - - // You can also color the gradient relative to the entire view - // of the workspace, rather than relative to just the window itself. - // To do that, set relative-to="workspace-view". - // - // inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view" - } - - // You can also add a border. It's similar to the focus ring, but always visible. - border { - //off - width 4 - active-color "#25c39f" - inactive-color "#eef7fd" - } - - shadow { - off - color "#0007" - } - - // Struts shrink the area occupied by windows, similarly to layer-shell panels. - // You can think of them as a kind of outer gaps. They are set in logical pixels. - // Left and right struts will cause the next window to the side to always be visible. - // Top and bottom struts will simply add outer gaps in addition to the area occupied by - // layer-shell panels and regular gaps. - struts { - left 0 - right 0 - top 0 - bottom 0 - } - tab-indicator { - //off - active-color "#f6db8b" - inactive-color "#8fd2f7" - urgent-color "#eef7fd" - width 5 - } - insert-hint { - //off - color "#EEF7FD" - } - - - - -} +include "binds.kdl" +include "window-rule.kdl" +include "input.kdl" +include "output-pc.kdl" +// include "spawn-at-startup.kdl" +include "animation.kdl" +include "layout.kdl" overview { zoom 0.4 backdrop-color "#07090b" - workspace-shadow { off } @@ -165,589 +19,69 @@ cursor { xcursor-theme "Bibata-Modern-Ice" xcursor-size 20 hide-when-typing - hide-after-inactive-ms 1000 + hide-after-inactive-ms 500 } -spawn-at-startup "niri-screen-time" "-daemon" - -spawn-at-startup "mpDris2" -spawn-at-startup "swayosd-server" -spawn-at-startup "walker" "--gapplication-service" - -spawn-at-startup "hyprwave" -spawn-at-startup "swaync" -spawn-at-startup "clipse" "-listen" -spawn-at-startup "swaybg" "-i" "imgs/bafkreiax76e2p3xqoikrkbppjl4mipnaamqrgxkcfgwqtrsa3glksq644m" - -// To run a shell command (with variables, pipes, etc.), use spawn-sh-at-startup: -// spawn-sh-at-startup "qs -c ~/source/qs/MyAwesomeShell" -// - spawn-sh-at-startup "walker --gapplication-service" - hotkey-overlay { - // Uncomment this line to disable the "Important Hotkeys" pop-up at startup. skip-at-startup } - -// Uncomment this line to ask the clients to omit their client-side decorations if possible. -// If the client will specifically ask for CSD, the request will be honored. -// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners. -// This option will also fix border/focus ring drawing behind some semitransparent windows. -// After enabling or disabling this, you need to restart the apps for this to take effect. prefer-no-csd - -// You can change the path where screenshots are saved. -// A ~ at the front will be expanded to the home directory. -// The path is formatted with strftime(3) to give you the screenshot date and time. screenshot-path "~/imgs/screenshots/screenshot-from-%Y-%m-%d %H-%M-%S.png" -//spawn-at-startup "throne" -//spawn-at-startup "kitty" "sudo" "sing-box" "run" "-c" "/home/unconfer/.sing-box/sing-box-03.json" - // You can also set this to null to disable saving screenshots to disk. // screenshot-path null - -// Animation settings. -// The wiki explains how to configure individual animations: -// https://yalter.github.io/niri/Configuration:-Animations -animations { - // Uncomment to turn off all animations. +recent-windows { // off + debounce-ms 750 + open-delay-ms 100 - // Slow down all animations by this factor. Values below 1 speed them up instead. - slowdown 1.0 - workspace-switch { - spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 - } - window-open { - // duration-ms 200 - // curve "ease-out-quad" - // - spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 - - - } - window-close { - //duration-ms 200 - - //curve "ease-out-quad" - // - spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 - } - horizontal-view-movement { - spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 - } - - window-movement { - spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 - } - - window-resize { - spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 - } - - config-notification-open-close { - spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 - } - - exit-confirmation-open-close { - spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 - } - - screenshot-ui-open { - // duration-ms 200 - //curve "ease-out-quad" - spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 - } - - overview-open-close { - spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 - } - - recent-windows-close { - spring damping-ratio=0.65 stiffness=600 epsilon=0.0001 - - } - -} - -// Window rules let you adjust behavior for individual windows. -// Find more information on the wiki: -// https://yalter.github.io/niri/Configuration:-Window-Rules - -// Work around WezTerm's initial configure bug -// by setting an empty default-column-width. -window-rule { - // This regular expression is intentionally made as specific as possible, - // since this is the default config, and we want no false positives. - // You can get away with just app-id="wezterm" if you want. - match app-id=r#"^org\.wezfurlong\.wezterm$"# - default-column-width { - proportion 0.5 - } -} -window-rule { - match title="Walker" - open-floating true - border { - off - } - -} - -window-rule { - match app-id="clipse" -// match is-floating=true - open-maximized true - open-floating true - tiled-state true -} -window-rule { - // open-maximized false - geometry-corner-radius 10 - tiled-state true - clip-to-geometry true - - } - - window-rule { - match app-id="one.alynx.showmethekey" - open-floating true - open-focused false - default-floating-position x=990 y=28 relative-to="top-left" - min-width 900 - min-height 170 - - border { - off - } -} - -// Open the Firefox picture-in-picture player as floating by default. -window-rule { - // This app-id regular expression will work for both: - // - host Firefox (app-id is "firefox") - // - Flatpak Firefox (app-id is "org.mozilla.firefox") - match app-id=r#"firefox$"# title="^Picture-in-Picture$" - open-floating true -} - -// Example: block out two password managers from screen capture. -// (This example rule is commented out with a "/-" in front.) -/-window-rule { - match app-id=r#"^org\.keepassxc\.KeePassXC$"# - match app-id=r#"^org\.gnome\.World\.Secrets$"# - - block-out-from "screen-capture" - - // Use this instead if you want them visible on third-party screenshot tools. - // block-out-from "screencast" -} -window-rule { - match title="Media viewer" - default-column-width { - proportion 0.5 + highlight { + active-color "#eef7fd" + urgent-color "#eef7fd" + padding 20 + corner-radius 10 } -} -window-rule { - match title="sudo" - - border { - active-color "#ff0100" - } -} - -// Example: enable rounded corners for all windows. -// (This example rule is commented out with a "/-" in front.) -window-rule { - geometry-corner-radius 10 - clip-to-geometry true -} -layer-rule { - match namespace="waybar" - match at-startup=true - - // Properties that apply continuously. - opacity 1.0 - // block-out-from "screen-capture" - - shadow { - - off - softness 40 - spread 5 - offset x=0 y=5 - draw-behind-window true - // inactive-color "#00000064" + previews { + max-height 480 + max-scale 0.4 } - geometry-corner-radius 20 - place-within-backdrop true + binds { + Mod+Tab { next-window; } + Mod+Shift+Tab { previous-window; } + // Mod+grave { next-window filter="app-id"; } + Mod+Shift+grave { previous-window filter="app-id"; } + + Alt+Tab { next-window; } + Alt+Shift+Tab { previous-window; } + Alt+grave { next-window filter="app-id"; } + Alt+Shift+grave { previous-window filter="app-id"; } + } } -// Put swaybg inside the overview backdrop. -layer-rule { - match namespace="^wallpaper$" - - place-within-backdrop true -} - - environment{ - - + XDG_CURRENT_DESKTOP "niri" + QT_QPA_PLATFORMTHEME "xdgdesktopportal" + QT_QPA_PLATFORM "wayland" + ELECTRON_OZONE_PLATFORM_HINT "wayland" + //ЖQT_STYLE_OVERRIDE "adwaita" + QT_STYLE_OVERRIDE "kvantum" } xwayland-satellite { // off path "xwayland-satellite" } -binds { - // MOD+SHIFT+M { spawn "hyprwave-toggle visibility"; } - // MOD+M { spawn-sh "hyprwave-toggle expand"; } - - //Mod+M { spawn "hyprwave-toggle" "visibility"; } - // Media Controls - Mod+P { spawn-sh "playerctl -p mpd play-pause"; } - Mod+Period { spawn-sh "playerctl -p mpd next"; } - Mod+Comma { spawn-sh "playerctl -p mpd previous"; } - Ctrl+Alt+V {spawn "/home/unconfer/.sh/paste-txt-file.sh";} - - // Theme Switching (v1.0) - // MOD+SHIFT+T { spawn-sh "hyprwave-toggle set-theme zzz"; } - - // Position Switching (v1.0) - // MOD+SHIFT+LEFT { spawn-sh "hyprwave-toggle set-position left"; } - //MOD+SHIFT+RIGHT { spawn-sh "hyprwave-toggle set-position right"; } - //MOD+SHIFT+UP { spawn-sh "hyprwave-toggle set-position top"; } - //MOD+SHIFT+DOWN { spawn-sh "hyprwave-toggle set-position bottom"; } +include "dms/cursor.kdl" +include "dms/outputs.kdl" +include "dms/windowrules.kdl" - - //ВНИМАНИЕ СЕКЦИЯ НЕЙРОСЛОПА - - // Keys consist of modifiers separated by + signs, followed by an XKB key name - // in the end. To find an XKB name for a particular key, you may use a program - // like wev. - // - // "Mod" is a special modifier equal to Super when running on a TTY, and to Alt - // when running as a winit window. - // - // Most actions that you can bind here can also be invoked programmatically with - // `niri msg action do-something`. - - // Mod-Shift-/, which is usually the same as Mod-?, - // shows a list of important hotkeys. - Mod+Shift+Slash { show-hotkey-overlay; } - Super+F{ maximize-column;} - Mod+M { spawn "hyprwave-toggle" "visibility"; } - - // Suggested binds for running programs: terminal, app launcher, screen locker. - Mod+Q { spawn "kitty"; } - //Mod+D { spawn "fuzzel"; } - - Mod+D { spawn "walker"; } - Mod+Grave repeat=false { toggle-overview; } - Mod+Shift+Grave repeat=false { spawn "kitty" "--class" "-e" "btop" ; } - Super+W { spawn "kitty" "--class" "clipse" "-e" "clipse"; } - Mod+Escape { spawn "hyprlock"; } - Mod+Shift+Return { spawn "shutdown" "now"; } - Mod+Ctrl+S { screenshot-window write-to-disk=false; } - Mod+T repeat=false { spawn "swaync-client" "--toggle-panel";} - - - Mod+Ctrl+Return { spawn "reboot"; } - Mod+Shift+P{spawn "shutdown" "-c";} - Alt+I repeat=false {spawn "hyprpicker" "-a";} - // Mod+Alt+C {;} - - // Use spawn-sh to run a shell command. Do this if you need pipes, multiple commands, etc. - // Note: the entire command goes as a single argument. It's passed verbatim to `sh -c`. - // For example, this is a standard bind to toggle the screen reader (orca). - // Super+Alt+S allow-when-locked=true hotkey-overlay-title=null { spawn-sh "pkill orca || exec orca"; } - - // Example volume keys mappings for PipeWire & WirePlumber. - // - // The allow-when-locked=true property makes them work even when the session is locked. - // Using spawn-sh allows to pass multiple arguments together with the command. -// XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"; } -// XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; } - // XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; } - //XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; } - - // XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; } - - XF86AudioRaiseVolume { spawn "swayosd-client" "--output-volume" "5" "--max-volume" "200";} - - XF86AudioMute allow-when-locked=true { spawn "swayosd-client" "--output-volume" "mute-toggle"; } - - XF86AudioLowerVolume { spawn "swayosd-client" "--output-volume" "-5" "--max-volume" "200";} - Mod+Y allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; } - - // Example brightness key mappings for brightnessctl. - // You can use regular spawn with multiple arguments too (to avoid going through "sh"), - // but you need to manually put each argument in separate "" quotes. - XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; } - XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; } - - // Open/close the Overview: a zoomed-out view of workspaces and windows. - // You can also move the mouse into the top-left hot corner, - // or do a four-finger swipe up on a touchpad. - Mod+O repeat=false { toggle-overview; } - - //Mod+Escape repeat=false { toggle-overview; } - - Mod+Shift+C repeat=false { close-window; } - Mod+Alt+D repeat=false {spawn "hyprwhspr" "record" "toggle";} - Mod+Left { focus-column-left; } - Mod+Down { focus-window-down; } - Mod+Up { focus-window-up; } - Mod+Right { focus-column-right; } - Mod+H { focus-column-left; } - Mod+J { focus-window-down; } - Mod+K { focus-window-up; } - Mod+L { focus-column-right; } - - - Mod+Shift+Z { focus-column-left; } - Mod+Shift+X { focus-column-right; } - - Mod+Ctrl+Left { move-column-left; } - Mod+Ctrl+Down { move-window-down; } - Mod+Ctrl+Up { move-window-up; } - Mod+Ctrl+Right { move-column-right; } - Mod+Ctrl+H { move-column-left; } - Mod+Ctrl+J { move-window-down; } - Mod+Ctrl+K { move-window-up; } - Mod+Ctrl+L { move-column-right; } - - Mod+Ctrl+MouseForward { move-column-right; } - Mod+Ctrl+MouseBack { move-column-left; } - - // Alternative commands that move across workspaces when reaching - // the first or last window in a column. - // Mod+J { focus-window-or-workspace-down; } - // Mod+K { focus-window-or-workspace-up; } - // Mod+Ctrl+J { move-window-down-or-to-workspace-down; } - // Mod+Ctrl+K { move-window-up-or-to-workspace-up; } - - Mod+Home { focus-column-first; } - Mod+End { focus-column-last; } - Mod+Ctrl+Home { move-column-to-first; } - Mod+Ctrl+End { move-column-to-last; } - - Mod+Shift+Left { focus-monitor-left; } - Mod+Shift+Down { focus-monitor-down; } - Mod+Shift+Up { focus-monitor-up; } - Mod+Shift+Right { focus-monitor-right; } - Mod+Shift+H { focus-monitor-left; } - Mod+Shift+J { focus-monitor-down; } - Mod+Shift+K { focus-monitor-up; } - // Mod+Shift+L { focus-monitor-right; } - - Mod+Shift+Ctrl+Left { move-column-to-monitor-left; } - Mod+Shift+Ctrl+Down { move-column-to-monitor-down; } - Mod+Shift+Ctrl+Up { move-column-to-monitor-up; } - Mod+Shift+Ctrl+Right { move-column-to-monitor-right; } - Mod+Shift+Ctrl+H { move-column-to-monitor-left; } - Mod+Shift+Ctrl+J { move-column-to-monitor-down; } - Mod+Shift+Ctrl+K { move-column-to-monitor-up; } - Mod+Shift+Ctrl+L { move-column-to-monitor-right; } - - // Alternatively, there are commands to move just a single window: - // Mod+Shift+Ctrl+Left { move-window-to-monitor-left; } - // ... - - // And you can also move a whole workspace to another monitor: - // Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; } - // ... - - Mod+Page_Down { focus-workspace-down; } - Mod+Page_Up { focus-workspace-up; } - Mod+U { focus-workspace-down; } - Mod+I { focus-workspace-up; } - - Mod+2 { focus-workspace-down; } - Mod+1 { focus-workspace-up; } - - Mod+Ctrl+2 { move-column-to-workspace-down; } - Mod+Ctrl+1 { move-column-to-workspace-up; } - - - Mod+Shift+1 {focus-column-left;} - Mod+Shift+2 {focus-column-right;} - - Mod+Ctrl+Page_Down { move-column-to-workspace-down; } - Mod+Ctrl+Page_Up { move-column-to-workspace-up; } - Mod+Ctrl+U { move-column-to-workspace-down; } - Mod+Ctrl+I { move-column-to-workspace-up; } - - // Alternatively, there are commands to move just a single window: - // Mod+Ctrl+Page_Down { move-window-to-workspace-down; } - // ... - - Mod+Shift+Page_Down { move-workspace-down; } - Mod+Shift+Page_Up { move-workspace-up; } - Mod+Shift+U { move-workspace-down; } - Mod+Shift+I { move-workspace-up; } - - - - - Mod+Shift+MouseForward { focus-workspace-down; } - Mod+Shift+MouseBack { focus-workspace-up; } - - Mod+MouseForward { focus-column-right; } - Mod+MouseBack { focus-column-left; } - // You can bind mouse wheel scroll ticks using the following syntax. - // These binds will change direction based on the natural-scroll setting. - // - // To avoid scrolling through workspaces really fast, you can use - // the cooldown-ms property. The bind will be rate-limited to this value. - // You can set a cooldown on any bind, but it's most useful for the wheel. - Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } - Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } - - //Mod+Shift+WheelScrollDown cooldown-ms=150 { focus-column-left; } - //Mod+Shift+WheelScrollUp cooldown-ms=150 { focus-column-right; } - - Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } - Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } - - Mod+WheelScrollRight { focus-column-right; } - Mod+WheelScrollLeft { focus-column-left; } - Mod+Ctrl+WheelScrollRight { move-column-right; } - Mod+Ctrl+WheelScrollLeft { move-column-left; } - - // Usually scrolling up and down with Shift in applications results in - // horizontal scrolling; these binds replicate that. - Mod+Shift+WheelScrollDown { focus-column-right; } - Mod+Shift+WheelScrollUp { focus-column-left; } - Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } - Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } - - // Similarly, you can bind touchpad scroll "ticks". - // Touchpad scrolling is continuous, so for these binds it is split into - // discrete intervals. - // These binds are also affected by touchpad's natural-scroll, so these - // example binds are "inverted", since we have natural-scroll enabled for - // touchpads by default. - // Mod+TouchpadScrollDown { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02+"; } - // Mod+TouchpadScrollUp { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02-"; } - - // You can refer to workspaces by index. However, keep in mind that - // niri is a dynamic workspace system, so these commands are kind of - // "best effort". Trying to refer to a workspace index bigger than - // the current workspace count will instead refer to the bottommost - // (empty) workspace. - // - // For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on - // will all refer to the 3rd workspace. - // Mod+1 { focus-workspace 1; } - //Mod+2 { focus-workspace 2; } - //Mod+3 repeat=false { toggle-overview; } - // Mod+4 { focus-workspace 4; } - //Mod+5 { focus-workspace 5; } - //Mod+6 { focus-workspace 6; } - //Mod+7 { focus-workspace 7; } - //Mod+8 { focus-workspace 8; } - //Mod+9 { focus-workspace 9; } - //Mod+Ctrl+1 { move-column-to-workspace 1; } - //Mod+Ctrl+2 { move-column-to-workspace 2; } - Mod+Ctrl+3 { move-column-to-workspace 3; } - //Mod+Ctrl+4 { move-column-to-workspace 4; } - //Mod+Ctrl+5 { move-column-to-workspace 5; } - //Mod+Ctrl+6 { move-column-to-workspace 6; } - //Mod+Ctrl+7 { move-column-to-workspace 7; } - //Mod+Ctrl+8 { move-column-to-workspace 8; } - //Mod+Ctrl+9 { move-column-to-workspace 9; } - - // Alternatively, there are commands to move just a single window: - // Mod+Ctrl+1 { move-window-to-workspace 1; } - - // Switches focus between the current and the previous workspace. - Mod+Tab { focus-workspace-previous; } - - // The following binds move the focused window in and out of a column. - // If the window is alone, they will consume it into the nearby column to the side. - // If the window is already in a column, they will expel it out. - Mod+BracketLeft { consume-or-expel-window-left; } - Mod+BracketRight { consume-or-expel-window-right; } - - // Consume one window from the right to the bottom of the focused column. - Mod+3 { consume-window-into-column; } - // Expel the bottom window from the focused column to the right. - Mod+4 { expel-window-from-column; } - - Mod+A repeat=false { switch-preset-column-width; } - Mod+Shift+W { toggle-column-tabbed-display; } - // Cycling through the presets in reverse order is also possible. - // Mod+R { switch-preset-column-width-back; } - Mod+Shift+R repeat=false { switch-preset-window-height; } - Mod+Ctrl+R { reset-window-height; } - Mod+Shift+F repeat=false { fullscreen-window; } - - // Expand the focused column to space not taken up by other fully visible columns. - // Makes the column "fill the rest of the space". - Mod+Ctrl+F { expand-column-to-available-width; } - - //Mod+M { center-column; } - - // Center all fully visible columns on screen. - Mod+C { center-column; } - - // Finer width adjustments. - // This command can also: - // * set width in pixels: "1000" - // * adjust width in pixels: "-5" or "+5" - // * set width as a percentage of screen width: "25%" - // * adjust width as a percentage of screen width: "-10%" or "+10%" - // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0, - // set-column-width "100" will make the column occupy 200 physical screen pixels. - Mod+Minus { set-column-width "-5%"; } - Mod+Equal { set-column-width "+5%"; } - - // Finer height adjustments when in column with other windows. - Mod+Shift+Minus { set-window-height "-5%"; } - Mod+Shift+Equal { set-window-height "+5%"; } - - Mod+V { toggle-window-floating; } - // Move the focused window between the floating and the tiling layout. - //Mod+V {spawn "pavucontrol"; } - Mod+Shift+V { switch-focus-between-floating-and-tiling; } - - // Toggle tabbed column display mode. - // Windows in this column will appear as vertical tabs, - // rather than stacked on top of each other. - Mod+N { toggle-column-tabbed-display; } - - // Actions to switch layouts. - // Note: if you uncomment these, make sure you do NOT have - // a matching layout switch hotkey configured in xkb options above. - // Having both at once on the same hotkey will break the switching, - // since it will switch twice upon pressing the hotkey (once by xkb, once by niri). - // Mod+Space { switch-layout "next"; } - // Mod+Shift+Space { switch-layout "prev"; } - - Mod+S { screenshot; } - Super+Shift+S { screenshot-screen; } - - // Applications such as remote-desktop clients and software KVM switches may - // request that niri stops processing the keyboard shortcuts defined here - // so they may, for example, forward the key presses as-is to a remote machine. - // It's a good idea to bind an escape hatch to toggle the inhibitor, - // so a buggy application can't hold your session hostage. - // - // The allow-inhibiting=false property can be applied to other binds as well, - // which ensures niri always processes them, even when an inhibitor is active. - //Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } - - // The quit action will show a confirmation dialog to avoid accidental exits. - Mod+Shift+Escape { quit; } - Ctrl+Alt+Delete { quit; } - - // Powers off the monitors. To turn them back on, do any input like - // moving the mouse or pressing any other key. - //Mod+Shift+P { power-off-monitors; } -} +include "binds.kdl" +include "window-rule.kdl" +include "input.kdl" +include "output-pc.kdl" +include "spawn-at-startup.kdl" +include "animation.kdl" +include "layout.kdl" diff --git a/config/niri/config.kdl.backup1776208575 b/config/niri/config.kdl.backup1776208575 new file mode 100644 index 0000000..080f1c1 --- /dev/null +++ b/config/niri/config.kdl.backup1776208575 @@ -0,0 +1,74 @@ +include "binds.kdl" + +include "window-rule.kdl" +include "input.kdl" +include "output-pc.kdl" +include "spawn-at-startup.kdl" +include "animation.kdl" +include "layout.kdl" +overview { + zoom 0.4 + backdrop-color "#07090b" + workspace-shadow { + off + } +} +clipboard { + disable-primary +} +cursor { + xcursor-theme "Bibata-Modern-Ice" + xcursor-size 20 + hide-when-typing + hide-after-inactive-ms 500 +} + +hotkey-overlay { + skip-at-startup +} +prefer-no-csd +screenshot-path "~/imgs/screenshots/screenshot-from-%Y-%m-%d %H-%M-%S.png" +// You can also set this to null to disable saving screenshots to disk. +// screenshot-path null +recent-windows { + // off + debounce-ms 750 + open-delay-ms 100 + + highlight { + active-color "#eef7fd" + urgent-color "#eef7fd" + padding 20 + corner-radius 10 + } + + previews { + max-height 480 + max-scale 0.4 + } + + binds { + Mod+Tab { next-window; } + Mod+Shift+Tab { previous-window; } + // Mod+grave { next-window filter="app-id"; } + Mod+Shift+grave { previous-window filter="app-id"; } + + Alt+Tab { next-window; } + Alt+Shift+Tab { previous-window; } + Alt+grave { next-window filter="app-id"; } + Alt+Shift+grave { previous-window filter="app-id"; } + } +} +environment{ + XDG_CURRENT_DESKTOP "niri" + QT_QPA_PLATFORMTHEME "xdgdesktopportal" + QT_QPA_PLATFORM "wayland" + ELECTRON_OZONE_PLATFORM_HINT "wayland" + //ЖQT_STYLE_OVERRIDE "adwaita" + QT_STYLE_OVERRIDE "kvantum" +} +xwayland-satellite { + // off + path "xwayland-satellite" +} + diff --git a/config/niri/config.kdl.backup1776211503 b/config/niri/config.kdl.backup1776211503 new file mode 100644 index 0000000..04eba5f --- /dev/null +++ b/config/niri/config.kdl.backup1776211503 @@ -0,0 +1,76 @@ +include "binds.kdl" + +include "window-rule.kdl" +include "input.kdl" +include "output-pc.kdl" +include "spawn-at-startup.kdl" +include "animation.kdl" +include "layout.kdl" +overview { + zoom 0.4 + backdrop-color "#07090b" + workspace-shadow { + off + } +} +clipboard { + disable-primary +} +cursor { + xcursor-theme "Bibata-Modern-Ice" + xcursor-size 20 + hide-when-typing + hide-after-inactive-ms 500 +} + +hotkey-overlay { + skip-at-startup +} +prefer-no-csd +screenshot-path "~/imgs/screenshots/screenshot-from-%Y-%m-%d %H-%M-%S.png" +// You can also set this to null to disable saving screenshots to disk. +// screenshot-path null +recent-windows { + // off + debounce-ms 750 + open-delay-ms 100 + + highlight { + active-color "#eef7fd" + urgent-color "#eef7fd" + padding 20 + corner-radius 10 + } + + previews { + max-height 480 + max-scale 0.4 + } + + binds { + Mod+Tab { next-window; } + Mod+Shift+Tab { previous-window; } + // Mod+grave { next-window filter="app-id"; } + Mod+Shift+grave { previous-window filter="app-id"; } + + Alt+Tab { next-window; } + Alt+Shift+Tab { previous-window; } + Alt+grave { next-window filter="app-id"; } + Alt+Shift+grave { previous-window filter="app-id"; } + } +} +environment{ + XDG_CURRENT_DESKTOP "niri" + QT_QPA_PLATFORMTHEME "xdgdesktopportal" + QT_QPA_PLATFORM "wayland" + ELECTRON_OZONE_PLATFORM_HINT "wayland" + //ЖQT_STYLE_OVERRIDE "adwaita" + QT_STYLE_OVERRIDE "kvantum" +} +xwayland-satellite { + // off + path "xwayland-satellite" +} + + +include "dms/cursor.kdl" diff --git a/config/niri/config.kdl.backup1776211623 b/config/niri/config.kdl.backup1776211623 new file mode 100644 index 0000000..7de3b63 --- /dev/null +++ b/config/niri/config.kdl.backup1776211623 @@ -0,0 +1,78 @@ +include "binds.kdl" + +include "window-rule.kdl" +include "input.kdl" +include "output-pc.kdl" +include "spawn-at-startup.kdl" +include "animation.kdl" +include "layout.kdl" +overview { + zoom 0.4 + backdrop-color "#07090b" + workspace-shadow { + off + } +} +clipboard { + disable-primary +} +cursor { + xcursor-theme "Bibata-Modern-Ice" + xcursor-size 20 + hide-when-typing + hide-after-inactive-ms 500 +} + +hotkey-overlay { + skip-at-startup +} +prefer-no-csd +screenshot-path "~/imgs/screenshots/screenshot-from-%Y-%m-%d %H-%M-%S.png" +// You can also set this to null to disable saving screenshots to disk. +// screenshot-path null +recent-windows { + // off + debounce-ms 750 + open-delay-ms 100 + + highlight { + active-color "#eef7fd" + urgent-color "#eef7fd" + padding 20 + corner-radius 10 + } + + previews { + max-height 480 + max-scale 0.4 + } + + binds { + Mod+Tab { next-window; } + Mod+Shift+Tab { previous-window; } + // Mod+grave { next-window filter="app-id"; } + Mod+Shift+grave { previous-window filter="app-id"; } + + Alt+Tab { next-window; } + Alt+Shift+Tab { previous-window; } + Alt+grave { next-window filter="app-id"; } + Alt+Shift+grave { previous-window filter="app-id"; } + } +} +environment{ + XDG_CURRENT_DESKTOP "niri" + QT_QPA_PLATFORMTHEME "xdgdesktopportal" + QT_QPA_PLATFORM "wayland" + ELECTRON_OZONE_PLATFORM_HINT "wayland" + //ЖQT_STYLE_OVERRIDE "adwaita" + QT_STYLE_OVERRIDE "kvantum" +} +xwayland-satellite { + // off + path "xwayland-satellite" +} + + +include "dms/cursor.kdl" + +include "dms/outputs.kdl" diff --git a/config/niri/dms/alttab.kdl b/config/niri/dms/alttab.kdl new file mode 100644 index 0000000..3f291e7 --- /dev/null +++ b/config/niri/dms/alttab.kdl @@ -0,0 +1,10 @@ +// ! DO NOT EDIT ! + // ! AUTO-GENERATED BY DMS ! + // ! CHANGES WILL BE OVERWRITTEN ! + // ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE ! + + recent-windows { + highlight { + corner-radius 10 + } + } diff --git a/config/niri/dms/binds.kdl b/config/niri/dms/binds.kdl new file mode 100644 index 0000000..dc1d7cc --- /dev/null +++ b/config/niri/dms/binds.kdl @@ -0,0 +1,221 @@ +binds { + // === System & Overview === + Mod+D repeat=false { toggle-overview; } + Mod+Tab repeat=false { toggle-overview; } + Mod+Shift+Slash { show-hotkey-overlay; } + + // === Application Launchers === + Mod+T hotkey-overlay-title="Open Terminal" { spawn "ghostty"; } + Mod+Space hotkey-overlay-title="Application Launcher" { + spawn "dms" "ipc" "call" "spotlight" "toggle"; + } + Mod+V hotkey-overlay-title="Clipboard Manager" { + spawn "dms" "ipc" "call" "clipboard" "toggle"; + } + Mod+M hotkey-overlay-title="Task Manager" { + spawn "dms" "ipc" "call" "processlist" "focusOrToggle"; + } + + Super+X hotkey-overlay-title="Power Menu: Toggle" { spawn "dms" "ipc" "call" "powermenu" "toggle"; } + Mod+Comma hotkey-overlay-title="Settings" { + spawn "dms" "ipc" "call" "settings" "focusOrToggle"; + } + Mod+Y hotkey-overlay-title="Browse Wallpapers" { + spawn "dms" "ipc" "call" "dankdash" "wallpaper"; + } + Mod+N hotkey-overlay-title="Notification Center" { spawn "dms" "ipc" "call" "notifications" "toggle"; } + Mod+Shift+N hotkey-overlay-title="Notepad" { spawn "dms" "ipc" "call" "notepad" "toggle"; } + + // === Security === + Mod+Alt+L hotkey-overlay-title="Lock Screen" { + spawn "dms" "ipc" "call" "lock" "lock"; + } + Mod+Shift+E { quit; } + Ctrl+Alt+Delete hotkey-overlay-title="Task Manager" { + spawn "dms" "ipc" "call" "processlist" "focusOrToggle"; + } + + // === Audio Controls === + XF86AudioRaiseVolume allow-when-locked=true { + spawn "dms" "ipc" "call" "audio" "increment" "3"; + } + XF86AudioLowerVolume allow-when-locked=true { + spawn "dms" "ipc" "call" "audio" "decrement" "3"; + } + XF86AudioMute allow-when-locked=true { + spawn "dms" "ipc" "call" "audio" "mute"; + } + XF86AudioMicMute allow-when-locked=true { + spawn "dms" "ipc" "call" "audio" "micmute"; + } + XF86AudioPause allow-when-locked=true { + spawn "dms" "ipc" "call" "mpris" "playPause"; + } + XF86AudioPlay allow-when-locked=true { + spawn "dms" "ipc" "call" "mpris" "playPause"; + } + XF86AudioPrev allow-when-locked=true { + spawn "dms" "ipc" "call" "mpris" "previous"; + } + XF86AudioNext allow-when-locked=true { + spawn "dms" "ipc" "call" "mpris" "next"; + } + Ctrl+XF86AudioRaiseVolume allow-when-locked=true { + spawn "dms" "ipc" "call" "mpris" "increment" "3"; + } + Ctrl+XF86AudioLowerVolume allow-when-locked=true { + spawn "dms" "ipc" "call" "mpris" "decrement" "3"; + } + + // === Brightness Controls === + XF86MonBrightnessUp allow-when-locked=true { + spawn "dms" "ipc" "call" "brightness" "increment" "5" ""; + } + XF86MonBrightnessDown allow-when-locked=true { + spawn "dms" "ipc" "call" "brightness" "decrement" "5" ""; + } + + // === Window Management === + Mod+Q repeat=false { close-window; } + Mod+F { maximize-column; } + Mod+Shift+F { fullscreen-window; } + Mod+Shift+T { toggle-window-floating; } + Mod+Shift+V { switch-focus-between-floating-and-tiling; } + Mod+W { toggle-column-tabbed-display; } + Mod+Shift+W hotkey-overlay-title="Create window rule" { spawn "dms" "ipc" "call" "window-rules" "toggle"; } + + // === Focus Navigation === + Mod+Left { focus-column-left; } + Mod+Down { focus-window-down; } + Mod+Up { focus-window-up; } + Mod+Right { focus-column-right; } + Mod+H { focus-column-left; } + Mod+J { focus-window-down; } + Mod+K { focus-window-up; } + Mod+L { focus-column-right; } + + // === Window Movement === + Mod+Shift+Left { move-column-left; } + Mod+Shift+Down { move-window-down; } + Mod+Shift+Up { move-window-up; } + Mod+Shift+Right { move-column-right; } + Mod+Shift+H { move-column-left; } + Mod+Shift+J { move-window-down; } + Mod+Shift+K { move-window-up; } + Mod+Shift+L { move-column-right; } + + // === Column Navigation === + Mod+Home { focus-column-first; } + Mod+End { focus-column-last; } + Mod+Ctrl+Home { move-column-to-first; } + Mod+Ctrl+End { move-column-to-last; } + + // === Monitor Navigation === + Mod+Ctrl+Left { focus-monitor-left; } + //Mod+Ctrl+Down { focus-monitor-down; } + //Mod+Ctrl+Up { focus-monitor-up; } + Mod+Ctrl+Right { focus-monitor-right; } + Mod+Ctrl+H { focus-monitor-left; } + Mod+Ctrl+J { focus-monitor-down; } + Mod+Ctrl+K { focus-monitor-up; } + Mod+Ctrl+L { focus-monitor-right; } + + // === Move to Monitor === + Mod+Shift+Ctrl+Left { move-column-to-monitor-left; } + Mod+Shift+Ctrl+Down { move-column-to-monitor-down; } + Mod+Shift+Ctrl+Up { move-column-to-monitor-up; } + Mod+Shift+Ctrl+Right { move-column-to-monitor-right; } + Mod+Shift+Ctrl+H { move-column-to-monitor-left; } + Mod+Shift+Ctrl+J { move-column-to-monitor-down; } + Mod+Shift+Ctrl+K { move-column-to-monitor-up; } + Mod+Shift+Ctrl+L { move-column-to-monitor-right; } + + // === Workspace Navigation === + Mod+Page_Down { focus-workspace-down; } + Mod+Page_Up { focus-workspace-up; } + Mod+U { focus-workspace-down; } + Mod+I { focus-workspace-up; } + Mod+Ctrl+Down { move-column-to-workspace-down; } + Mod+Ctrl+Up { move-column-to-workspace-up; } + Mod+Ctrl+U { move-column-to-workspace-down; } + Mod+Ctrl+I { move-column-to-workspace-up; } + + // === Workspace Management === + Ctrl+Shift+R hotkey-overlay-title="Rename Workspace" { + spawn "dms" "ipc" "call" "workspace-rename" "open"; + } + + // === Move Workspaces === + Mod+Shift+Page_Down { move-workspace-down; } + Mod+Shift+Page_Up { move-workspace-up; } + Mod+Shift+U { move-workspace-down; } + Mod+Shift+I { move-workspace-up; } + + // === Mouse Wheel Navigation === + Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } + Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } + Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } + Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } + + Mod+WheelScrollRight { focus-column-right; } + Mod+WheelScrollLeft { focus-column-left; } + Mod+Ctrl+WheelScrollRight { move-column-right; } + Mod+Ctrl+WheelScrollLeft { move-column-left; } + + Mod+Shift+WheelScrollDown { focus-column-right; } + Mod+Shift+WheelScrollUp { focus-column-left; } + Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } + Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } + + // === Numbered Workspaces === + Mod+1 { focus-workspace 1; } + Mod+2 { focus-workspace 2; } + Mod+3 { focus-workspace 3; } + Mod+4 { focus-workspace 4; } + Mod+5 { focus-workspace 5; } + Mod+6 { focus-workspace 6; } + Mod+7 { focus-workspace 7; } + Mod+8 { focus-workspace 8; } + Mod+9 { focus-workspace 9; } + + // === Move to Numbered Workspaces === + Mod+Shift+1 { move-column-to-workspace 1; } + Mod+Shift+2 { move-column-to-workspace 2; } + Mod+Shift+3 { move-column-to-workspace 3; } + Mod+Shift+4 { move-column-to-workspace 4; } + Mod+Shift+5 { move-column-to-workspace 5; } + Mod+Shift+6 { move-column-to-workspace 6; } + Mod+Shift+7 { move-column-to-workspace 7; } + Mod+Shift+8 { move-column-to-workspace 8; } + Mod+Shift+9 { move-column-to-workspace 9; } + + // === Column Management === + Mod+BracketLeft { consume-or-expel-window-left; } + Mod+BracketRight { consume-or-expel-window-right; } + Mod+Period { expel-window-from-column; } + + // === Sizing & Layout === + Mod+R { switch-preset-column-width; } + Mod+Shift+R { switch-preset-window-height; } + Mod+Ctrl+R { reset-window-height; } + Mod+Ctrl+F { expand-column-to-available-width; } + Mod+C { center-column; } + Mod+Ctrl+C { center-visible-columns; } + + // === Manual Sizing === + Mod+Minus { set-column-width "-10%"; } + Mod+Equal { set-column-width "+10%"; } + Mod+Shift+Minus { set-window-height "-10%"; } + Mod+Shift+Equal { set-window-height "+10%"; } + + // === Screenshots === + XF86Launch1 { screenshot; } + Ctrl+XF86Launch1 { screenshot-screen; } + Alt+XF86Launch1 { screenshot-window; } + Print { screenshot; } + Ctrl+Print { screenshot-screen; } + Alt+Print { screenshot-window; } + // === System Controls === + Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } + Mod+Shift+P { power-off-monitors; } +} diff --git a/config/niri/dms/colors.kdl b/config/niri/dms/colors.kdl new file mode 100644 index 0000000..37650a6 --- /dev/null +++ b/config/niri/dms/colors.kdl @@ -0,0 +1,39 @@ +// ! Auto-generated file. Do not edit directly. +// Remove `include "dms/colors.kdl"` from your config to override. + +layout { + background-color "transparent" + + focus-ring { + active-color "#b8a8f0" + inactive-color "#c9b8d9" + urgent-color "#f38ba8" + } + + border { + active-color "#b8a8f0" + inactive-color "#c9b8d9" + urgent-color "#f38ba8" + } + + shadow { + color "#00000070" + } + + tab-indicator { + active-color "#b8a8f0" + inactive-color "#c9b8d9" + urgent-color "#f38ba8" + } + + insert-hint { + color "#b8a8f080" + } +} + +recent-windows { + highlight { + active-color "#745b8c" + urgent-color "#f38ba8" + } +} diff --git a/config/niri/dms/cursor.kdl b/config/niri/dms/cursor.kdl new file mode 100644 index 0000000..66f77fc --- /dev/null +++ b/config/niri/dms/cursor.kdl @@ -0,0 +1,10 @@ +// ! DO NOT EDIT ! +// ! AUTO-GENERATED BY DMS ! +// ! CHANGES WILL BE OVERWRITTEN ! +// ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE ! + +cursor { + xcursor-theme "Bibata-Modern-Ice" + xcursor-size 21 + hide-when-typing +} \ No newline at end of file diff --git a/config/niri/dms/layout.kdl b/config/niri/dms/layout.kdl new file mode 100644 index 0000000..72566f6 --- /dev/null +++ b/config/niri/dms/layout.kdl @@ -0,0 +1,22 @@ +// ! DO NOT EDIT ! + // ! AUTO-GENERATED BY DMS ! + // ! CHANGES WILL BE OVERWRITTEN ! + // ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE ! + + layout { + gaps 10 + + border { + width 2 + } + + focus-ring { + width 2 + } + } + window-rule { + geometry-corner-radius 10 + clip-to-geometry true + tiled-state true + draw-border-with-background false + } diff --git a/config/niri/dms/outputs.kdl b/config/niri/dms/outputs.kdl new file mode 120000 index 0000000..21614dd --- /dev/null +++ b/config/niri/dms/outputs.kdl @@ -0,0 +1 @@ +/home/unconfer/.config/niri/dms/profiles/profile_1776211496314_g03e3q.kdl \ No newline at end of file diff --git a/config/niri/dms/profiles/profile_1776211496314_g03e3q.kdl b/config/niri/dms/profiles/profile_1776211496314_g03e3q.kdl new file mode 100644 index 0000000..334b0ca --- /dev/null +++ b/config/niri/dms/profiles/profile_1776211496314_g03e3q.kdl @@ -0,0 +1,12 @@ +// Auto-generated by DMS - do not edit manually + +output "DP-1" { + mode "1920x1080@165.000" + scale 1 + position x=0 y=0 + variable-refresh-rate on-demand=true + hot-corners { + top-left + } +} + diff --git a/config/niri/dms/windowrules.kdl b/config/niri/dms/windowrules.kdl new file mode 100644 index 0000000..e69de29 diff --git a/config/niri/dms/wpblur.kdl b/config/niri/dms/wpblur.kdl new file mode 100644 index 0000000..3d58802 --- /dev/null +++ b/config/niri/dms/wpblur.kdl @@ -0,0 +1,9 @@ +// ! DO NOT EDIT ! +// ! AUTO-GENERATED BY DMS ! +// ! CHANGES WILL BE OVERWRITTEN ! +// ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE ! + +layer-rule { + match namespace="dms:blurwallpaper" + place-within-backdrop true +} diff --git a/config/niri/emoji.png b/config/niri/emoji.png new file mode 100644 index 0000000..5113ce2 Binary files /dev/null and b/config/niri/emoji.png differ diff --git a/config/niri/executable_caps b/config/niri/executable_caps new file mode 100644 index 0000000..68e3211 --- /dev/null +++ b/config/niri/executable_caps @@ -0,0 +1,11 @@ +#!/bin/bash +niri msg event-stream | while read -r line; do + if echo "$line" | grep -q 'Keyboard layout switched'; then + layout=$(echo "$line" | grep -oP '\d+$') + if [ "$layout" = "1" ]; then + brightnessctl -d'input12::capslock' s 1 + else + brightnessctl -d'input12::capslock' s 0 + fi + fi +done diff --git a/config/niri/input.kdl b/config/niri/input.kdl new file mode 100644 index 0000000..f81c52e --- /dev/null +++ b/config/niri/input.kdl @@ -0,0 +1,53 @@ +input { + disable-power-key-handling + keyboard { + xkb { + // layout "us,ru" + //options "grp:caps_toggle,altwin:swap_alt_win" + file "~/.config/keymap.xkb" + } + repeat-delay 200 + repeat-rate 25 + // track-layout "global" + track-layout "global" + numlock + } + touchpad { + // off + tap + // dwt + // dwep + // drag false + // drag-lock + natural-scroll + // accel-speed 0.2 + // accel-profile "flat" + // scroll-method "two-finger" + // disabled-on-external-mouse + } + + mouse { + // off + // natural-scroll + // accel-speed 0.2 + accel-profile "adaptive" + scroll-button 274 + // scroll-button-lock + middle-emulation + scroll-method "on-button-down" + } + // warp-mouse-to-focus + focus-follows-mouse max-scroll-amount="0%" + + trackpoint { + // off + // natural-scroll + // accel-speed 0.2 + // accel-profile "flat" + // scroll-method "on-button-down" + // scroll-button 273 + // scroll-button-lock + // middle-emulation + } + +} diff --git a/config/niri/ironbar-toggle.sh b/config/niri/ironbar-toggle.sh new file mode 100755 index 0000000..ac00fd0 --- /dev/null +++ b/config/niri/ironbar-toggle.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +COMMAND="ironbar" + +# Проверяем, существует ли процесс с указанной командной строкой +if pgrep -x "$COMMAND" >/dev/null 2>&1; then + notify-send "[INFO]" "ironbar уже работает, запускаю остановку... " -t 700 + pkill -x ironbar +else + notify-send "[INFO]" "ironbar не активен, запускаю..." -t 700 + exec $COMMAND &>/dev/null & +fi diff --git a/config/niri/layer-rule.kdl b/config/niri/layer-rule.kdl new file mode 100644 index 0000000..7bfeeec --- /dev/null +++ b/config/niri/layer-rule.kdl @@ -0,0 +1,28 @@ +layer-rule { + match namespace="waybar" + match at-startup=true + + // Properties that apply continuously. + // block-out-from "screen-capture" + + shadow { + + off + softness 40 + spread 5 + offset x=0 y=5 + draw-behind-window true + // inactive-color "#00000064" + } + + geometry-corner-radius 20 + place-within-backdrop true +} +// Put swaybg inside the overview backdrop. +layer-rule { + match namespace="^mpvpaper$" + + place-within-backdrop true +} + + diff --git a/config/niri/layout.kdl b/config/niri/layout.kdl new file mode 100644 index 0000000..2e8ad82 --- /dev/null +++ b/config/niri/layout.kdl @@ -0,0 +1,96 @@ +layout{ + gaps 10 + background-color "transparent" + center-focused-column "never" + default-column-display "normal" + preset-column-widths { + proportion 0.33333 + proportion 0.5 + proportion 0.66666 + } + + preset-window-heights { + proportion 0.5 + proportion 1.0 + } + + default-column-width { proportion 1.0; } + + // By default focus ring and border are rendered as a solid background rectangle + // behind windows. That is, they will show up through semitransparent windows. + // This is because windows using client-side decorations can have an arbitrary shape. + // + // If you don't like that, you should uncomment `prefer-no-csd` below. + // Niri will draw focus ring and border *around* windows that agree to omit their + // client-side decorations. + // + // Alternatively, you can override it with a window rule called + // `draw-border-with-background`. + + // You can change how the focus ring looks. + focus-ring { + off + + width 2 + // - CSS named colors: "red" + // - RGB hex: "#rgb", "#rgba", "#rrggbb", "#rrggbbaa" + // - CSS-like notation: "rgb(255, 127, 0)", rgba(), hsl() and a few others. + // active-color "#EEF7FD" + //active-color "#EEF7FD" +// foreground #C1D6D6 + //background #07090B + // inactive-color "#5C6871" + // Changing the color space is also supported, check the wiki for more info. + // + // active-gradient from="#80c8ff" to="#c7ff7f" angle=45 + + // You can also color the gradient relative to the entire view + // of the workspace, rather than relative to just the window itself. + // To do that, set relative-to="workspace-view". + // + // inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view" + } + + // You can also add a border. It's similar to the focus ring, but always visible. + border { + //off + on + width 4 + active-color "#A8ADBB" + + //active-color "#d2dee7" + inactive-color "#1f2830" + } + + shadow { + off + color "#0007" + } + + // Struts shrink the area occupied by windows, similarly to layer-shell panels. + // You can think of them as a kind of outer gaps. They are set in logical pixels. + // Left and right struts will cause the next window to the side to always be visible. + // Top and bottom struts will simply add outer gaps in addition to the area occupied by + // layer-shell panels and regular gaps. + struts { + left 0 + right 0 + top 0 + bottom 0 + } + tab-indicator { + //off + active-color "#eef7fd" + inactive-color "#1f2830" + urgent-color "#f79de7" + width 8 + } + insert-hint { + //off + color "#EEF7FD" + } + + + + +} diff --git a/config/niri/lock.sh b/config/niri/lock.sh new file mode 100755 index 0000000..7e7971c --- /dev/null +++ b/config/niri/lock.sh @@ -0,0 +1,2 @@ +#!/bin/bash +hyprlock diff --git a/config/niri/noctalia-toggle.sh b/config/niri/noctalia-toggle.sh new file mode 100755 index 0000000..d1c94f5 --- /dev/null +++ b/config/niri/noctalia-toggle.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +COMMAND="qs -c noctalia-shell" + +# Проверяем, существует ли процесс с указанной командной строкой +if pgrep -f "$COMMAND" >/dev/null 2>&1; then + notify-send "[INFO]" "noctalia-shell уже активен, запускаю остановку... " -t 700 + qs -c noctalia-shell kill +else + notify-send "[INFO]" "noctalia-shell не активен, запускаю..." -t 700 + qs -c noctalia-shell +fi diff --git a/config/niri/output-pc.kdl b/config/niri/output-pc.kdl new file mode 100644 index 0000000..089f424 --- /dev/null +++ b/config/niri/output-pc.kdl @@ -0,0 +1,9 @@ +output "DP-1" { + // off + mode "1920x1080@165.000" + scale 1.0 + transform "normal" + position x=1280 y=0 + variable-refresh-rate on-demand=true + +} diff --git a/config/niri/spawn-at-startup.kdl b/config/niri/spawn-at-startup.kdl new file mode 100644 index 0000000..0d79cbf --- /dev/null +++ b/config/niri/spawn-at-startup.kdl @@ -0,0 +1,14 @@ + +spawn-at-startup "niri-screen-time" "-daemon" +spawn-sh-at-startup "foot --server" +spawn-sh-at-startup "bash ~/.config/niri/caps" +spawn-at-startup "mpDris2" +spawn-at-startup "swayosd-server" +spawn-at-startup "hyprwave" +spawn-at-startup "swaync" +spawn-at-startup "clipse" "-listen" +spawn-sh-at-startup "swaybg -c 07090b" +spawn-sh-at-startup "walker --gapplication-service" +spawn-at-startup "ironbar" + + diff --git a/config/niri/window-rule.kdl b/config/niri/window-rule.kdl new file mode 100644 index 0000000..489724b --- /dev/null +++ b/config/niri/window-rule.kdl @@ -0,0 +1,108 @@ +window-rule { + // This regular expression is intentionally made as specific as possible, + // since this is the default config, and we want no false positives. + // You can get away with just app-id="wezterm" if you want. + match app-id=r#"^org\.wezfurlong\.wezterm$"# + default-column-width { + proportion 0.5 + } +} +window-rule { + match title="Walker" + open-floating true + border { + off + } + + +} + +window-rule { + match title="clipse" +match is-floating=true + open-floating true + open-focused true + block-out-from "screencast" + default-column-width { proportion 0.9; } + default-window-height { proportion 0.9; } + scroll-factor 1.0 +border { + off + } + + + + + +} + + window-rule { + match app-id="one.alynx.showmethekey" + open-floating true + open-focused false + default-floating-position x=990 y=28 relative-to="top-left" + min-width 900 + min-height 170 + + border { + off + } +} + +// Open the Firefox picture-in-picture player as floating by default +window-rule { + // This app-id regular expression will work for both: + // - host Firefox (app-id is "firefox") + // - Flatpak Firefox (app-id is "org.mozilla.firefox") + match app-id=r#"firefox$"# title="^Picture-in-Picture$" + open-floating true +} + +// Example: block out two password managers from screen capture. +// (This example rule is commented out with a "/-" in front.) +/-window-rule { + match app-id=r#"^org\.keepassxc\.KeePassXC$"# + match app-id=r#"^org\.gnome\.World\.Secrets$"# + + block-out-from "screen-capture" + + // Use this instead if you want them visible on third-party screenshot tools. + // block-out-from "screencast" +} +window-rule { + match title="Media viewer" + default-column-width { + proportion 0.5 + } + +} +//window-rule { + // match app-id="PortProton" + + //open-floating true + +//} +window-rule { + match title="sudo" + + border { + active-color "#ff0100" + } +} + +// Example: enable rounded corners for all windows. +// (This example rule is commented out with a "/-" in front.) + +window-rule { + // open-maximized false + geometry-corner-radius 10 + tiled-state true + clip-to-geometry true + open-maximized true + + } +layer-rule { + match namespace="^wallpaper$" + + place-within-backdrop true +} diff --git a/config/nix/nix.conf b/config/nix/nix.conf new file mode 100644 index 0000000..c7d7291 --- /dev/null +++ b/config/nix/nix.conf @@ -0,0 +1 @@ +experimental-features = nix-command flakes diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index 6ca91cc..1d356be 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -1,38 +1,41 @@ { - "LazyVim": { "branch": "main", "commit": "28db03f958d58dfff3c647ce28fdc1cb88ac158d" }, + "LazyVim": { "branch": "main", "commit": "fca0af57cc3851b14f96a795a9c9bfafc5096dd1" }, "LuaSnip": { "branch": "master", "commit": "5a1e39223db9a0498024a77b8441169d260c8c25" }, - "blink.cmp": { "branch": "main", "commit": "327fff91fe6af358e990be7be1ec8b78037d2138" }, + "base16-nvim": { "branch": "master", "commit": "4a6ef31745f851e11424a12b63fb3d2a80b2916c" }, + "blink.cmp": { "branch": "main", "commit": "451168851e8e2466bc97ee3e026c3dcb9141ce07" }, "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, - "catppuccin": { "branch": "main", "commit": "234fc048de931a0e42ebcad675bf6559d75e23df" }, - "conform.nvim": { "branch": "master", "commit": "cde4da5c1083d3527776fee69536107d98dae6c9" }, + "catppuccin": { "branch": "main", "commit": "384f304c8b04664c9e0091fbfb3923c5f97c1bcf" }, + "conform.nvim": { "branch": "master", "commit": "086a40dc7ed8242c03be9f47fbcee68699cc2395" }, "flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" }, - "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, - "gitsigns.nvim": { "branch": "main", "commit": "20ad4419564d6e22b189f6738116b38871082332" }, - "grug-far.nvim": { "branch": "main", "commit": "3e72397465f774b01aa38e4fe8e6eecf23d766d9" }, + "friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" }, + "gitsigns.nvim": { "branch": "main", "commit": "7c4faa3540d0781a28588cafbd4dd187a28ac6e3" }, + "grug-far.nvim": { "branch": "main", "commit": "dc4684e163971bb1f5bfb93fbd4bb3e892bf9b15" }, "lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" }, - "lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" }, - "lualine.nvim": { "branch": "master", "commit": "3946f0122255bc377d14a59b27b609fb3ab25768" }, - "markview.nvim": { "branch": "main", "commit": "d72e1bd8634f7abad68a77ad3c6f97342c09ae0a" }, + "lazydev.nvim": { "branch": "main", "commit": "ff2cbcba459b637ec3fd165a2be59b7bbaeedf0d" }, + "lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" }, + "markview.nvim": { "branch": "main", "commit": "918f3f92e87d28a487af89912d774521a52f9888" }, "marp-nvim": { "branch": "main", "commit": "4f38e6ffe2f5ea260f35f7ff3e4e424b9f8bea29" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "d7b5feb6e769e995f7fcf44d92f49f811c51d10c" }, - "mason.nvim": { "branch": "main", "commit": "ad7146aa61dcaeb54fa900144d768f040090bff0" }, - "mini.ai": { "branch": "main", "commit": "0d3c9cf22e37b86b7a0dfbe7ef129ee7a5f4f93c" }, - "mini.icons": { "branch": "main", "commit": "ff2e4f1d29f659cc2bad0f9256f2f6195c6b2428" }, - "mini.nvim": { "branch": "main", "commit": "68d4478920c7afdfa21c13706464e275d9ce3255" }, - "mini.pairs": { "branch": "main", "commit": "b316e68f2d242d5bd010deaab645daa27ed86297" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "a676ab7282da8d651e175118bcf54483ca11e46d" }, + "mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" }, + "mini.ai": { "branch": "main", "commit": "4b0a6207341d895b6cfe9bcb1e4d3e8607bfe4f4" }, + "mini.hipatterns": { "branch": "main", "commit": "2c5dce6dc7443de814d16f7470549811ee86e664" }, + "mini.icons": { "branch": "main", "commit": "5b9076dae1bfbe47ba4a14bc8b967cde0ab5d77e" }, + "mini.nvim": { "branch": "main", "commit": "9990c41f10f54f29a888d13024c9f765037bde23" }, + "mini.pairs": { "branch": "main", "commit": "b7fde3719340946feb75017ef9d75edebdeb0566" }, "noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" }, "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, - "nvim-lint": { "branch": "master", "commit": "8b349e822a36e9480aed96c6dd2f757f80524a35" }, - "nvim-lspconfig": { "branch": "master", "commit": "2010fc6ec03e2da552b4886fceb2f7bc0fc2e9c0" }, - "nvim-snippy": { "branch": "master", "commit": "504ab14eeb14301d9b2a858a2a6cf99ccc8d60d0" }, - "nvim-treesitter": { "branch": "main", "commit": "d97d226cfd4c00af000b3b8529261352677fc6a8" }, - "nvim-treesitter-textobjects": { "branch": "main", "commit": "7024f8687b060dd9a425bde1fa8621c896a38138" }, - "nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" }, + "nvim-lint": { "branch": "master", "commit": "606b823a57b027502a9ae00978ebf4f5d5158098" }, + "nvim-lspconfig": { "branch": "master", "commit": "dd261ad5266ab5bbec249d21efeceda98ff3e1a6" }, + "nvim-parinfer": { "branch": "master", "commit": "3968e669d9f02589aa311d33cb475b16b27c5fbb" }, + "nvim-snippy": { "branch": "master", "commit": "7e500286eb880032391107f6d0ee28211ba3eb3c" }, + "nvim-treesitter": { "branch": "main", "commit": "ebc3201290b8372df2b3a1c23b71b9f007d972ff" }, + "nvim-treesitter-textobjects": { "branch": "main", "commit": "4e91b5d0394329a229725b021a8ea217099826ef" }, + "nvim-ts-autotag": { "branch": "main", "commit": "8e1c0a389f20bf7f5b0dd0e00306c1247bda2595" }, "persistence.nvim": { "branch": "main", "commit": "b20b2a7887bd39c1a356980b45e03250f3dce49c" }, "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, - "render-markdown.nvim": { "branch": "main", "commit": "060c911c62f995a9db4467dde6fafd699cf94d55" }, - "snacks.nvim": { "branch": "main", "commit": "eee204d690f8d8e755229ff20f63d23d48565d7c" }, - "todo-comments.nvim": { "branch": "main", "commit": "411503d3bedeff88484de572f2509c248e499b38" }, + "render-markdown.nvim": { "branch": "main", "commit": "e3c18ddd27a853f85a6f513a864cf4f2982b9f26" }, + "snacks.nvim": { "branch": "main", "commit": "a049339328e2599ad6e85a69fa034ac501e921b2" }, + "todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" }, "tokyonight.nvim": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" }, "trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" }, "ts-comments.nvim": { "branch": "main", "commit": "123a9fb12e7229342f807ec9e6de478b1102b041" }, diff --git a/config/nvim/lazyvim.json b/config/nvim/lazyvim.json index d8bcaf6..718196d 100644 --- a/config/nvim/lazyvim.json +++ b/config/nvim/lazyvim.json @@ -1,6 +1,6 @@ { "extras": [ - + "lazyvim.plugins.extras.util.mini-hipatterns" ], "install_version": 8, "news": { diff --git a/config/nvim/lua/plugins/dankcolors.lua b/config/nvim/lua/plugins/dankcolors.lua new file mode 100644 index 0000000..217ee15 --- /dev/null +++ b/config/nvim/lua/plugins/dankcolors.lua @@ -0,0 +1,91 @@ +return { + { + "RRethy/base16-nvim", + priority = 1000, + config = function() + require('base16-colorscheme').setup({ + base00 = '#130f1a', + base01 = '#130f1a', + base02 = '#92909c', + base03 = '#92909c', + base04 = '#f0ecfc', + base05 = '#faf8ff', + base06 = '#faf8ff', + base07 = '#faf8ff', + base08 = '#ff9fb3', + base09 = '#ff9fb3', + base0A = '#ccbdff', + base0B = '#a5ffb7', + base0C = '#e4dcff', + base0D = '#ccbdff', + base0E = '#d5c9ff', + base0F = '#d5c9ff', + }) + + vim.api.nvim_set_hl(0, 'Visual', { + bg = '#92909c', + fg = '#faf8ff', + bold = true + }) + vim.api.nvim_set_hl(0, 'Statusline', { + bg = '#ccbdff', + fg = '#130f1a', + }) + vim.api.nvim_set_hl(0, 'LineNr', { fg = '#92909c' }) + vim.api.nvim_set_hl(0, 'CursorLineNr', { fg = '#e4dcff', bold = true }) + + vim.api.nvim_set_hl(0, 'Statement', { + fg = '#d5c9ff', + bold = true + }) + vim.api.nvim_set_hl(0, 'Keyword', { link = 'Statement' }) + vim.api.nvim_set_hl(0, 'Repeat', { link = 'Statement' }) + vim.api.nvim_set_hl(0, 'Conditional', { link = 'Statement' }) + + vim.api.nvim_set_hl(0, 'Function', { + fg = '#ccbdff', + bold = true + }) + vim.api.nvim_set_hl(0, 'Macro', { + fg = '#ccbdff', + italic = true + }) + vim.api.nvim_set_hl(0, '@function.macro', { link = 'Macro' }) + + vim.api.nvim_set_hl(0, 'Type', { + fg = '#e4dcff', + bold = true, + italic = true + }) + vim.api.nvim_set_hl(0, 'Structure', { link = 'Type' }) + + vim.api.nvim_set_hl(0, 'String', { + fg = '#a5ffb7', + italic = true + }) + + vim.api.nvim_set_hl(0, 'Operator', { fg = '#f0ecfc' }) + vim.api.nvim_set_hl(0, 'Delimiter', { fg = '#f0ecfc' }) + vim.api.nvim_set_hl(0, '@punctuation.bracket', { link = 'Delimiter' }) + vim.api.nvim_set_hl(0, '@punctuation.delimiter', { link = 'Delimiter' }) + + vim.api.nvim_set_hl(0, 'Comment', { + fg = '#92909c', + italic = true + }) + + local current_file_path = vim.fn.stdpath("config") .. "/lua/plugins/dankcolors.lua" + if not _G._matugen_theme_watcher then + local uv = vim.uv or vim.loop + _G._matugen_theme_watcher = uv.new_fs_event() + _G._matugen_theme_watcher:start(current_file_path, {}, vim.schedule_wrap(function() + local new_spec = dofile(current_file_path) + if new_spec and new_spec[1] and new_spec[1].config then + new_spec[1].config() + print("Theme reload") + end + end)) + end + end + } +} diff --git a/config/nvim/lua/plugins/gpanders-nvim-parinfer.lua b/config/nvim/lua/plugins/gpanders-nvim-parinfer.lua new file mode 100644 index 0000000..6972961 --- /dev/null +++ b/config/nvim/lua/plugins/gpanders-nvim-parinfer.lua @@ -0,0 +1,3 @@ +return { + "gpanders/nvim-parinfer", +} diff --git a/config/nvim/lua/plugins/tokyo-night.lua b/config/nvim/lua/plugins/tokyo-night.lua new file mode 100644 index 0000000..679ed73 --- /dev/null +++ b/config/nvim/lua/plugins/tokyo-night.lua @@ -0,0 +1,3 @@ +return { + "folke/tokyonight.nvim", +} diff --git a/config/nvim/lua/tokyonight.nvim b/config/nvim/lua/tokyonight.nvim new file mode 160000 index 0000000..5da1b76 --- /dev/null +++ b/config/nvim/lua/tokyonight.nvim @@ -0,0 +1 @@ +Subproject commit 5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd diff --git a/config/nwg-look/config b/config/nwg-look/config new file mode 100644 index 0000000..3f49ae5 --- /dev/null +++ b/config/nwg-look/config @@ -0,0 +1,7 @@ +{ + "export-settings-ini": true, + "export-gtkrc-20": true, + "export-index-theme": true, + "export-xsettingsd": true, + "export-gtk4-symlinks": true +} \ No newline at end of file diff --git a/config/omarchy/current/background b/config/omarchy/current/background new file mode 120000 index 0000000..1a35421 --- /dev/null +++ b/config/omarchy/current/background @@ -0,0 +1 @@ +/home/unconfer/.config/aether/theme/backgrounds/screenshot-from-2026-03-18 16-27-26.png \ No newline at end of file diff --git a/config/omarchy/hooks/theme-set b/config/omarchy/hooks/theme-set new file mode 100755 index 0000000..6c70b57 --- /dev/null +++ b/config/omarchy/hooks/theme-set @@ -0,0 +1,162 @@ +#!/bin/bash + +# Omarchy 3.3+ uses colors.toml as the source of truth for theme colors. +# Previously we read from alacritty.toml, but that file is now generated +# from templates and may contain unrendered {{ placeholders }}. +input_file="$HOME/.config/omarchy/current/theme/colors.toml" + +if [[ ! -f "$input_file" ]]; then + error "colors.toml not found at $input_file. Ensure your theme is compatible with Omarchy 3.3+ and includes colors.toml." +fi + +# Extract color value from colors.toml (flat key=value format) +extract_color() { + local color_name="$1" + awk -v color="$color_name" ' + $1 == color && /=/ { + if (match($0, /#([0-9a-fA-F]{6})/)) { + print substr($0, RSTART + 1, 6) + exit + } + } + ' "$input_file" +} + +success() { + echo -e "\e[32m[SUCCESS]\e[0m $1" +} + +skipped() { + echo -e "\033[0;34m[SKIPPED]\e[0m $1 not found. Skipping.." + exit 0 +} + +warning() { + echo -e "\033[0;33m[WARNING]\e[0m $1" +} + +error() { + echo -e "\e[31m[ERROR]\e[0m $1" + exit 1 +} + +export -f success warning error skipped + +hex2rgb() { + hex_input=$1 + r=$((16#${hex_input:0:2})) + g=$((16#${hex_input:2:2})) + b=$((16#${hex_input:4:2})) + echo "$r, $g, $b" +} + +rgb2hex() { + r=$1 + g=$2 + b=$3 + printf "%02x%02x%02x" $r $g $b +} + +change_shade() { + local hex_color=$1 + local shade=$2 + hex_input=$1 + r=$((16#${hex_input:0:2})) + g=$((16#${hex_input:2:2})) + b=$((16#${hex_input:4:2})) + + r=$((r + shade)) + g=$((g + shade)) + b=$((b + shade)) + + rgb2hex $r $g $b +} + +restart_scripts=() +restart_file=$(mktemp) +export restart_file +require_restart() { + echo "$1" >> "$restart_file" +} + +export -f rgb2hex hex2rgb change_shade require_restart + +# Extract colors from colors.toml (Omarchy 3.3+ format) +primary_foreground=$(extract_color "foreground") +primary_background=$(extract_color "background") +cursor_color=$(extract_color "cursor") +selection_foreground=$(extract_color "selection_foreground") +selection_background=$(extract_color "selection_background") +normal_black=$(extract_color "color0") +normal_red=$(extract_color "color1") +normal_green=$(extract_color "color2") +normal_yellow=$(extract_color "color3") +normal_blue=$(extract_color "color4") +normal_magenta=$(extract_color "color5") +normal_cyan=$(extract_color "color6") +normal_white=$(extract_color "color7") +bright_black=$(extract_color "color8") +bright_red=$(extract_color "color9") +bright_green=$(extract_color "color10") +bright_yellow=$(extract_color "color11") +bright_blue=$(extract_color "color12") +bright_magenta=$(extract_color "color13") +bright_cyan=$(extract_color "color14") +bright_white=$(extract_color "color15") + +export primary_background primary_foreground cursor_color selection_foreground selection_background +export normal_black normal_red normal_green normal_yellow normal_blue normal_magenta normal_cyan normal_white +export bright_black bright_red bright_green bright_yellow bright_blue bright_magenta bright_cyan bright_white + +rgb_primary_foreground=$(hex2rgb $primary_foreground) +rgb_primary_background=$(hex2rgb $primary_background) +rgb_normal_black=$(hex2rgb $normal_black) +rgb_normal_red=$(hex2rgb $normal_red) +rgb_normal_green=$(hex2rgb $normal_green) +rgb_normal_yellow=$(hex2rgb $normal_yellow) +rgb_normal_blue=$(hex2rgb $normal_blue) +rgb_normal_magenta=$(hex2rgb $normal_magenta) +rgb_normal_cyan=$(hex2rgb $normal_cyan) +rgb_normal_white=$(hex2rgb $normal_white) +rgb_bright_black=$(hex2rgb $bright_black) +rgb_bright_red=$(hex2rgb $bright_red) +rgb_bright_green=$(hex2rgb $bright_green) +rgb_bright_yellow=$(hex2rgb $bright_yellow) +rgb_bright_blue=$(hex2rgb $bright_blue) +rgb_bright_magenta=$(hex2rgb $bright_magenta) +rgb_bright_cyan=$(hex2rgb $bright_cyan) +rgb_bright_white=$(hex2rgb $bright_white) + +export rgb_primary_foreground rgb_primary_background +export rgb_normal_black rgb_normal_red rgb_normal_green rgb_normal_yellow rgb_normal_blue rgb_normal_magenta rgb_normal_cyan rgb_normal_white +export rgb_bright_black rgb_bright_red rgb_bright_green rgb_bright_yellow rgb_bright_blue rgb_bright_magenta rgb_bright_cyan rgb_bright_white + +if [[ -d ~/.config/omarchy/hooks/theme-set.d ]]; then + for hook in ~/.config/omarchy/hooks/theme-set.d/*.sh; do + if [[ -f "$hook" && -x "$hook" ]]; then + if ! "$hook" "$@"; then + error "Hook $(basename "$hook") failed!" >&2 + fi + fi + done + + if [[ -f "$restart_file" ]]; then + mapfile -t restart_scripts < "$restart_file" + rm "$restart_file" + fi + if [[ ${#restart_scripts[@]} -gt 0 ]]; then + running=() + for app in "${restart_scripts[@]}"; do + if pgrep -x "$app" > /dev/null; then + running+=("${app^}") + fi + done + if [[ ${#running[@]} -gt 0 ]]; then + apps="" + for app in "${running[@]}"; do + apps+="- $app"$'\n' + done + notify-send "Omarchy Theme Hook" "The following apps require a restart to apply theme:\n\n$apps" + fi + fi +fi diff --git a/config/omarchy/hooks/theme-set.d/00-fish.sh b/config/omarchy/hooks/theme-set.d/00-fish.sh new file mode 100755 index 0000000..d2c68d9 --- /dev/null +++ b/config/omarchy/hooks/theme-set.d/00-fish.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +output_file="$HOME/.config/omarchy/current/theme/colors.fish" + +if ! command -v fish >/dev/null 2>&1; then + skipped "Fish - Colors" +fi + +cat > "$output_file" << EOF +set -U background '#${primary_background}' +set -U foreground '#${primary_foreground}' +set -U cursor '#${primary_foreground}' +set -U color0 '#${normal_black}' +set -U color1 '#${normal_red}' +set -U color2 '#${normal_green}' +set -U color3 '#${normal_yellow}' +set -U color4 '#${normal_blue}' +set -U color5 '#${normal_magenta}' +set -U color6 '#${normal_cyan}' +set -U color7 '#${normal_white}' +set -U color8 '#${bright_black}' +set -U color9 '#${bright_red}' +set -U color10 '#${bright_green}' +set -U color11 '#${bright_yellow}' +set -U color12 '#${bright_blue}' +set -U color13 '#${bright_magenta}' +set -U color14 '#${bright_cyan}' +set -U color15 '#${bright_white}' + +set -U fish_color_normal normal +set -U fish_color_command green +set -U fish_color_param cyan +set -U fish_pager_color_completion +set -U fish_pager_color_description \$fish_color_quote yellow +set -U fish_pager_color_progress brwhite --background=cyan +set -U fish_color_history_current --bold +EOF + +fish -c "source $output_file" +success "fish colors updated!" diff --git a/config/omarchy/hooks/theme-set.d/00-fzf.sh b/config/omarchy/hooks/theme-set.d/00-fzf.sh new file mode 100755 index 0000000..fe77b97 --- /dev/null +++ b/config/omarchy/hooks/theme-set.d/00-fzf.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +output_file="$HOME/.config/omarchy/current/theme/fzf.fish" + +if ! command -v fish >/dev/null 2>&1; then + skipped "Fish - FZF" +fi + +cat > "$output_file" << EOF +set -l color00 '#${normal_black}' +set -l color01 '#${normal_red}' +set -l color02 '#${normal_green}' +set -l color03 '#${normal_yellow}' +set -l color04 '#${normal_blue}' +set -l color05 '#${normal_magenta}' +set -l color06 '#${normal_cyan}' +set -l color07 '#${normal_white}' +set -l color08 '#${bright_black}' +set -l color09 '#${bright_red}' +set -l color0A '#${bright_green}' +set -l color0B '#${bright_yellow}' +set -l color0C '#${bright_blue}' +set -l color0D '#${bright_magenta}' +set -l color0E '#${bright_cyan}' +set -l color0F '#${bright_white}' + +set -l FZF_NON_COLOR_OPTS + +for arg in (echo \$FZF_DEFAULT_OPTS | tr " " "\n") + if not string match -q -- "--color*" \$arg + set -a FZF_NON_COLOR_OPTS \$arg + end +end + +set -Ux FZF_DEFAULT_OPTS "\$FZF_NON_COLOR_OPTS"\ +" --color=bg+:\$color00,bg:\$color00,spinner:\$color0E,hl:\$color0D"\ +" --color=fg:\$color07,header:\$color0D,info:\$color0A,pointer:\$color0E"\ +" --color=marker:\$color0E,fg+:\$color06,prompt:\$color0A,hl+:\$color0D" +EOF + +fish -c "source $output_file" +success "fzf colors updated!" diff --git a/config/omarchy/hooks/theme-set.d/10-discord.sh b/config/omarchy/hooks/theme-set.d/10-discord.sh new file mode 100755 index 0000000..c3c1516 --- /dev/null +++ b/config/omarchy/hooks/theme-set.d/10-discord.sh @@ -0,0 +1,87 @@ +#!/bin/bash + +output_file="$HOME/.config/omarchy/current/theme/vencord.theme.css" +possible_paths=( + "$HOME/.config/Vencord/themes" + "$HOME/.config/vesktop/themes" + "$HOME/.config/Equicord/themes" + "$HOME/.config/equibop/themes" + "/var/lib/flatpak/app/com.discordapp.Discord/themes" + "/var/lib/flatpak/app/dev.vencord.Vesktop/themes" + "/var/lib/flatpak/app/io.github.equicord.equibop/themes", + "$HOME/.var/app/dev.vencord.Vesktop/config/vesktop/themes" +) + +create_dynamic_theme() { + +cat > "$output_file" << EOF + /** + * @name Match System + * @author @bypass_ + * @version 0.1.0 + * @description Match your current system theme. + * @source https://github.com/imbypass/base16-Discord + **/ + @import url("https://imbypass.github.io/base16-discord/omarchy-discord.theme.css"); + + :root { + --color00: #${primary_background}; + --color01: #${primary_background}; + --color02: #${primary_background}; + --color03: #${normal_white}; + --color04: #${bright_white}; + --color05: #${bright_white}; + --color06: #${bright_white}; + --color07: #${bright_white}; + --color08: #${normal_red}; + --color09: #${normal_yellow}; + --color10: #${bright_yellow}; + --color11: #${normal_green}; + --color12: #${normal_cyan}; + --color13: #${normal_blue}; + --color14: #${normal_magenta}; + --color15: #${normal_yellow}; + } +EOF + + for path in "${possible_paths[@]}"; do + if [ -d "$path" ]; then + + if [[ -f "$path/vencord.theme.css" ]]; then + rm "$path/vencord.theme.css" + fi + cp "$output_file" "$path/vencord.theme.css" + + for file in "$path"/*; do + if [ -f "$file" ]; then + touch "$file" + fi + done + fi + done +} + +check_for_theme() { + if [[ -f $HOME/.config/omarchy/current/theme/vencord.theme.css ]]; then + for path in "${possible_paths[@]}"; do + if [ -d "$path" ]; then + if [[ -f "$path/vencord.theme.css" ]]; then + rm "$path/vencord.theme.css" + fi + cp -f $HOME/.config/omarchy/current/theme/vencord.theme.css "$path/vencord.theme.css" + fi + + for file in "$path"/*; do + if [ -f "$file" ]; then + touch "$file" + fi + done + done + else + create_dynamic_theme + fi +} + +check_for_theme +success "Discord theme updated!" +exit 0 diff --git a/config/omarchy/hooks/theme-set.d/10-gtk.sh b/config/omarchy/hooks/theme-set.d/10-gtk.sh new file mode 100755 index 0000000..ae9f363 --- /dev/null +++ b/config/omarchy/hooks/theme-set.d/10-gtk.sh @@ -0,0 +1,218 @@ +#!/bin/bash + +output_file="$HOME/.config/omarchy/current/theme/gtk.css" +light_file="$HOME/.config/omarchy/current/theme/light.mode" +gtk3_dir="$HOME/.config/gtk-3.0" +gtk4_dir="$HOME/.config/gtk-4.0" +gtk3_file="$gtk3_dir/gtk.css" +gtk4_file="$gtk4_dir/gtk.css" + +create_dynamic_theme() { +cat > "$output_file" << EOF + @define-color background #${primary_background}; + @define-color foreground #${primary_foreground}; + @define-color black #${primary_background}; + @define-color red #${normal_red}; + @define-color green #${normal_green}; + @define-color yellow #${normal_yellow}; + @define-color blue #${normal_blue}; + @define-color magenta #${normal_magenta}; + @define-color cyan #${normal_cyan}; + @define-color white #${normal_white}; + @define-color bright_black #${bright_black}; + @define-color bright_red #${bright_red}; + @define-color bright_green #${bright_green}; + @define-color bright_yellow #${bright_yellow}; + @define-color bright_blue #${bright_blue}; + @define-color bright_magenta #${bright_magenta}; + @define-color bright_cyan #${bright_cyan}; + @define-color bright_white #${bright_white}; + + @define-color accent_bg_color @blue; + @define-color accent_fg_color @background; + @define-color accent_color @cyan; + + @define-color window_bg_color @background; + @define-color window_fg_color @foreground; + + @define-color view_bg_color @black; + @define-color view_fg_color @foreground; + @define-color sidebar_bg_color @black; + @define-color sidebar_fg_color @foreground; + @define-color sidebar_backdrop_color @black; + @define-color sidebar_shade_color @black; + + @define-color headerbar_bg_color @background; + @define-color headerbar_fg_color @foreground; + @define-color headerbar_backdrop_color @black; + @define-color headerbar_shade_color @black; + @define-color card_bg_color @background; + @define-color card_fg_color @foreground; + + @define-color popover_bg_color @black; + @define-color popover_fg_color @foreground; + + @define-color destructive_bg_color @red; + @define-color destructive_fg_color @background; + + @define-color success_bg_color @green; + @define-color success_fg_color @background; + + @define-color warning_bg_color @yellow; + @define-color warning_fg_color @background; + + @define-color error_bg_color @red; + @define-color error_fg_color @background; + + @define-color dialog_bg_color @background; + @define-color dialog_fg_color @foreground; + + @define-color borders alpha(@foreground, 0.1); + + @define-color theme_fg_color @foreground; + @define-color theme_text_color @foreground; + @define-color theme_bg_color @background; + @define-color theme_base_color @black; + @define-color theme_selected_bg_color @blue; + @define-color theme_selected_fg_color @background; + @define-color insensitive_bg_color @background; + @define-color insensitive_fg_color @bright_black; + @define-color insensitive_base_color @black; + @define-color theme_unfocused_fg_color @foreground; + @define-color theme_unfocused_text_color @foreground; + @define-color theme_unfocused_bg_color @background; + @define-color theme_unfocused_base_color @black; + @define-color theme_unfocused_selected_bg_color @blue; + @define-color theme_unfocused_selected_fg_color @background; + @define-color unfocused_insensitive_color @bright_black; + @define-color unfocused_borders alpha(@foreground, 0.1); + @define-color warning_color @yellow; + @define-color error_color @red; + @define-color success_color @green; + @define-color destructive_color @red; + + @define-color content_view_bg @black; + @define-color text_view_bg @black; + + messagedialog { + background-color: @dialog_bg_color; + } + + messagedialog label { + color: @dialog_fg_color; + font-size: 14pt; + font-weight: bold; + } + + messagedialog .secondary-text { + font-size: 10pt; + font-style: italic; + } + + messagedialog button { + background-color: @black; + color: @foreground; + border: 1px solid @bright_black; + padding: 10px; + } + + messagedialog button:hover { + background-color: @blue; + } + + banner revealer widget { + background: @bright_black; + padding: 5px; + color: @foreground; + } + + alertdialog.background { + background-color: @dialog_bg_color; + color: @dialog_fg_color; + } + + alertdialog .titlebar { + background-color: @headerbar_bg_color; + color: @headerbar_fg_color; + } + + alertdialog box { + background-color: @dialog_bg_color; + } + + alertdialog label { + color: @dialog_fg_color; + } + + filechooser .dialog-action-box { + border-top: 1px solid @bright_black; + } + + filechooser .dialog-action-box:backdrop { + border-top-color: @black; + } + + filechooser #pathbarbox { + border-bottom: 1px solid @bright_black; + } + + filechooserbutton:drop(active) { + box-shadow: none; + border-color: transparent; + } + + toast { + background-color: @black; + color: @foreground; + } + + toast button.circular.flat.image-button:hover { + color: @background; + background-color: @red; + } + + /* .svg-icon { + filter: invert(79%) sepia(18%) saturate(611%) hue-rotate(192deg) + brightness(103%) contrast(94%); + } */ +EOF +} + +if [ ! -d "$gtk3_dir" ]; then + mkdir -p "$gtk3_dir" +fi +if [ ! -d "$gtk4_dir" ]; then + mkdir -p "$gtk4_dir" +fi + +if [ -f "$output_file" ]; then + if [ ! -f "$gtk3_dir/gtk.css.backup" ]; then + cp "$gtk3_file" "$gtk3_dir/gtk.css.backup" + fi + cp -f "$output_file" "$gtk3_file" + + if [ ! -f "$gtk4_dir/gtk.css.backup" ]; then + cp "$gtk4_file" "$gtk4_dir/gtk.css.backup" + fi + cp -f "$output_file" "$gtk4_file" +else + create_dynamic_theme + cp "$output_file" "$gtk3_file" + cp "$output_file" "$gtk4_file" +fi + +if [ -f "$light_file" ]; then + gsettings set org.gnome.desktop.interface color-scheme "prefer-light" + gsettings set org.gnome.desktop.interface gtk-theme adw-gtk3-tmp + gsettings set org.gnome.desktop.interface gtk-theme adw-gtk3 +else + gsettings set org.gnome.desktop.interface color-scheme "prefer-dark" + gsettings set org.gnome.desktop.interface gtk-theme adw-gtk3-tmp-dark + gsettings set org.gnome.desktop.interface gtk-theme adw-gtk3-dark +fi + +pkill -f xdg-desktop-portal-gtk + +require_restart "nautilus" +success "GTK theme updated!" +exit 0 diff --git a/config/omarchy/hooks/theme-set.d/10-qt6ct.sh b/config/omarchy/hooks/theme-set.d/10-qt6ct.sh new file mode 100755 index 0000000..595fe03 --- /dev/null +++ b/config/omarchy/hooks/theme-set.d/10-qt6ct.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +new_qt_file="$HOME/.config/omarchy/current/theme/qt6ct.conf" + +if ! command -v qt6ct >/dev/null 2>&1; then + skipped "Qt6ct" +fi + +base00=$normal_black +base01=$(change_shade $normal_black 5) +base02=$(change_shade $normal_black 10) +base03=$(change_shade $normal_black 15) +base04=$(change_shade $normal_black 20) +base05=$primary_foreground +base06=$(change_shade $primary_foreground -5) +base07=$(change_shade $primary_foreground -10) +base08=$normal_red +base09=$normal_yellow +base0A=$bright_yellow +base0B=$normal_green +base0C=$normal_cyan +base0D=$normal_blue +base0E=$normal_magenta +base0F=$bright_red + +if [ ! -f "$new_qt_file" ]; then +cat > "$new_qt_file" << EOF +[ColorScheme] +active_colors=#ff${base05}, #ff${base01}, #ff${base01}, #ff${base05}, #ff${base03}, #ff${base04}, #ff${base05}, #ff${base06}, #ff${base05}, #ff${base01}, #ff${base00}, #ff${base03}, #ff${base02}, #ff${base05}, #ff${base09}, #ff${base08}, #ff${base02}, #ff${base05}, #ff${base01}, #ff${base05}, #8f${base05} +disabled_colors=#ff${base00}, #ff${base01}, #ff${base01}, #ff${base04}, #ff${base03}, #ff${base04}, #ff${base00}, #ff${base00}, #ff${base00}, #ff${base01}, #ff${base00}, #ff${base03}, #ff${base02}, #ff${base04}, #ff${base09}, #ff${base08}, #ff${base02}, #ff${base04}, #ff${base01}, #ff${base00}, #8f${base00} +inactive_colors=#ff${base04}, #ff${base01}, #ff${base01}, #ff${base05}, #ff${base03}, #ff${base04}, #ff${base05}, #ff${base06}, #ff${base05}, #ff${base01}, #ff${base00}, #ff${base03}, #ff${base02}, #ff${base05}, #ff${base09}, #ff${base08}, #ff${base02}, #ff${base05}, #ff${base01}, #ff${base05}, #8f${base05} +EOF +fi + +mkdir -p "$HOME/.config/qt6ct/colors" +cp -p -f "$new_qt_file" "$HOME/.config/qt6ct/colors/omarchy.conf" + +success "Qt6 theme updated!" +exit 0 diff --git a/config/omarchy/hooks/theme-set.d/10-spotify.sh b/config/omarchy/hooks/theme-set.d/10-spotify.sh new file mode 100755 index 0000000..59cd91f --- /dev/null +++ b/config/omarchy/hooks/theme-set.d/10-spotify.sh @@ -0,0 +1,109 @@ +#!/bin/bash + +create_spicetify_styling() { + mkdir -p "$HOME/.config/spicetify/Themes/omarchy" +cat > "$HOME/.config/spicetify/Themes/omarchy/user.css" << EOF +:root, +.encore-dark-theme, +.encore-base-set, +.encore-inverted-light-set { + --background-highlight: rgba(var(--spice-rgb-highlight), 0.25) !important; +} +.main-nowPlayingBar-container { + background-color: var(--background-base); + border-radius: 0.5rem; + padding: 0.5rem; + color: var(--spice-text); +} +.main-entityHeader-backgroundColor { + display: none !important; +} +.main-actionBarBackground-background { + display: none !important; +} +.main-home-homeHeader { + display: none !important; +} +.main-topBar-background, +.main-home-filterChipsSection { + background-color: var(--spice-main) !important; +} +EOF +} + +change_spicetify_theme() { + spicetify config current_theme omarchy > /dev/null + spicetify config color_scheme base > /dev/null +} + +create_dynamic_theme() { + color00=${primary_background} + color01=${normal_black} + color02=${bright_black} + color03=${normal_white} + color04=${bright_white} + color05=${primary_foreground} + color06=${bright_white} + color07=${bright_white} + color08=${normal_red} + color09=${normal_yellow} + color0A=${bright_yellow} + color0B=${normal_green} + color0C=${normal_cyan} + color0D=${normal_blue} + color0E=${normal_magenta} + color0F=${bright_red} + +cat > "$HOME/.config/spicetify/Themes/omarchy/color.ini" << EOF +[base] +main = ${color00} +player = ${color00} +card = ${color00} +main-elevated = ${color00} +sidebar = ${color00} +shadow = ${color00} +notification = ${color02} +button-disabled = ${color02} +misc = ${color03} +selected-row = ${color03} +button = ${color03} +highlight = ${color07} +notification-error = ${color08} +button-active = ${color0B} +subtext = ${color03} +text = ${color07} +EOF +} + +if ! command -v spicetify >/dev/null 2>&1; then + skipped "Spicetify" +fi + +spotify_was_running=false +if pgrep -x "spotify" > /dev/null 2>&1; then + spotify_was_running=true +fi + +create_spicetify_styling +create_dynamic_theme +change_spicetify_theme + +if [ "$spotify_was_running" = true ]; then + spicetify apply > /dev/null 2>&1 & +else + setsid bash -c ' + spicetify apply > /dev/null 2>&1 & + + for i in {1..250}; do + if pgrep -x "spotify" > /dev/null 2>&1; then + sleep 0.2 + killall -9 spotify > /dev/null 2>&1 + exit 0 + fi + sleep 0.1 + done + ' > /dev/null 2>&1 < /dev/null & +fi + +success "Spotify theme updated!" +exit 0 diff --git a/config/omarchy/hooks/theme-set.d/10-superfile.sh b/config/omarchy/hooks/theme-set.d/10-superfile.sh new file mode 100755 index 0000000..559406e --- /dev/null +++ b/config/omarchy/hooks/theme-set.d/10-superfile.sh @@ -0,0 +1,70 @@ +#!/bin/bash + +output_file="$HOME/.config/omarchy/current/theme/superfile.toml" + +if ! command -v spf >/dev/null 2>&1; then + skipped "Superfile" +fi + +if [ ! -f "$output_file" ]; then +cat > "$output_file" << EOF + +# ========= Border ========= +file_panel_border = '#${normal_white}' +sidebar_border = '#${normal_white}' +footer_border = '#${normal_white}' + +# ========= Border Active ========= +file_panel_border_active = '#${normal_blue}' +sidebar_border_active = '#${normal_blue}' +footer_border_active = '#${normal_blue}' +modal_border_active = '#${normal_blue}' + +# ========= Background (bg) ========= +full_screen_bg = '#${primary_background}' +file_panel_bg = '#${primary_background}' +sidebar_bg = '#${primary_background}' +footer_bg = '#${primary_background}' +modal_bg = '#${primary_background}' + +# ========= Foreground (fg) ========= +full_screen_fg = '#${primary_foreground}' +file_panel_fg = '#${primary_foreground}' +sidebar_fg = '#${primary_foreground}' +footer_fg = '#${primary_foreground}' +modal_fg = '#${primary_foreground}' + +# ========= Special Color ========= +cursor = '#${primary_foreground}' +correct = '#${normal_green}' +error = '#${normal_red}' +hint = '#${normal_cyan}' +cancel = '#${normal_red}' +gradient_color = ['#${normal_black}', "#${bright_black}"] + +# ========= File Panel Special Items ========= +file_panel_top_directory_icon = '#${normal_black}' +file_panel_top_path = '#${bright_black}' +file_panel_item_selected_fg = '#${bright_black}' +file_panel_item_selected_bg = '#${primary_background}' + +# ========= Sidebar Special Items ========= +sidebar_title = '#${bright_white}' +sidebar_item_selected_fg = '#${bright_black}' +sidebar_item_selected_bg = '#${primary_background}' +sidebar_divider = '#${normal_white}' + +# ========= Modal Special Items ========= +modal_cancel_fg = "#383838" +modal_cancel_bg = '#${normal_red}' +modal_confirm_fg = "#383838" +modal_confirm_bg = '#${normal_green}' +EOF +fi + +mkdir -p "$HOME/.config/superfile/theme/" +cp -p -f "$output_file" "$HOME/.config/superfile/theme/omarchy.toml" + +require_restart "spf" +success "Superfile theme updated!" +exit 0 diff --git a/config/omarchy/hooks/theme-set.d/10-vicinae.sh b/config/omarchy/hooks/theme-set.d/10-vicinae.sh new file mode 100755 index 0000000..59e5714 --- /dev/null +++ b/config/omarchy/hooks/theme-set.d/10-vicinae.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +output_file="$HOME/.config/omarchy/current/theme/vicinae.toml" + +if ! command -v vicinae >/dev/null 2>&1; then + skipped "Vicinae" +fi + +if [ ! -f "$output_file" ]; then +cat > "$output_file" << EOF +[meta] +version = 1 +name = "Omarchy" +description = "Follow your Omarchy system theme." +variant = "dark" +inherits = "vicinae-dark" +icon = "$HOME/.local/share/omarchy/icon.png" + +[colors.core] +background = "#${primary_background}" +foreground = "#${primary_foreground}" +secondary_background = "#$(change_shade $primary_background 5)" +border = "#${bright_black}" +accent = "#${normal_yellow}" + +[colors.list.item.hover] +background = "#$(change_shade $primary_background 10)" +foreground = "#${primary_foreground}" + +[colors.list.item.selection] +background = "#$(change_shade $primary_background 15)" +foreground = "#${primary_foreground}" + +[colors.accents] +blue = "#${normal_blue}" +green = "#${normal_green}" +magenta = "#${normal_magenta}" +orange = "#${normal_yellow}" +purple = "#${bright_magenta}" +red = "#${normal_red}" +yellow = "#${bright_yellow}" +cyan = "#${normal_cyan}" +EOF +fi + +mkdir -p "$HOME/.local/share/vicinae/themes/" +cp -p -f "$output_file" "$HOME/.local/share/vicinae/themes/omarchy.toml" + +vicinae theme set omarchy + +success "Vicinae theme updated!" +exit 0 diff --git a/config/omarchy/hooks/theme-set.d/15-typora.sh b/config/omarchy/hooks/theme-set.d/15-typora.sh new file mode 100755 index 0000000..3d88ffb --- /dev/null +++ b/config/omarchy/hooks/theme-set.d/15-typora.sh @@ -0,0 +1,182 @@ +#!/bin/bash + +# Typora theme hook - generates CSS with current omarchy theme colors + +new_typora_file="$HOME/.config/omarchy/current/theme/typora.css" +typora_dir="$HOME/.config/Typora/themes" + +create_dynamic_theme() { + # Calculate darker shade for sidebar + sidebar_bg=$(change_shade "$primary_background" -15) + # Calculate selection color + select_bg=$(change_shade "$normal_blue" -60) + # Calculate hover/active colors + hover_bg=$(change_shade "$primary_background" 20) + + cat > "$new_typora_file" << EOF +@import "night/mermaid.dark.css"; +@import "night/codeblock.dark.css"; +@import "night/sourcemode.dark.css"; + +:root { + --bg-color: #${primary_background}; + --side-bar-bg-color: #${sidebar_bg}; + --text-color: #${primary_foreground}; + + --select-text-bg-color: #${select_bg}; + + --item-hover-bg-color: #${hover_bg}; + --control-text-color: #${bright_black}; + --control-text-hover-color: #${primary_foreground}; + --window-border: 1px solid #${hover_bg}; + + --active-file-bg-color: #${hover_bg}; + --active-file-border-color: #${normal_blue}; + + --primary-color: #${normal_blue}; + + --active-file-text-color: #${primary_foreground}; + --item-hover-text-color: #${primary_foreground}; + + --rawblock-edit-panel-bd: #${sidebar_bg}; + + --search-select-bg-color: #${select_bg}; +} + +html { + font-size: 16px; + -webkit-font-smoothing: antialiased; +} + +html, +body { + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + background: #${primary_background}; + background: var(--bg-color); + fill: currentColor; + line-height: 1.625rem; +} + +#write { + max-width: 914px; +} + +@media only screen and (min-width: 1400px) { + #write { + max-width: 1024px; + } +} + +@media only screen and (min-width: 1800px) { + #write { + max-width: 1200px; + } +} + +html, +body, +button, +input, +select, +textarea, +div.code-tooltip-content { + color: #${primary_foreground}; + border-color: transparent; +} + +div.code-tooltip, +.md-hover-tip .md-arrow:after { + background: #${sidebar_bg}; +} + +.native-window #md-notification { + border: 1px solid #${bright_black}; +} + +.popover.bottom > .arrow:after { + border-bottom-color: #${sidebar_bg}; +} + +html, +body, +button, +input, +select, +textarea { + font-family: "Inter", "SF Pro", -apple-system, BlinkMacSystemFont, sans-serif; +} + +hr { + height: 2px; + border: 0; + margin: 24px 0 !important; +} + +/* Headers */ +h1, h2, h3, h4, h5, h6 { + font-family: "SF Pro", "Inter", -apple-system, BlinkMacSystemFont, sans-serif; + color: #${primary_foreground}; +} + +/* Links */ +a { + color: #${normal_blue}; +} + +/* Code */ +code, pre, .md-fences { + font-family: "JetBrainsMono Nerd Font", "Fira Code", monospace; + background: #${sidebar_bg}; +} + +/* Inline code */ +code { + color: #${normal_cyan}; + padding: 2px 4px; + border-radius: 4px; +} + +/* Blockquotes */ +blockquote { + border-left: 4px solid #${normal_blue}; + color: #${bright_black}; +} + +/* Tables */ +table tr:nth-child(2n) { + background: #${sidebar_bg}; +} + +table th { + background: #${hover_bg}; +} + +/* Scrollbars */ +::-webkit-scrollbar-thumb { + background: #${hover_bg}; +} + +::-webkit-scrollbar-thumb:hover { + background: #${bright_black}; +} +EOF +} + +# Check if Typora is installed +if ! command -v typora >/dev/null 2>&1; then + skipped "Typora" +fi + +mkdir -p "$typora_dir" + +if [ -f "$new_typora_file" ]; then + cp -f "$new_typora_file" "$typora_dir/omarchy.css" +else + create_dynamic_theme + cp -f "$new_typora_file" "$typora_dir/omarchy.css" +fi + +success "Typora theme updated!" +require_restart "typora" +exit 0 diff --git a/config/omarchy/hooks/theme-set.d/20-nwg-dock-hyprland.sh b/config/omarchy/hooks/theme-set.d/20-nwg-dock-hyprland.sh new file mode 100755 index 0000000..a212183 --- /dev/null +++ b/config/omarchy/hooks/theme-set.d/20-nwg-dock-hyprland.sh @@ -0,0 +1,125 @@ +#!/bin/bash + +# This script respects user's existing nwg-dock-hyprland configuration. +# It searches ~/.config/hypr/*.conf for exec/exec-once commands and preserves user flags. +# Falls back to default configuration only if no user command is found. + +output_file="$HOME/.config/omarchy/current/theme/nwg-dock.css" +default_dock_command="nwg-dock-hyprland -r -mb 10 -mt 10 -i 22 -x -nolauncher" + +if ! command -v nwg-dock-hyprland >/dev/null 2>&1; then + skipped "NWG Dock" +fi + +# Search for user's nwg-dock-hyprland command in Hyprland config files +user_dock_command="" +hypr_config_dir="$HOME/.config/hypr" + +if [[ -d "$hypr_config_dir" ]]; then + # Find all config files containing nwg-dock-hyprland exec commands + mapfile -t dock_files < <(grep -l -E "^\s*(exec|exec-once)\s*=.*nwg-dock-hyprland" "$hypr_config_dir"/*.conf 2>/dev/null) + + # Find all matching command lines + mapfile -t dock_commands < <(grep -h -E "^\s*(exec|exec-once)\s*=.*nwg-dock-hyprland" "$hypr_config_dir"/*.conf 2>/dev/null) + + # Check for multiple commands and warn user + if [[ ${#dock_commands[@]} -gt 1 ]]; then + warning "Multiple nwg-dock-hyprland commands found in Hyprland config:" + for file in "${dock_files[@]}"; do + warning " - $file" + done + warning "Using first occurrence. Please consolidate to a single command." + fi + + # Extract the command from first match + if [[ ${#dock_commands[@]} -gt 0 ]]; then + # Remove 'exec' or 'exec-once' prefix and '=' sign, trim whitespace + user_dock_command=$(echo "${dock_commands[0]}" | sed 's/^[[:space:]]*exec\(-once\)\?[[:space:]]*=[[:space:]]*//') + + # Validate extraction succeeded + if [[ -z "$user_dock_command" || ! "$user_dock_command" =~ nwg-dock-hyprland ]]; then + warning "Failed to parse user's nwg-dock-hyprland command: ${dock_commands[0]}" + warning "Using default configuration." + user_dock_command="" + fi + fi +fi + +if [[ ! -f "$output_file" ]]; then + mkdir -p "$(dirname "$output_file")" + + cat >"$output_file" < $style_file </dev/null + +# Restart dock with user's command or default +if [[ -n "$user_dock_command" ]]; then + eval "$user_dock_command" & + disown +else + eval "$default_dock_command" & + disown +fi + +success "Dock theme updated!" diff --git a/config/omarchy/hooks/theme-set.d/20-zed.sh b/config/omarchy/hooks/theme-set.d/20-zed.sh new file mode 100755 index 0000000..9b6276d --- /dev/null +++ b/config/omarchy/hooks/theme-set.d/20-zed.sh @@ -0,0 +1,128 @@ +#!/bin/bash + +new_zed_file="$HOME/.config/omarchy/current/theme/zed.json" + +create_dynamic_theme() { +cat > "$new_zed_file" << EOF + { + "\$schema": "https://zed.dev/schema/themes/v0.1.0.json", + "name": "Omarchyy", + "author": "@bypass_", + "themes": [ + { + "name": "Omarchy", + "appearance": "dark", + "style": { + "background": "#${primary_background}90", + "editor.background": "#${primary_background}90", + "editor.foreground": "#${primary_foreground}", + "text": "#${primary_foreground}", + "text.muted": "#${primary_foreground}70", + "text.ignored": "#${primary_foreground}40", + "text.placeholder": "#${primary_foreground}50", + "ignored": "#${primary_foreground}30", + "element.hover": "#${primary_foreground}30", + "ghost_element.hover": "#${bright_black}30", + "ghost_element.selected": "#${bright_black}30", + "ghost_element.active": "#${bright_black}60", + "border": "#${normal_black}", + "editor.highlighted_line.background": "#${bright_black}10", + "editor.active_line.background": "#${bright_black}10", + "panel.background": "#${normal_black}90", + "title_bar.background": "#${normal_black}90", + "title_bar.inactive_background": "#${normal_black}90", + "status_bar.background": "#${normal_black}90", + "drop_target.background": "#${normal_black}90", + "elevated_surface.background": "#${normal_black}", + "toolbar.background": "#${normal_black}90", + "tab_bar.background": "#${normal_black}90", + "tab.inactive_background": "#${normal_black}90", + "tab.active_background": "#${bright_black}30", + "scrollbar.track.background": "transparent", + "scrollbar.track.border": "#${normal_black}", + "scrollbar.thumb.background": "#${primary_foreground}", + "editor.gutter.background": "#${normal_black}90", + "terminal.background": "#${normal_black}10", + "terminal.foreground": "#${primary_foreground}", + "terminal.dim_foreground": "#${primary_foreground}", + "terminal.bright_foreground": "#${primary_foreground}", + "terminal.ansi.black": "#${normal_black}", + "terminal.ansi.red": "#${normal_red}", + "terminal.ansi.green": "#${normal_green}", + "terminal.ansi.yellow": "#${normal_yellow}", + "terminal.ansi.blue": "#${normal_blue}", + "terminal.ansi.magenta": "#${normal_magenta}", + "terminal.ansi.cyan": "#${normal_cyan}", + "terminal.ansi.white": "#${normal_white}", + "terminal.ansi.bright_black": "#${bright_black}", + "terminal.ansi.bright_red": "#${bright_red}", + "terminal.ansi.bright_green": "#${bright_green}", + "terminal.ansi.bright_yellow": "#${bright_yellow}", + "terminal.ansi.bright_blue": "#${bright_blue}", + "terminal.ansi.bright_magenta": "#${bright_magenta}", + "terminal.ansi.bright_cyan": "#${bright_cyan}", + "terminal.ansi.bright_white": "#${bright_white}", + "modified": "#${normal_red}", + "syntax": { + "attribute": { + "color": "#${normal_white}" + }, + "boolean": { + "color": "#${normal_green}" + }, + "comment": { + "color": "#${bright_black}" + }, + "comment.doc": { + "color": "#${bright_black}" + }, + "constant": { + "color": "#${bright_green}" + }, + "function": { + "color": "#${bright_cyan}" + }, + "keyword": { + "color": "#${normal_blue}" + }, + "number": { + "color": "#${normal_magenta}" + }, + "operator": { + "color": "#${normal_blue}" + }, + "string": { + "color": "#${normal_red}" + }, + "variable": { + "color": "#${normal_green}" + } + }, + "players": [ + { + "cursor": "#${primary_foreground}", + "background": "#${normal_black}", + "selection": "#${primary_foreground}30" + } + ] + } + } + ] + } +EOF +} + +if ! command -v zeditor >/dev/null 2>&1 && ! command -v zed >/dev/null 2>&1; then + skipped "Zed" +fi + +mkdir -p "$HOME/.config/zed/themes" +if [ -f "$new_zed_file" ]; then + cp -f "$new_zed_file" "$HOME/.config/zed/themes/omarchy.json" +else + create_dynamic_theme + cp -f "$new_zed_file" "$HOME/.config/zed/themes/omarchy.json" +fi + +success "Zed theme updated!" +exit 0 diff --git a/config/omarchy/hooks/theme-set.d/30-cursor.sh b/config/omarchy/hooks/theme-set.d/30-cursor.sh new file mode 100755 index 0000000..c817cbd --- /dev/null +++ b/config/omarchy/hooks/theme-set.d/30-cursor.sh @@ -0,0 +1,1290 @@ +#!/bin/bash +output_file="$HOME/.config/omarchy/current/theme/vscode_colors.json" + +if ! command -v cursor >/dev/null 2>&1; then + skipped "Cursor" +fi + +# check current theme for vscode.json +if [[ -f "$HOME/.config/omarchy/current/theme/vscode.json" ]]; then + exit 0 +fi + +if [[ ! -f "$output_file" ]]; then + cat > "$output_file" << EOF +{ + "\$schema": "vscode://schemas/color-theme", + "name": "Omarchy", + "type": "", + "colors": { + // Base colors + "foreground":"#${normal_white}", //5 + "disabledForeground":"#${bright_black}", //4 + "widget.shadow":"#${normal_black}", //0 + "selection.background":"#${normal_blue}", //D + "descriptionForeground":"#${bright_black}", //3 + "errorForeground":"#${normal_red}", //8 + "icon.foreground":"#${bright_black}", //4 + + // Text colors + "textBlockQuote.background":"#${normal_black}", //1 + "textBlockQuote.border":"#${normal_blue}", //D + "textCodeBlock.background":"#${normal_black}", //0 + "textLink.activeForeground":"#${normal_cyan}", //C + "textLink.foreground":"#${normal_blue}", //D + "textPreformat.foreground":"#${normal_blue}", //D + "textSeparator.foreground": "#f0f", + + // Action colors + "toolbar.hoverBackground":"#${normal_black}", //2 + "toolbar.activeBackground":"#${bright_black}", //3 + + // Button control + "button.background":"#${normal_blue}", //D + "button.foreground":"#${bright_white}", //7 + "button.hoverBackground":"#${bright_black}", //4 + "button.secondaryForeground":"#${bright_white}", //7 + "button.secondaryBackground":"#${normal_magenta}", //E + "button.secondaryHoverBackground":"#${bright_black}", //4 + "checkbox.background":"#${normal_black}", //0 + "checkbox.foreground":"#${normal_white}", //5 + + // Dropdown control + "dropdown.background":"#${normal_black}", //0 + "dropdown.listBackground":"#${normal_black}", //0 + "dropdown.foreground":"#${normal_white}", //5 + + // Input control + "input.background":"#${normal_black}", //0 + "input.foreground":"#${normal_white}", //5 + "input.placeholderForeground":"#${bright_black}", //3 + "inputOption.activeBackground":"#${normal_black}", //2 + "inputOption.activeBorder":"#${bright_red}", //9 + "inputOption.activeForeground":"#${normal_white}", //5 + "inputValidation.errorBackground":"#${normal_red}", //8 + "inputValidation.errorForeground":"#${normal_white}", //5 + "inputValidation.errorBorder":"#${normal_red}", //8 + "inputValidation.infoBackground":"#${normal_blue}", //D + "inputValidation.infoForeground":"#${normal_white}", //5 + "inputValidation.infoBorder":"#${normal_blue}", //D + "inputValidation.warningBackground":"#${normal_yellow}", //A + "inputValidation.warningForeground":"#${normal_white}", //5 + "inputValidation.warningBorder":"#${normal_yellow}", //A + + // Scrollbar control + "scrollbar.shadow":"#${normal_black}", //1 + "scrollbarSlider.activeBackground":"#${bright_black}6f", //4 + "scrollbarSlider.background":"#${normal_black}6f", //2 + "scrollbarSlider.hoverBackground":"#${bright_black}6f", //3 + + // Badge + "badge.background":"#${normal_black}", //0 + "badge.foreground":"#${normal_white}", //5 + + // Progress bar + "progressBar.background":"#${bright_black}", //3 + + // Lists and trees + "list.activeSelectionBackground":"#${normal_black}", //2 + "list.activeSelectionForeground":"#${normal_white}", //5 + "list.dropBackground":"#${bright_white}", //7 + "list.focusBackground":"#${normal_black}", //2 + "list.focusForeground":"#${normal_white}", //5 + "list.highlightForeground":"#${bright_white}", //7 + "list.hoverBackground":"#${bright_black}", //3 + "list.hoverForeground":"#${normal_white}", //5 + "list.inactiveSelectionBackground":"#${normal_black}", //2 + "list.inactiveSelectionForeground":"#${normal_white}", //5 + "list.inactiveFocusBackground":"#${normal_black}", //2 + "list.invalidItemForeground":"#${normal_red}", //8 + "list.errorForeground":"#${normal_red}", //8 + "list.warningForeground":"#${normal_yellow}", //A + "listFilterWidget.background":"#${normal_black}", //0 + "listFilterWidget.noMatchesOutline":"#${normal_red}", //8 + "list.filterMatchBackground":"#${normal_black}", //2 + "tree.indentGuidesStroke":"#${normal_white}", //5 + + // Activity Bar + "activityBar.background":"#${normal_black}", //0 + // Below is no longer supported as of 1.52 + "activityBar.dropBackground":"#${bright_white}", //7 + // Above is no longer supported as of 1.52 + "activityBar.foreground":"#${normal_white}", //5 + "activityBar.inactiveForeground":"#${bright_black}", //3 + "activityBarBadge.background":"#${normal_blue}", //D + "activityBarBadge.foreground":"#${bright_white}", //7 + "activityBar.activeBackground":"#${normal_black}", //2 + + // Side Bar + "sideBar.background":"#${normal_black}", //1 + "sideBar.foreground":"#${normal_white}", //5 + "sideBar.dropBackground":"#${normal_black}6f", //2 + "sideBarTitle.foreground":"#${normal_white}", //5 + "sideBarSectionHeader.background":"#${bright_black}", //3 + "sideBarSectionHeader.foreground":"#${normal_white}", //5 + + //Minimap + "minimap.findMatchHighlight":"#${normal_yellow}6f", //A + "minimap.selectionHighlight":"#${normal_black}6f", //2 + "minimap.errorHighlight":"#${normal_red}", //8 + "minimap.warningHighlight":"#${normal_yellow}", //A + "minimap.background":"#${normal_black}", //0 + "minimap.selectionOccurrenceHighlight":"#${bright_black}", //3 + "minimapGutter.addedBackground":"#${normal_green}", //B + "minimapGutter.modifiedBackground":"#${normal_magenta}", //E + "minimapGutter.deletedBackground":"#${normal_red}", //8 + + // Editor Groups & Tabs + // Below is no longer supported as of 1.24 + "editorGroup.background":"#${normal_black}", //0 + // Above is no longer supported as of 1.24 + "editorGroup.dropBackground":"#${normal_black}6f", //2 + "editorGroupHeader.noTabsBackground":"#${normal_black}", //1 + "editorGroupHeader.tabsBackground":"#${normal_black}", //1 + "editorGroup.emptyBackground":"#${normal_black}", //0 + "editorGroup.dropIntoPromptForeground":"#${bright_white}", //5 + "editorGroup.dropIntoPromptBackground":"#${normal_black}", //0 + "tab.activeBackground":"#${normal_black}", //0 + "tab.unfocusedActiveBackground":"#${normal_black}", //0 + "tab.activeForeground":"#${normal_white}", //5 + "tab.inactiveBackground":"#${normal_black}", //1 + "tab.inactiveForeground":"#${bright_black}", //3 + "tab.unfocusedActiveForeground":"#${bright_black}", //4 + "tab.unfocusedInactiveForeground":"#${bright_black}", //3 + "tab.hoverBackground":"#${normal_black}", //2 + "tab.unfocusedHoverBackground":"#${normal_black}", //2 + + "tab.activeModifiedBorder":"#${normal_blue}", //D + "tab.inactiveModifiedBorder":"#${normal_blue}", //D + "tab.unfocusedActiveModifiedBorder":"#${normal_blue}", //D + "tab.unfocusedInactiveModifiedBorder":"#${normal_blue}", //D + "editorPane.background":"#${normal_black}", //0 + + // Editor colors + "editor.background":"#${normal_black}", //0 + "editor.foreground":"#${normal_white}", //5 + "editorLineNumber.foreground":"#${bright_black}", //3 + "editorLineNumber.activeForeground":"#${bright_black}", //4 + "editorCursor.foreground":"#${normal_white}", //5 + "editor.selectionBackground":"#${normal_black}", //2 + "editor.inactiveSelectionBackground":"#${normal_black}", //2 + "editor.selectionHighlightBackground":"#${normal_black}", //1 + "editor.wordHighlightBackground":"#${normal_black}6f", //2 + "editor.wordHighlightStrongBackground":"#${bright_black}6f", //3 + "editor.findMatchBackground":"#${normal_yellow}6f", //A + "editor.findMatchHighlightBackground":"#${bright_red}6f", //9 + "editor.findRangeHighlightBackground":"#${normal_black}6f", //1 + "searchEditor.findMatchBackground":"#${normal_yellow}6f", //A + "editor.hoverHighlightBackground":"#${normal_black}6f", //2 + "editor.lineHighlightBackground":"#${normal_black}", //1 + "editorLink.activeForeground":"#${normal_blue}", //D + "editor.rangeHighlightBackground":"#${normal_black}6f", //1 + "editorWhitespace.foreground":"#${bright_black}", //3 + "editorIndentGuide.background":"#${bright_black}", //3 + "editorIndentGuide.activeBackground":"#${bright_black}", //4 + "editorInlayHint.background":"#${normal_black}", //1 + "editorInlayHint.foreground":"#${normal_white}", //5 + "editorInlayHint.typeBackground":"#${normal_black}", //1 + "editorInlayHint.typeForeground":"#${normal_white}", //5 + "editorInlayHint.parameterBackground":"#${normal_black}", //1 + "editorInlayHint.parameterForeground":"#${normal_white}", //5 + "editorRuler.foreground":"#${bright_black}", //3 + + /// CodeLens + "editorCodeLens.foreground":"#${normal_black}", //2 + + /// Lightbulb + "editorLightBulb.foreground":"#${normal_yellow}", //A + "editorLightBulbAutoFix.foreground":"#${normal_blue}", //D + + /// Bracket matches + "editorBracketMatch.background":"#${normal_black}", //2 + + /// Bracket pair colorization + "editorBracketHighlight.foreground1":"#${normal_red}", //8 + "editorBracketHighlight.foreground2":"#${bright_red}", //9 + "editorBracketHighlight.foreground3":"#${normal_yellow}", //A + "editorBracketHighlight.foreground4":"#${normal_green}", //B + "editorBracketHighlight.foreground5":"#${normal_blue}", //D + "editorBracketHighlight.foreground6":"#${normal_magenta}", //E + "editorBracketHighlight.unexpectedBracket.foreground":"#${bright_magenta}", //F + "editorOverviewRuler.findMatchForeground":"#${normal_yellow}6f", //A + "editorOverviewRuler.rangeHighlightForeground":"#${bright_black}6f", //3 + "editorOverviewRuler.selectionHighlightForeground":"#${normal_black}6f", //2 + "editorOverviewRuler.wordHighlightForeground":"#${bright_white}6f", //7 + "editorOverviewRuler.wordHighlightStrongForeground":"#${normal_blue}6f", //D + "editorOverviewRuler.modifiedForeground":"#${normal_magenta}", //E + "editorOverviewRuler.addedForeground":"#${normal_green}", //B + "editorOverviewRuler.deletedForeground":"#${normal_red}", //8 + "editorOverviewRuler.errorForeground":"#${normal_red}", //8 + "editorOverviewRuler.warningForeground":"#${normal_yellow}", //A + "editorOverviewRuler.infoForeground":"#${normal_cyan}", //C + "editorOverviewRuler.bracketMatchForeground":"#${bright_white}", //6 + + /// Errors and warnings + "editorError.foreground":"#${normal_red}", //8 + "editorWarning.foreground":"#${normal_yellow}", //A + "editorInfo.foreground":"#${normal_cyan}", //C + "editorHint.foreground":"#${normal_blue}", //D + "problemsErrorIcon.foreground":"#${normal_red}", //8 + "problemsWarningIcon.foreground":"#${normal_yellow}", //A + "problemsInfoIcon.foreground":"#${normal_cyan}", //C + + /// Gutter + "editorGutter.background":"#${normal_black}", //0 + "editorGutter.modifiedBackground":"#${normal_magenta}", //E + "editorGutter.addedBackground":"#${normal_green}", //B + "editorGutter.deletedBackground":"#${normal_red}", //8 + "editorGutter.commentRangeForeground":"#${bright_black}", //4 + "editorGutter.foldingControlForeground":"#${normal_white}", //5 + + // Diff editor colors + "diffEditor.insertedTextBackground":"#${normal_green}20", + "diffEditor.removedTextBackground":"#${normal_red}20", + "diffEditor.diagonalFill":"#${normal_black}", //2 + + // Editor widget colors + "editorWidget.foreground":"#${normal_white}", //5 + "editorWidget.background":"#${normal_black}", //0 + "editorSuggestWidget.background":"#${normal_black}", //1 + "editorSuggestWidget.foreground":"#${normal_white}", //5 + "editorSuggestWidget.focusHighlightForeground":"#${bright_white}", //7 + "editorSuggestWidget.highlightForeground":"#${normal_blue}", //D + "editorSuggestWidget.selectedBackground":"#${normal_black}", //2 + "editorSuggestWidget.selectedForeground":"#${bright_white}", //6 + "editorHoverWidget.foreground":"#${normal_white}", //5 + "editorHoverWidget.background":"#${normal_black}", //1 + "debugExceptionWidget.background":"#${normal_black}", //1 + "editorMarkerNavigation.background":"#${normal_black}", //1 + "editorMarkerNavigationError.background":"#${normal_red}", //8 + "editorMarkerNavigationWarning.background":"#${normal_yellow}", //A + "editorMarkerNavigationInfo.background":"#${normal_blue}", //D + "editorMarkerNavigationError.headerBackground":"#${normal_red}20", //8 + "editorMarkerNavigationWarning.headerBackground":"#${normal_yellow}20", //A + "editorMarkerNavigationInfo.headerBackground":"#${normal_cyan}20", //C + + // Peek view colors + "peekViewEditor.background":"#${normal_black}", //1 + "peekViewEditorGutter.background":"#${normal_black}", //1 + "peekViewEditor.matchHighlightBackground":"#${bright_red}6f", //9 + "peekViewResult.background":"#${normal_black}", //0 + "peekViewResult.fileForeground":"#${normal_white}", //5 + "peekViewResult.lineForeground":"#${bright_black}", //3 + "peekViewResult.matchHighlightBackground":"#${bright_red}6f", //9 + "peekViewResult.selectionBackground":"#${normal_black}", //2 + "peekViewResult.selectionForeground":"#${normal_white}", //5 + "peekViewTitle.background":"#${normal_black}", //2 + "peekViewTitleDescription.foreground":"#${bright_black}", //3 + "peekViewTitleLabel.foreground":"#${normal_white}", //5 + + // Merge conflicts colors + "merge.currentContentBackground":"#${normal_blue}40", //D + "merge.currentHeaderBackground":"#${normal_blue}40", //D + "merge.incomingContentBackground":"#${normal_green}60", //B + "merge.incomingHeaderBackground":"#${normal_green}60", //B + "editorOverviewRuler.currentContentForeground":"#${normal_blue}", //D + "editorOverviewRuler.incomingContentForeground":"#${normal_green}", //B + "editorOverviewRuler.commonContentForeground":"#${bright_magenta}", //F + + // Panel colors + "panel.background":"#${normal_black}", //0 + // Below is no longer supported as of 1.47 + "panel.dropBackground":"#${normal_black}6f", //1 + // Above is no longer supported as of 1.47 + "panel.dropBorder":"#${normal_black}6f", //1 + "panelTitle.activeForeground":"#${normal_white}", //5 + "panelTitle.inactiveForeground":"#${bright_black}", //3 + + // Status Bar colors + "statusBar.background":"#${normal_blue}", //D + "statusBar.foreground":"#${bright_white}", //7 + "statusBar.debuggingBackground":"#${bright_red}", //9 + "statusBar.debuggingForeground":"#${bright_white}", //7 + "statusBar.noFolderBackground":"#${normal_magenta}", //E + "statusBar.noFolderForeground":"#${bright_white}", //7 + "statusBarItem.activeBackground":"#${bright_black}", //3 + "statusBarItem.hoverBackground":"#${normal_black}", //2 + "statusBarItem.prominentForeground":"#${bright_white}", //7 + "statusBarItem.prominentBackground":"#${normal_magenta}", //E + "statusBarItem.prominentHoverBackground":"#${normal_red}", //8 + "statusBarItem.remoteBackground":"#${normal_green}", //B + "statusBarItem.remoteForeground":"#${bright_white}", //7 + "statusBarItem.errorBackground":"#${normal_red}", //8 + "statusBarItem.errorForeground":"#${bright_white}", //7 + "statusBarItem.warningBackground":"#${normal_yellow}", //A + "statusBarItem.warningForeground":"#${bright_white}", //7 + + // Title Bar colors + "titleBar.activeBackground":"#${normal_black}", //0 + "titleBar.activeForeground":"#${normal_white}", //5 + "titleBar.inactiveBackground":"#${normal_black}", //1 + "titleBar.inactiveForeground":"#${bright_black}", //3 + + // Menu Bar colors + "menubar.selectionForeground":"#${normal_white}", //5 + "menubar.selectionBackground":"#${normal_black}", //1 + "menu.foreground":"#${normal_white}", //5 + "menu.background":"#${normal_black}", //1 + "menu.selectionForeground":"#${normal_white}", //5 + "menu.selectionBackground":"#${normal_black}", //2 + "menu.separatorBackground":"#${bright_white}", //7 + + // Command Center colors + "commandCenter.foreground":"#${normal_white}", //5 + "commandCenter.activeForeground":"#${bright_white}", //7 + "commandCenter.background":"#${normal_black}", //0 + "commandCenter.activeBackground":"#${normal_black}", //1 + + // Notification colors + "notificationCenterHeader.foreground":"#${normal_white}", //5 + "notificationCenterHeader.background":"#${normal_black}", //1 + "notifications.foreground":"#${normal_white}", //5 + "notifications.background":"#${normal_black}", //2 + "notificationLink.foreground":"#${normal_blue}", //D + "notificationsErrorIcon.foreground":"#${normal_red}", //8 + "notificationsWarningIcon.foreground":"#${normal_yellow}", //A + "notificationsInfoIcon.foreground":"#${normal_blue}", //D + + // Below is no longer supported as of 1.21 + "notification.background":"#${normal_black}", //2 + "notification.foreground":"#${normal_white}", //5 + "notification.buttonBackground":"#${normal_blue}", //D + "notification.buttonHoverBackground":"#${normal_black}", //2 + "notification.buttonForeground":"#${bright_white}", //7 + "notification.infoBackground":"#${normal_cyan}", //C + "notification.infoForeground":"#${bright_white}", //7 + "notification.warningBackground":"#${normal_yellow}", //A + "notification.warningForeground":"#${bright_white}", //7 + "notification.errorBackground":"#${normal_red}", //8 + "notification.errorForeground":"#${bright_white}", //7 + // Above is no longer supported as of 1.21 + // + // Banner colors + "banner.background":"#${normal_black}", //2 + "banner.foreground":"#${normal_white}", //5 + "banner.iconForeground":"#${normal_blue}", //D + + // Extensions colors + "extensionButton.prominentBackground":"#${normal_green}", //B + "extensionButton.prominentForeground":"#${bright_white}", //7 + "extensionButton.prominentHoverBackground":"#${normal_black}", //2 + "extensionBadge.remoteBackground":"#${bright_red}", //9 + "extensionBadge.remoteForeground":"#${bright_white}", //7 + "extensionIcon.starForeground":"#${normal_yellow}", //A + "extensionIcon.verifiedForeground":"#${normal_blue}", //D + "extensionIcon.preReleaseForeground":"#${bright_red}", //9 + + // Quick picker colors + "pickerGroup.foreground":"#${bright_black}", //3 + "quickInput.background":"#${normal_black}", //1 + "quickInput.foreground":"#${normal_white}", //5 + "quickInputList.focusBackground":"#${bright_black}", //3 + "quickInputList.focusForeground":"#${bright_white}", //7 + "quickInputList.focusIconForeground":"#${bright_white}", //7 + + // Keybinding label colors + "keybindingLabel.background":"#${normal_black}", //2 + "keybindingLabel.foreground":"#${normal_white}", //5 + + // Keybinding shortcut table colors + "keybindingTable.headerBackground":"#${normal_black}", //2 + "keybindingTable.rowsBackground":"#${normal_black}", //1 + + // Integrated terminal colors + "terminal.background":"#${normal_black}", //0 + "terminal.foreground":"#${normal_white}", //5 + "terminal.ansiBlack":"#${normal_black}", //0 + "terminal.ansiRed":"#${normal_red}", //8 + "terminal.ansiGreen":"#${normal_green}", //B + "terminal.ansiYellow":"#${normal_yellow}", //A + "terminal.ansiBlue":"#${normal_blue}", //D + "terminal.ansiMagenta":"#${normal_magenta}", //E + "terminal.ansiCyan":"#${normal_cyan}", //C + "terminal.ansiWhite":"#${normal_white}", //5 + "terminal.ansiBrightBlack":"#${bright_black}", //3 + "terminal.ansiBrightRed":"#${normal_red}", //8 + "terminal.ansiBrightGreen":"#${normal_green}", //B + "terminal.ansiBrightYellow":"#${normal_yellow}", //A + "terminal.ansiBrightBlue":"#${normal_blue}", //D + "terminal.ansiBrightMagenta":"#${normal_magenta}", //E + "terminal.ansiBrightCyan":"#${normal_cyan}", //C + "terminal.ansiBrightWhite":"#${bright_white}", //7 + "terminalCursor.foreground":"#${normal_white}", //5 + "terminalOverviewRuler.cursorForeground": "#ff0000", + "terminalOverviewRuler.findMatchForeground": "#ff0000", + + // Debug colors + "debugToolBar.background":"#${normal_black}", //1 + "debugView.stateLabelForeground":"#${bright_white}", //7 + "debugView.stateLabelBackground":"#${normal_blue}", //D + "debugView.valueChangedHighlight":"#${normal_blue}", //D + "debugTokenExpression.name":"#${normal_magenta}", //E + "debugTokenExpression.value":"#${normal_white}", //5 + "debugTokenExpression.string":"#${normal_green}", //B + "debugTokenExpression.boolean":"#${bright_red}", //9 + "debugTokenExpression.number":"#${bright_red}", //9 + "debugTokenExpression.error":"#${normal_red}", //8 + + // Testing colors + "testing.iconFailed":"#${normal_red}", //8 + "testing.iconErrored":"#${bright_magenta}", //F + "testing.iconPassed":"#${normal_green}", //B + "testing.runAction":"#${bright_black}", //4 + "testing.iconQueued":"#${normal_yellow}", //A + "testing.iconUnset":"#${bright_black}", //4 + "testing.iconSkipped":"#${normal_magenta}", //E + + "testing.peekHeaderBackground":"#${normal_black}", //1 + "testing.message.error.decorationForeground":"#${normal_white}", //5 + "testing.message.error.lineBackground":"#${normal_red}20", //8 + "testing.message.info.decorationForeground":"#${normal_white}", //5 + "testing.message.info.lineBackground":"#${normal_blue}20", //D + + // Welcome page colors + "welcomePage.background":"#${normal_black}", //0 + + // Below is no longer supported as of 1.63 + "welcomePage.buttonBackground":"#${normal_black}", //1 + "welcomePage.buttonHoverBackground":"#${normal_black}", //2 + + // Above is no longer supported as of 1.63 + "welcomePage.progress.background":"#${bright_black}", //3 + "welcomePage.progress.foreground":"#${normal_blue}", //D + "welcomePage.tileBackground":"#${normal_black}", //1 + "welcomePage.tileHoverBackground":"#${normal_black}", //2 + "walkThrough.embeddedEditorBackground":"#${normal_black}", //0 + // Git colors + "gitDecoration.addedResourceForeground":"#${normal_green}", //B + "gitDecoration.modifiedResourceForeground":"#${normal_magenta}", //E + "gitDecoration.deletedResourceForeground":"#${normal_red}", //8 + "gitDecoration.renamedResourceForeground":"#${normal_cyan}", //C + "gitDecoration.stageModifiedResourceForeground":"#${normal_magenta}", //E + "gitDecoration.stageDeletedResourceForeground":"#${normal_red}", //8 + "gitDecoration.untrackedResourceForeground":"#${bright_red}", //9 + "gitDecoration.ignoredResourceForeground":"#${bright_black}", //3 + "gitDecoration.conflictingResourceForeground":"#${normal_yellow}", //A + "gitDecoration.submoduleResourceForeground":"#${bright_magenta}", //F + // Settings Editor colors + "settings.headerForeground":"#${normal_white}", //5 + "settings.modifiedItemIndicator":"#${normal_blue}", //D + + // Below was introduced temporarily in 1.26 + "settings.modifiedItemForeground":"#${normal_green}", //B + + // Above was introduced temporarily in 1.26 + "settings.dropdownBackground":"#${normal_black}", //1 + "settings.dropdownForeground":"#${normal_white}", //5 + + "settings.checkboxBackground":"#${normal_black}", //1 + "settings.checkboxForeground":"#${normal_white}", //5 + "settings.rowHoverBackground":"#${normal_black}", //2 + "settings.textInputBackground":"#${normal_black}", //1 + "settings.textInputForeground":"#${normal_white}", //5 + "settings.numberInputBackground":"#${normal_black}", //1 + "settings.numberInputForeground":"#${normal_white}", //5 + "settings.focusedRowBackground":"#${normal_black}", //2 + + "settings.headerBorder":"#${normal_white}", //5 + "settings.sashBorder":"#${normal_white}", //5 + // Breadcrumbs colors + "breadcrumb.foreground":"#${normal_white}", //5 + "breadcrumb.background":"#${normal_black}", //1 + "breadcrumb.focusForeground":"#${bright_white}", //6 + "breadcrumb.activeSelectionForeground":"#${bright_white}", //7 + "breadcrumbPicker.background":"#${normal_black}", //1 + // Snippets colors + "editor.snippetTabstopHighlightBackground":"#${normal_black}", //2 + "editor.snippetFinalTabstopHighlightBackground":"#${bright_black}", //3 + + // Symbol Icons colors + "symbolIcon.arrayForeground":"#${normal_white}", //5 + "symbolIcon.booleanForeground":"#${bright_red}", //9 + "symbolIcon.classForeground":"#${normal_yellow}", //A + "symbolIcon.colorForeground": "#f0f", + "symbolIcon.constantForeground":"#${bright_red}", //9 + "symbolIcon.constructorForeground":"#${normal_blue}", //D + "symbolIcon.enumeratorForeground":"#${bright_red}", //9 + "symbolIcon.enumeratorMemberForeground":"#${normal_blue}", //D + "symbolIcon.eventForeground":"#${normal_yellow}", //A + "symbolIcon.fieldForeground":"#${normal_red}", //8 + "symbolIcon.fileForeground":"#${normal_white}", //5 + "symbolIcon.folderForeground":"#${normal_white}", //5 + "symbolIcon.functionForeground":"#${normal_blue}", //D, + "symbolIcon.interfaceForeground":"#${normal_blue}", //D + "symbolIcon.keyForeground": "#f0f", + "symbolIcon.keywordForeground":"#${normal_magenta}", //E + "symbolIcon.methodForeground":"#${normal_blue}", //D + "symbolIcon.moduleForeground":"#${normal_white}", //5 + "symbolIcon.namespaceForeground":"#${normal_white}", //5 + "symbolIcon.nullForeground":"#${bright_magenta}", //F + "symbolIcon.numberForeground":"#${bright_red}", //9 + "symbolIcon.objectForeground": "#f0f", + "symbolIcon.operatorForeground": "#f0f", + "symbolIcon.packageForeground": "#f0f", + "symbolIcon.propertyForeground":"#${normal_white}", //5 + "symbolIcon.referenceForeground": "#f0f", + "symbolIcon.snippetForeground":"#${normal_white}", //5 + "symbolIcon.stringForeground":"#${normal_green}", //B + "symbolIcon.structForeground":"#${normal_yellow}", //A + "symbolIcon.textForeground":"#${normal_white}", //5 + "symbolIcon.typeParameterForeground": "#f0f", + "symbolIcon.unitForeground": "#f0f", + "symbolIcon.variableForeground":"#${normal_red}", //8 + + // Debug Icons colors + "debugIcon.breakpointForeground":"#${normal_red}", //8 + "debugIcon.breakpointDisabledForeground":"#${bright_black}", //4 + "debugIcon.breakpointUnverifiedForeground":"#${normal_black}", //2 + "debugIcon.breakpointCurrentStackframeForeground":"#${normal_yellow}", //A + "debugIcon.breakpointStackframeForeground":"#${bright_magenta}", //F + "debugIcon.startForeground":"#${normal_green}", //B + "debugIcon.pauseForeground":"#${normal_blue}", //D + "debugIcon.stopForeground":"#${normal_red}", //8 + "debugIcon.disconnectForeground":"#${normal_red}", //8 + "debugIcon.restartForeground":"#${normal_green}", //B + "debugIcon.stepOverForeground":"#${normal_blue}", //D + "debugIcon.stepIntoForeground":"#${normal_cyan}", //C + "debugIcon.stepOutForeground":"#${normal_magenta}", //E + "debugIcon.continueForeground":"#${normal_green}", //B + "debugIcon.stepBackForeground":"#${bright_magenta}", //F + "debugConsole.infoForeground":"#${normal_white}", //5 + "debugConsole.warningForeground":"#${normal_yellow}", //A + "debugConsole.errorForeground":"#${normal_red}", //8 + "debugConsole.sourceForeground":"#${normal_white}", //5 + "debugConsoleInputIcon.foreground":"#${normal_white}", //5 + // Notebook colors + "notebook.editorBackground":"#${normal_black}", //0 + "notebook.cellBorderColor":"#${bright_black}", //3 + "notebook.cellHoverBackground":"#${normal_black}", //1 + + "notebook.cellToolbarSeparator":"#${normal_black}", //2 + "notebook.cellEditorBackground":"#${normal_black}", //0 + "notebook.focusedCellBackground":"#${normal_black}", //2 + "notebook.focusedCellBorder":"#${normal_blue}", //D + "notebook.focusedEditorBorder":"#${normal_blue}", //D + "notebook.inactiveFocusedCellBorder":"#${bright_black}", //3 + + "notebook.selectedCellBackground":"#${normal_black}", //2 + + "notebookStatusErrorIcon.foreground":"#${normal_red}", //8 + "notebookStatusRunningIcon.foreground":"#${normal_cyan}", //C + "notebookStatusSuccessIcon.foreground":"#${normal_green}", //B + // Chart colors + "charts.foreground":"#${normal_white}", //5 + "charts.lines":"#${normal_white}", //5 + "charts.red":"#${normal_red}", //8 + "charts.blue":"#${normal_blue}", //D + "charts.yellow":"#${normal_yellow}", //A + "charts.orange":"#${bright_red}", //9 + "charts.green":"#${normal_green}", //B + "charts.purple":"#${normal_magenta}", //E + // Ports Colors + "ports.iconRunningProcessForeground":"#${bright_red}" //9 + }, + "tokenColors": [ + { + "name": "Comment", + "scope": ["comment", "punctuation.definition.comment"], + "settings": { + "fontStyle": "italic", + "foreground":"#${bright_black}" //3 + } + }, + { + "name": "Variables, Parameters", + "scope": [ + "variable", + "string constant.other.placeholder", + "entity.name.variable.parameter", + "entity.name.variable.local", + "variable.parameter" + ], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Properties", + "scope": ["variable.other.object.property"], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Colors", + "scope": ["constant.other.color"], + "settings": { + "foreground":"#${normal_green}" //B + } + }, + { + "name": "Invalid", + "scope": ["invalid", "invalid.illegal"], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Invalid - Deprecated", + "scope": ["invalid.deprecated"], + "settings": { + "foreground":"#${bright_magenta}" //F + } + }, + { + "name": "Keyword, Storage", + "scope": ["keyword", "storage.modifier"], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Keyword Control", + "scope": [ + "keyword.control", + "keyword.control.flow", + "keyword.control.from", + "keyword.control.import", + "keyword.control.as" + ], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Keyword", + "scope": [ + "keyword.other.using", + "keyword.other.namespace", + "keyword.other.class", + "keyword.other.new", + "keyword.other.event", + "keyword.other.this", + "keyword.other.await", + "keyword.other.var", + "keyword.other.package", + "keyword.other.import", + "variable.language.this", + "storage.type.ts" + ], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Types, Primitives", + "scope": ["keyword.type", "storage.type.primitive"], + "settings": { + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "Function", + "scope": ["storage.type.function"], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Operator, Misc", + "scope": [ + "constant.other.color", + "punctuation", + "punctuation.section.class.end", + "meta.tag", + "punctuation.definition.tag", + "punctuation.separator.inheritance.php", + "punctuation.definition.tag.html", + "punctuation.definition.tag.begin.html", + "punctuation.definition.tag.end.html", + "keyword.other.template", + "keyword.other.substitution" + ], + "settings": { + "foreground":"#${normal_white}" //5 + } + }, + { + "name": "Embedded", + "scope": ["punctuation.section.embedded", "variable.interpolation"], + "settings": { + "foreground":"#${bright_magenta}" //F + } + }, + { + "name": "Tag", + "scope": [ + "entity.name.tag", + "meta.tag.sgml", + "markup.deleted.git_gutter" + ], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Function, Special Method", + "scope": [ + "entity.name.function", + "meta.function-call", + "variable.function", + "support.function", + "keyword.other.special-method" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Block Level Variables", + "scope": ["meta.block variable.other"], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Other Variable, String Link", + "scope": ["support.other.variable", "string.other.link"], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Number, Constant, Function Argument, Tag Attribute, Embedded", + "scope": [ + "constant.numeric", + "constant.language", + "support.constant", + "constant.character", + "constant.escape", + "keyword.other.unit", + "keyword.other" + ], + "settings": { + "foreground":"#${bright_red}" //9 + } + }, + { + "name": "String, Symbols, Inherited Class, Markup Heading", + "scope": [ + "string", + "constant.other.symbol", + "constant.other.key", + "entity.other.inherited-class", + "markup.heading", + "markup.inserted.git_gutter", + "meta.group.braces.curly constant.other.object.key.js string.unquoted.label.js" + ], + "settings": { + "fontStyle": "", + "foreground":"#${normal_green}" //B + } + }, + { + "name": "Class, Support", + "scope": [ + "entity.name", + "support.type", + "support.class", + "support.other.namespace.use.php", + "meta.use.php", + "support.other.namespace.php", + "markup.changed.git_gutter", + "support.type.sys-types" + ], + "settings": { + "foreground":"#${normal_yellow}" //A + } + }, + { + "name": "Storage Type, Import Class", + "scope": [ + "storage.type", + "storage.modifier.package", + "storage.modifier.import" + ], + "settings": { + "foreground":"#${normal_yellow}" //A + } + }, + { + "name": "Fields", + "scope": ["entity.name.variable.field"], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Entity Types", + "scope": ["support.type"], + "settings": { + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "CSS Class and Support", + "scope": [ + "source.css support.type.property-name", + "source.sass support.type.property-name", + "source.scss support.type.property-name", + "source.less support.type.property-name", + "source.stylus support.type.property-name", + "source.postcss support.type.property-name" + ], + "settings": { + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "Sub-methods", + "scope": [ + "entity.name.module.js", + "variable.import.parameter.js", + "variable.other.class.js" + ], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Language methods", + "scope": ["variable.language"], + "settings": { + "fontStyle": "italic", + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "entity.name.method.js", + "scope": ["entity.name.method.js"], + "settings": { + "fontStyle": "italic", + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "meta.method.js", + "scope": [ + "meta.class-method.js entity.name.function.js", + "variable.function.constructor" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Attributes", + "scope": ["entity.other.attribute-name"], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "HTML Attributes", + "scope": [ + "text.html.basic entity.other.attribute-name.html", + "text.html.basic entity.other.attribute-name" + ], + "settings": { + "fontStyle": "italic", + "foreground":"#${normal_yellow}" //A + } + }, + { + "name": "CSS Classes", + "scope": ["entity.other.attribute-name.class"], + "settings": { + "foreground":"#${normal_yellow}" //A + } + }, + { + "name": "CSS ID's", + "scope": ["source.sass keyword.control"], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Inserted", + "scope": ["markup.inserted"], + "settings": { + "foreground":"#${normal_green}" //B + } + }, + { + "name": "Deleted", + "scope": ["markup.deleted"], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Changed", + "scope": ["markup.changed"], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Regular Expressions", + "scope": ["string.regexp"], + "settings": { + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "Escape Characters", + "scope": ["constant.character.escape"], + "settings": { + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "URL", + "scope": ["*url*", "*link*", "*uri*"], + "settings": { + "fontStyle": "underline" + } + }, + { + "name": "Decorators", + "scope": [ + "tag.decorator.js entity.name.tag.js", + "tag.decorator.js punctuation.definition.tag.js" + ], + "settings": { + "fontStyle": "italic", + "foreground":"#${normal_blue}" // D + } + }, + { + "name": "ES7 Bind Operator", + "scope": [ + "source.js constant.other.object.key.js string.unquoted.label.js" + ], + "settings": { + "fontStyle": "italic", + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "JSON Key - Level 0", + "scope": [ + "source.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 1", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 2", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 3", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 4", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 5", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 6", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 7", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 8", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Markdown - Plain", + "scope": [ + "text.html.markdown", + "punctuation.definition.list_item.markdown" + ], + "settings": { + "foreground":"#${normal_white}" //5 + } + }, + { + "name": "Markdown - Markup Raw Inline", + "scope": ["text.html.markdown markup.inline.raw.markdown"], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Markdown - Markup Raw Inline Punctuation", + "scope": [ + "text.html.markdown markup.inline.raw.markdown punctuation.definition.raw.markdown" + ], + "settings": { + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "Markdown - Line Break", + "scope": ["text.html.markdown meta.dummy.line-break"], + "settings": { + "foreground":"#${bright_black}" //3 + } + }, + { + "name": "Markdown - Heading", + "scope": [ + "markdown.heading", + "markup.heading | markup.heading entity.name", + "markup.heading.markdown punctuation.definition.heading.markdown" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Markup - Italic", + "scope": ["markup.italic"], + "settings": { + "fontStyle": "italic", + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Markup - Bold", + "scope": ["markup.bold", "markup.bold string"], + "settings": { + "fontStyle": "bold", + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Markup - Bold-Italic", + "scope": [ + "markup.bold markup.italic", + "markup.italic markup.bold", + "markup.quote markup.bold", + "markup.bold markup.italic string", + "markup.italic markup.bold string", + "markup.quote markup.bold string" + ], + "settings": { + "fontStyle": "bold", + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Markup - Underline", + "scope": ["markup.underline"], + "settings": { + "fontStyle": "underline", + "foreground":"#${bright_red}" //9 + } + }, + { + "name": "Markdown - Blockquote", + "scope": ["markup.quote punctuation.definition.blockquote.markdown"], + "settings": { + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "Markup - Quote", + "scope": ["markup.quote"], + "settings": { + "fontStyle": "italic" + } + }, + { + "name": "Markdown - Link", + "scope": ["string.other.link.title.markdown"], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Markdown - Link Description", + "scope": ["string.other.link.description.title.markdown"], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Markdown - Link Anchor", + "scope": ["constant.other.reference.link.markdown"], + "settings": { + "foreground":"#${normal_yellow}" //A + } + }, + { + "name": "Markup - Raw Block", + "scope": ["markup.raw.block"], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Markdown - Raw Block Fenced", + "scope": ["markup.raw.block.fenced.markdown"], + "settings": { + "foreground": "#00000050" + } + }, + { + "name": "Markdown - Fenced Bode Block", + "scope": ["punctuation.definition.fenced.markdown"], + "settings": { + "foreground": "#00000050" + } + }, + { + "name": "Markdown - Fenced Code Block Variable", + "scope": [ + "markup.raw.block.fenced.markdown", + "variable.language.fenced.markdown" + ], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Markdown - Fenced Language", + "scope": ["variable.language.fenced.markdown"], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Markdown - Separator", + "scope": ["meta.separator"], + "settings": { + "fontStyle": "bold", + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "Markup - Table", + "scope": ["markup.table"], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "scope": "token.info-token", + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "scope": "token.warn-token", + "settings": { + "foreground":"#${normal_yellow}" //A + } + }, + { + "scope": "token.error-token", + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "scope": "token.debug-token", + "settings": { + "foreground":"#${normal_magenta}" //E + } + } + ] +} +EOF +fi + +extension_name="tintedtheming.base16-tinted-themes" + +install_cursor_extension() { + is_extension_installed=$(cursor --list-extensions | grep "${extension_name}") + if [[ -z "$is_extension_installed" ]]; then + cursor --install-extension $extension_name + sleep 3 + fi +} + +cursor_paths=( + "$HOME/.cursor/extensions/" +) +find_cursor_extension_dir() { + for path in "${cursor_paths[@]}"; do + if [[ -d "$path" ]]; then + install_path=$(find "$path" -maxdepth 1 -type d -name "${extension_name}-*" | head -n1) + fi + done +} + +modify_extension_manifest() { + omarchy_entry=$(cat $install_path/package.json | jq 'first(.contributes.themes[] | select(.label == "Omarchy"))') + if [[ -z "$omarchy_entry" ]]; then + omarchy_entry='{"label": "Omarchy", "uiTheme": "vs-dark", "path": "./themes/base16/omarchy.json"}' + new_manifest=$(cat "${install_path}/package.json" | jq --argjson theme "$omarchy_entry" '.contributes.themes += [$theme]') + echo "$new_manifest" > "${install_path}/package.json" + fi +} + +install_cursor_extension +find_cursor_extension_dir +modify_extension_manifest + +install_location="$install_path/themes/base16/omarchy.json" +cp "$output_file" "$install_location" + +require_restart "cursor" +success "Cursor theme updated!" +exit 0 diff --git a/config/omarchy/hooks/theme-set.d/30-vscode.sh b/config/omarchy/hooks/theme-set.d/30-vscode.sh new file mode 100755 index 0000000..eead0c8 --- /dev/null +++ b/config/omarchy/hooks/theme-set.d/30-vscode.sh @@ -0,0 +1,1292 @@ +#!/bin/bash +output_file="$HOME/.config/omarchy/current/theme/vscode_colors.json" + +if ! command -v code >/dev/null 2>&1; then + skipped "VS Code" +fi + +# check current theme for vscode.json +if [[ -f "$HOME/.config/omarchy/current/theme/vscode.json" ]]; then + exit 0 +fi + +if [[ ! -f "$output_file" ]]; then + cat > "$output_file" << EOF +{ + "\$schema": "vscode://schemas/color-theme", + "name": "Omarchy", + "type": "", + "colors": { + // Base colors + "foreground":"#${normal_white}", //5 + "disabledForeground":"#${bright_black}", //4 + "widget.shadow":"#${normal_black}", //0 + "selection.background":"#${normal_blue}", //D + "descriptionForeground":"#${bright_black}", //3 + "errorForeground":"#${normal_red}", //8 + "icon.foreground":"#${bright_black}", //4 + + // Text colors + "textBlockQuote.background":"#${normal_black}", //1 + "textBlockQuote.border":"#${normal_blue}", //D + "textCodeBlock.background":"#${normal_black}", //0 + "textLink.activeForeground":"#${normal_cyan}", //C + "textLink.foreground":"#${normal_blue}", //D + "textPreformat.foreground":"#${normal_blue}", //D + "textSeparator.foreground": "#f0f", + + // Action colors + "toolbar.hoverBackground":"#${normal_black}", //2 + "toolbar.activeBackground":"#${bright_black}", //3 + + // Button control + "button.background":"#${normal_blue}", //D + "button.foreground":"#${bright_white}", //7 + "button.hoverBackground":"#${bright_black}", //4 + "button.secondaryForeground":"#${bright_white}", //7 + "button.secondaryBackground":"#${normal_magenta}", //E + "button.secondaryHoverBackground":"#${bright_black}", //4 + "checkbox.background":"#${normal_black}", //0 + "checkbox.foreground":"#${normal_white}", //5 + + // Dropdown control + "dropdown.background":"#${normal_black}", //0 + "dropdown.listBackground":"#${normal_black}", //0 + "dropdown.foreground":"#${normal_white}", //5 + + // Input control + "input.background":"#${normal_black}", //0 + "input.foreground":"#${normal_white}", //5 + "input.placeholderForeground":"#${bright_black}", //3 + "inputOption.activeBackground":"#${normal_black}", //2 + "inputOption.activeBorder":"#${bright_red}", //9 + "inputOption.activeForeground":"#${normal_white}", //5 + "inputValidation.errorBackground":"#${normal_red}", //8 + "inputValidation.errorForeground":"#${normal_white}", //5 + "inputValidation.errorBorder":"#${normal_red}", //8 + "inputValidation.infoBackground":"#${normal_blue}", //D + "inputValidation.infoForeground":"#${normal_white}", //5 + "inputValidation.infoBorder":"#${normal_blue}", //D + "inputValidation.warningBackground":"#${normal_yellow}", //A + "inputValidation.warningForeground":"#${normal_white}", //5 + "inputValidation.warningBorder":"#${normal_yellow}", //A + + // Scrollbar control + "scrollbar.shadow":"#${normal_black}", //1 + "scrollbarSlider.activeBackground":"#${bright_black}6f", //4 + "scrollbarSlider.background":"#${normal_black}6f", //2 + "scrollbarSlider.hoverBackground":"#${bright_black}6f", //3 + + // Badge + "badge.background":"#${normal_black}", //0 + "badge.foreground":"#${normal_white}", //5 + + // Progress bar + "progressBar.background":"#${bright_black}", //3 + + // Lists and trees + "list.activeSelectionBackground":"#${normal_black}", //2 + "list.activeSelectionForeground":"#${normal_white}", //5 + "list.dropBackground":"#${bright_white}", //7 + "list.focusBackground":"#${normal_black}", //2 + "list.focusForeground":"#${normal_white}", //5 + "list.highlightForeground":"#${bright_white}", //7 + "list.hoverBackground":"#${bright_black}", //3 + "list.hoverForeground":"#${normal_white}", //5 + "list.inactiveSelectionBackground":"#${normal_black}", //2 + "list.inactiveSelectionForeground":"#${normal_white}", //5 + "list.inactiveFocusBackground":"#${normal_black}", //2 + "list.invalidItemForeground":"#${normal_red}", //8 + "list.errorForeground":"#${normal_red}", //8 + "list.warningForeground":"#${normal_yellow}", //A + "listFilterWidget.background":"#${normal_black}", //0 + "listFilterWidget.noMatchesOutline":"#${normal_red}", //8 + "list.filterMatchBackground":"#${normal_black}", //2 + "tree.indentGuidesStroke":"#${normal_white}", //5 + + // Activity Bar + "activityBar.background":"#${normal_black}", //0 + // Below is no longer supported as of 1.52 + "activityBar.dropBackground":"#${bright_white}", //7 + // Above is no longer supported as of 1.52 + "activityBar.foreground":"#${normal_white}", //5 + "activityBar.inactiveForeground":"#${bright_black}", //3 + "activityBarBadge.background":"#${normal_blue}", //D + "activityBarBadge.foreground":"#${bright_white}", //7 + "activityBar.activeBackground":"#${normal_black}", //2 + + // Side Bar + "sideBar.background":"#${normal_black}", //1 + "sideBar.foreground":"#${normal_white}", //5 + "sideBar.dropBackground":"#${normal_black}6f", //2 + "sideBarTitle.foreground":"#${normal_white}", //5 + "sideBarSectionHeader.background":"#${bright_black}", //3 + "sideBarSectionHeader.foreground":"#${normal_white}", //5 + + //Minimap + "minimap.findMatchHighlight":"#${normal_yellow}6f", //A + "minimap.selectionHighlight":"#${normal_black}6f", //2 + "minimap.errorHighlight":"#${normal_red}", //8 + "minimap.warningHighlight":"#${normal_yellow}", //A + "minimap.background":"#${normal_black}", //0 + "minimap.selectionOccurrenceHighlight":"#${bright_black}", //3 + "minimapGutter.addedBackground":"#${normal_green}", //B + "minimapGutter.modifiedBackground":"#${normal_magenta}", //E + "minimapGutter.deletedBackground":"#${normal_red}", //8 + + // Editor Groups & Tabs + // Below is no longer supported as of 1.24 + "editorGroup.background":"#${normal_black}", //0 + // Above is no longer supported as of 1.24 + "editorGroup.dropBackground":"#${normal_black}6f", //2 + "editorGroupHeader.noTabsBackground":"#${normal_black}", //1 + "editorGroupHeader.tabsBackground":"#${normal_black}", //1 + "editorGroup.emptyBackground":"#${normal_black}", //0 + "editorGroup.dropIntoPromptForeground":"#${bright_white}", //5 + "editorGroup.dropIntoPromptBackground":"#${normal_black}", //0 + "tab.activeBackground":"#${normal_black}", //0 + "tab.unfocusedActiveBackground":"#${normal_black}", //0 + "tab.activeForeground":"#${normal_white}", //5 + "tab.inactiveBackground":"#${normal_black}", //1 + "tab.inactiveForeground":"#${bright_black}", //3 + "tab.unfocusedActiveForeground":"#${bright_black}", //4 + "tab.unfocusedInactiveForeground":"#${bright_black}", //3 + "tab.hoverBackground":"#${normal_black}", //2 + "tab.unfocusedHoverBackground":"#${normal_black}", //2 + + "tab.activeModifiedBorder":"#${normal_blue}", //D + "tab.inactiveModifiedBorder":"#${normal_blue}", //D + "tab.unfocusedActiveModifiedBorder":"#${normal_blue}", //D + "tab.unfocusedInactiveModifiedBorder":"#${normal_blue}", //D + "editorPane.background":"#${normal_black}", //0 + + // Editor colors + "editor.background":"#${normal_black}", //0 + "editor.foreground":"#${normal_white}", //5 + "editorLineNumber.foreground":"#${bright_black}", //3 + "editorLineNumber.activeForeground":"#${bright_black}", //4 + "editorCursor.foreground":"#${normal_white}", //5 + "editor.selectionBackground":"#${normal_black}", //2 + "editor.inactiveSelectionBackground":"#${normal_black}", //2 + "editor.selectionHighlightBackground":"#${normal_black}", //1 + "editor.wordHighlightBackground":"#${normal_black}6f", //2 + "editor.wordHighlightStrongBackground":"#${bright_black}6f", //3 + "editor.findMatchBackground":"#${normal_yellow}6f", //A + "editor.findMatchHighlightBackground":"#${bright_red}6f", //9 + "editor.findRangeHighlightBackground":"#${normal_black}6f", //1 + "searchEditor.findMatchBackground":"#${normal_yellow}6f", //A + "editor.hoverHighlightBackground":"#${normal_black}6f", //2 + "editor.lineHighlightBackground":"#${normal_black}", //1 + "editorLink.activeForeground":"#${normal_blue}", //D + "editor.rangeHighlightBackground":"#${normal_black}6f", //1 + "editorWhitespace.foreground":"#${bright_black}", //3 + "editorIndentGuide.background":"#${bright_black}", //3 + "editorIndentGuide.activeBackground":"#${bright_black}", //4 + "editorInlayHint.background":"#${normal_black}", //1 + "editorInlayHint.foreground":"#${normal_white}", //5 + "editorInlayHint.typeBackground":"#${normal_black}", //1 + "editorInlayHint.typeForeground":"#${normal_white}", //5 + "editorInlayHint.parameterBackground":"#${normal_black}", //1 + "editorInlayHint.parameterForeground":"#${normal_white}", //5 + "editorRuler.foreground":"#${bright_black}", //3 + + /// CodeLens + "editorCodeLens.foreground":"#${normal_black}", //2 + + /// Lightbulb + "editorLightBulb.foreground":"#${normal_yellow}", //A + "editorLightBulbAutoFix.foreground":"#${normal_blue}", //D + + /// Bracket matches + "editorBracketMatch.background":"#${normal_black}", //2 + + /// Bracket pair colorization + "editorBracketHighlight.foreground1":"#${normal_red}", //8 + "editorBracketHighlight.foreground2":"#${bright_red}", //9 + "editorBracketHighlight.foreground3":"#${normal_yellow}", //A + "editorBracketHighlight.foreground4":"#${normal_green}", //B + "editorBracketHighlight.foreground5":"#${normal_blue}", //D + "editorBracketHighlight.foreground6":"#${normal_magenta}", //E + "editorBracketHighlight.unexpectedBracket.foreground":"#${bright_magenta}", //F + "editorOverviewRuler.findMatchForeground":"#${normal_yellow}6f", //A + "editorOverviewRuler.rangeHighlightForeground":"#${bright_black}6f", //3 + "editorOverviewRuler.selectionHighlightForeground":"#${normal_black}6f", //2 + "editorOverviewRuler.wordHighlightForeground":"#${bright_white}6f", //7 + "editorOverviewRuler.wordHighlightStrongForeground":"#${normal_blue}6f", //D + "editorOverviewRuler.modifiedForeground":"#${normal_magenta}", //E + "editorOverviewRuler.addedForeground":"#${normal_green}", //B + "editorOverviewRuler.deletedForeground":"#${normal_red}", //8 + "editorOverviewRuler.errorForeground":"#${normal_red}", //8 + "editorOverviewRuler.warningForeground":"#${normal_yellow}", //A + "editorOverviewRuler.infoForeground":"#${normal_cyan}", //C + "editorOverviewRuler.bracketMatchForeground":"#${bright_white}", //6 + + /// Errors and warnings + "editorError.foreground":"#${normal_red}", //8 + "editorWarning.foreground":"#${normal_yellow}", //A + "editorInfo.foreground":"#${normal_cyan}", //C + "editorHint.foreground":"#${normal_blue}", //D + "problemsErrorIcon.foreground":"#${normal_red}", //8 + "problemsWarningIcon.foreground":"#${normal_yellow}", //A + "problemsInfoIcon.foreground":"#${normal_cyan}", //C + + /// Gutter + "editorGutter.background":"#${normal_black}", //0 + "editorGutter.modifiedBackground":"#${normal_magenta}", //E + "editorGutter.addedBackground":"#${normal_green}", //B + "editorGutter.deletedBackground":"#${normal_red}", //8 + "editorGutter.commentRangeForeground":"#${bright_black}", //4 + "editorGutter.foldingControlForeground":"#${normal_white}", //5 + + // Diff editor colors + "diffEditor.insertedTextBackground":"#${normal_green}20", + "diffEditor.removedTextBackground":"#${normal_red}20", + "diffEditor.diagonalFill":"#${normal_black}", //2 + + // Editor widget colors + "editorWidget.foreground":"#${normal_white}", //5 + "editorWidget.background":"#${normal_black}", //0 + "editorSuggestWidget.background":"#${normal_black}", //1 + "editorSuggestWidget.foreground":"#${normal_white}", //5 + "editorSuggestWidget.focusHighlightForeground":"#${bright_white}", //7 + "editorSuggestWidget.highlightForeground":"#${normal_blue}", //D + "editorSuggestWidget.selectedBackground":"#${normal_black}", //2 + "editorSuggestWidget.selectedForeground":"#${bright_white}", //6 + "editorHoverWidget.foreground":"#${normal_white}", //5 + "editorHoverWidget.background":"#${normal_black}", //1 + "debugExceptionWidget.background":"#${normal_black}", //1 + "editorMarkerNavigation.background":"#${normal_black}", //1 + "editorMarkerNavigationError.background":"#${normal_red}", //8 + "editorMarkerNavigationWarning.background":"#${normal_yellow}", //A + "editorMarkerNavigationInfo.background":"#${normal_blue}", //D + "editorMarkerNavigationError.headerBackground":"#${normal_red}20", //8 + "editorMarkerNavigationWarning.headerBackground":"#${normal_yellow}20", //A + "editorMarkerNavigationInfo.headerBackground":"#${normal_cyan}20", //C + + // Peek view colors + "peekViewEditor.background":"#${normal_black}", //1 + "peekViewEditorGutter.background":"#${normal_black}", //1 + "peekViewEditor.matchHighlightBackground":"#${bright_red}6f", //9 + "peekViewResult.background":"#${normal_black}", //0 + "peekViewResult.fileForeground":"#${normal_white}", //5 + "peekViewResult.lineForeground":"#${bright_black}", //3 + "peekViewResult.matchHighlightBackground":"#${bright_red}6f", //9 + "peekViewResult.selectionBackground":"#${normal_black}", //2 + "peekViewResult.selectionForeground":"#${normal_white}", //5 + "peekViewTitle.background":"#${normal_black}", //2 + "peekViewTitleDescription.foreground":"#${bright_black}", //3 + "peekViewTitleLabel.foreground":"#${normal_white}", //5 + + // Merge conflicts colors + "merge.currentContentBackground":"#${normal_blue}40", //D + "merge.currentHeaderBackground":"#${normal_blue}40", //D + "merge.incomingContentBackground":"#${normal_green}60", //B + "merge.incomingHeaderBackground":"#${normal_green}60", //B + "editorOverviewRuler.currentContentForeground":"#${normal_blue}", //D + "editorOverviewRuler.incomingContentForeground":"#${normal_green}", //B + "editorOverviewRuler.commonContentForeground":"#${bright_magenta}", //F + + // Panel colors + "panel.background":"#${normal_black}", //0 + // Below is no longer supported as of 1.47 + "panel.dropBackground":"#${normal_black}6f", //1 + // Above is no longer supported as of 1.47 + "panel.dropBorder":"#${normal_black}6f", //1 + "panelTitle.activeForeground":"#${normal_white}", //5 + "panelTitle.inactiveForeground":"#${bright_black}", //3 + + // Status Bar colors + "statusBar.background":"#${normal_blue}", //D + "statusBar.foreground":"#${bright_white}", //7 + "statusBar.debuggingBackground":"#${bright_red}", //9 + "statusBar.debuggingForeground":"#${bright_white}", //7 + "statusBar.noFolderBackground":"#${normal_magenta}", //E + "statusBar.noFolderForeground":"#${bright_white}", //7 + "statusBarItem.activeBackground":"#${bright_black}", //3 + "statusBarItem.hoverBackground":"#${normal_black}", //2 + "statusBarItem.prominentForeground":"#${bright_white}", //7 + "statusBarItem.prominentBackground":"#${normal_magenta}", //E + "statusBarItem.prominentHoverBackground":"#${normal_red}", //8 + "statusBarItem.remoteBackground":"#${normal_green}", //B + "statusBarItem.remoteForeground":"#${bright_white}", //7 + "statusBarItem.errorBackground":"#${normal_red}", //8 + "statusBarItem.errorForeground":"#${bright_white}", //7 + "statusBarItem.warningBackground":"#${normal_yellow}", //A + "statusBarItem.warningForeground":"#${bright_white}", //7 + + // Title Bar colors + "titleBar.activeBackground":"#${normal_black}", //0 + "titleBar.activeForeground":"#${normal_white}", //5 + "titleBar.inactiveBackground":"#${normal_black}", //1 + "titleBar.inactiveForeground":"#${bright_black}", //3 + + // Menu Bar colors + "menubar.selectionForeground":"#${normal_white}", //5 + "menubar.selectionBackground":"#${normal_black}", //1 + "menu.foreground":"#${normal_white}", //5 + "menu.background":"#${normal_black}", //1 + "menu.selectionForeground":"#${normal_white}", //5 + "menu.selectionBackground":"#${normal_black}", //2 + "menu.separatorBackground":"#${bright_white}", //7 + + // Command Center colors + "commandCenter.foreground":"#${normal_white}", //5 + "commandCenter.activeForeground":"#${bright_white}", //7 + "commandCenter.background":"#${normal_black}", //0 + "commandCenter.activeBackground":"#${normal_black}", //1 + + // Notification colors + "notificationCenterHeader.foreground":"#${normal_white}", //5 + "notificationCenterHeader.background":"#${normal_black}", //1 + "notifications.foreground":"#${normal_white}", //5 + "notifications.background":"#${normal_black}", //2 + "notificationLink.foreground":"#${normal_blue}", //D + "notificationsErrorIcon.foreground":"#${normal_red}", //8 + "notificationsWarningIcon.foreground":"#${normal_yellow}", //A + "notificationsInfoIcon.foreground":"#${normal_blue}", //D + + // Below is no longer supported as of 1.21 + "notification.background":"#${normal_black}", //2 + "notification.foreground":"#${normal_white}", //5 + "notification.buttonBackground":"#${normal_blue}", //D + "notification.buttonHoverBackground":"#${normal_black}", //2 + "notification.buttonForeground":"#${bright_white}", //7 + "notification.infoBackground":"#${normal_cyan}", //C + "notification.infoForeground":"#${bright_white}", //7 + "notification.warningBackground":"#${normal_yellow}", //A + "notification.warningForeground":"#${bright_white}", //7 + "notification.errorBackground":"#${normal_red}", //8 + "notification.errorForeground":"#${bright_white}", //7 + // Above is no longer supported as of 1.21 + // + // Banner colors + "banner.background":"#${normal_black}", //2 + "banner.foreground":"#${normal_white}", //5 + "banner.iconForeground":"#${normal_blue}", //D + + // Extensions colors + "extensionButton.prominentBackground":"#${normal_green}", //B + "extensionButton.prominentForeground":"#${bright_white}", //7 + "extensionButton.prominentHoverBackground":"#${normal_black}", //2 + "extensionBadge.remoteBackground":"#${bright_red}", //9 + "extensionBadge.remoteForeground":"#${bright_white}", //7 + "extensionIcon.starForeground":"#${normal_yellow}", //A + "extensionIcon.verifiedForeground":"#${normal_blue}", //D + "extensionIcon.preReleaseForeground":"#${bright_red}", //9 + + // Quick picker colors + "pickerGroup.foreground":"#${bright_black}", //3 + "quickInput.background":"#${normal_black}", //1 + "quickInput.foreground":"#${normal_white}", //5 + "quickInputList.focusBackground":"#${bright_black}", //3 + "quickInputList.focusForeground":"#${bright_white}", //7 + "quickInputList.focusIconForeground":"#${bright_white}", //7 + + // Keybinding label colors + "keybindingLabel.background":"#${normal_black}", //2 + "keybindingLabel.foreground":"#${normal_white}", //5 + + // Keybinding shortcut table colors + "keybindingTable.headerBackground":"#${normal_black}", //2 + "keybindingTable.rowsBackground":"#${normal_black}", //1 + + // Integrated terminal colors + "terminal.background":"#${normal_black}", //0 + "terminal.foreground":"#${normal_white}", //5 + "terminal.ansiBlack":"#${normal_black}", //0 + "terminal.ansiRed":"#${normal_red}", //8 + "terminal.ansiGreen":"#${normal_green}", //B + "terminal.ansiYellow":"#${normal_yellow}", //A + "terminal.ansiBlue":"#${normal_blue}", //D + "terminal.ansiMagenta":"#${normal_magenta}", //E + "terminal.ansiCyan":"#${normal_cyan}", //C + "terminal.ansiWhite":"#${normal_white}", //5 + "terminal.ansiBrightBlack":"#${bright_black}", //3 + "terminal.ansiBrightRed":"#${normal_red}", //8 + "terminal.ansiBrightGreen":"#${normal_green}", //B + "terminal.ansiBrightYellow":"#${normal_yellow}", //A + "terminal.ansiBrightBlue":"#${normal_blue}", //D + "terminal.ansiBrightMagenta":"#${normal_magenta}", //E + "terminal.ansiBrightCyan":"#${normal_cyan}", //C + "terminal.ansiBrightWhite":"#${bright_white}", //7 + "terminalCursor.foreground":"#${normal_white}", //5 + "terminalOverviewRuler.cursorForeground": "#ff0000", + "terminalOverviewRuler.findMatchForeground": "#ff0000", + + // Debug colors + "debugToolBar.background":"#${normal_black}", //1 + "debugView.stateLabelForeground":"#${bright_white}", //7 + "debugView.stateLabelBackground":"#${normal_blue}", //D + "debugView.valueChangedHighlight":"#${normal_blue}", //D + "debugTokenExpression.name":"#${normal_magenta}", //E + "debugTokenExpression.value":"#${normal_white}", //5 + "debugTokenExpression.string":"#${normal_green}", //B + "debugTokenExpression.boolean":"#${bright_red}", //9 + "debugTokenExpression.number":"#${bright_red}", //9 + "debugTokenExpression.error":"#${normal_red}", //8 + + // Testing colors + "testing.iconFailed":"#${normal_red}", //8 + "testing.iconErrored":"#${bright_magenta}", //F + "testing.iconPassed":"#${normal_green}", //B + "testing.runAction":"#${bright_black}", //4 + "testing.iconQueued":"#${normal_yellow}", //A + "testing.iconUnset":"#${bright_black}", //4 + "testing.iconSkipped":"#${normal_magenta}", //E + + "testing.peekHeaderBackground":"#${normal_black}", //1 + "testing.message.error.decorationForeground":"#${normal_white}", //5 + "testing.message.error.lineBackground":"#${normal_red}20", //8 + "testing.message.info.decorationForeground":"#${normal_white}", //5 + "testing.message.info.lineBackground":"#${normal_blue}20", //D + + // Welcome page colors + "welcomePage.background":"#${normal_black}", //0 + + // Below is no longer supported as of 1.63 + "welcomePage.buttonBackground":"#${normal_black}", //1 + "welcomePage.buttonHoverBackground":"#${normal_black}", //2 + + // Above is no longer supported as of 1.63 + "welcomePage.progress.background":"#${bright_black}", //3 + "welcomePage.progress.foreground":"#${normal_blue}", //D + "welcomePage.tileBackground":"#${normal_black}", //1 + "welcomePage.tileHoverBackground":"#${normal_black}", //2 + "walkThrough.embeddedEditorBackground":"#${normal_black}", //0 + // Git colors + "gitDecoration.addedResourceForeground":"#${normal_green}", //B + "gitDecoration.modifiedResourceForeground":"#${normal_magenta}", //E + "gitDecoration.deletedResourceForeground":"#${normal_red}", //8 + "gitDecoration.renamedResourceForeground":"#${normal_cyan}", //C + "gitDecoration.stageModifiedResourceForeground":"#${normal_magenta}", //E + "gitDecoration.stageDeletedResourceForeground":"#${normal_red}", //8 + "gitDecoration.untrackedResourceForeground":"#${bright_red}", //9 + "gitDecoration.ignoredResourceForeground":"#${bright_black}", //3 + "gitDecoration.conflictingResourceForeground":"#${normal_yellow}", //A + "gitDecoration.submoduleResourceForeground":"#${bright_magenta}", //F + // Settings Editor colors + "settings.headerForeground":"#${normal_white}", //5 + "settings.modifiedItemIndicator":"#${normal_blue}", //D + + // Below was introduced temporarily in 1.26 + "settings.modifiedItemForeground":"#${normal_green}", //B + + // Above was introduced temporarily in 1.26 + "settings.dropdownBackground":"#${normal_black}", //1 + "settings.dropdownForeground":"#${normal_white}", //5 + + "settings.checkboxBackground":"#${normal_black}", //1 + "settings.checkboxForeground":"#${normal_white}", //5 + "settings.rowHoverBackground":"#${normal_black}", //2 + "settings.textInputBackground":"#${normal_black}", //1 + "settings.textInputForeground":"#${normal_white}", //5 + "settings.numberInputBackground":"#${normal_black}", //1 + "settings.numberInputForeground":"#${normal_white}", //5 + "settings.focusedRowBackground":"#${normal_black}", //2 + + "settings.headerBorder":"#${normal_white}", //5 + "settings.sashBorder":"#${normal_white}", //5 + // Breadcrumbs colors + "breadcrumb.foreground":"#${normal_white}", //5 + "breadcrumb.background":"#${normal_black}", //1 + "breadcrumb.focusForeground":"#${bright_white}", //6 + "breadcrumb.activeSelectionForeground":"#${bright_white}", //7 + "breadcrumbPicker.background":"#${normal_black}", //1 + // Snippets colors + "editor.snippetTabstopHighlightBackground":"#${normal_black}", //2 + "editor.snippetFinalTabstopHighlightBackground":"#${bright_black}", //3 + + // Symbol Icons colors + "symbolIcon.arrayForeground":"#${normal_white}", //5 + "symbolIcon.booleanForeground":"#${bright_red}", //9 + "symbolIcon.classForeground":"#${normal_yellow}", //A + "symbolIcon.colorForeground": "#f0f", + "symbolIcon.constantForeground":"#${bright_red}", //9 + "symbolIcon.constructorForeground":"#${normal_blue}", //D + "symbolIcon.enumeratorForeground":"#${bright_red}", //9 + "symbolIcon.enumeratorMemberForeground":"#${normal_blue}", //D + "symbolIcon.eventForeground":"#${normal_yellow}", //A + "symbolIcon.fieldForeground":"#${normal_red}", //8 + "symbolIcon.fileForeground":"#${normal_white}", //5 + "symbolIcon.folderForeground":"#${normal_white}", //5 + "symbolIcon.functionForeground":"#${normal_blue}", //D, + "symbolIcon.interfaceForeground":"#${normal_blue}", //D + "symbolIcon.keyForeground": "#f0f", + "symbolIcon.keywordForeground":"#${normal_magenta}", //E + "symbolIcon.methodForeground":"#${normal_blue}", //D + "symbolIcon.moduleForeground":"#${normal_white}", //5 + "symbolIcon.namespaceForeground":"#${normal_white}", //5 + "symbolIcon.nullForeground":"#${bright_magenta}", //F + "symbolIcon.numberForeground":"#${bright_red}", //9 + "symbolIcon.objectForeground": "#f0f", + "symbolIcon.operatorForeground": "#f0f", + "symbolIcon.packageForeground": "#f0f", + "symbolIcon.propertyForeground":"#${normal_white}", //5 + "symbolIcon.referenceForeground": "#f0f", + "symbolIcon.snippetForeground":"#${normal_white}", //5 + "symbolIcon.stringForeground":"#${normal_green}", //B + "symbolIcon.structForeground":"#${normal_yellow}", //A + "symbolIcon.textForeground":"#${normal_white}", //5 + "symbolIcon.typeParameterForeground": "#f0f", + "symbolIcon.unitForeground": "#f0f", + "symbolIcon.variableForeground":"#${normal_red}", //8 + + // Debug Icons colors + "debugIcon.breakpointForeground":"#${normal_red}", //8 + "debugIcon.breakpointDisabledForeground":"#${bright_black}", //4 + "debugIcon.breakpointUnverifiedForeground":"#${normal_black}", //2 + "debugIcon.breakpointCurrentStackframeForeground":"#${normal_yellow}", //A + "debugIcon.breakpointStackframeForeground":"#${bright_magenta}", //F + "debugIcon.startForeground":"#${normal_green}", //B + "debugIcon.pauseForeground":"#${normal_blue}", //D + "debugIcon.stopForeground":"#${normal_red}", //8 + "debugIcon.disconnectForeground":"#${normal_red}", //8 + "debugIcon.restartForeground":"#${normal_green}", //B + "debugIcon.stepOverForeground":"#${normal_blue}", //D + "debugIcon.stepIntoForeground":"#${normal_cyan}", //C + "debugIcon.stepOutForeground":"#${normal_magenta}", //E + "debugIcon.continueForeground":"#${normal_green}", //B + "debugIcon.stepBackForeground":"#${bright_magenta}", //F + "debugConsole.infoForeground":"#${normal_white}", //5 + "debugConsole.warningForeground":"#${normal_yellow}", //A + "debugConsole.errorForeground":"#${normal_red}", //8 + "debugConsole.sourceForeground":"#${normal_white}", //5 + "debugConsoleInputIcon.foreground":"#${normal_white}", //5 + // Notebook colors + "notebook.editorBackground":"#${normal_black}", //0 + "notebook.cellBorderColor":"#${bright_black}", //3 + "notebook.cellHoverBackground":"#${normal_black}", //1 + + "notebook.cellToolbarSeparator":"#${normal_black}", //2 + "notebook.cellEditorBackground":"#${normal_black}", //0 + "notebook.focusedCellBackground":"#${normal_black}", //2 + "notebook.focusedCellBorder":"#${normal_blue}", //D + "notebook.focusedEditorBorder":"#${normal_blue}", //D + "notebook.inactiveFocusedCellBorder":"#${bright_black}", //3 + + "notebook.selectedCellBackground":"#${normal_black}", //2 + + "notebookStatusErrorIcon.foreground":"#${normal_red}", //8 + "notebookStatusRunningIcon.foreground":"#${normal_cyan}", //C + "notebookStatusSuccessIcon.foreground":"#${normal_green}", //B + // Chart colors + "charts.foreground":"#${normal_white}", //5 + "charts.lines":"#${normal_white}", //5 + "charts.red":"#${normal_red}", //8 + "charts.blue":"#${normal_blue}", //D + "charts.yellow":"#${normal_yellow}", //A + "charts.orange":"#${bright_red}", //9 + "charts.green":"#${normal_green}", //B + "charts.purple":"#${normal_magenta}", //E + // Ports Colors + "ports.iconRunningProcessForeground":"#${bright_red}" //9 + }, + "tokenColors": [ + { + "name": "Comment", + "scope": ["comment", "punctuation.definition.comment"], + "settings": { + "fontStyle": "italic", + "foreground":"#${bright_black}" //3 + } + }, + { + "name": "Variables, Parameters", + "scope": [ + "variable", + "string constant.other.placeholder", + "entity.name.variable.parameter", + "entity.name.variable.local", + "variable.parameter" + ], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Properties", + "scope": ["variable.other.object.property"], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Colors", + "scope": ["constant.other.color"], + "settings": { + "foreground":"#${normal_green}" //B + } + }, + { + "name": "Invalid", + "scope": ["invalid", "invalid.illegal"], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Invalid - Deprecated", + "scope": ["invalid.deprecated"], + "settings": { + "foreground":"#${bright_magenta}" //F + } + }, + { + "name": "Keyword, Storage", + "scope": ["keyword", "storage.modifier"], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Keyword Control", + "scope": [ + "keyword.control", + "keyword.control.flow", + "keyword.control.from", + "keyword.control.import", + "keyword.control.as" + ], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Keyword", + "scope": [ + "keyword.other.using", + "keyword.other.namespace", + "keyword.other.class", + "keyword.other.new", + "keyword.other.event", + "keyword.other.this", + "keyword.other.await", + "keyword.other.var", + "keyword.other.package", + "keyword.other.import", + "variable.language.this", + "storage.type.ts" + ], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Types, Primitives", + "scope": ["keyword.type", "storage.type.primitive"], + "settings": { + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "Function", + "scope": ["storage.type.function"], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Operator, Misc", + "scope": [ + "constant.other.color", + "punctuation", + "punctuation.section.class.end", + "meta.tag", + "punctuation.definition.tag", + "punctuation.separator.inheritance.php", + "punctuation.definition.tag.html", + "punctuation.definition.tag.begin.html", + "punctuation.definition.tag.end.html", + "keyword.other.template", + "keyword.other.substitution" + ], + "settings": { + "foreground":"#${normal_white}" //5 + } + }, + { + "name": "Embedded", + "scope": ["punctuation.section.embedded", "variable.interpolation"], + "settings": { + "foreground":"#${bright_magenta}" //F + } + }, + { + "name": "Tag", + "scope": [ + "entity.name.tag", + "meta.tag.sgml", + "markup.deleted.git_gutter" + ], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Function, Special Method", + "scope": [ + "entity.name.function", + "meta.function-call", + "variable.function", + "support.function", + "keyword.other.special-method" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Block Level Variables", + "scope": ["meta.block variable.other"], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Other Variable, String Link", + "scope": ["support.other.variable", "string.other.link"], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Number, Constant, Function Argument, Tag Attribute, Embedded", + "scope": [ + "constant.numeric", + "constant.language", + "support.constant", + "constant.character", + "constant.escape", + "keyword.other.unit", + "keyword.other" + ], + "settings": { + "foreground":"#${bright_red}" //9 + } + }, + { + "name": "String, Symbols, Inherited Class, Markup Heading", + "scope": [ + "string", + "constant.other.symbol", + "constant.other.key", + "entity.other.inherited-class", + "markup.heading", + "markup.inserted.git_gutter", + "meta.group.braces.curly constant.other.object.key.js string.unquoted.label.js" + ], + "settings": { + "fontStyle": "", + "foreground":"#${normal_green}" //B + } + }, + { + "name": "Class, Support", + "scope": [ + "entity.name", + "support.type", + "support.class", + "support.other.namespace.use.php", + "meta.use.php", + "support.other.namespace.php", + "markup.changed.git_gutter", + "support.type.sys-types" + ], + "settings": { + "foreground":"#${normal_yellow}" //A + } + }, + { + "name": "Storage Type, Import Class", + "scope": [ + "storage.type", + "storage.modifier.package", + "storage.modifier.import" + ], + "settings": { + "foreground":"#${normal_yellow}" //A + } + }, + { + "name": "Fields", + "scope": ["entity.name.variable.field"], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Entity Types", + "scope": ["support.type"], + "settings": { + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "CSS Class and Support", + "scope": [ + "source.css support.type.property-name", + "source.sass support.type.property-name", + "source.scss support.type.property-name", + "source.less support.type.property-name", + "source.stylus support.type.property-name", + "source.postcss support.type.property-name" + ], + "settings": { + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "Sub-methods", + "scope": [ + "entity.name.module.js", + "variable.import.parameter.js", + "variable.other.class.js" + ], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Language methods", + "scope": ["variable.language"], + "settings": { + "fontStyle": "italic", + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "entity.name.method.js", + "scope": ["entity.name.method.js"], + "settings": { + "fontStyle": "italic", + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "meta.method.js", + "scope": [ + "meta.class-method.js entity.name.function.js", + "variable.function.constructor" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Attributes", + "scope": ["entity.other.attribute-name"], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "HTML Attributes", + "scope": [ + "text.html.basic entity.other.attribute-name.html", + "text.html.basic entity.other.attribute-name" + ], + "settings": { + "fontStyle": "italic", + "foreground":"#${normal_yellow}" //A + } + }, + { + "name": "CSS Classes", + "scope": ["entity.other.attribute-name.class"], + "settings": { + "foreground":"#${normal_yellow}" //A + } + }, + { + "name": "CSS ID's", + "scope": ["source.sass keyword.control"], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Inserted", + "scope": ["markup.inserted"], + "settings": { + "foreground":"#${normal_green}" //B + } + }, + { + "name": "Deleted", + "scope": ["markup.deleted"], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Changed", + "scope": ["markup.changed"], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Regular Expressions", + "scope": ["string.regexp"], + "settings": { + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "Escape Characters", + "scope": ["constant.character.escape"], + "settings": { + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "URL", + "scope": ["*url*", "*link*", "*uri*"], + "settings": { + "fontStyle": "underline" + } + }, + { + "name": "Decorators", + "scope": [ + "tag.decorator.js entity.name.tag.js", + "tag.decorator.js punctuation.definition.tag.js" + ], + "settings": { + "fontStyle": "italic", + "foreground":"#${normal_blue}" // D + } + }, + { + "name": "ES7 Bind Operator", + "scope": [ + "source.js constant.other.object.key.js string.unquoted.label.js" + ], + "settings": { + "fontStyle": "italic", + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "JSON Key - Level 0", + "scope": [ + "source.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 1", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 2", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 3", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 4", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 5", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 6", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 7", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 8", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Markdown - Plain", + "scope": [ + "text.html.markdown", + "punctuation.definition.list_item.markdown" + ], + "settings": { + "foreground":"#${normal_white}" //5 + } + }, + { + "name": "Markdown - Markup Raw Inline", + "scope": ["text.html.markdown markup.inline.raw.markdown"], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Markdown - Markup Raw Inline Punctuation", + "scope": [ + "text.html.markdown markup.inline.raw.markdown punctuation.definition.raw.markdown" + ], + "settings": { + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "Markdown - Line Break", + "scope": ["text.html.markdown meta.dummy.line-break"], + "settings": { + "foreground":"#${bright_black}" //3 + } + }, + { + "name": "Markdown - Heading", + "scope": [ + "markdown.heading", + "markup.heading | markup.heading entity.name", + "markup.heading.markdown punctuation.definition.heading.markdown" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Markup - Italic", + "scope": ["markup.italic"], + "settings": { + "fontStyle": "italic", + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Markup - Bold", + "scope": ["markup.bold", "markup.bold string"], + "settings": { + "fontStyle": "bold", + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Markup - Bold-Italic", + "scope": [ + "markup.bold markup.italic", + "markup.italic markup.bold", + "markup.quote markup.bold", + "markup.bold markup.italic string", + "markup.italic markup.bold string", + "markup.quote markup.bold string" + ], + "settings": { + "fontStyle": "bold", + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Markup - Underline", + "scope": ["markup.underline"], + "settings": { + "fontStyle": "underline", + "foreground":"#${bright_red}" //9 + } + }, + { + "name": "Markdown - Blockquote", + "scope": ["markup.quote punctuation.definition.blockquote.markdown"], + "settings": { + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "Markup - Quote", + "scope": ["markup.quote"], + "settings": { + "fontStyle": "italic" + } + }, + { + "name": "Markdown - Link", + "scope": ["string.other.link.title.markdown"], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Markdown - Link Description", + "scope": ["string.other.link.description.title.markdown"], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Markdown - Link Anchor", + "scope": ["constant.other.reference.link.markdown"], + "settings": { + "foreground":"#${normal_yellow}" //A + } + }, + { + "name": "Markup - Raw Block", + "scope": ["markup.raw.block"], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Markdown - Raw Block Fenced", + "scope": ["markup.raw.block.fenced.markdown"], + "settings": { + "foreground": "#00000050" + } + }, + { + "name": "Markdown - Fenced Bode Block", + "scope": ["punctuation.definition.fenced.markdown"], + "settings": { + "foreground": "#00000050" + } + }, + { + "name": "Markdown - Fenced Code Block Variable", + "scope": [ + "markup.raw.block.fenced.markdown", + "variable.language.fenced.markdown" + ], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Markdown - Fenced Language", + "scope": ["variable.language.fenced.markdown"], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Markdown - Separator", + "scope": ["meta.separator"], + "settings": { + "fontStyle": "bold", + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "Markup - Table", + "scope": ["markup.table"], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "scope": "token.info-token", + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "scope": "token.warn-token", + "settings": { + "foreground":"#${normal_yellow}" //A + } + }, + { + "scope": "token.error-token", + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "scope": "token.debug-token", + "settings": { + "foreground":"#${normal_magenta}" //E + } + } + ] +} +EOF +fi + +extension_name="tintedtheming.base16-tinted-themes" + +install_extension() { + is_extension_installed=$(code --list-extensions | grep "${extension_name}") + if [[ -z "$is_extension_installed" ]]; then + code --install-extension $extension_name + sleep 3 + fi +} + +install_path="" +vscode_paths=( + "$HOME/.vscode-oss/extensions/" + "$HOME/.vscode/extensions/" +) +find_extension_dir() { + for path in "${vscode_paths[@]}"; do + if [[ -d "$path" ]]; then + install_path=$(find "$path" -maxdepth 1 -type d -name "${extension_name}-*" | head -n1) + fi + done +} + +modify_extension_manifest() { + omarchy_entry=$(cat $install_path/package.json | jq 'first(.contributes.themes[] | select(.label == "Omarchy"))') + if [[ -z "$omarchy_entry" ]]; then + omarchy_entry='{"label": "Omarchy", "uiTheme": "vs-dark", "path": "./themes/base16/omarchy.json"}' + new_manifest=$(cat "${install_path}/package.json" | jq --argjson theme "$omarchy_entry" '.contributes.themes += [$theme]') + echo "$new_manifest" > "${install_path}/package.json" + fi +} + +install_extension +find_extension_dir +modify_extension_manifest + +install_location="$install_path/themes/base16/omarchy.json" +cp "$output_file" "$install_location" + +require_restart "code" +success "VS Code theme updated!" +exit 0 diff --git a/config/omarchy/hooks/theme-set.d/30-windsurf.sh b/config/omarchy/hooks/theme-set.d/30-windsurf.sh new file mode 100755 index 0000000..69d0c1e --- /dev/null +++ b/config/omarchy/hooks/theme-set.d/30-windsurf.sh @@ -0,0 +1,1294 @@ +#!/bin/bash +output_file="$HOME/.config/omarchy/current/theme/vscode_colors.json" + +if ! command -v windsurf >/dev/null 2>&1; then + skipped "Windsurf" +fi + +# check current theme for vscode.json +if [[ -f "$HOME/.config/omarchy/current/theme/vscode.json" ]]; then + exit 0 +fi + +if [[ ! -f "$output_file" ]]; then + cat > "$output_file" << EOF +{ + "\$schema": "vscode://schemas/color-theme", + "name": "Omarchy", + "type": "", + "colors": { + // Base colors + "foreground":"#${normal_white}", //5 + "disabledForeground":"#${bright_black}", //4 + "widget.shadow":"#${normal_black}", //0 + "selection.background":"#${normal_blue}", //D + "descriptionForeground":"#${bright_black}", //3 + "errorForeground":"#${normal_red}", //8 + "icon.foreground":"#${bright_black}", //4 + + // Text colors + "textBlockQuote.background":"#${normal_black}", //1 + "textBlockQuote.border":"#${normal_blue}", //D + "textCodeBlock.background":"#${normal_black}", //0 + "textLink.activeForeground":"#${normal_cyan}", //C + "textLink.foreground":"#${normal_blue}", //D + "textPreformat.foreground":"#${normal_blue}", //D + "textSeparator.foreground": "#f0f", + + // Action colors + "toolbar.hoverBackground":"#${normal_black}", //2 + "toolbar.activeBackground":"#${bright_black}", //3 + + // Button control + "button.background":"#${normal_blue}", //D + "button.foreground":"#${bright_white}", //7 + "button.hoverBackground":"#${bright_black}", //4 + "button.secondaryForeground":"#${bright_white}", //7 + "button.secondaryBackground":"#${normal_magenta}", //E + "button.secondaryHoverBackground":"#${bright_black}", //4 + "checkbox.background":"#${normal_black}", //0 + "checkbox.foreground":"#${normal_white}", //5 + + // Dropdown control + "dropdown.background":"#${normal_black}", //0 + "dropdown.listBackground":"#${normal_black}", //0 + "dropdown.foreground":"#${normal_white}", //5 + + // Input control + "input.background":"#${normal_black}", //0 + "input.foreground":"#${normal_white}", //5 + "input.placeholderForeground":"#${bright_black}", //3 + "inputOption.activeBackground":"#${normal_black}", //2 + "inputOption.activeBorder":"#${bright_red}", //9 + "inputOption.activeForeground":"#${normal_white}", //5 + "inputValidation.errorBackground":"#${normal_red}", //8 + "inputValidation.errorForeground":"#${normal_white}", //5 + "inputValidation.errorBorder":"#${normal_red}", //8 + "inputValidation.infoBackground":"#${normal_blue}", //D + "inputValidation.infoForeground":"#${normal_white}", //5 + "inputValidation.infoBorder":"#${normal_blue}", //D + "inputValidation.warningBackground":"#${normal_yellow}", //A + "inputValidation.warningForeground":"#${normal_white}", //5 + "inputValidation.warningBorder":"#${normal_yellow}", //A + + // Scrollbar control + "scrollbar.shadow":"#${normal_black}", //1 + "scrollbarSlider.activeBackground":"#${bright_black}6f", //4 + "scrollbarSlider.background":"#${normal_black}6f", //2 + "scrollbarSlider.hoverBackground":"#${bright_black}6f", //3 + + // Badge + "badge.background":"#${normal_black}", //0 + "badge.foreground":"#${normal_white}", //5 + + // Progress bar + "progressBar.background":"#${bright_black}", //3 + + // Lists and trees + "list.activeSelectionBackground":"#${normal_black}", //2 + "list.activeSelectionForeground":"#${normal_white}", //5 + "list.dropBackground":"#${bright_white}", //7 + "list.focusBackground":"#${normal_black}", //2 + "list.focusForeground":"#${normal_white}", //5 + "list.highlightForeground":"#${bright_white}", //7 + "list.hoverBackground":"#${bright_black}", //3 + "list.hoverForeground":"#${normal_white}", //5 + "list.inactiveSelectionBackground":"#${normal_black}", //2 + "list.inactiveSelectionForeground":"#${normal_white}", //5 + "list.inactiveFocusBackground":"#${normal_black}", //2 + "list.invalidItemForeground":"#${normal_red}", //8 + "list.errorForeground":"#${normal_red}", //8 + "list.warningForeground":"#${normal_yellow}", //A + "listFilterWidget.background":"#${normal_black}", //0 + "listFilterWidget.noMatchesOutline":"#${normal_red}", //8 + "list.filterMatchBackground":"#${normal_black}", //2 + "tree.indentGuidesStroke":"#${normal_white}", //5 + + // Activity Bar + "activityBar.background":"#${normal_black}", //0 + // Below is no longer supported as of 1.52 + "activityBar.dropBackground":"#${bright_white}", //7 + // Above is no longer supported as of 1.52 + "activityBar.foreground":"#${normal_white}", //5 + "activityBar.inactiveForeground":"#${bright_black}", //3 + "activityBarBadge.background":"#${normal_blue}", //D + "activityBarBadge.foreground":"#${bright_white}", //7 + "activityBar.activeBackground":"#${normal_black}", //2 + + // Side Bar + "sideBar.background":"#${normal_black}", //1 + "sideBar.foreground":"#${normal_white}", //5 + "sideBar.dropBackground":"#${normal_black}6f", //2 + "sideBarTitle.foreground":"#${normal_white}", //5 + "sideBarSectionHeader.background":"#${bright_black}", //3 + "sideBarSectionHeader.foreground":"#${normal_white}", //5 + + //Minimap + "minimap.findMatchHighlight":"#${normal_yellow}6f", //A + "minimap.selectionHighlight":"#${normal_black}6f", //2 + "minimap.errorHighlight":"#${normal_red}", //8 + "minimap.warningHighlight":"#${normal_yellow}", //A + "minimap.background":"#${normal_black}", //0 + "minimap.selectionOccurrenceHighlight":"#${bright_black}", //3 + "minimapGutter.addedBackground":"#${normal_green}", //B + "minimapGutter.modifiedBackground":"#${normal_magenta}", //E + "minimapGutter.deletedBackground":"#${normal_red}", //8 + + // Editor Groups & Tabs + // Below is no longer supported as of 1.24 + "editorGroup.background":"#${normal_black}", //0 + // Above is no longer supported as of 1.24 + "editorGroup.dropBackground":"#${normal_black}6f", //2 + "editorGroupHeader.noTabsBackground":"#${normal_black}", //1 + "editorGroupHeader.tabsBackground":"#${normal_black}", //1 + "editorGroup.emptyBackground":"#${normal_black}", //0 + "editorGroup.dropIntoPromptForeground":"#${bright_white}", //5 + "editorGroup.dropIntoPromptBackground":"#${normal_black}", //0 + "tab.activeBackground":"#${normal_black}", //0 + "tab.unfocusedActiveBackground":"#${normal_black}", //0 + "tab.activeForeground":"#${normal_white}", //5 + "tab.inactiveBackground":"#${normal_black}", //1 + "tab.inactiveForeground":"#${bright_black}", //3 + "tab.unfocusedActiveForeground":"#${bright_black}", //4 + "tab.unfocusedInactiveForeground":"#${bright_black}", //3 + "tab.hoverBackground":"#${normal_black}", //2 + "tab.unfocusedHoverBackground":"#${normal_black}", //2 + + "tab.activeModifiedBorder":"#${normal_blue}", //D + "tab.inactiveModifiedBorder":"#${normal_blue}", //D + "tab.unfocusedActiveModifiedBorder":"#${normal_blue}", //D + "tab.unfocusedInactiveModifiedBorder":"#${normal_blue}", //D + "editorPane.background":"#${normal_black}", //0 + + // Editor colors + "editor.background":"#${normal_black}", //0 + "editor.foreground":"#${normal_white}", //5 + "editorLineNumber.foreground":"#${bright_black}", //3 + "editorLineNumber.activeForeground":"#${bright_black}", //4 + "editorCursor.foreground":"#${normal_white}", //5 + "editor.selectionBackground":"#${normal_black}", //2 + "editor.inactiveSelectionBackground":"#${normal_black}", //2 + "editor.selectionHighlightBackground":"#${normal_black}", //1 + "editor.wordHighlightBackground":"#${normal_black}6f", //2 + "editor.wordHighlightStrongBackground":"#${bright_black}6f", //3 + "editor.findMatchBackground":"#${normal_yellow}6f", //A + "editor.findMatchHighlightBackground":"#${bright_red}6f", //9 + "editor.findRangeHighlightBackground":"#${normal_black}6f", //1 + "searchEditor.findMatchBackground":"#${normal_yellow}6f", //A + "editor.hoverHighlightBackground":"#${normal_black}6f", //2 + "editor.lineHighlightBackground":"#${normal_black}", //1 + "editorLink.activeForeground":"#${normal_blue}", //D + "editor.rangeHighlightBackground":"#${normal_black}6f", //1 + "editorWhitespace.foreground":"#${bright_black}", //3 + "editorIndentGuide.background":"#${bright_black}", //3 + "editorIndentGuide.activeBackground":"#${bright_black}", //4 + "editorInlayHint.background":"#${normal_black}", //1 + "editorInlayHint.foreground":"#${normal_white}", //5 + "editorInlayHint.typeBackground":"#${normal_black}", //1 + "editorInlayHint.typeForeground":"#${normal_white}", //5 + "editorInlayHint.parameterBackground":"#${normal_black}", //1 + "editorInlayHint.parameterForeground":"#${normal_white}", //5 + "editorRuler.foreground":"#${bright_black}", //3 + + /// CodeLens + "editorCodeLens.foreground":"#${normal_black}", //2 + + /// Lightbulb + "editorLightBulb.foreground":"#${normal_yellow}", //A + "editorLightBulbAutoFix.foreground":"#${normal_blue}", //D + + /// Bracket matches + "editorBracketMatch.background":"#${normal_black}", //2 + + /// Bracket pair colorization + "editorBracketHighlight.foreground1":"#${normal_red}", //8 + "editorBracketHighlight.foreground2":"#${bright_red}", //9 + "editorBracketHighlight.foreground3":"#${normal_yellow}", //A + "editorBracketHighlight.foreground4":"#${normal_green}", //B + "editorBracketHighlight.foreground5":"#${normal_blue}", //D + "editorBracketHighlight.foreground6":"#${normal_magenta}", //E + "editorBracketHighlight.unexpectedBracket.foreground":"#${bright_magenta}", //F + "editorOverviewRuler.findMatchForeground":"#${normal_yellow}6f", //A + "editorOverviewRuler.rangeHighlightForeground":"#${bright_black}6f", //3 + "editorOverviewRuler.selectionHighlightForeground":"#${normal_black}6f", //2 + "editorOverviewRuler.wordHighlightForeground":"#${bright_white}6f", //7 + "editorOverviewRuler.wordHighlightStrongForeground":"#${normal_blue}6f", //D + "editorOverviewRuler.modifiedForeground":"#${normal_magenta}", //E + "editorOverviewRuler.addedForeground":"#${normal_green}", //B + "editorOverviewRuler.deletedForeground":"#${normal_red}", //8 + "editorOverviewRuler.errorForeground":"#${normal_red}", //8 + "editorOverviewRuler.warningForeground":"#${normal_yellow}", //A + "editorOverviewRuler.infoForeground":"#${normal_cyan}", //C + "editorOverviewRuler.bracketMatchForeground":"#${bright_white}", //6 + + /// Errors and warnings + "editorError.foreground":"#${normal_red}", //8 + "editorWarning.foreground":"#${normal_yellow}", //A + "editorInfo.foreground":"#${normal_cyan}", //C + "editorHint.foreground":"#${normal_blue}", //D + "problemsErrorIcon.foreground":"#${normal_red}", //8 + "problemsWarningIcon.foreground":"#${normal_yellow}", //A + "problemsInfoIcon.foreground":"#${normal_cyan}", //C + + /// Gutter + "editorGutter.background":"#${normal_black}", //0 + "editorGutter.modifiedBackground":"#${normal_magenta}", //E + "editorGutter.addedBackground":"#${normal_green}", //B + "editorGutter.deletedBackground":"#${normal_red}", //8 + "editorGutter.commentRangeForeground":"#${bright_black}", //4 + "editorGutter.foldingControlForeground":"#${normal_white}", //5 + + // Diff editor colors + "diffEditor.insertedTextBackground":"#${normal_green}20", + "diffEditor.removedTextBackground":"#${normal_red}20", + "diffEditor.diagonalFill":"#${normal_black}", //2 + + // Editor widget colors + "editorWidget.foreground":"#${normal_white}", //5 + "editorWidget.background":"#${normal_black}", //0 + "editorSuggestWidget.background":"#${normal_black}", //1 + "editorSuggestWidget.foreground":"#${normal_white}", //5 + "editorSuggestWidget.focusHighlightForeground":"#${bright_white}", //7 + "editorSuggestWidget.highlightForeground":"#${normal_blue}", //D + "editorSuggestWidget.selectedBackground":"#${normal_black}", //2 + "editorSuggestWidget.selectedForeground":"#${bright_white}", //6 + "editorHoverWidget.foreground":"#${normal_white}", //5 + "editorHoverWidget.background":"#${normal_black}", //1 + "debugExceptionWidget.background":"#${normal_black}", //1 + "editorMarkerNavigation.background":"#${normal_black}", //1 + "editorMarkerNavigationError.background":"#${normal_red}", //8 + "editorMarkerNavigationWarning.background":"#${normal_yellow}", //A + "editorMarkerNavigationInfo.background":"#${normal_blue}", //D + "editorMarkerNavigationError.headerBackground":"#${normal_red}20", //8 + "editorMarkerNavigationWarning.headerBackground":"#${normal_yellow}20", //A + "editorMarkerNavigationInfo.headerBackground":"#${normal_cyan}20", //C + + // Peek view colors + "peekViewEditor.background":"#${normal_black}", //1 + "peekViewEditorGutter.background":"#${normal_black}", //1 + "peekViewEditor.matchHighlightBackground":"#${bright_red}6f", //9 + "peekViewResult.background":"#${normal_black}", //0 + "peekViewResult.fileForeground":"#${normal_white}", //5 + "peekViewResult.lineForeground":"#${bright_black}", //3 + "peekViewResult.matchHighlightBackground":"#${bright_red}6f", //9 + "peekViewResult.selectionBackground":"#${normal_black}", //2 + "peekViewResult.selectionForeground":"#${normal_white}", //5 + "peekViewTitle.background":"#${normal_black}", //2 + "peekViewTitleDescription.foreground":"#${bright_black}", //3 + "peekViewTitleLabel.foreground":"#${normal_white}", //5 + + // Merge conflicts colors + "merge.currentContentBackground":"#${normal_blue}40", //D + "merge.currentHeaderBackground":"#${normal_blue}40", //D + "merge.incomingContentBackground":"#${normal_green}60", //B + "merge.incomingHeaderBackground":"#${normal_green}60", //B + "editorOverviewRuler.currentContentForeground":"#${normal_blue}", //D + "editorOverviewRuler.incomingContentForeground":"#${normal_green}", //B + "editorOverviewRuler.commonContentForeground":"#${bright_magenta}", //F + + // Panel colors + "panel.background":"#${normal_black}", //0 + // Below is no longer supported as of 1.47 + "panel.dropBackground":"#${normal_black}6f", //1 + // Above is no longer supported as of 1.47 + "panel.dropBorder":"#${normal_black}6f", //1 + "panelTitle.activeForeground":"#${normal_white}", //5 + "panelTitle.inactiveForeground":"#${bright_black}", //3 + + // Status Bar colors + "statusBar.background":"#${normal_blue}", //D + "statusBar.foreground":"#${bright_white}", //7 + "statusBar.debuggingBackground":"#${bright_red}", //9 + "statusBar.debuggingForeground":"#${bright_white}", //7 + "statusBar.noFolderBackground":"#${normal_magenta}", //E + "statusBar.noFolderForeground":"#${bright_white}", //7 + "statusBarItem.activeBackground":"#${bright_black}", //3 + "statusBarItem.hoverBackground":"#${normal_black}", //2 + "statusBarItem.prominentForeground":"#${bright_white}", //7 + "statusBarItem.prominentBackground":"#${normal_magenta}", //E + "statusBarItem.prominentHoverBackground":"#${normal_red}", //8 + "statusBarItem.remoteBackground":"#${normal_green}", //B + "statusBarItem.remoteForeground":"#${bright_white}", //7 + "statusBarItem.errorBackground":"#${normal_red}", //8 + "statusBarItem.errorForeground":"#${bright_white}", //7 + "statusBarItem.warningBackground":"#${normal_yellow}", //A + "statusBarItem.warningForeground":"#${bright_white}", //7 + + // Title Bar colors + "titleBar.activeBackground":"#${normal_black}", //0 + "titleBar.activeForeground":"#${normal_white}", //5 + "titleBar.inactiveBackground":"#${normal_black}", //1 + "titleBar.inactiveForeground":"#${bright_black}", //3 + + // Menu Bar colors + "menubar.selectionForeground":"#${normal_white}", //5 + "menubar.selectionBackground":"#${normal_black}", //1 + "menu.foreground":"#${normal_white}", //5 + "menu.background":"#${normal_black}", //1 + "menu.selectionForeground":"#${normal_white}", //5 + "menu.selectionBackground":"#${normal_black}", //2 + "menu.separatorBackground":"#${bright_white}", //7 + + // Command Center colors + "commandCenter.foreground":"#${normal_white}", //5 + "commandCenter.activeForeground":"#${bright_white}", //7 + "commandCenter.background":"#${normal_black}", //0 + "commandCenter.activeBackground":"#${normal_black}", //1 + + // Notification colors + "notificationCenterHeader.foreground":"#${normal_white}", //5 + "notificationCenterHeader.background":"#${normal_black}", //1 + "notifications.foreground":"#${normal_white}", //5 + "notifications.background":"#${normal_black}", //2 + "notificationLink.foreground":"#${normal_blue}", //D + "notificationsErrorIcon.foreground":"#${normal_red}", //8 + "notificationsWarningIcon.foreground":"#${normal_yellow}", //A + "notificationsInfoIcon.foreground":"#${normal_blue}", //D + + // Below is no longer supported as of 1.21 + "notification.background":"#${normal_black}", //2 + "notification.foreground":"#${normal_white}", //5 + "notification.buttonBackground":"#${normal_blue}", //D + "notification.buttonHoverBackground":"#${normal_black}", //2 + "notification.buttonForeground":"#${bright_white}", //7 + "notification.infoBackground":"#${normal_cyan}", //C + "notification.infoForeground":"#${bright_white}", //7 + "notification.warningBackground":"#${normal_yellow}", //A + "notification.warningForeground":"#${bright_white}", //7 + "notification.errorBackground":"#${normal_red}", //8 + "notification.errorForeground":"#${bright_white}", //7 + // Above is no longer supported as of 1.21 + // + // Banner colors + "banner.background":"#${normal_black}", //2 + "banner.foreground":"#${normal_white}", //5 + "banner.iconForeground":"#${normal_blue}", //D + + // Extensions colors + "extensionButton.prominentBackground":"#${normal_green}", //B + "extensionButton.prominentForeground":"#${bright_white}", //7 + "extensionButton.prominentHoverBackground":"#${normal_black}", //2 + "extensionBadge.remoteBackground":"#${bright_red}", //9 + "extensionBadge.remoteForeground":"#${bright_white}", //7 + "extensionIcon.starForeground":"#${normal_yellow}", //A + "extensionIcon.verifiedForeground":"#${normal_blue}", //D + "extensionIcon.preReleaseForeground":"#${bright_red}", //9 + + // Quick picker colors + "pickerGroup.foreground":"#${bright_black}", //3 + "quickInput.background":"#${normal_black}", //1 + "quickInput.foreground":"#${normal_white}", //5 + "quickInputList.focusBackground":"#${bright_black}", //3 + "quickInputList.focusForeground":"#${bright_white}", //7 + "quickInputList.focusIconForeground":"#${bright_white}", //7 + + // Keybinding label colors + "keybindingLabel.background":"#${normal_black}", //2 + "keybindingLabel.foreground":"#${normal_white}", //5 + + // Keybinding shortcut table colors + "keybindingTable.headerBackground":"#${normal_black}", //2 + "keybindingTable.rowsBackground":"#${normal_black}", //1 + + // Integrated terminal colors + "terminal.background":"#${normal_black}", //0 + "terminal.foreground":"#${normal_white}", //5 + "terminal.ansiBlack":"#${normal_black}", //0 + "terminal.ansiRed":"#${normal_red}", //8 + "terminal.ansiGreen":"#${normal_green}", //B + "terminal.ansiYellow":"#${normal_yellow}", //A + "terminal.ansiBlue":"#${normal_blue}", //D + "terminal.ansiMagenta":"#${normal_magenta}", //E + "terminal.ansiCyan":"#${normal_cyan}", //C + "terminal.ansiWhite":"#${normal_white}", //5 + "terminal.ansiBrightBlack":"#${bright_black}", //3 + "terminal.ansiBrightRed":"#${normal_red}", //8 + "terminal.ansiBrightGreen":"#${normal_green}", //B + "terminal.ansiBrightYellow":"#${normal_yellow}", //A + "terminal.ansiBrightBlue":"#${normal_blue}", //D + "terminal.ansiBrightMagenta":"#${normal_magenta}", //E + "terminal.ansiBrightCyan":"#${normal_cyan}", //C + "terminal.ansiBrightWhite":"#${bright_white}", //7 + "terminalCursor.foreground":"#${normal_white}", //5 + "terminalOverviewRuler.cursorForeground": "#ff0000", + "terminalOverviewRuler.findMatchForeground": "#ff0000", + + // Debug colors + "debugToolBar.background":"#${normal_black}", //1 + "debugView.stateLabelForeground":"#${bright_white}", //7 + "debugView.stateLabelBackground":"#${normal_blue}", //D + "debugView.valueChangedHighlight":"#${normal_blue}", //D + "debugTokenExpression.name":"#${normal_magenta}", //E + "debugTokenExpression.value":"#${normal_white}", //5 + "debugTokenExpression.string":"#${normal_green}", //B + "debugTokenExpression.boolean":"#${bright_red}", //9 + "debugTokenExpression.number":"#${bright_red}", //9 + "debugTokenExpression.error":"#${normal_red}", //8 + + // Testing colors + "testing.iconFailed":"#${normal_red}", //8 + "testing.iconErrored":"#${bright_magenta}", //F + "testing.iconPassed":"#${normal_green}", //B + "testing.runAction":"#${bright_black}", //4 + "testing.iconQueued":"#${normal_yellow}", //A + "testing.iconUnset":"#${bright_black}", //4 + "testing.iconSkipped":"#${normal_magenta}", //E + + "testing.peekHeaderBackground":"#${normal_black}", //1 + "testing.message.error.decorationForeground":"#${normal_white}", //5 + "testing.message.error.lineBackground":"#${normal_red}20", //8 + "testing.message.info.decorationForeground":"#${normal_white}", //5 + "testing.message.info.lineBackground":"#${normal_blue}20", //D + + // Welcome page colors + "welcomePage.background":"#${normal_black}", //0 + + // Below is no longer supported as of 1.63 + "welcomePage.buttonBackground":"#${normal_black}", //1 + "welcomePage.buttonHoverBackground":"#${normal_black}", //2 + + // Above is no longer supported as of 1.63 + "welcomePage.progress.background":"#${bright_black}", //3 + "welcomePage.progress.foreground":"#${normal_blue}", //D + "welcomePage.tileBackground":"#${normal_black}", //1 + "welcomePage.tileHoverBackground":"#${normal_black}", //2 + "walkThrough.embeddedEditorBackground":"#${normal_black}", //0 + // Git colors + "gitDecoration.addedResourceForeground":"#${normal_green}", //B + "gitDecoration.modifiedResourceForeground":"#${normal_magenta}", //E + "gitDecoration.deletedResourceForeground":"#${normal_red}", //8 + "gitDecoration.renamedResourceForeground":"#${normal_cyan}", //C + "gitDecoration.stageModifiedResourceForeground":"#${normal_magenta}", //E + "gitDecoration.stageDeletedResourceForeground":"#${normal_red}", //8 + "gitDecoration.untrackedResourceForeground":"#${bright_red}", //9 + "gitDecoration.ignoredResourceForeground":"#${bright_black}", //3 + "gitDecoration.conflictingResourceForeground":"#${normal_yellow}", //A + "gitDecoration.submoduleResourceForeground":"#${bright_magenta}", //F + // Settings Editor colors + "settings.headerForeground":"#${normal_white}", //5 + "settings.modifiedItemIndicator":"#${normal_blue}", //D + + // Below was introduced temporarily in 1.26 + "settings.modifiedItemForeground":"#${normal_green}", //B + + // Above was introduced temporarily in 1.26 + "settings.dropdownBackground":"#${normal_black}", //1 + "settings.dropdownForeground":"#${normal_white}", //5 + + "settings.checkboxBackground":"#${normal_black}", //1 + "settings.checkboxForeground":"#${normal_white}", //5 + "settings.rowHoverBackground":"#${normal_black}", //2 + "settings.textInputBackground":"#${normal_black}", //1 + "settings.textInputForeground":"#${normal_white}", //5 + "settings.numberInputBackground":"#${normal_black}", //1 + "settings.numberInputForeground":"#${normal_white}", //5 + "settings.focusedRowBackground":"#${normal_black}", //2 + + "settings.headerBorder":"#${normal_white}", //5 + "settings.sashBorder":"#${normal_white}", //5 + // Breadcrumbs colors + "breadcrumb.foreground":"#${normal_white}", //5 + "breadcrumb.background":"#${normal_black}", //1 + "breadcrumb.focusForeground":"#${bright_white}", //6 + "breadcrumb.activeSelectionForeground":"#${bright_white}", //7 + "breadcrumbPicker.background":"#${normal_black}", //1 + // Snippets colors + "editor.snippetTabstopHighlightBackground":"#${normal_black}", //2 + "editor.snippetFinalTabstopHighlightBackground":"#${bright_black}", //3 + + // Symbol Icons colors + "symbolIcon.arrayForeground":"#${normal_white}", //5 + "symbolIcon.booleanForeground":"#${bright_red}", //9 + "symbolIcon.classForeground":"#${normal_yellow}", //A + "symbolIcon.colorForeground": "#f0f", + "symbolIcon.constantForeground":"#${bright_red}", //9 + "symbolIcon.constructorForeground":"#${normal_blue}", //D + "symbolIcon.enumeratorForeground":"#${bright_red}", //9 + "symbolIcon.enumeratorMemberForeground":"#${normal_blue}", //D + "symbolIcon.eventForeground":"#${normal_yellow}", //A + "symbolIcon.fieldForeground":"#${normal_red}", //8 + "symbolIcon.fileForeground":"#${normal_white}", //5 + "symbolIcon.folderForeground":"#${normal_white}", //5 + "symbolIcon.functionForeground":"#${normal_blue}", //D, + "symbolIcon.interfaceForeground":"#${normal_blue}", //D + "symbolIcon.keyForeground": "#f0f", + "symbolIcon.keywordForeground":"#${normal_magenta}", //E + "symbolIcon.methodForeground":"#${normal_blue}", //D + "symbolIcon.moduleForeground":"#${normal_white}", //5 + "symbolIcon.namespaceForeground":"#${normal_white}", //5 + "symbolIcon.nullForeground":"#${bright_magenta}", //F + "symbolIcon.numberForeground":"#${bright_red}", //9 + "symbolIcon.objectForeground": "#f0f", + "symbolIcon.operatorForeground": "#f0f", + "symbolIcon.packageForeground": "#f0f", + "symbolIcon.propertyForeground":"#${normal_white}", //5 + "symbolIcon.referenceForeground": "#f0f", + "symbolIcon.snippetForeground":"#${normal_white}", //5 + "symbolIcon.stringForeground":"#${normal_green}", //B + "symbolIcon.structForeground":"#${normal_yellow}", //A + "symbolIcon.textForeground":"#${normal_white}", //5 + "symbolIcon.typeParameterForeground": "#f0f", + "symbolIcon.unitForeground": "#f0f", + "symbolIcon.variableForeground":"#${normal_red}", //8 + + // Debug Icons colors + "debugIcon.breakpointForeground":"#${normal_red}", //8 + "debugIcon.breakpointDisabledForeground":"#${bright_black}", //4 + "debugIcon.breakpointUnverifiedForeground":"#${normal_black}", //2 + "debugIcon.breakpointCurrentStackframeForeground":"#${normal_yellow}", //A + "debugIcon.breakpointStackframeForeground":"#${bright_magenta}", //F + "debugIcon.startForeground":"#${normal_green}", //B + "debugIcon.pauseForeground":"#${normal_blue}", //D + "debugIcon.stopForeground":"#${normal_red}", //8 + "debugIcon.disconnectForeground":"#${normal_red}", //8 + "debugIcon.restartForeground":"#${normal_green}", //B + "debugIcon.stepOverForeground":"#${normal_blue}", //D + "debugIcon.stepIntoForeground":"#${normal_cyan}", //C + "debugIcon.stepOutForeground":"#${normal_magenta}", //E + "debugIcon.continueForeground":"#${normal_green}", //B + "debugIcon.stepBackForeground":"#${bright_magenta}", //F + "debugConsole.infoForeground":"#${normal_white}", //5 + "debugConsole.warningForeground":"#${normal_yellow}", //A + "debugConsole.errorForeground":"#${normal_red}", //8 + "debugConsole.sourceForeground":"#${normal_white}", //5 + "debugConsoleInputIcon.foreground":"#${normal_white}", //5 + // Notebook colors + "notebook.editorBackground":"#${normal_black}", //0 + "notebook.cellBorderColor":"#${bright_black}", //3 + "notebook.cellHoverBackground":"#${normal_black}", //1 + + "notebook.cellToolbarSeparator":"#${normal_black}", //2 + "notebook.cellEditorBackground":"#${normal_black}", //0 + "notebook.focusedCellBackground":"#${normal_black}", //2 + "notebook.focusedCellBorder":"#${normal_blue}", //D + "notebook.focusedEditorBorder":"#${normal_blue}", //D + "notebook.inactiveFocusedCellBorder":"#${bright_black}", //3 + + "notebook.selectedCellBackground":"#${normal_black}", //2 + + "notebookStatusErrorIcon.foreground":"#${normal_red}", //8 + "notebookStatusRunningIcon.foreground":"#${normal_cyan}", //C + "notebookStatusSuccessIcon.foreground":"#${normal_green}", //B + // Chart colors + "charts.foreground":"#${normal_white}", //5 + "charts.lines":"#${normal_white}", //5 + "charts.red":"#${normal_red}", //8 + "charts.blue":"#${normal_blue}", //D + "charts.yellow":"#${normal_yellow}", //A + "charts.orange":"#${bright_red}", //9 + "charts.green":"#${normal_green}", //B + "charts.purple":"#${normal_magenta}", //E + // Ports Colors + "ports.iconRunningProcessForeground":"#${bright_red}" //9 + }, + "tokenColors": [ + { + "name": "Comment", + "scope": ["comment", "punctuation.definition.comment"], + "settings": { + "fontStyle": "italic", + "foreground":"#${bright_black}" //3 + } + }, + { + "name": "Variables, Parameters", + "scope": [ + "variable", + "string constant.other.placeholder", + "entity.name.variable.parameter", + "entity.name.variable.local", + "variable.parameter" + ], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Properties", + "scope": ["variable.other.object.property"], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Colors", + "scope": ["constant.other.color"], + "settings": { + "foreground":"#${normal_green}" //B + } + }, + { + "name": "Invalid", + "scope": ["invalid", "invalid.illegal"], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Invalid - Deprecated", + "scope": ["invalid.deprecated"], + "settings": { + "foreground":"#${bright_magenta}" //F + } + }, + { + "name": "Keyword, Storage", + "scope": ["keyword", "storage.modifier"], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Keyword Control", + "scope": [ + "keyword.control", + "keyword.control.flow", + "keyword.control.from", + "keyword.control.import", + "keyword.control.as" + ], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Keyword", + "scope": [ + "keyword.other.using", + "keyword.other.namespace", + "keyword.other.class", + "keyword.other.new", + "keyword.other.event", + "keyword.other.this", + "keyword.other.await", + "keyword.other.var", + "keyword.other.package", + "keyword.other.import", + "variable.language.this", + "storage.type.ts" + ], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Types, Primitives", + "scope": ["keyword.type", "storage.type.primitive"], + "settings": { + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "Function", + "scope": ["storage.type.function"], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Operator, Misc", + "scope": [ + "constant.other.color", + "punctuation", + "punctuation.section.class.end", + "meta.tag", + "punctuation.definition.tag", + "punctuation.separator.inheritance.php", + "punctuation.definition.tag.html", + "punctuation.definition.tag.begin.html", + "punctuation.definition.tag.end.html", + "keyword.other.template", + "keyword.other.substitution" + ], + "settings": { + "foreground":"#${normal_white}" //5 + } + }, + { + "name": "Embedded", + "scope": ["punctuation.section.embedded", "variable.interpolation"], + "settings": { + "foreground":"#${bright_magenta}" //F + } + }, + { + "name": "Tag", + "scope": [ + "entity.name.tag", + "meta.tag.sgml", + "markup.deleted.git_gutter" + ], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Function, Special Method", + "scope": [ + "entity.name.function", + "meta.function-call", + "variable.function", + "support.function", + "keyword.other.special-method" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Block Level Variables", + "scope": ["meta.block variable.other"], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Other Variable, String Link", + "scope": ["support.other.variable", "string.other.link"], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Number, Constant, Function Argument, Tag Attribute, Embedded", + "scope": [ + "constant.numeric", + "constant.language", + "support.constant", + "constant.character", + "constant.escape", + "keyword.other.unit", + "keyword.other" + ], + "settings": { + "foreground":"#${bright_red}" //9 + } + }, + { + "name": "String, Symbols, Inherited Class, Markup Heading", + "scope": [ + "string", + "constant.other.symbol", + "constant.other.key", + "entity.other.inherited-class", + "markup.heading", + "markup.inserted.git_gutter", + "meta.group.braces.curly constant.other.object.key.js string.unquoted.label.js" + ], + "settings": { + "fontStyle": "", + "foreground":"#${normal_green}" //B + } + }, + { + "name": "Class, Support", + "scope": [ + "entity.name", + "support.type", + "support.class", + "support.other.namespace.use.php", + "meta.use.php", + "support.other.namespace.php", + "markup.changed.git_gutter", + "support.type.sys-types" + ], + "settings": { + "foreground":"#${normal_yellow}" //A + } + }, + { + "name": "Storage Type, Import Class", + "scope": [ + "storage.type", + "storage.modifier.package", + "storage.modifier.import" + ], + "settings": { + "foreground":"#${normal_yellow}" //A + } + }, + { + "name": "Fields", + "scope": ["entity.name.variable.field"], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Entity Types", + "scope": ["support.type"], + "settings": { + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "CSS Class and Support", + "scope": [ + "source.css support.type.property-name", + "source.sass support.type.property-name", + "source.scss support.type.property-name", + "source.less support.type.property-name", + "source.stylus support.type.property-name", + "source.postcss support.type.property-name" + ], + "settings": { + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "Sub-methods", + "scope": [ + "entity.name.module.js", + "variable.import.parameter.js", + "variable.other.class.js" + ], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Language methods", + "scope": ["variable.language"], + "settings": { + "fontStyle": "italic", + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "entity.name.method.js", + "scope": ["entity.name.method.js"], + "settings": { + "fontStyle": "italic", + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "meta.method.js", + "scope": [ + "meta.class-method.js entity.name.function.js", + "variable.function.constructor" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Attributes", + "scope": ["entity.other.attribute-name"], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "HTML Attributes", + "scope": [ + "text.html.basic entity.other.attribute-name.html", + "text.html.basic entity.other.attribute-name" + ], + "settings": { + "fontStyle": "italic", + "foreground":"#${normal_yellow}" //A + } + }, + { + "name": "CSS Classes", + "scope": ["entity.other.attribute-name.class"], + "settings": { + "foreground":"#${normal_yellow}" //A + } + }, + { + "name": "CSS ID's", + "scope": ["source.sass keyword.control"], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Inserted", + "scope": ["markup.inserted"], + "settings": { + "foreground":"#${normal_green}" //B + } + }, + { + "name": "Deleted", + "scope": ["markup.deleted"], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Changed", + "scope": ["markup.changed"], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Regular Expressions", + "scope": ["string.regexp"], + "settings": { + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "Escape Characters", + "scope": ["constant.character.escape"], + "settings": { + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "URL", + "scope": ["*url*", "*link*", "*uri*"], + "settings": { + "fontStyle": "underline" + } + }, + { + "name": "Decorators", + "scope": [ + "tag.decorator.js entity.name.tag.js", + "tag.decorator.js punctuation.definition.tag.js" + ], + "settings": { + "fontStyle": "italic", + "foreground":"#${normal_blue}" // D + } + }, + { + "name": "ES7 Bind Operator", + "scope": [ + "source.js constant.other.object.key.js string.unquoted.label.js" + ], + "settings": { + "fontStyle": "italic", + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "JSON Key - Level 0", + "scope": [ + "source.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 1", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 2", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 3", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 4", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 5", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 6", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 7", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "JSON Key - Level 8", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Markdown - Plain", + "scope": [ + "text.html.markdown", + "punctuation.definition.list_item.markdown" + ], + "settings": { + "foreground":"#${normal_white}" //5 + } + }, + { + "name": "Markdown - Markup Raw Inline", + "scope": ["text.html.markdown markup.inline.raw.markdown"], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Markdown - Markup Raw Inline Punctuation", + "scope": [ + "text.html.markdown markup.inline.raw.markdown punctuation.definition.raw.markdown" + ], + "settings": { + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "Markdown - Line Break", + "scope": ["text.html.markdown meta.dummy.line-break"], + "settings": { + "foreground":"#${bright_black}" //3 + } + }, + { + "name": "Markdown - Heading", + "scope": [ + "markdown.heading", + "markup.heading | markup.heading entity.name", + "markup.heading.markdown punctuation.definition.heading.markdown" + ], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Markup - Italic", + "scope": ["markup.italic"], + "settings": { + "fontStyle": "italic", + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Markup - Bold", + "scope": ["markup.bold", "markup.bold string"], + "settings": { + "fontStyle": "bold", + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Markup - Bold-Italic", + "scope": [ + "markup.bold markup.italic", + "markup.italic markup.bold", + "markup.quote markup.bold", + "markup.bold markup.italic string", + "markup.italic markup.bold string", + "markup.quote markup.bold string" + ], + "settings": { + "fontStyle": "bold", + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Markup - Underline", + "scope": ["markup.underline"], + "settings": { + "fontStyle": "underline", + "foreground":"#${bright_red}" //9 + } + }, + { + "name": "Markdown - Blockquote", + "scope": ["markup.quote punctuation.definition.blockquote.markdown"], + "settings": { + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "Markup - Quote", + "scope": ["markup.quote"], + "settings": { + "fontStyle": "italic" + } + }, + { + "name": "Markdown - Link", + "scope": ["string.other.link.title.markdown"], + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "name": "Markdown - Link Description", + "scope": ["string.other.link.description.title.markdown"], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Markdown - Link Anchor", + "scope": ["constant.other.reference.link.markdown"], + "settings": { + "foreground":"#${normal_yellow}" //A + } + }, + { + "name": "Markup - Raw Block", + "scope": ["markup.raw.block"], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Markdown - Raw Block Fenced", + "scope": ["markup.raw.block.fenced.markdown"], + "settings": { + "foreground": "#00000050" + } + }, + { + "name": "Markdown - Fenced Bode Block", + "scope": ["punctuation.definition.fenced.markdown"], + "settings": { + "foreground": "#00000050" + } + }, + { + "name": "Markdown - Fenced Code Block Variable", + "scope": [ + "markup.raw.block.fenced.markdown", + "variable.language.fenced.markdown" + ], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "name": "Markdown - Fenced Language", + "scope": ["variable.language.fenced.markdown"], + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "name": "Markdown - Separator", + "scope": ["meta.separator"], + "settings": { + "fontStyle": "bold", + "foreground":"#${normal_cyan}" //C + } + }, + { + "name": "Markup - Table", + "scope": ["markup.table"], + "settings": { + "foreground":"#${normal_magenta}" //E + } + }, + { + "scope": "token.info-token", + "settings": { + "foreground":"#${normal_blue}" //D + } + }, + { + "scope": "token.warn-token", + "settings": { + "foreground":"#${normal_yellow}" //A + } + }, + { + "scope": "token.error-token", + "settings": { + "foreground":"#${normal_red}" //8 + } + }, + { + "scope": "token.debug-token", + "settings": { + "foreground":"#${normal_magenta}" //E + } + } + ] +} +EOF +fi + +extension_name="tintedtheming.base16-tinted-themes" + +install_extension() { + is_extension_installed=$(windsurf --list-extensions | grep "${extension_name}") + if [[ -z "$is_extension_installed" ]]; then + windsurf --install-extension $extension_name + sleep 3 + fi +} + +install_path="" +vscode_paths=( + "$HOME/.windsurf/extensions/" +) +find_extension_dir() { + for path in "${vscode_paths[@]}"; do + if [[ -d "$path" ]]; then + install_path=$(find "$path" -maxdepth 1 -type d -name "${extension_name}-*" | head -n1) + fi + done + if [[ -z "$install_path" ]]; then + exit 1 + fi +} + +modify_extension_manifest() { + omarchy_entry=$(cat $install_path/package.json | jq 'first(.contributes.themes[] | select(.label == "Omarchy"))') + if [[ -z "$omarchy_entry" ]]; then + omarchy_entry='{"label": "Omarchy", "uiTheme": "vs-dark", "path": "./themes/base16/omarchy.json"}' + new_manifest=$(cat "${install_path}/package.json" | jq --argjson theme "$omarchy_entry" '.contributes.themes += [$theme]') + echo "$new_manifest" > "${install_path}/package.json" + fi +} + +install_extension +find_extension_dir +modify_extension_manifest + +install_location="$install_path/themes/base16/omarchy.json" +cp "$output_file" "$install_location" + +require_restart "windsurf" +success "Windsurf theme updated!" +exit 0 diff --git a/config/omarchy/hooks/theme-set.d/40-cava.sh b/config/omarchy/hooks/theme-set.d/40-cava.sh new file mode 100755 index 0000000..c01ddb5 --- /dev/null +++ b/config/omarchy/hooks/theme-set.d/40-cava.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +if ! command -v cava >/dev/null 2>&1; then + skipped "Cava" +fi + +theme_template="$HOME/.config/omarchy/current/theme/cava_theme" + +if [ ! -f "$theme_template" ]; then +cat > "$theme_template" << EOF +[color] +gradient = 1 +gradient_count = 8 +gradient_color_1 = '#${normal_cyan:-${primary_foreground}}' +gradient_color_2 = '#${normal_blue:-${primary_foreground}}' +gradient_color_3 = '#${bright_blue:-${normal_blue:-${primary_foreground}}}' +gradient_color_4 = '#${normal_magenta:-${primary_foreground}}' +gradient_color_5 = '#${bright_magenta:-${normal_magenta:-${primary_foreground}}}' +gradient_color_6 = '#${bright_cyan:-${normal_cyan:-${primary_foreground}}}' +gradient_color_7 = '#${bright_magenta:-${normal_magenta:-${primary_foreground}}}' +gradient_color_8 = '#${normal_cyan:-${primary_foreground}}' +EOF +fi + +theme_dir="$HOME/.config/cava/themes" +mkdir -p "$theme_dir" +cp -f "$theme_template" "$theme_dir/omarchy" + +config_file="$HOME/.config/cava/config" +if [ -f "$config_file" ] && ! grep -q "theme = 'omarchy'" "$config_file"; then + sed -i "/^\[color\]/a theme = 'omarchy'" "$config_file" +fi + +if pgrep -x cava >/dev/null 2>&1; then + ( pkill -USR2 cava ) >/dev/null 2>&1 & +fi + +success "Cava theme updated!" +exit 0 diff --git a/config/omarchy/hooks/theme-set.d/40-firefox.sh b/config/omarchy/hooks/theme-set.d/40-firefox.sh new file mode 100755 index 0000000..b91010a --- /dev/null +++ b/config/omarchy/hooks/theme-set.d/40-firefox.sh @@ -0,0 +1,304 @@ +#!/bin/bash + +output_file="$HOME/.config/omarchy/current/theme/firefox.css" + +if ! command -v firefox >/dev/null 2>&1; then + skipped "Firefox" +fi + +find_default_profile() { + awk -F= ' + /^\[Install/ { in_install=1 } + in_install && /^Default=/ { print $2; exit } + ' "$HOME/.mozilla/firefox/profiles.ini" +} +default_profile="$HOME/.mozilla/firefox/$(find_default_profile)" + +enable_userchrome() { + local prefs_file="$default_profile/prefs.js" + local pref_name="toolkit.legacyUserProfileCustomizations.stylesheets" + + if grep -q "user_pref(\"$pref_name\"" "$prefs_file"; then + if grep -q "user_pref(\"$pref_name\", false)" "$prefs_file"; then + sed -i.bak "s/user_pref(\"$pref_name\", false);/user_pref(\"$pref_name\", true);/" "$prefs_file" + fi + else + echo "user_pref(\"$pref_name\", true);" >> "$prefs_file" + fi +} +enable_userchrome + +mkdir -p "$default_profile/chrome" + +cat > "$output_file" << EOF +:root { +--color00: #${primary_background}; +--color01: #${primary_background}; +--color02: #${primary_background}; +--color03: #${normal_white}; +--color04: #${bright_white}; +--color05: #${primary_foreground}; +--color06: #${bright_white}; +--color07: #${bright_white}; +--color08: #${normal_red}; +--color09: #${normal_yellow}; +--color0A: #${bright_yellow}; +--color0B: #${normal_green}; +--color0C: #${normal_cyan}; +--color0D: #${normal_blue}; +--color0E: #${normal_magenta}; +--color0F: #${bright_red}; +} +EOF + +if [[ -d "$default_profile" ]]; then + cp "$output_file" "$default_profile/chrome/colors.css" +fi + +if [[ ! -f "$default_profile/chrome/userChrome.css" ]]; then +cat > "$default_profile/chrome/userChrome.css" << EOF +@import url("./colors.css"); + +:root { + --base00: var(--color00); + --base01: color-mix(in srgb, var(--color00) 98%, white); + --base02: color-mix(in srgb, var(--color00) 94%, white); + --base03: var(--color03); + --base04: var(--color04); + --base05: var(--color05); + --base06: var(--color06); + --base07: var(--color07); + --base08: var(--color08); + --base09: var(--color09); + --base0A: var(--color0A); + --base0B: var(--color0B); + --base0C: var(--color0C); + --base0D: var(--color0D); + --base0E: var(--color0E); + --base0F: var(--color0F); +} + +:root { + --panel-separator-zap-gradient: linear-gradient( + 90deg, + var(--base0E) 0%, + var(--base0F) 52.08%, + var(--base0A) 100% + ) !important; + --toolbarbutton-border-radius: 6px !important; + --toolbarbutton-icon-fill: var(--base04) !important; + --urlbarView-separator-color: var(--base01) !important; + --urlbar-box-bgcolor: var(--base01) !important; +} + +/* Tabs colors */ +#tabbrowser-tabs:not([movingtab]) + > #tabbrowser-arrowscrollbox + > .tabbrowser-tab + > .tab-stack + > .tab-background[multiselected="true"], +#tabbrowser-tabs:not([movingtab]) + > #tabbrowser-arrowscrollbox + > .tabbrowser-tab + > .tab-stack + > .tab-background[selected="true"] { + background-image: none !important; + background-color: var(--toolbar-bgcolor) !important; +} + +/* Inactive tabs color */ +#navigator-toolbox { + background-color: var(--base00) !important; +} + +/* Window colors */ +:root { + --toolbar-bgcolor: var(--base01) !important; + --tabs-border-color: var(--base01) !important; + --lwt-sidebar-background-color: var(--base00) !important; + --lwt-toolbar-field-focus: var(--base01) !important; +} + +/* Sidebar color */ +#sidebar-box, +.sidebar-placesTree { + background-color: var(--base00) !important; +} + +.tab-background { + border-radius: 6px !important; + border: 0px solid rgba(0, 0, 0, 0) !important; +} +.tab-background[selected] { + background-color: var(--base02) !important; +} + +#tabbrowser-tabs { + margin-left: 1px; + margin-top: 3px; + margin-bottom: 3px; +} + +.tabbrowser-tab[last-visible-tab="true"] { + border: 0px solid rgba(0, 0, 0, 0) !important; +} + +toolbarbutton { + border-radius: 6px !important; +} + +/* Url Bar */ +#urlbar-input { + accent-color: var(--base0D) !important; +} +#urlbar-input-container { + background-color: var(--base01) !important; + border: 0px solid rgba(0, 0, 0, 0) !important; +} + +#urlbar[focused="true"] > #urlbar-background { + box-shadow: none !important; +} + +#urlbar-background { + border-radius: 6px !important; +} + +#navigator-toolbox { + border: none !important; +} + +.urlbarView-url { + color: var(--base05) !important; +} + +#star-button { + --toolbarbutton-icon-fill-attention: var(--base0D) !important; +} + +#vertical-tabs.customization-target { + background-color: var(--base00) !important; +} +splitter#sidebar-tools-and-extensions-splitter { + display: none !important; +} +.tools-and-extensions[aria-orientation="vertical"] { + background-color: var(--base00) !important; +} +.tools-and-extensions.actions-list { + background-color: var(--base00) !important; +} +#identity-box, +#trust-icon-container, +#tracking-protection-icon-container { + fill: var(--base04) !important; +} + +.logo-and-wordmark { + display: none !important; +} +.search-inner-wrapper { + margin-top: 10% !important; +} + +.urlbar-input::placeholder, +.searchbar-textbox::placeholder { + opacity: 1; + color: var(--base03) !important; +} + +.urlbar-input { + color: var(--base05) !important; +} + +:root { + --arrowpanel-background: var(--base01) !important; + --arrowpanel-border-color: var(--base00) !important; + --color-accent-primary-active: var(--base0D) !important; + --color-accent-primary-hover: var(--base0D) !important; + --color-accent-primary: var(--base0D) !important; + --focus-outline-color: var(--base00) !important; + --icon-color-critical: var(--base08) !important; + --icon-color-information: var(--base0D) !important; + --icon-color-success: var(--base0B) !important; + --icon-color-warning: var(--base0A) !important; + --outline-color-error: var(--base08) !important; + --tab-block-margin: 0 !important; + --tab-border-radius: 0 !important; + --text-color-error: var(--base08) !important; + --toolbar-field-border-color: var(--base00) !important; + --toolbar-field-focus-background-color: var(--base02) !important; + --toolbar-field-focus-border-color: var(--base00) !important; + --toolbarbutton-border-radius: 6px !important; + --in-content-page-background: var(--base01) !important; + --input-text-background-color: var(--base02) !important; +} +EOF +fi + +if [[ ! -f "$default_profile/chrome/userContent.css" ]]; then +cat > "$default_profile/chrome/userContent.css" </dev/null 2>&1; then + skipped "Steam" +fi + +if ! command -v python >/dev/null 2>&1; then + skipped "Python 3" +fi + +cat > "$output_file" << EOF +:root { + /* The main accent color and the matching text value */ + --adw-accent-bg-rgb: ${rgb_normal_blue} !important; + --adw-accent-fg-rgb: ${rgb_primary_background} !important; + --adw-accent-rgb: ${rgb_normal_blue} !important; + + /* destructive-action buttons */ + --adw-destructive-bg-rgb: ${rgb_normal_red} !important; + --adw-destructive-fg-rgb: ${rgb_primary_foreground} !important; + --adw-destructive-rgb: ${rgb_normal_red} !important; + + /* Levelbars, entries, labels and infobars. These don't need text colors */ + --adw-success-bg-rgb: ${rgb_normal_green} !important; + --adw-success-fg-rgb: ${rgb_normal_black} !important; + --adw-success-rgb: ${rgb_normal_green} !important; + + --adw-warning-bg-rgb: ${rgb_bright_yellow} !important; + --adw-warning-fg-rgb: ${rgb_primary_background} !important; + --adw-warning-fg-a: 0.8 !important; + --adw-warning-rgb: ${rgb_bright_yellow} !important; + + --adw-error-bg-rgb: ${rgb_normal_red} !important; + --adw-error-fg-rgb: ${rgb_normal_black} !important; + --adw-error-rgb: ${rgb_normal_red} !important; + + /* Window */ + --adw-window-bg-rgb: ${rgb_primary_background} !important; + --adw-window-fg-rgb: ${rgb_primary_foreground} !important; + + /* Views - e.g. text view or tree view */ + --adw-view-bg-rgb: ${rgb_normal_black} !important; + --adw-view-fg-rgb: ${rgb_primary_foreground} !important; + + /* Header bar, search bar, tab bar */ + --adw-headerbar-bg-rgb: ${rgb_primary_background} !important; + --adw-headerbar-fg-rgb: ${rgb_primary_foreground} !important; + --adw-headerbar-border-rgb: ${rgb_bright_black} !important; + --adw-headerbar-backdrop-rgb: ${rgb_normal_black} !important; + --adw-headerbar-shade-rgb: 0, 0, 0 !important; + --adw-headerbar-shade-a: 0.36 !important; + --adw-headerbar-darker-shade-rgb: 0, 0, 0 !important; + --adw-headerbar-darker-shade-a: 0.9 !important; + + /* Split pane views */ + --adw-sidebar-bg-rgb: ${rgb_primary_background} !important; + --adw-sidebar-fg-rgb: ${rgb_primary_foreground} !important; + --adw-sidebar-backdrop-rgb: ${rgb_bright_black} !important; + --adw-sidebar-shade-rgb: 0, 0, 0 !important; + --adw-sidebar-shade-a: 0.36 !important; + --adw-secondary-sidebar-bg-rgb: ${rgb_primary_background} !important; + --adw-secondary-sidebar-fg-rgb: ${rgb_primary_foreground} !important; + --adw-secondary-sidebar-backdrop-rgb: ${rgb_bright_black} !important; + --adw-secondary-sidebar-shade-rgb: 0, 0, 0 !important; + --adw-secondary-sidebar-shade-a: 0.36 !important; + + /* Cards, boxed lists */ + --adw-card-bg-rgb: 255, 255, 255 !important; + --adw-card-bg-a: 0.08 !important; + --adw-card-fg-rgb: 255, 255, 255 !important; + --adw-card-shade-rgb: 0, 0, 0 !important; + --adw-card-shade-a: 0.36 !important; + + /* Dialogs */ + --adw-dialog-bg-rgb: ${rgb_primary_background} !important; + --adw-dialog-fg-rgb: ${rgb_primary_foreground} !important; + + /* Popovers */ + --adw-popover-bg-rgb: ${rgb_primary_background} !important; + --adw-popover-fg-rgb: ${rgb_primary_foreground} !important; + --adw-popover-shade-rgb: 0, 0, 0 !important; + --adw-popover-shade-a: 0.36 !important; + + /* Thumbnails */ + --adw-thumbnail-bg-rgb: ${rgb_primary_background} !important; + + /* Miscellaneous */ + --adw-shade-rgb: 0, 0, 0 !important; + --adw-shade-a: 0.36 !important; +} +EOF + +adwaita_location=$HOME/.local/share/steam-adwaita +font_path=$(fc-list $(omarchy-font-current) file | grep -ioP '.*\.ttf' | head -n 1) + +install_steam_theme() { + if [[ ! -d "$adwaita_location" ]]; then + git clone https://github.com/tkashkin/Adwaita-for-Steam $adwaita_location > /dev/null 2>&1 + fi +} +modify_steam_theme() { + if [[ ! -d "$adwaita_location/adwaita/colorthemes/omarchy" ]]; then + mkdir $adwaita_location/adwaita/colorthemes/omarchy/ + fi +} +modify_install_script() { + if ! grep -q "omarchy" "$adwaita_location/install.py"; then + sed -i.bak 's/\("cantarell"\)/\1, "omarchy"/' $adwaita_location/install.py + fi +} + +install_steam_theme +modify_steam_theme +modify_install_script + +if [[ ! -d $adwaita_location ]]; then + warning "Steam theme installation failed!" + exit 1 +fi + +cp -p -f "$output_file" "$adwaita_location/adwaita/colorthemes/omarchy/omarchy.css" + +cd $adwaita_location && ./install.py \ + --color-theme omarchy \ + --extras library/hide_whats_new > /dev/null 2>&1 + +require_restart "steam" +success "Steam theme updated!" +exit 0 diff --git a/config/omarchy/hooks/theme-set.d/40-zen.sh b/config/omarchy/hooks/theme-set.d/40-zen.sh new file mode 100755 index 0000000..bb8f82c --- /dev/null +++ b/config/omarchy/hooks/theme-set.d/40-zen.sh @@ -0,0 +1,314 @@ +#!/bin/bash + +output_file="$HOME/.config/omarchy/current/theme/zen.css" + +if ! command -v zen-browser >/dev/null 2>&1; then + skipped "Zen Browser" +fi + +find_default_profile() { + awk -F= ' + /^\[Install/ { in_install=1 } + in_install && /^Default=/ { print $2; exit } + ' "$HOME/.zen/profiles.ini" +} +default_profile="$HOME/.zen/$(find_default_profile)" + +echo $default_profile + +enable_userchrome() { + local prefs_file="$default_profile/prefs.js" + local pref_name="toolkit.legacyUserProfileCustomizations.stylesheets" + if grep -q "user_pref(\"$pref_name\"" "$prefs_file"; then + if grep -q "user_pref(\"$pref_name\", false)" "$prefs_file"; then + sed -i.bak "s/user_pref(\"$pref_name\", false);/user_pref(\"$pref_name\", true);/" "$prefs_file" + fi + else + echo "user_pref(\"$pref_name\", true);" >> "$prefs_file" + fi +} +enable_userchrome + +mkdir -p "$default_profile/chrome" + +cat > "$output_file" << EOF +:root { +--color00: #${primary_background}; +--color01: #${primary_background}; +--color02: #${primary_background}; +--color03: #${normal_white}; +--color04: #${bright_white}; +--color05: #${primary_foreground}; +--color06: #${bright_white}; +--color07: #${bright_white}; +--color08: #${normal_red}; +--color09: #${normal_yellow}; +--color0A: #${bright_yellow}; +--color0B: #${normal_green}; +--color0C: #${normal_cyan}; +--color0D: #${normal_blue}; +--color0E: #${normal_magenta}; +--color0F: #${bright_red}; +} +EOF +cp "$output_file" "$default_profile/chrome/colors.css" + +if [[ ! -f "$default_profile/chrome/userChrome.css" ]]; then +cat > "$default_profile/chrome/userChrome.css" << EOF +@import url("./colors.css"); + +:root { + --base00: var(--color00); + --base01: color-mix(in srgb, var(--color00) 98%, white); + --base02: color-mix(in srgb, var(--color00) 94%, white); + --base03: var(--color03); + --base04: var(--color04); + --base05: var(--color05); + --base06: var(--color06); + --base07: var(--color07); + --base08: var(--color08); + --base09: var(--color09); + --base0A: var(--color0A); + --base0B: var(--color0B); + --base0C: var(--color0C); + --base0D: var(--color0D); + --base0E: var(--color0E); + --base0F: var(--color0F); +} + +:root { + --panel-separator-zap-gradient: linear-gradient( + 90deg, + var(--base0E) 0%, + var(--base0F) 52.08%, + var(--base0A) 100% + ) !important; + --toolbarbutton-border-radius: 6px !important; + --toolbarbutton-icon-fill: var(--base04) !important; + --urlbarView-separator-color: var(--base01) !important; + --urlbar-box-bgcolor: var(--base01) !important; +} + +/* Tabs colors */ +#tabbrowser-tabs:not([movingtab]) + > #tabbrowser-arrowscrollbox + > .tabbrowser-tab + > .tab-stack + > .tab-background[multiselected="true"], +#tabbrowser-tabs:not([movingtab]) + > #tabbrowser-arrowscrollbox + > .tabbrowser-tab + > .tab-stack + > .tab-background[selected="true"] { + background-image: none !important; + background-color: var(--toolbar-bgcolor) !important; +} + +/* Inactive tabs color */ +#navigator-toolbox { + background-color: var(--base00) !important; +} + +/* Window colors */ +:root { + --toolbar-bgcolor: var(--base01) !important; + --tabs-border-color: var(--base01) !important; + --lwt-sidebar-background-color: var(--base00) !important; + --lwt-toolbar-field-focus: var(--base01) !important; +} + +/* Sidebar color */ +#sidebar-box, +.sidebar-placesTree { + background-color: var(--base00) !important; +} + +.tab-background { + border-radius: 6px !important; + border: 0px solid rgba(0, 0, 0, 0) !important; +} +.tab-background[selected] { + background-color: var(--base02) !important; +} + +#tabbrowser-tabs { + margin-left: 1px; + margin-top: 3px; + margin-bottom: 3px; +} + +.tabbrowser-tab[last-visible-tab="true"] { + border: 0px solid rgba(0, 0, 0, 0) !important; +} + +toolbarbutton { + border-radius: 6px !important; +} + +/* Url Bar */ +#urlbar-input { + accent-color: var(--base0D) !important; +} +#urlbar-input-container { + background-color: var(--base01) !important; + border: 0px solid rgba(0, 0, 0, 0) !important; +} + +#urlbar[focused="true"] > #urlbar-background { + box-shadow: none !important; +} + +#urlbar-background { + border-radius: 6px !important; +} + +#navigator-toolbox { + border: none !important; +} + +.urlbarView-url { + color: var(--base05) !important; +} + +#star-button { + --toolbarbutton-icon-fill-attention: var(--base0D) !important; +} + +#vertical-tabs.customization-target { + background-color: var(--base00) !important; +} +splitter#sidebar-tools-and-extensions-splitter { + display: none !important; +} +.tools-and-extensions[aria-orientation="vertical"] { + background-color: var(--base00) !important; +} +.tools-and-extensions.actions-list { + background-color: var(--base00) !important; +} +#identity-box, +#trust-icon-container, +#tracking-protection-icon-container { + fill: var(--base04) !important; +} + +.logo-and-wordmark { + display: none !important; +} +.search-inner-wrapper { + margin-top: 10% !important; +} + +.urlbar-input::placeholder, +.searchbar-textbox::placeholder { + opacity: 1; + color: var(--base03) !important; +} + +.urlbar-input { + color: var(--base05) !important; +} + +:root { + --arrowpanel-background: var(--base01) !important; + --arrowpanel-border-color: var(--base00) !important; + --color-accent-primary-active: var(--base0D) !important; + --color-accent-primary-hover: var(--base0D) !important; + --color-accent-primary: var(--base0D) !important; + --focus-outline-color: var(--base00) !important; + --icon-color-critical: var(--base08) !important; + --icon-color-information: var(--base0D) !important; + --icon-color-success: var(--base0B) !important; + --icon-color-warning: var(--base0A) !important; + --outline-color-error: var(--base08) !important; + --tab-block-margin: 0 !important; + --tab-border-radius: 0 !important; + --text-color-error: var(--base08) !important; + --toolbar-field-border-color: var(--base00) !important; + --toolbar-field-focus-background-color: var(--base02) !important; + --toolbar-field-focus-border-color: var(--base00) !important; + --toolbarbutton-border-radius: 6px !important; + --in-content-page-background: var(--base01) !important; + --input-text-background-color: var(--base02) !important; + --zen-main-browser-background: var(--base00) !important; +} +EOF +fi + +if [[ ! -f "$default_profile/chrome/userContent.css" ]]; then +cat > "$default_profile/chrome/userContent.css" < /dev/null; then + pkill -x "zen-browser" > /dev/null + sleep 2 + if pgrep -x "zen-browser" > /dev/null; then + pkill -9 -x "zen-browser" > /dev/null + sleep 1 + fi + zen-browser > /dev/null & +fi + +require_restart "zen-browser" +success "Zen Browser theme updated!" +exit 0 diff --git a/config/omarchy/hooks/theme-set.d/50-heroic.sh b/config/omarchy/hooks/theme-set.d/50-heroic.sh new file mode 100755 index 0000000..f76afd6 --- /dev/null +++ b/config/omarchy/hooks/theme-set.d/50-heroic.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +output_file="$HOME/.config/omarchy/current/theme/heroic.css" + +if ! command -v heroic >/dev/null 2>&1; then + skipped "Heroic Launcher" +fi + +if [[ ! -f "$output_file" ]]; then +cat > "$output_file" << EOF +body.heroic { + --background: #${primary_background}; + --background-darker: #$(change_shade $primary_background -5); + --background-secondary: #$(change_shade $primary_background 5); + --background-lighter: #$(change_shade $primary_background 10); + --accent: #${normal_blue}; + --text-default: #${primary_foreground}; + --navbar-accent: #${normal_blue}; + --navbar-active-background: #${bright_black}; + --success: #${normal_green}; + --success-hover: #${bright_green}; + --primary: #${normal_blue}; + --primary-hover: #${bright_blue}; + --danger: #${normal_red}; + --danger-hover: #${bright_red}; + --anticheat-supported: #${normal_green}; + --anticheat-planned: #${normal_cyan}; + --icon-disabled: #${bright_red}; + --cancel-button: #${normal_red}; + --anticheat-broken: #${normal_red}; + + --accent-overlay: var(--accent); + --navbar-background: var(--background); + --body-background: var(--background-darker); + --current-background: var(--body-background); + --text-secondary: var(--text-default); + --text-tertiary: var(--background); + --navbar-active: var(--accent); + --input-background: var(--background); + --modal-background: var(--body-background); + --modal-border: var(--body-background); + --anticheat-denied: var(--danger); + --anticheat-running: var(--text-default); + --text-title: var(--text-default); + --icons-background: var(--background-lighter); + --action-icon: var(--navbar-accent); + --action-icon-hover: var(--text-default); + --action-icon-active: var(--accent); + --neutral-06: var(--text-default); +} +EOF +fi + +require_restart "heroic" +success "Heroic theme updated!" +exit 0 diff --git a/config/omarchy/themes/aether b/config/omarchy/themes/aether new file mode 120000 index 0000000..c087f67 --- /dev/null +++ b/config/omarchy/themes/aether @@ -0,0 +1 @@ +/home/unconfer/.config/aether/theme \ No newline at end of file diff --git a/config/pomo/config.json b/config/pomo/config.json new file mode 100644 index 0000000..01d0ac4 --- /dev/null +++ b/config/pomo/config.json @@ -0,0 +1,10 @@ +{ + "work_duration": "25m0s", + "short_break_duration": "5m0s", + "long_break_duration": "15m0s", + "long_break_interval": 4, + "daily_goal_pomodoros": 0, + "notify_desktop": true, + "notify_bell": true, + "theme": "default" +} diff --git a/config/scripts/niri/caps b/config/scripts/niri/caps new file mode 100755 index 0000000..7aff6bf --- /dev/null +++ b/config/scripts/niri/caps @@ -0,0 +1,35 @@ +#!/bin/bash + +NOTIFY_ID="" +LAST_LAYOUT="" + +while IFS= read -r line; do + if [[ "$line" == *"Keyboard layout switched"* ]]; then + # Извлекаем индекс раскладки встроенным регулярным выражением + if [[ "$line" =~ ([0-9]+) ]]; then + layout="${BASH_REMATCH[1]}" + else + continue + fi + + # Пропускаем дубликаты событий (снижает нагрузку и мигание индикаторов) + if [[ "$layout" == "$LAST_LAYOUT" ]]; then + continue + fi + LAST_LAYOUT="$layout" + + if [[ "$layout" == "1" ]]; then + brightnessctl -d 'input12::capslock' s 1 + msg="RU" + else + brightnessctl -d 'input12::capslock' s 0 + msg="EN" + fi + + if [[ -z "$NOTIFY_ID" ]]; then + NOTIFY_ID=$(notify-send --print-id "keymap" "$msg") + else + notify-send -r "$NOTIFY_ID" "keymap" "$msg" + fi + fi +done < <(niri msg event-stream) diff --git a/config/scripts/niri/ru.png b/config/scripts/niri/ru.png new file mode 100644 index 0000000..680d9c3 Binary files /dev/null and b/config/scripts/niri/ru.png differ diff --git a/config/scripts/niri/us.png b/config/scripts/niri/us.png new file mode 100644 index 0000000..363a2f2 Binary files /dev/null and b/config/scripts/niri/us.png differ diff --git a/config/starship.toml b/config/starship.toml new file mode 100644 index 0000000..b87117d --- /dev/null +++ b/config/starship.toml @@ -0,0 +1,216 @@ +"$schema" = 'https://starship.rs/config-schema.json' + +# Inserts a blank line between shell prompts +add_newline = false + +scan_timeout = 120 + +# Replace the '❯' symbol in the prompt with '➜' +[character] # The name of the module we are configuring is 'character' +success_symbol = '[❯](bold green)' # The 'success_symbol' segment is being set to '➜' with the color 'bold green' + +# Disable the package module, hiding it from the prompt completely +[aws] +symbol = " " + +[buf] +symbol = " " + +[bun] +symbol = " " + +[c] +symbol = " " + +[cpp] +symbol = " " + +[cmake] +symbol = " " + +[conda] +symbol = " " + +[crystal] +symbol = " " + +[dart] +symbol = " " + +[deno] +symbol = " " + +[directory] +read_only = " 󰌾" + +[docker_context] +symbol = " " + +[elixir] +symbol = " " + +[elm] +symbol = " " + +[fennel] +symbol = " " + +[fortran] +symbol = " " + +[fossil_branch] +symbol = " " + +[gcloud] +symbol = " " + +[git_branch] +symbol = " " + +[git_commit] +tag_symbol = '  ' + +[golang] +symbol = " " + +[gradle] +symbol = " " + +[guix_shell] +symbol = " " + +[haskell] +symbol = " " + +[haxe] +symbol = " " + +[hg_branch] +symbol = " " + +[hostname] +ssh_symbol = " " + +[java] +symbol = " " + +[julia] +symbol = " " + +[kotlin] +symbol = " " + +[lua] +symbol = " " + +[memory_usage] +symbol = "󰍛 " + +[meson] +symbol = "󰔷 " + +[nim] +symbol = "󰆥 " + +[nix_shell] +symbol = " " + +[nodejs] +symbol = " " + +[ocaml] +symbol = " " + +[os.symbols] +Alpaquita = " " +Alpine = " " +AlmaLinux = " " +Amazon = " " +Android = " " +AOSC = " " +Arch = " " +Artix = " " +CachyOS = " " +CentOS = " " +Debian = " " +DragonFly = " " +Elementary = " " +Emscripten = " " +EndeavourOS = " " +Fedora = " " +FreeBSD = " " +Garuda = "󰛓 " +Gentoo = " " +HardenedBSD = "󰞌 " +Illumos = "󰈸 " +Ios = "󰀷 " +Kali = " " +Linux = " " +Mabox = " " +Macos = " " +Manjaro = " " +Mariner = " " +MidnightBSD = " " +Mint = " " +NetBSD = " " +NixOS = " " +Nobara = " " +OpenBSD = "󰈺 " +openSUSE = " " +OracleLinux = "󰌷 " +Pop = " " +Raspbian = " " +Redhat = " " +RedHatEnterprise = " " +RockyLinux = " " +Redox = "󰀘 " +Solus = "󰠳 " +SUSE = " " +Ubuntu = " " +Unknown = " " +Void = " " +Windows = "󰍲 " +Zorin = " " + +[package] +symbol = "󰏗 " + +[perl] +symbol = " " + +[php] +symbol = " " + +[pijul_channel] +symbol = " " + +[pixi] +symbol = "󰏗 " + +[python] +symbol = " " + +[rlang] +symbol = "󰟔 " + +[ruby] +symbol = " " + +[rust] +symbol = "󱘗 " + +[scala] +symbol = " " + +[status] +symbol = " " + +[swift] +symbol = " " + +[xmake] +symbol = " " + +[zig] +symbol = " " + diff --git a/config/swaync/config.json b/config/swaync/config.json index 565fea5..36231e1 100644 --- a/config/swaync/config.json +++ b/config/swaync/config.json @@ -5,6 +5,8 @@ "positionY": "top", "layer": "overlay", "control-center-layer": "top", + "control-center-positionY": "top", + "control-center-positionX": "left", "layer-shell": true, "layer-shell-cover-screen": true, "cssPriority": "user", @@ -16,7 +18,7 @@ "notification-inline-replies": false, "notification-body-image-height": 100, "notification-body-image-width": 200, - "timeout": 10, + "timeout": 5, "timeout-low": 5, "timeout-critical": 0, "fit-to-screen": true, @@ -27,7 +29,7 @@ "keyboard-shortcuts": true, "notification-grouping": true, "image-visibility": "when-available", - "transition-time": 200, + "transition-time": 300, "hide-on-clear": false, "hide-on-action": true, "text-empty": "No Notifications", @@ -60,7 +62,7 @@ "notifications": { "vexpand": true }, - "inhibitors": { + "inhibitors": { "text": "Inhibitors", "button-text": "Clear All", "clear-all-button": true @@ -84,16 +86,8 @@ "loop-carousel": false }, "buttons-grid": { - "buttons-per-row": 7, - "actions": [ - { - "label": "直", - "type": "toggle", - "active": true, - "command": "sh -c '[[ $SWAYNC_TOGGLE_STATE == true ]] && nmcli radio wifi on || nmcli radio wifi off'", - "update-command": "sh -c '[[ $(nmcli radio wifi) == \"enabled\" ]] && echo true || echo false'" - } - ] + "buttons-per-row": 7 } + } } diff --git a/config/swaync/config_1.json b/config/swaync/config_1.json new file mode 100644 index 0000000..859a341 --- /dev/null +++ b/config/swaync/config_1.json @@ -0,0 +1,97 @@ +{ + "$schema": "/etc/xdg/swaync/configschema.json", + "positionX": "right", + "positionY": "top", + "cssPriority": "user", + "control-center-width": 450, + "fit-to-screen": true, + + "notification-window-width": 400, + "notification-icon-size": 40, + "notification-body-image-height": 500, + "notification-body-image-width": 500, + "notification-inline-replies": true, + "notification-2fa-action": false, + + "timeout": 4, + "timeout-low": 4, + "timeout-critical": 6, + + "keyboard-shortcuts": true, + "image-visibility": "when-available", + "transition-time": 200, + "hide-on-clear": false, + "hide-on-action": false, + "script-fail-notify": true, + + "widgets": [ + "mpris", + "dnd", + "notifications", + "buttons-grid" + ], + + "widget-config": { + "backlight": { + "device": "amdgpu_bl1", + "label": "󰃠", + "slider": true, + "min": 10 + }, + "volume": { + "device": "default", + "label": "", + "slider": true + }, + + "dnd": { + "text": "Do not disturb" + }, + + "mpris": { + "image-size": 110, + "image-radius": 12, + "autohide": false, + "blacklist": [ "org.mpris.MediaPlayer2.playerctld"] + }, + + "buttons-grid": { + "actions": [ + { + "label": "󰌪", + "type": "toggle", + "command": "bash -c $HOME/.config/swaync/scripts/quiet.sh", + "update-command": "bash -c '[[ $SWAYNC_TOGGLE_STATE == true ]] && $HOME/.config/swaync/scripts/update_quiet.sh'" + }, + { + "label": "", + "type": "toggle", + "command": "bash -c $HOME/.config/swaync/scripts/inhibit.sh", + "update-command": "bash -c '[[ $SWAYNC_TOGGLE_STATE == true ]] && $HOME/.config/swaync/scripts/update_inhibit.sh'" + }, + { + "label": "", + "type": "toggle", + "command": "pactl set-source-mute @DEFAULT_SOURCE@ toggle", + "update-command": "bash -c '[[ $SWAYNC_TOGGLE_STATE == true ]] && $HOME/.config/swaync/scripts/update_mic.sh'" + }, + { + "label": "", + "command": "hyprctl dispatch exec alacritty -- -e htop ; swaync-client -cp" + }, + { + "label": "", + "command": "hyprctl dispatch exec alacritty -- -e nvtop ; swaync-client -cp" + }, + { + "label": "", + "command": "hyprctl dispatch exec nwg-look ; swaync-client -cp" + }, + { + "label": "", + "command": "swaync-client -cp ; bash -c $HOME/.config/rofi/bin/logout" + } + ] + } + } + } diff --git a/config/swaync/style.css b/config/swaync/style.css index e82145b..4c82adc 100644 --- a/config/swaync/style.css +++ b/config/swaync/style.css @@ -16,7 +16,7 @@ --notification-group-icon-size: 32px; --border: 4px solid var(--noti-border-color); --border-radius: 10px; - --notification-shadow: 0 rgba(0, 0, 0, 0); + --notification-shadow: 0; --font-size-body: 15px; --font-size-summary: 16px; /* Deprecated variables (because of their typos). Keeeping them around for backwards compatibility. */ @@ -55,8 +55,8 @@ blankwindow { text-shadow: none; padding: 0; border-radius: 20%; - margin-top: 8px; - margin-right: 8px; + margin-top: 10px; + margin-right: 10px; box-shadow: none; border: none; min-width: 24px; @@ -73,6 +73,7 @@ blankwindow { .notification-row { background: none; outline: none; + margin: 10px; } .notification-row:focus { @@ -80,7 +81,7 @@ blankwindow { } .notification-row .notification-background { - padding: 6px 12px; + padding: 0px 0px; } .notification-row .notification-background .notification { @@ -343,7 +344,7 @@ blankwindow { } .control-center .control-center-list .notification { - box-shadow: var(--notification-shadow); + box-shadow: none; } .control-center .control-center-list .notification .notification-default-action, @@ -424,7 +425,7 @@ blankwindow { .widget-mpris .widget-mpris-player { margin: 16px 20px; border-radius: var(--border-radius); - box-shadow: var(--mpris-album-art-shadow); + box-shadow: none; } .widget-mpris .widget-mpris-player .mpris-background { @@ -443,7 +444,7 @@ blankwindow { .widget-mpris .widget-mpris-player .mpris-overlay .widget-mpris-album-art { border-radius: var(--border-radius); - box-shadow: var(--mpris-album-art-shadow); + box-shadow: none; -gtk-icon-size: var(--mpris-album-art-icon-size); } diff --git a/config/swaync/style_1.css b/config/swaync/style_1.css new file mode 100644 index 0000000..a309731 --- /dev/null +++ b/config/swaync/style_1.css @@ -0,0 +1,323 @@ +@define-color background #08080b; +@define-color text #acb0d0; +@define-color text-alt #787c99; +@define-color background-alt #0e0e14; +@define-color selected alpha(@text-alt, .4); +@define-color hover alpha(@selected, .4); +@define-color urgent @text-alt; + +* { + color: @text; + all: unset; + font-size: 0.95rem; + font-family: "CaskaydiaCove Nerd Font Propo"; + transition: 200ms; + font-weight: 700; +} + +.notification { + padding: 0 5px; + border-radius: 15px; + border: 2px solid @background; + color: @text; +} + +.notification-background { + background: @background; + box-shadow: none; + border-radius: 15px; + margin: 8px; +} + +.notification-row .inline-reply-entry { + padding: 5px 10px; + background: @background-alt; + border-radius: 15px; +} + +.notification-row .inline-reply-button { + padding: 5px 10px; + border-radius: 15px; + background: @hover; +} + +.notification-row .inline-reply .inline-reply-button:hover { + background: @selected; +} + +.notification .notification-content { + margin: 10px; +} + +.notification-content .text-box { + margin: 0 0 0 15px; +} + +.notification-content .time { + font-size: 0.95rem; + padding: 2px 0; + font-weight: 800; +} + +.notification .summary { + font-weight: 800; + margin-bottom: 2px; + padding: 2px 0; + font-size: 1rem; +} + +.notification .body { + color: @text-alt; + font-size: 0.8rem; +} + +.notification.critical { + border-color: @urgent; +} + +.notification.low progress, +.notification.normal progress, +.notification.critical progress { + background: @selected; +} + +.notification-background .close-button { + margin: 6px; + padding: 2px; + border-radius: 6px; + background: transparent; +} + +.notification-background .close-button:hover { + background: @hover; +} + +.notification > *:last-child > * { + min-height: 3.2em; +} + +.notification > *:last-child > * .notification-action { + background: @hover; + margin: 0 6px 9px 6px; + border-radius: 8px; +} + +.notification > *:last-child > * .notification-action:hover { + background: @selected; +} + +.notification > *:last-child > * .notification-action:active { + background: @selected; +} + +.control-center { + background: @background; + border-radius: 15px; + margin: 5px; + padding: 12px; +} + +.control-center .notification-background { + background: @background-alt; + margin: 7px 0; +} + +/* I dont want to see close buttons in notification center */ +.control-center .notification-background .close-button, +.notification-group-close-button{ + opacity: 0; +} + +/* Notifications expanded-group */ +.notification-group { + margin: 0px 8px; +} + +.notification-group-headers { + font-weight: bold; + color: @text; +} + +.notification-group-headers > label { + margin: 0 3px; + font-size: 1rem; +} + +.notification-group-icon { + color: @text; +} + +.notification-group-collapse-button, +.notification-group-close-all-button { + background: transparent; + color: @text; + margin: 4px; + border-radius: 6px; + padding: 4px; +} + +/* Do not disturb */ +.widget-dnd { + padding: 8px 14px; + border-radius: 12px; + margin: 5px 0; + color: @text; + background: @background-alt; +} + +.widget-dnd > label { + font-size: 1rem; +} + +.widget-dnd switch { + background: @hover; + border-radius: 8px; + box-shadow: none; + padding: 2px; +} + +.widget-dnd switch slider { + background: @text; + border-radius: 8px; +} + +.widget-volume, +.widget-backlight { + padding: 8px 14px; + margin: 5px 0; + border-radius: 12px; + color: @text; + font-weight: 800; + background: @background-alt; +} + +.widget-volume label, +.widget-backlight label { + font-size: 1.1rem; +} + +.widget-volume slider, +.widget-backlight slider { + border-radius: 24px; + margin: -8px; + background: @text; + box-shadow: inset 0 1px 2px rgba(255, 255, 255, 0.15), 0 4px 4px rgba(0, 0, 0, 0.4); + opacity: 1; +} + +.widget-volume trough, +.widget-backlight trough { + background: @hover; + margin-left: 8px; + border-radius: 12px; +} + +.widget-volume highlight, +.widget-backlight highlight { + padding: 3.5px; + border-radius: 12px; + background: @text; +} + +.widget-dnd switch:hover, +.widget-buttons-grid button:hover, +.control-center .notification-group-collapse-button:hover, +.control-center .notification-group-close-all-button:hover +{ + background: @hover; +} + +.widget-mpris { + background: @background-alt; + border-radius: 15px; + margin: 5px 0; + padding: 0 10px; +} + +.mpris-overlay { + background: @background-alt; +} + +.widget-mpris-player { + background: @background-alt; + color: @text; + margin: 0 5px; + padding: 10px 0 15px; +} + +/* Control buttons for mpris widget */ +.widget-mpris-player .image-button:hover { + border-radius: 8px; + background: @hover; +} + +.widget-mpris-player button { + padding: 5px; + margin: 0 2.5px; +} + +.widget-mpris-player .mpris-overlay > box:last-child { + border-radius: 16px; + padding: 0 5px; + background: alpha(@hover, .3); +} + +.widget-mpris-album-art { + border-radius: 16px; + margin: 6px 4px; +} + +.widget-mpris-title, +.widget-mpris-subtitle { + font-weight: 700; + margin: 0 3px; +} + +.widget-mpris-title { + font-size: 1.2rem; +} + +.widget-mpris-subtitle { + font-size: 0.9rem; + color: @text-alt; +} + +.widget-buttons-grid { + border-radius: 12px; + padding: 6px 15px; + background: @background-alt; +} + +.widget-buttons-grid button { + padding: 10px 10px; + margin: 3px; + background: @hover; + border-radius: 15px; +} + +.widget-buttons-grid button > label { + font-size: 16px; + color: @text; +} + +.widget-buttons-grid button:hover { + background: @selected; +} + +.widget-buttons-grid button:checked { + background-color: @text; +} + +.widget-buttons-grid button:checked > label { + color: @background; +} + +/* Change color for plaseholder when no notifications */ +.control-center-list-placeholder { + color: @text; +} + +/* Avoid 'annoying' backgroud */ +.blank-window { + background: transparent; +} diff --git a/config/systemd/user/default.target.wants/mpDris2.service b/config/systemd/user/default.target.wants/mpDris2.service new file mode 120000 index 0000000..5740514 --- /dev/null +++ b/config/systemd/user/default.target.wants/mpDris2.service @@ -0,0 +1 @@ +/usr/lib/systemd/user/mpDris2.service \ No newline at end of file diff --git a/config/systemd/user/default.target.wants/mpd.service b/config/systemd/user/default.target.wants/mpd.service new file mode 120000 index 0000000..0524f66 --- /dev/null +++ b/config/systemd/user/default.target.wants/mpd.service @@ -0,0 +1 @@ +/usr/lib/systemd/user/mpd.service \ No newline at end of file diff --git a/config/systemd/user/default.target.wants/mpris-proxy.service b/config/systemd/user/default.target.wants/mpris-proxy.service new file mode 120000 index 0000000..ae33269 --- /dev/null +++ b/config/systemd/user/default.target.wants/mpris-proxy.service @@ -0,0 +1 @@ +/usr/lib/systemd/user/mpris-proxy.service \ No newline at end of file diff --git a/config/systemd/user/default.target.wants/openrazer-daemon.service b/config/systemd/user/default.target.wants/openrazer-daemon.service new file mode 120000 index 0000000..1f3fbbc --- /dev/null +++ b/config/systemd/user/default.target.wants/openrazer-daemon.service @@ -0,0 +1 @@ +/usr/lib/systemd/user/openrazer-daemon.service \ No newline at end of file diff --git a/config/systemd/user/default.target.wants/pipewire-pulse.service b/config/systemd/user/default.target.wants/pipewire-pulse.service new file mode 120000 index 0000000..f631f69 --- /dev/null +++ b/config/systemd/user/default.target.wants/pipewire-pulse.service @@ -0,0 +1 @@ +/usr/lib/systemd/user/pipewire-pulse.service \ No newline at end of file diff --git a/config/systemd/user/default.target.wants/pipewire.service b/config/systemd/user/default.target.wants/pipewire.service new file mode 120000 index 0000000..47f171d --- /dev/null +++ b/config/systemd/user/default.target.wants/pipewire.service @@ -0,0 +1 @@ +/usr/lib/systemd/user/pipewire.service \ No newline at end of file diff --git a/config/systemd/user/default.target.wants/ydotool.service b/config/systemd/user/default.target.wants/ydotool.service new file mode 120000 index 0000000..e3b4f63 --- /dev/null +++ b/config/systemd/user/default.target.wants/ydotool.service @@ -0,0 +1 @@ +/usr/lib/systemd/user/ydotool.service \ No newline at end of file diff --git a/config/systemd/user/elephant.service b/config/systemd/user/elephant.service new file mode 100644 index 0000000..f2a0dad --- /dev/null +++ b/config/systemd/user/elephant.service @@ -0,0 +1,13 @@ + +[Unit] +Description=Elephant +After=graphical-session.target + +[Service] +Type=simple +ExecStart=elephant +Restart=on-failure + +[Install] +WantedBy=graphical-session.target + \ No newline at end of file diff --git a/config/systemd/user/gnome-session.target.wants/gnome-remote-desktop.service b/config/systemd/user/gnome-session.target.wants/gnome-remote-desktop.service new file mode 120000 index 0000000..94e4c6f --- /dev/null +++ b/config/systemd/user/gnome-session.target.wants/gnome-remote-desktop.service @@ -0,0 +1 @@ +/usr/lib/systemd/user/gnome-remote-desktop.service \ No newline at end of file diff --git a/config/systemd/user/graphical-session.target.wants/elephant.service b/config/systemd/user/graphical-session.target.wants/elephant.service new file mode 120000 index 0000000..c746db0 --- /dev/null +++ b/config/systemd/user/graphical-session.target.wants/elephant.service @@ -0,0 +1 @@ +/home/unconfer/.config/systemd/user/elephant.service \ No newline at end of file diff --git a/config/systemd/user/graphical-session.target.wants/hyprwhspr.service b/config/systemd/user/graphical-session.target.wants/hyprwhspr.service new file mode 120000 index 0000000..744b7f9 --- /dev/null +++ b/config/systemd/user/graphical-session.target.wants/hyprwhspr.service @@ -0,0 +1 @@ +/home/unconfer/.config/systemd/user/hyprwhspr.service \ No newline at end of file diff --git a/config/systemd/user/hyprwhspr.service b/config/systemd/user/hyprwhspr.service new file mode 100644 index 0000000..215bfdd --- /dev/null +++ b/config/systemd/user/hyprwhspr.service @@ -0,0 +1,28 @@ +[Unit] +Description=hyprwhspr stt +Documentation=https://github.com/goodroot/hyprwhspr + +PartOf=graphical-session.target +After=graphical-session.target + +After=pipewire.service ydotool.service +Wants=pipewire.service +Requires=ydotool.service + +Wants=wireplumber.service +After=wireplumber.service + +[Service] +Type=simple +ExecStartPre=/bin/bash -lc 'for i in $(seq 1 60); do ls "$XDG_RUNTIME_DIR"/wayland-* >/dev/null 2>&1 && exit 0; sleep 0.25; done; echo "Wayland socket not found"; exit 1' +ExecStart=/usr/lib/hyprwhspr/bin/hyprwhspr +ExecStopPost=/bin/bash -c 'pkill -9 -f "hyprwhspr-virtual-keyboard" 2>/dev/null || true' +Environment=HYPRWHSPR_ROOT=/usr/lib/hyprwhspr +Environment=PYTHONUNBUFFERED=1 +Restart=on-failure +RestartSec=2 +StandardOutput=journal +StandardError=journal + +[Install] +WantedBy=graphical-session.target diff --git a/config/systemd/user/sockets.target.wants/mpd.socket b/config/systemd/user/sockets.target.wants/mpd.socket new file mode 120000 index 0000000..ac109b9 --- /dev/null +++ b/config/systemd/user/sockets.target.wants/mpd.socket @@ -0,0 +1 @@ +/usr/lib/systemd/user/mpd.socket \ No newline at end of file diff --git a/config/systemd/user/sockets.target.wants/pipewire-pulse.socket b/config/systemd/user/sockets.target.wants/pipewire-pulse.socket new file mode 120000 index 0000000..45f6209 --- /dev/null +++ b/config/systemd/user/sockets.target.wants/pipewire-pulse.socket @@ -0,0 +1 @@ +/usr/lib/systemd/user/pipewire-pulse.socket \ No newline at end of file diff --git a/config/systemd/user/sockets.target.wants/pipewire.socket b/config/systemd/user/sockets.target.wants/pipewire.socket new file mode 120000 index 0000000..d871d81 --- /dev/null +++ b/config/systemd/user/sockets.target.wants/pipewire.socket @@ -0,0 +1 @@ +/usr/lib/systemd/user/pipewire.socket \ No newline at end of file diff --git a/config/tofi/config b/config/tofi/config new file mode 100644 index 0000000..284537d --- /dev/null +++ b/config/tofi/config @@ -0,0 +1,320 @@ +# Default config for tofi +# +# Copy this file to ~/.config/tofi/config and get customising! +# +# A complete reference of available options can be found in `man 5 tofi`. + +# +### Fonts +# + # Font to use, either a path to a font file or a name. + # + # If a path is given, tofi will startup much quicker, but any + # characters not in the chosen font will fail to render. + # + # Otherwise, fonts are interpreted in Pango format. + font = "IosevkaTerm Nerd Font" + + # Point size of text. + font-size = 24 + + # Comma separated list of OpenType font feature settings to apply, + # if supported by the chosen font. The format is similar to the CSS + # "font-feature-settings" property. + # + # Examples: + # + # font-features = "smcp, c2sc" (all small caps) + # font-features = "liga 0" (disable ligatures) + font-features = "" + + # Comma separated list of OpenType font variation settings to apply + # to variable fonts. The format is similar to the CSS + # "font-variation-settings" property. + # + # Examples: + # + # font-variations = "wght 900" (Extra bold) + # font-variations = "wdth 25, slnt -10" (Narrow and slanted) + font-variations = "" + + # Perform font hinting. Only applies when a path to a font has been + # specified via `font`. Disabling font hinting speeds up text + # rendering appreciably, but will likely look poor at small font pixel + # sizes. + hint-font = true + +# +### Text theming +# + # Default text color + # + # All text defaults to this color if not otherwise specified. + text-color = #FFFFFF + + # All pieces of text have the same theming attributes available: + # + # *-color + # Foreground color + # + # *-background + # Background color + # + # *-background-padding + # Background padding in pixels (comma-delimited, CSS-style list). + # See "DIRECTIONAL VALUES" under `man 5 tofi` for more info. + # + # *-background-corner-radius + # Radius of background box corners in pixels + + # Prompt text theme + # prompt-color = #FFFFFF + prompt-background = #00000000 + prompt-background-padding = 0 + prompt-background-corner-radius = 0 + + # Placeholder text theme + placeholder-color = #FFFFFFA8 + placeholder-background = #00000000 + placeholder-background-padding = 0 + placeholder-background-corner-radius = 0 + + # Input text theme + # input-color = #FFFFFF + input-background = #00000000 + input-background-padding = 0 + input-background-corner-radius = 0 + + # Default result text theme + # default-result-color = #FFFFFF + default-result-background = #00000000 + default-result-background-padding = 0 + default-result-background-corner-radius = 0 + + # Alternate (even-numbered) result text theme + # + # If unspecified, these all default to the corresponding + # default-result-* attribute. + # + # alternate-result-color = #FFFFFF + # alternate-result-background = #00000000 + # alternate-result-background-padding = 0 + # alternate-result-background-corner-radius = 0 + + # Selection text + selection-color = #F92672 + selection-background = #00000000 + selection-background-padding = 0 + selection-background-corner-radius = 0 + + # Matching portion of selection text + selection-match-color = #00000000 + + +# +### Text cursor theme +# + # Style of the optional text cursor. + # + # Supported values: bar, block, underscore + text-cursor-style = bar + + # Color of the text cursor + # + # If unspecified, defaults to the same as input-color + # text-cursor-color = #FFFFFF + + # Color of text behind the text cursor when text-cursor-style = block + # + # If unspecified, defaults to the same as background-color + # text-cursor-background = #000000 + + # Corner radius of the text cursor + text-cursor-corner-radius = 0 + + # Thickness of the bar and underscore text cursors. + # + # If unspecified, defaults to a font-dependent value when + # text-cursor-style = underscore, or to 2 otherwise. + # text-cursor-thickness = 2 + +# +### Text layout +# + # Prompt to display. + prompt-text = "run: " + + # Extra horizontal padding between prompt and input. + prompt-padding = 0 + + # Placeholder input text. + placeholder-text = "" + + # Maximum number of results to display. + # If 0, tofi will draw as many results as it can fit in the window. + num-results = 0 + + # Spacing between results in pixels. Can be negative. + result-spacing = 0 + + # List results horizontally. + horizontal = false + + # Minimum width of input in horizontal mode. + min-input-width = 0 + +# +### Window theming +# + # Width and height of the window. Can be pixels or a percentage. + width = 1280 + height = 720 + + # Window background color + background-color = #1B1D1E + + # Width of the border outlines in pixels. + outline-width = 4 + + # Border outline color + outline-color = #080800 + + # Width of the border in pixels. + border-width = 12 + + # Border color + border-color = #F92672 + + # Radius of window corners in pixels. + corner-radius = 0 + + # Padding between borders and text. Can be pixels or a percentage. + padding-top = 8 + padding-bottom = 8 + padding-left = 8 + padding-right = 8 + + # Whether to clip text drawing to be within the specified padding. This + # is mostly important for allowing text to be inset from the border, + # while still allowing text backgrounds to reach right to the edge. + clip-to-padding = true + + # Whether to scale the window by the output's scale factor. + scale = true + +# +### Window positioning +# + # The name of the output to appear on. An empty string will use the + # default output chosen by the compositor. + output = "" + + # Location on screen to anchor the window to. + # + # Supported values: top-left, top, top-right, right, bottom-right, + # bottom, bottom-left, left, center. + anchor = center + + # Set the size of the exclusive zone. + # + # A value of -1 means ignore exclusive zones completely. + # A value of 0 will move tofi out of the way of other windows' zones. + # A value greater than 0 will set that much space as an exclusive zone. + # + # Values greater than 0 are only meaningful when tofi is anchored to a + # single edge. + exclusive-zone = -1 + + # Window offset from edge of screen. Only has an effect when anchored + # to the relevant edge. Can be pixels or a percentage. + margin-top = 0 + margin-bottom = 0 + margin-left = 0 + margin-right = 0 + +# +### Behaviour +# + # Hide the mouse cursor. + hide-cursor = false + + # Show a text cursor in the input field. + text-cursor = false + + # Sort results by number of usages in run and drun modes. + history = true + + # Specify an alternate file to read and store history information + # from / to. This shouldn't normally be needed, and is intended to + # facilitate the creation of custom modes. + # history-file = /path/to/histfile + + # Select the matching algorithm used. If normal, substring matching is + # used, weighted to favour matches closer to the beginning of the + # string. If prefix, only substrings at the beginning of the string are + # matched. If fuzzy, searching is performed via a simple fuzzy matching + # algorithm. + # + # Supported values: normal, prefix, fuzzy + #matching-algorithm = fuzzy + + # If true, require a match to allow a selection to be made. If false, + # making a selection with no matches will print input to stdout. + # In drun mode, this is always true. + require-match = true + + # If true, automatically accept a result if it is the only one + # remaining. If there's only one result on startup, window creation is + # skipped altogether. + auto-accept-single = false + + # If true, typed input will be hidden, and what is displayed (if + # anything) is determined by the hidden-character option. + hide-input = false + + # Replace displayed input characters with a character. If the empty + # string is given, input will be completely hidden. + # This option only has an effect when hide-input is set to true. + hidden-character = "*" + + # If true, use physical keys for shortcuts, regardless of the current + # keyboard layout. If false, use the current layout's keys. +# physical-keybindings = true + + # Instead of printing the selected entry, print the 1-based index of + # the selection. This option has no effect in run or drun mode. If + # require-match is set to false, non-matching input will still result + # in the input being printed. +# print-index = false + + # If true, directly launch applications on selection when in drun mode. + # Otherwise, just print the command line to stdout. + drun-launch = false + + # The terminal to run terminal programs in when in drun mode. + # This option has no effect if drun-launch is set to true. + # Defaults to the value of the TERMINAL environment variable. + # terminal = foot + + # Delay keyboard initialisation until after the first draw to screen. + # This option is experimental, and will cause tofi to miss keypresses + # for a short time after launch. The only reason to use this option is + # performance on slow systems. + late-keyboard-init = false + + # If true, allow multiple simultaneous processes. + # If false, create a lock file on startup to prevent multiple instances + # from running simultaneously. + multi-instance = false + + # Assume input is plain ASCII, and disable some Unicode handling + # functions. This is faster, but means e.g. a search for "e" will not + # match "é". + ascii-input = false + +# +### Inclusion +# + # Configs can be split between multiple files, and then included + # within each other. + # include = /path/to/config diff --git a/config/user-dirs.conf b/config/user-dirs.conf new file mode 100644 index 0000000..f184210 --- /dev/null +++ b/config/user-dirs.conf @@ -0,0 +1 @@ +enabled=False diff --git a/user-dirs.dirs b/config/user-dirs.dirs similarity index 81% rename from user-dirs.dirs rename to config/user-dirs.dirs index c4d1132..7c43041 100644 --- a/user-dirs.dirs +++ b/config/user-dirs.dirs @@ -4,12 +4,14 @@ # Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped # homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an # absolute path. No other format is supported. -# -XDG_DESKTOP_DIR="$HOME/desk" +# +XDG_DESKTOP_DIR="$HOME/" XDG_DOWNLOAD_DIR="$HOME/dwnlds" -XDG_TEMPLATES_DIR="$HOME/templ" +XDG_TEMPLATES_DIR="$HOME/" XDG_PUBLICSHARE_DIR="$HOME/" XDG_DOCUMENTS_DIR="$HOME/docs" XDG_MUSIC_DIR="$HOME/mus" XDG_PICTURES_DIR="$HOME/imgs" XDG_VIDEOS_DIR="$HOME/vids" +XDG_XDG_MUSIC_DIR_DIR="$HOME/mus/" +XDG_PROJECTS_DIR="$HOME/Projects" diff --git a/config/user-dirs.locale b/config/user-dirs.locale new file mode 100644 index 0000000..3e0b419 --- /dev/null +++ b/config/user-dirs.locale @@ -0,0 +1 @@ +en_US \ No newline at end of file diff --git a/config/walker/config.toml b/config/walker/config.toml index f78d86b..76a7c93 100644 --- a/config/walker/config.toml +++ b/config/walker/config.toml @@ -55,7 +55,7 @@ default = [ ] # providers to be queried by default empty = ["desktopapplications"] # providers to be queried when query is empty ignore_preview = [] # providers that should not show previews -max_results = 50 # global max results +max_results = 2000 # global max results [providers.argument_delimiter] # define the argument delimiter per provider # runner = " " diff --git a/config/wl-kbptr/config b/config/wl-kbptr/config new file mode 100644 index 0000000..c28fb7c --- /dev/null +++ b/config/wl-kbptr/config @@ -0,0 +1,57 @@ +# wl-kbptr can be configured with a configuration file. +# The file location can be passed with the -c parameter. +# Othewise the `$XDG_CONFIG_HOME/wl-kbptr/config` file will +# be loaded if it exits. Below is the default configuration. + +[general] +home_row_keys= +modes=floating,click +cancellation_status_code=0 + +#modes=tile,bisect +[mode_tile] +label_color=#fffd +label_select_color=#fd0d +unselectable_bg_color=#2226 +selectable_bg_color=#0304 +selectable_border_color=#040c +label_font_family=sans-serif +label_font_size=8 50% 100 +label_symbols=abcdefghijklmnopqrstuvwxyz + +[mode_floating] +source=stdin +label_color=#fffd +label_select_color=#fd0d +unselectable_bg_color=#2226 +selectable_bg_color=#1718 +selectable_border_color=#040c +label_font_family=sans-serif +label_font_size=12 50% 100 +label_symbols=abcdefghijklmnopqrstuvwxyz + +[mode_bisect] +label_color=#fffd +label_font_size=20 +label_font_family=sans-serif +label_padding=12 +pointer_size=20 +pointer_color=#e22d +unselectable_bg_color=#2226 +even_area_bg_color=#0304 +even_area_border_color=#0408 +odd_area_bg_color=#0034 +odd_area_border_color=#0048 +history_border_color=#3339 + +[mode_split] +pointer_size=20 +pointer_color=#e22d +bg_color=#2226 +area_bg_color=#11111188 +vertical_color=#8888ffcc +horizontal_color=#008800cc +history_border_color=#3339 + +[mode_click] +button=left diff --git a/config/xdg-desktop-portal/portals.conf b/config/xdg-desktop-portal/portals.conf new file mode 100644 index 0000000..3c90734 --- /dev/null +++ b/config/xdg-desktop-portal/portals.conf @@ -0,0 +1,3 @@ +[preferred] +default=gnome +org.freedesktop.impl.portal.FileChooser=gnome diff --git a/config/xsettingsd/xsettingsd.conf b/config/xsettingsd/xsettingsd.conf new file mode 100644 index 0000000..f4226ad --- /dev/null +++ b/config/xsettingsd/xsettingsd.conf @@ -0,0 +1,9 @@ +Net/ThemeName "adw-gtk3-dark" +Net/IconThemeName "Adwaita" +Gtk/CursorThemeName "Bibata-Modern-Ice" +Net/EnableEventSounds 1 +EnableInputFeedbackSounds 0 +Xft/Antialias 1 +Xft/Hinting 1 +Xft/HintStyle "hintmedium" +Xft/RGBA "rgb" diff --git a/config/yt-dlp/config b/config/yt-dlp/config new file mode 100644 index 0000000..f234bf6 --- /dev/null +++ b/config/yt-dlp/config @@ -0,0 +1 @@ +-o ~/vids/%(title)s.%(ext)s diff --git a/config/zathura/zathurarc b/config/zathura/zathurarc new file mode 100644 index 0000000..ea10740 --- /dev/null +++ b/config/zathura/zathurarc @@ -0,0 +1 @@ +set selection-clipboard clipboard diff --git a/zram-generator.conf b/config/zram-generator.conf similarity index 100% rename from zram-generator.conf rename to config/zram-generator.conf diff --git a/copy.sh b/copy.sh index 1856487..a027ba3 100644 --- a/copy.sh +++ b/copy.sh @@ -1,27 +1,40 @@ #!/bin/bash -DEST="./backup_config" -cp -r ~/.config//* . -cp -r ~/.config/btop/ ./* . -cp -r ~/.config/clipse/* . -cp -r ~/.config/fastfetch/* . -cp -r ~/.config/fish/* . -cp -r ~/.config/foot/* . -cp -r ~/.config/fuzzel/* . -cp -r ~/.config/hypr/* . -cp -r ~/.config/hyprwave/* . -cp -r ~/.config/kitty/* . -cp -r ~/.config/mimeapps.list/* . -cp -r ~/.config/mpd/* . -cp -r ~/.config/mpDris2/* . -cp -r ~/.config/mpv/* . -cp -r ~/.config/niri/* . -cp -r ~/.config/nvim/* . -cp -r ~/.config/rmpc/* . -cp -r ~/.config/swaync/* . -cp -r ~/.config/swayosd/* . -cp -r ~/.config/termusic/* . -cp -r ~/.config/tmux/* . -cp -r ~/.config/walker/* . -cp -r ~/.config/waybar/* . -cp -r ~/.config/yazi/* . +# ================= НАСТРОЙКИ ================= +SOURCE_DIR="$HOME/.config/" +DEST_DIR="./config" + +# Список элементов для копирования (папки и файлы через пробел) +ITEMS=("aichat" "btop" "calcurse" "cava" "clipse" "DankMaterialShell" "fastfetch" "fish" "foot" "fsel" "fuzzel" "hypr" "hyprwave" "hyprwhspr" "i3" "ironbar" "kitty" "Kvantum" "matugen" "mpd" "mpDris2" "mpv" "niri" "nix" "nvim" "nwg-look" "omarchy" "pomo" "rmpc" "scripts" "swaync" "swayosd" "systemd" "tmux" "tofi" "walker" "wl-kbptr" "xdg-desktop-portal" "xsettingsd" "yazi" "yt-dlp" "zathura" "keymap.xkb" "mimeapps.list" "starship.toml" "user-dirs.conf" "user-dirs.dirs" "user-dirs.locale") +# ============================================= + +# Гарантируем наличие слеша в конце пути назначения +[[ "${DEST_DIR}" != */ ]] && DEST_DIR="${DEST_DIR}/" + +# Проверка наличия rsync +if ! command -v rsync &>/dev/null; then + echo "Ошибка: rsync не установлен. Установите его через пакетный менеджер вашей ОС." + exit 1 +fi + +# Создание директории назначения, если её нет +mkdir -p "$DEST_DIR" + +# Цикл по списку элементов +for item in "${ITEMS[@]}"; do + SRC="${SOURCE_DIR}${item}" + + if [[ -d "$SRC" ]]; then + echo "Копирую директорию: $item" + # Для директорий: копируем СОДЕРЖИМОЕ в папку с таким же именем в целевой директории + rsync -av --progress "${SRC}/" "${DEST_DIR}${item}/" + elif [[ -f "$SRC" ]]; then + echo "Копирую файл: $item" + # Для файлов: копируем сам файл в целевую директорию + rsync -av --progress "$SRC" "${DEST_DIR}" + else + echo "Предупреждение: $SRC не найден или не является файлом/директорией. Пропускаю." + fi +done + +echo "Операция завершена." diff --git a/nix-packages.md b/nix-packages.md deleted file mode 100644 index e528575..0000000 --- a/nix-packages.md +++ /dev/null @@ -1,7 +0,0 @@ -Name: ayugram-desktop -Name: gnome-panel -Name: jolt -Name: llmfit -Name: nix -Name: tg -Name: tg-1 diff --git a/nix-pkgs.txt b/nix-pkgs.txt new file mode 100644 index 0000000..484a166 --- /dev/null +++ b/nix-pkgs.txt @@ -0,0 +1,4 @@ +Name: ayugram-desktop +Name: llmfit +Name: nix +Name: simplex-chat-desktop diff --git a/pacman-packages.md b/pacman-packages.md deleted file mode 100644 index 7f4eb7f..0000000 --- a/pacman-packages.md +++ /dev/null @@ -1,466 +0,0 @@ -adw-gtk-theme -aether -an-anime-game-launcher-bin -android-emulator -android-sdk-platform-tools -android-studio -angband -arc-solid-gtk-theme -ardour -aurorae -awesome-terminal-fonts -awww -baobab -base -base-devel -bat -bibata-cursor-theme-bin -bind -blackarch-mirrorlist -blender -bluedevil -bluetui -bluez-utils -breeze -breeze-cursors -breeze-gtk -breeze-plymouth -brightnessctl -browsh -btop -buho -cable -caja -calcurse -cava -clipse -clock-tui -cloudflared -cmatrix -cmus -commet-bin -cool-retro-term -cowsay -cull-bin -dconf-editor -decibels -dialog -discover -dmenu -dnsmasq -docker -docker-compose -drkonqi -dxvk-bin -eblanfetch -efibootmgr -electron24-bin -element-desktop -elephant-all -elyprismlauncher-bin -emptty -eog -epiphany -espeak-ng -evercal -eww -ex-vi-compat -expac -eza -fagram-bin -fastfetch -fd -filezilla -firefox -firefox-tridactyl -fish -flatpak-kcm -floorp-bin -fluffychat-bin -foliate -foot -fractal -freerdp -fsel-git -fuzzel -fzf -galculator -gamescope -gdm -geoip -geoip-database -ghostty -gimp -git -gnome-backgrounds -gnome-calculator -gnome-calendar -gnome-characters -gnome-clocks -gnome-color-manager -gnome-connections -gnome-console -gnome-contacts -gnome-control-center -gnome-disk-utility -gnome-font-viewer -gnome-keyring -gnome-logs -gnome-maps -gnome-menus -gnome-music -gnome-panel -gnome-photos -gnome-remote-desktop -gnome-session -gnome-settings-daemon -gnome-shell -gnome-software -gnome-sound-recorder -gnome-system-monitor -gnome-text-editor -gnome-themes-extra -gnome-tour -gnome-tweaks -gnome-user-docs -gnome-user-share -gnome-weather -godot -godotpcktool-bin -google-chrome -greetd-tuigreet -grilo-plugins -grub -gsh -gthumb -gtk-theme-bubble-darker-git -gtk-theme-elementary -gtk-theme-material-black -gtk3 -gtklock -gum -gvfs-afc -gvfs-dnssd -gvfs-goa -gvfs-google -gvfs-gphoto2 -gvfs-mtp -gvfs-nfs -gvfs-onedrive -gvfs-smb -gvfs-wsdd -hdparm -helix -helm-bin -helvum -hostapd -hylauncher-bin -hyprland -hyprlock -hyprpicker -hyprpwcenter -hyprshot -hyprwave -hyprwhspr -hytale-f2p-git -i2pd -i3-wm -i3blocks -i3lock -i3status -imv -inkscape -ithil-bin -iw -iwd -jdk-openjdk -kactivitymanagerd -kalidoface-bin -kde-cli-tools -kde-gtk-config -kdecoration -kdenlive -kdeplasma-addons -kgamma -kglobalacceld -kinfocenter -kitty -kmenuedit -knighttime -kpipewire -krdp -krita -kscreen -kscreenlocker -ksshaskpass -ksystemstats -ktailctl -kubo -kwallet-pam -kwayland -kwin -kwin-x11 -kwrited -labwc -layer-shell-qt -lib32-gamemode -lib32-gnutls -libkscreen -libksysguard -libplasma -libreoffice-fresh-ru -librewolf-bin -links -linux -linux-firmware -linux-headers -linux-wifi-hotspot -lla -lmms -lolcat -loupe -lsd -lshw -lutris -ly -mailsend-go -malcontent -mandoc -marco -marktext-tkaixiang-bin -marp-cli -mate-backgrounds -mate-control-center -mate-desktop -mate-icon-theme -mate-menus -mate-notification-daemon -mate-panel -mate-polkit -mate-session-manager -mate-settings-daemon -mate-themes -mate-user-guide -mcomix -mesa-demos -microsocks -mihomo -milou -mpd -mpdris2 -mplayer -mpv -neovide -neovim -nerd-fonts-noto-sans-mono -netstat-nat -networkmanager -nheko -nicotine+ -niri -niri-screen-time-git -nirius -nomacs -noto-fonts-cjk -noto-fonts-emoji -nuls -nvidia-open-dkms -nvidia-settings -nvtop -nwg-look -obs-studio -obsidian -ocean-sound-theme -ocrmypdf -ollama-cuda -openbsd-netcat -openrazer-daemon -orca -oxygen -oxygen-cursors -oxygen-sounds -pandoc-cli -papers -papirus-icon-theme -paru -paru-debug -pastel -pavucontrol -pidgin -pipewire-alsa -pipewire-pulse -plasma-activities -plasma-activities-stats -plasma-browser-integration -plasma-desktop -plasma-disks -plasma-firewall -plasma-integration -plasma-keyboard -plasma-login-manager -plasma-nm -plasma-pa -plasma-sdk -plasma-systemmonitor -plasma-thunderbolt -plasma-vault -plasma-welcome -plasma-workspace -plasma-workspace-wallpapers -plasma5support -plymouth-kcm -polkit-gnome -polkit-kde-agent -pomo-bin -ponysay -portproton -postgresql -power-profiles-daemon -powerdevil -print-manager -pwvucontrol -python-babel -python-i3ipc -python-mutagen -python-openrazer -python-pip -python-pipx -python-pyyaml-env-tag -python-watchdog -qbittorrent -qpwgraph -qqc2-breeze-style -qwen-code -reaper -relay-scanner -remmina -rmpc -rygel -sakura -scrcpy -scrntime-git -sddm-kcm -showmethekey -showtime -sillytavern-git -simple-scan -simplex-chat-bin -sing-box -sioyek -snapshot -snekstudio-bin -spectacle -speedcrunch -squid -startwine -steam -sudo -sushi -swaybg -swaync -swayosd -syncthing -systemctl-tui -systemsettings -tailscale -tangent-bin -tcsh -tecla -telegram-cli-git -telegram-desktop -tesseract-data-eng -throne-bin -tigervnc -timr -tmux -tofi -tor -torbrowser-launcher -traceroute -ttf-iosevka-nerd -ttf-iosevkaterm-nerd -ttf-quicksand-variable -tuios-bin -tuxsay -typst -udiskie -ufw -unrar -uwsgi -uwsgi-plugin-python -v4l2loopback-dkms -v4l2loopback-utils -vesktop-bin -vkd3d -vncdotool -vulkan-tools -vulkan-validation-layers -wacomtablet -walker -waybar -wayland-utils -wayvnc -weechat -wego -wf-recorder -wget -whosthere-bin -wine-staging -winetricks -wireshark-cli -wl-clipboard -xdotool -xf86-video-vesa -xorg-bdftopcf -xorg-docs -xorg-font-util -xorg-fonts-100dpi -xorg-fonts-75dpi -xorg-iceauth -xorg-mkfontscale -xorg-server -xorg-server-devel -xorg-server-src -xorg-server-xephyr -xorg-server-xnest -xorg-sessreg -xorg-smproxy -xorg-x11perf -xorg-xbacklight -xorg-xcmsdb -xorg-xcursorgen -xorg-xdpyinfo -xorg-xdriinfo -xorg-xev -xorg-xgamma -xorg-xhost -xorg-xinit -xorg-xinput -xorg-xkbevd -xorg-xkbutils -xorg-xkill -xorg-xlsatoms -xorg-xlsclients -xorg-xmodmap -xorg-xpr -xorg-xrdb -xorg-xrefresh -xorg-xsetroot -xorg-xvinfo -xorg-xwd -xorg-xwininfo -xorg-xwud -xprintidle -xray-bin -xwayland-satellite -yazi -yelp -yggdrasil -yt-dlp -zathura -zathura-djvu -zathura-pdf-mupdf -zellij -zen-browser-bin -zsh -zsh-completions diff --git a/apps-list.md b/pkgs.txt similarity index 88% rename from apps-list.md rename to pkgs.txt index 913963b..b6f4b0e 100644 --- a/apps-list.md +++ b/pkgs.txt @@ -1,22 +1,19 @@ +7zip adw-gtk-theme aether -an-anime-game-launcher-bin -android-emulator -android-sdk-platform-tools -android-studio +aichat angband -arc-solid-gtk-theme -ardour -aurorae +ascii-draw +authenticator awesome-terminal-fonts awww +banner baobab base base-devel bat bibata-cursor-theme-bin bind -blackarch-mirrorlist blender bluedevil bluetui @@ -31,67 +28,73 @@ btop buho caja calcurse +cartridges cava +chezmoi +cliphist clipse +cloc clock-tui cloudflared cmatrix cmus +colordiff commet-bin cool-retro-term cowsay cull-bin dconf-editor +ddgr decibels dialog -discover dmenu +dms-shell-niri dnsmasq docker docker-compose drkonqi +dsearch-bin +duf +dunst dxvk-bin eblanfetch efibootmgr -electron24-bin element-desktop elephant-all elyprismlauncher-bin emptty eog epiphany +equibop espeak-ng evercal +evtest eww -ex-vi-compat expac eza fagram-bin fastfetch fd +ffmpegthumbnailer +figlet filezilla firefox firefox-tridactyl fish -flatpak-kcm floorp-bin fluffychat-bin foliate foot fractal -freerdp fsel-git fuzzel fzf -galculator gamescope -gdm geoip geoip-database ghostty gimp git -gnome-backgrounds gnome-calculator gnome-calendar gnome-characters @@ -99,7 +102,6 @@ gnome-clocks gnome-color-manager gnome-connections gnome-console -gnome-contacts gnome-control-center gnome-disk-utility gnome-font-viewer @@ -114,12 +116,10 @@ gnome-remote-desktop gnome-session gnome-settings-daemon gnome-shell -gnome-software gnome-sound-recorder gnome-system-monitor gnome-text-editor gnome-themes-extra -gnome-tour gnome-tweaks gnome-user-docs gnome-user-share @@ -141,7 +141,6 @@ gum gvfs-afc gvfs-dnssd gvfs-goa -gvfs-google gvfs-gphoto2 gvfs-mtp gvfs-nfs @@ -150,8 +149,10 @@ gvfs-smb gvfs-wsdd hdparm helix +hellwal helm-bin helvum +hfdownloader hostapd hping hylauncher-bin @@ -170,11 +171,15 @@ i3lock i3status imv inkscape +input-leap +ironbar-bin ithil-bin ithil-bin-debug iw iwd jdk-openjdk +jdupes +just kactivitymanagerd kalidoface-bin kde-cli-tools @@ -196,15 +201,20 @@ kscreen kscreenlocker ksshaskpass ksystemstats -ktailctl kubo +kvantum +kvantum-theme-libadwaita-git kwallet-pam kwayland kwin kwin-x11 kwrited labwc +lan-mouse layer-shell-qt +lazydocker +lazygit +lazyssh lib32-gamemode lib32-gnutls libkscreen @@ -218,7 +228,6 @@ linux-firmware linux-headers linux-wifi-hotspot lla -llama.cpp-cuda-git lmms lolcat loupe @@ -227,7 +236,6 @@ lshw lutris ly mailsend-go -malcontent mandoc marco marktext-tkaixiang-bin @@ -244,18 +252,26 @@ mate-session-manager mate-settings-daemon mate-themes mate-user-guide +matugen mcomix mesa-demos microsocks mihomo milou +mousai mpd mpdris2 mplayer mpv +mpvpaper +ncdu neovide neovim +vim +v4l-utils nerd-fonts-noto-sans-mono +net-tools +netscanner netstat-nat networkmanager nheko @@ -263,9 +279,12 @@ nicotine+ niri niri-screen-time-git nirius +nmap +noctalia-shell nomacs noto-fonts-cjk noto-fonts-emoji +nuclear-player-bin nuls nvidia-open-dkms nvidia-settings @@ -277,7 +296,9 @@ ocean-sound-theme ocrmypdf ollama-cuda openbsd-netcat +opencode openrazer-daemon +openrgb orca oxygen oxygen-cursors @@ -292,6 +313,9 @@ pavucontrol pidgin pipewire-alsa pipewire-pulse +pipewire +pipewire-audio +pipewire-jack plasma-activities plasma-activities-stats plasma-browser-integration @@ -314,7 +338,8 @@ plasma5support plymouth-kcm polkit-gnome polkit-kde-agent -pomo-bin +pomo-cli +pomotroid-bin ponysay portproton postgresql @@ -322,6 +347,7 @@ power-profiles-daemon powerdevil print-manager pwvucontrol +pyenv python-babel python-huggingface-hub python-i3ipc @@ -329,18 +355,23 @@ python-mutagen python-openrazer python-pip python-pipx +python-pywalfox python-pyyaml-env-tag python-watchdog qbittorrent qpwgraph qqc2-breeze-style -qwen-code +qt5ct +qt6ct +rdfind reaper relay-scanner remmina rmpc +rsync rygel sakura +scons scrcpy scrntime-git sddm-kcm @@ -349,6 +380,7 @@ showtime sillytavern-git simple-scan simplex-chat-bin +simplex-desktop-bin sing-box sioyek snapshot @@ -356,7 +388,7 @@ snekstudio-bin spectacle speedcrunch squid -startwine +starship steam sudo sushi @@ -373,14 +405,16 @@ tecla telegram-cli-git telegram-desktop tesseract-data-eng -throne-bin tigervnc timr tmux tofi +toilet +toilet-fonts tor torbrowser-launcher traceroute +trayscale ttf-iosevka-nerd ttf-iosevkaterm-nerd ttf-quicksand-variable @@ -392,6 +426,7 @@ ufw unrar uwsgi uwsgi-plugin-python +v2rayn v4l2loopback-dkms v4l2loopback-utils vesktop-bin @@ -404,6 +439,7 @@ walker waybar wayland-utils wayvnc +weathr weechat wego wf-recorder @@ -414,6 +450,10 @@ wine-staging winetricks wireshark-cli wl-clipboard +wl-kbptr +wlrctl +wlsunset +xdg-desktop-portal-wlr xdotool xf86-video-vesa xorg-bdftopcf @@ -459,6 +499,7 @@ xprintidle xray-bin xwayland-satellite yazi +ydiff yelp yggdrasil yt-dlp @@ -467,5 +508,7 @@ zathura-djvu zathura-pdf-mupdf zellij zen-browser-bin +zoxide +zram-generator zsh zsh-completions diff --git a/services.md b/services.txt similarity index 88% rename from services.md rename to services.txt index f3f43b3..e64504b 100644 --- a/services.md +++ b/services.txt @@ -5,12 +5,13 @@ systemctl list-units --type=service --state=running containerd.service loaded active running containerd container runtime dbus-broker.service loaded active running D-Bus System Message Bus docker.service loaded active running Docker Application Container Engine + emptty.service loaded active running emptty display manager geoclue.service loaded active running Location Lookup Service getty@tty1.service loaded active running Getty on tty1 + getty@tty2.service loaded active running Getty on tty2 gpm.service loaded active running Virtual console mouse server i2pd.service loaded active running C++ daemon for accessing the I2P network iwd.service loaded active running Wireless service - ly@tty2.service loaded active running TUI display manager NetworkManager.service loaded active running Network Manager ollama.service loaded active running Ollama Service polkit.service loaded active running Authorization Manager @@ -24,12 +25,14 @@ systemctl list-units --type=service --state=running systemd-udevd.service loaded active running Rule-based Manager for Device Events and Files systemd-userdbd.service loaded active running User Database Manager tailscaled.service loaded active running Tailscale node agent + udisks2.service loaded active running Disk Manager upower.service loaded active running Daemon for power management user@1000.service loaded active running User Manager for UID 1000 + vpn-singbox.service loaded active running simple vpn systemd unit wpa_supplicant.service loaded active running WPA supplicant Legend: LOAD → Reflects whether the unit definition was properly loaded. ACTIVE → The high-level unit activation state, i.e. generalization of SUB. SUB → The low-level unit activation state, values depend on unit type. -27 loaded units listed. +30 loaded units listed.