diff options
| author | Aargh Rai <aargh.rai+git@gmail.com> | 2026-08-06 00:29:36 +0530 |
|---|---|---|
| committer | Aargh Rai <aargh.rai+git@gmail.com> | 2026-08-06 00:29:36 +0530 |
| commit | 91a5f9790cfd4a98ee940633694fb512ecf24942 (patch) | |
| tree | b20bdd22e304234b6893e20d0ca5fbfd042f2184 | |
| parent | ced774e19c36fb3b0b33a3846e7c9cf874b0c206 (diff) | |
i3 > hyprland & x11 > wayland
85 files changed, 218 insertions, 2674 deletions
@@ -46,7 +46,7 @@ But make sure you download all the dependencies that are used in nixos/desktop-e - ly Display Manager for login - hyprland as desktop environment - tmux for terminal sessions -- foot as terminal +- kitty as terminal - quickshell for top bar & elements - hyprsunset for nightlight - hyprlock for lock screen @@ -82,7 +82,7 @@ Configure in quickshell/shell.qml<br> |Spin|Time| ### Keyboard shortcuts -Configure in hypr/hyprland/keybinds.conf +Configure in i3/config I am left handed so my mouse is in left handed mode<br> IF YOU ARE NOT LEFT HANDED, change this in hypr/hyprland/input.conf:input:left_handed<bgr> @@ -90,7 +90,7 @@ IF YOU ARE NOT LEFT HANDED, change this in hypr/hyprland/input.conf:input:left_h |Keybind|Description| |-|-| -|Win + T|**Spawn Terminal** (foot)| +|Win + T|**Spawn Terminal** (kitty)| |Win + Q|Kill active window| |Win + Shift + L|Sign out| |Win + L|Lock| @@ -63,8 +63,8 @@ }; sessions = { + i3_x11 = true; plasma_x11 = true; # this is entirely backup, there is no rice here - hyprland_wayland = true; }; dualbootedwithwindows = false; diff --git a/foot/foot.ini b/foot/foot.ini deleted file mode 100644 index 383b8ee..0000000 --- a/foot/foot.ini +++ /dev/null @@ -1,5 +0,0 @@ -[main] -font=JetBrainsMono Nerd Font:size=12 - -[colors-dark] -background=282828 diff --git a/home-manager/home.nix b/home-manager/home.nix index 3c0e9e7..b65a59f 100644 --- a/home-manager/home.nix +++ b/home-manager/home.nix @@ -25,11 +25,11 @@ let ]; confDirs = linkConfDirs [ - "foot" "fortune" - "hypr" + "lxqt" + "i3" "nvim" - "quickshell" + "kitty" "tmux" "yazi" ]; @@ -60,24 +60,4 @@ in { EDITOR = "nvim"; }; programs.home-manager.enable = true; - - services.greyline = { - enable = true; - backend = "swww"; # renamed to awww for nixpkgs - fontFamily = "JetBrains Mono Nerd Font"; - settings = { - theme = "dark"; - logo = false; - format = "24h"; - twilight = { bands = true; darkness = "subtle"; }; - home = { tz = "Asia/Kolkata"; column_highlight = true; }; - city = [ - { name = "Kuala Lumpur"; lat = 3.14; lon = 101.69; tz = "Asia/Kuala_Lumpur"; } - { name = "Kolkata"; lat = 22.56; lon = 88.36; tz = "Asia/Kolkata"; } - { name = "London"; lat = 51.51; lon = -0.13; tz = "Europe/London"; } - { name = "New York"; lat = 40.71; lon = -74.01; tz = "America/New_York"; } - { name = "Tokyo"; lat = 35.68; lon = 139.69; tz = "Asia/Tokyo"; } - ]; - }; - }; } diff --git a/hypr/catppuccin/.editorconfig b/hypr/catppuccin/.editorconfig deleted file mode 100644 index a6f10bd..0000000 --- a/hypr/catppuccin/.editorconfig +++ /dev/null @@ -1,17 +0,0 @@ -# EditorConfig helps developers define and maintain consistent
-# coding styles between different editors and IDEs
-# EditorConfig is awesome: https://EditorConfig.org
-
-root = true
-
-
-[*]
-charset = utf-8
-indent_size = 4
-indent_style = tab
-end_of_line = lf
-insert_final_newline = true
-trim_trailing_whitespace = true
-
-[*.{diff,md}]
-trim_trailing_whitespace = false
diff --git a/hypr/catppuccin/LICENSE b/hypr/catppuccin/LICENSE deleted file mode 100644 index 7ba7a87..0000000 --- a/hypr/catppuccin/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License
-
-Copyright (c) 2021 Catppuccin
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/hypr/catppuccin/README.md b/hypr/catppuccin/README.md deleted file mode 100644 index 830c369..0000000 --- a/hypr/catppuccin/README.md +++ /dev/null @@ -1,67 +0,0 @@ -<h3 align="center">
- <img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/logos/exports/1544x1544_circle.png" width="100" alt="Logo"/><br/>
- <img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/misc/transparent.png" height="30" width="0px"/>
- Catppuccin for <a href="https://github.com/hyprwm/hyprland">Hyprland</a>
- <img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/misc/transparent.png" height="30" width="0px"/>
-</h3>
-
-<p align="center">
- <a href="https://github.com/catppuccin/hyprland/stargazers"><img src="https://img.shields.io/github/stars/catppuccin/hyprland?colorA=363a4f&colorB=b7bdf8&style=for-the-badge"></a>
- <a href="https://github.com/catppuccin/hyprland/issues"><img src="https://img.shields.io/github/issues/catppuccin/hyprland?colorA=363a4f&colorB=f5a97f&style=for-the-badge"></a>
- <a href="https://github.com/catppuccin/hyprland/contributors"><img src="https://img.shields.io/github/contributors/catppuccin/hyprland?colorA=363a4f&colorB=a6da95&style=for-the-badge"></a>
-</p>
-
-<p align="center">
- <img src="assets/res.webp"/>
-</p>
-
-## Previews
-
-<details>
-<summary>๐ป Latte</summary>
-<img src="assets/latte.webp"/>
-</details>
-<details>
-<summary>๐ชด Frappรฉ</summary>
-<img src="assets/frappe.webp"/>
-</details>
-<details>
-<summary>๐บ Macchiato</summary>
-<img src="assets/macchiato.webp"/>
-</details>
-<details>
-<summary>๐ฟ Mocha</summary>
-<img src="assets/mocha.webp"/>
-</details>
-
-## Usage
-
-1. Download the file with your desired flavour e.g. `mocha.conf` (to be found in the [release](https://github.com/catppuccin/hyprland/releases/latest) or after cloning the repository in `themes/`)
-2. Copy it into your hyprland config e.g. `~/.config/hypr/`
-3. Include the file at the top of your `hyprland.conf`
- - `source=~/.config/hypr/mocha.conf`
-4. When using the non-alpha colors, use `$COLOR` e.g. `$base`
-5. When using the alpha colors use something like `rgba($COLORAlpha<transparency>)` e.g. `rgba($surface0Alphaee)`
-
-## ๐ FAQ
-
-- Q: **_"Hyprland doesn't work with the colors"_**\
- A: Make sure you included the file in the right place and you are using `$COLOR`
-
-## ๐ Thanks to
-
-- [rubyowo](https://github.com/rubyowo)
-
-
-
-<p align="center">
- <img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/footers/gray0_ctp_on_line.svg?sanitize=true" />
-</p>
-
-<p align="center">
- Copyright © 2021-present <a href="https://github.com/catppuccin" target="_blank">Catppuccin Org</a>
-</p>
-
-<p align="center">
- <a href="https://github.com/catppuccin/catppuccin/blob/main/LICENSE"><img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&logoColor=d9e0ee&colorA=363a4f&colorB=b7bdf8"/></a>
-</p>
diff --git a/hypr/catppuccin/assets/.gitkeep b/hypr/catppuccin/assets/.gitkeep deleted file mode 100644 index e69de29..0000000 --- a/hypr/catppuccin/assets/.gitkeep +++ /dev/null diff --git a/hypr/catppuccin/assets/frappe.webp b/hypr/catppuccin/assets/frappe.webp Binary files differdeleted file mode 100644 index 761028c..0000000 --- a/hypr/catppuccin/assets/frappe.webp +++ /dev/null diff --git a/hypr/catppuccin/assets/latte.webp b/hypr/catppuccin/assets/latte.webp Binary files differdeleted file mode 100644 index 1eaed94..0000000 --- a/hypr/catppuccin/assets/latte.webp +++ /dev/null diff --git a/hypr/catppuccin/assets/macchiato.webp b/hypr/catppuccin/assets/macchiato.webp Binary files differdeleted file mode 100644 index 23efdbd..0000000 --- a/hypr/catppuccin/assets/macchiato.webp +++ /dev/null diff --git a/hypr/catppuccin/assets/mocha.webp b/hypr/catppuccin/assets/mocha.webp Binary files differdeleted file mode 100644 index dbd78c2..0000000 --- a/hypr/catppuccin/assets/mocha.webp +++ /dev/null diff --git a/hypr/catppuccin/assets/res.webp b/hypr/catppuccin/assets/res.webp Binary files differdeleted file mode 100644 index 5343f0a..0000000 --- a/hypr/catppuccin/assets/res.webp +++ /dev/null diff --git a/hypr/catppuccin/hyprland.tera b/hypr/catppuccin/hyprland.tera deleted file mode 100644 index cefe390..0000000 --- a/hypr/catppuccin/hyprland.tera +++ /dev/null @@ -1,12 +0,0 @@ ---- -whiskers: - version: 2.4.0 - matrix: - - flavor - filename: "themes/{{flavor.identifier}}.conf" ---- - -{% for name, color in flavor.colors %} -${{ name }} = rgb({{ color.hex }}) -${{ name }}Alpha = {{ color.hex }} -{% endfor %}
\ No newline at end of file diff --git a/hypr/catppuccin/justfile b/hypr/catppuccin/justfile deleted file mode 100644 index 0b4d3ef..0000000 --- a/hypr/catppuccin/justfile +++ /dev/null @@ -1,20 +0,0 @@ -# Print out all recipes when running `just`
-_default:
- @just --list
-
-# Variables
-output := "themes"
-whiskers_cmd := "whiskers"
-template_path := "hyprland.tera"
-
-# Create the output directory
-setup:
- mkdir -p {{output}}
-
-# Remove all files in the output directory
-clean:
- rm -fv {{output}}/*.conf
-
-# Generate all four flavors
-all: setup
- {{whiskers_cmd}} {{template_path}}
\ No newline at end of file diff --git a/hypr/catppuccin/renovate.json b/hypr/catppuccin/renovate.json deleted file mode 100644 index 2585c72..0000000 --- a/hypr/catppuccin/renovate.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": [ - "local>catppuccin/renovate-config" - ] -} diff --git a/hypr/catppuccin/themes/frappe.conf b/hypr/catppuccin/themes/frappe.conf deleted file mode 100644 index 9bcd81f..0000000 --- a/hypr/catppuccin/themes/frappe.conf +++ /dev/null @@ -1,78 +0,0 @@ - -$rosewater = rgb(f2d5cf) -$rosewaterAlpha = f2d5cf - -$flamingo = rgb(eebebe) -$flamingoAlpha = eebebe - -$pink = rgb(f4b8e4) -$pinkAlpha = f4b8e4 - -$mauve = rgb(ca9ee6) -$mauveAlpha = ca9ee6 - -$red = rgb(e78284) -$redAlpha = e78284 - -$maroon = rgb(ea999c) -$maroonAlpha = ea999c - -$peach = rgb(ef9f76) -$peachAlpha = ef9f76 - -$yellow = rgb(e5c890) -$yellowAlpha = e5c890 - -$green = rgb(a6d189) -$greenAlpha = a6d189 - -$teal = rgb(81c8be) -$tealAlpha = 81c8be - -$sky = rgb(99d1db) -$skyAlpha = 99d1db - -$sapphire = rgb(85c1dc) -$sapphireAlpha = 85c1dc - -$blue = rgb(8caaee) -$blueAlpha = 8caaee - -$lavender = rgb(babbf1) -$lavenderAlpha = babbf1 - -$text = rgb(c6d0f5) -$textAlpha = c6d0f5 - -$subtext1 = rgb(b5bfe2) -$subtext1Alpha = b5bfe2 - -$subtext0 = rgb(a5adce) -$subtext0Alpha = a5adce - -$overlay2 = rgb(949cbb) -$overlay2Alpha = 949cbb - -$overlay1 = rgb(838ba7) -$overlay1Alpha = 838ba7 - -$overlay0 = rgb(737994) -$overlay0Alpha = 737994 - -$surface2 = rgb(626880) -$surface2Alpha = 626880 - -$surface1 = rgb(51576d) -$surface1Alpha = 51576d - -$surface0 = rgb(414559) -$surface0Alpha = 414559 - -$base = rgb(303446) -$baseAlpha = 303446 - -$mantle = rgb(292c3c) -$mantleAlpha = 292c3c - -$crust = rgb(232634) -$crustAlpha = 232634 diff --git a/hypr/catppuccin/themes/latte.conf b/hypr/catppuccin/themes/latte.conf deleted file mode 100644 index 2c244ad..0000000 --- a/hypr/catppuccin/themes/latte.conf +++ /dev/null @@ -1,78 +0,0 @@ - -$rosewater = rgb(dc8a78) -$rosewaterAlpha = dc8a78 - -$flamingo = rgb(dd7878) -$flamingoAlpha = dd7878 - -$pink = rgb(ea76cb) -$pinkAlpha = ea76cb - -$mauve = rgb(8839ef) -$mauveAlpha = 8839ef - -$red = rgb(d20f39) -$redAlpha = d20f39 - -$maroon = rgb(e64553) -$maroonAlpha = e64553 - -$peach = rgb(fe640b) -$peachAlpha = fe640b - -$yellow = rgb(df8e1d) -$yellowAlpha = df8e1d - -$green = rgb(40a02b) -$greenAlpha = 40a02b - -$teal = rgb(179299) -$tealAlpha = 179299 - -$sky = rgb(04a5e5) -$skyAlpha = 04a5e5 - -$sapphire = rgb(209fb5) -$sapphireAlpha = 209fb5 - -$blue = rgb(1e66f5) -$blueAlpha = 1e66f5 - -$lavender = rgb(7287fd) -$lavenderAlpha = 7287fd - -$text = rgb(4c4f69) -$textAlpha = 4c4f69 - -$subtext1 = rgb(5c5f77) -$subtext1Alpha = 5c5f77 - -$subtext0 = rgb(6c6f85) -$subtext0Alpha = 6c6f85 - -$overlay2 = rgb(7c7f93) -$overlay2Alpha = 7c7f93 - -$overlay1 = rgb(8c8fa1) -$overlay1Alpha = 8c8fa1 - -$overlay0 = rgb(9ca0b0) -$overlay0Alpha = 9ca0b0 - -$surface2 = rgb(acb0be) -$surface2Alpha = acb0be - -$surface1 = rgb(bcc0cc) -$surface1Alpha = bcc0cc - -$surface0 = rgb(ccd0da) -$surface0Alpha = ccd0da - -$base = rgb(eff1f5) -$baseAlpha = eff1f5 - -$mantle = rgb(e6e9ef) -$mantleAlpha = e6e9ef - -$crust = rgb(dce0e8) -$crustAlpha = dce0e8 diff --git a/hypr/catppuccin/themes/macchiato.conf b/hypr/catppuccin/themes/macchiato.conf deleted file mode 100644 index 9e7071a..0000000 --- a/hypr/catppuccin/themes/macchiato.conf +++ /dev/null @@ -1,78 +0,0 @@ - -$rosewater = rgb(f4dbd6) -$rosewaterAlpha = f4dbd6 - -$flamingo = rgb(f0c6c6) -$flamingoAlpha = f0c6c6 - -$pink = rgb(f5bde6) -$pinkAlpha = f5bde6 - -$mauve = rgb(c6a0f6) -$mauveAlpha = c6a0f6 - -$red = rgb(ed8796) -$redAlpha = ed8796 - -$maroon = rgb(ee99a0) -$maroonAlpha = ee99a0 - -$peach = rgb(f5a97f) -$peachAlpha = f5a97f - -$yellow = rgb(eed49f) -$yellowAlpha = eed49f - -$green = rgb(a6da95) -$greenAlpha = a6da95 - -$teal = rgb(8bd5ca) -$tealAlpha = 8bd5ca - -$sky = rgb(91d7e3) -$skyAlpha = 91d7e3 - -$sapphire = rgb(7dc4e4) -$sapphireAlpha = 7dc4e4 - -$blue = rgb(8aadf4) -$blueAlpha = 8aadf4 - -$lavender = rgb(b7bdf8) -$lavenderAlpha = b7bdf8 - -$text = rgb(cad3f5) -$textAlpha = cad3f5 - -$subtext1 = rgb(b8c0e0) -$subtext1Alpha = b8c0e0 - -$subtext0 = rgb(a5adcb) -$subtext0Alpha = a5adcb - -$overlay2 = rgb(939ab7) -$overlay2Alpha = 939ab7 - -$overlay1 = rgb(8087a2) -$overlay1Alpha = 8087a2 - -$overlay0 = rgb(6e738d) -$overlay0Alpha = 6e738d - -$surface2 = rgb(5b6078) -$surface2Alpha = 5b6078 - -$surface1 = rgb(494d64) -$surface1Alpha = 494d64 - -$surface0 = rgb(363a4f) -$surface0Alpha = 363a4f - -$base = rgb(24273a) -$baseAlpha = 24273a - -$mantle = rgb(1e2030) -$mantleAlpha = 1e2030 - -$crust = rgb(181926) -$crustAlpha = 181926 diff --git a/hypr/catppuccin/themes/mocha.conf b/hypr/catppuccin/themes/mocha.conf deleted file mode 100644 index 8ccb56a..0000000 --- a/hypr/catppuccin/themes/mocha.conf +++ /dev/null @@ -1,78 +0,0 @@ - -$rosewater = rgb(f5e0dc) -$rosewaterAlpha = f5e0dc - -$flamingo = rgb(f2cdcd) -$flamingoAlpha = f2cdcd - -$pink = rgb(f5c2e7) -$pinkAlpha = f5c2e7 - -$mauve = rgb(cba6f7) -$mauveAlpha = cba6f7 - -$red = rgb(f38ba8) -$redAlpha = f38ba8 - -$maroon = rgb(eba0ac) -$maroonAlpha = eba0ac - -$peach = rgb(fab387) -$peachAlpha = fab387 - -$yellow = rgb(f9e2af) -$yellowAlpha = f9e2af - -$green = rgb(a6e3a1) -$greenAlpha = a6e3a1 - -$teal = rgb(94e2d5) -$tealAlpha = 94e2d5 - -$sky = rgb(89dceb) -$skyAlpha = 89dceb - -$sapphire = rgb(74c7ec) -$sapphireAlpha = 74c7ec - -$blue = rgb(89b4fa) -$blueAlpha = 89b4fa - -$lavender = rgb(b4befe) -$lavenderAlpha = b4befe - -$text = rgb(cdd6f4) -$textAlpha = cdd6f4 - -$subtext1 = rgb(bac2de) -$subtext1Alpha = bac2de - -$subtext0 = rgb(a6adc8) -$subtext0Alpha = a6adc8 - -$overlay2 = rgb(9399b2) -$overlay2Alpha = 9399b2 - -$overlay1 = rgb(7f849c) -$overlay1Alpha = 7f849c - -$overlay0 = rgb(6c7086) -$overlay0Alpha = 6c7086 - -$surface2 = rgb(585b70) -$surface2Alpha = 585b70 - -$surface1 = rgb(45475a) -$surface1Alpha = 45475a - -$surface0 = rgb(313244) -$surface0Alpha = 313244 - -$base = rgb(1e1e2e) -$baseAlpha = 1e1e2e - -$mantle = rgb(181825) -$mantleAlpha = 181825 - -$crust = rgb(11111b) -$crustAlpha = 11111b diff --git a/hypr/greyline.sh b/hypr/greyline.sh deleted file mode 100755 index 43c3564..0000000 --- a/hypr/greyline.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash - -while true; do - greyline - sleep $((60 - $(date +%S))) -done diff --git a/hypr/hypr-zoom/.github/workflows/main.yml b/hypr/hypr-zoom/.github/workflows/main.yml deleted file mode 100644 index ab277d7..0000000 --- a/hypr/hypr-zoom/.github/workflows/main.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: Build and upliad artifact - -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Set up Go - uses: actions/setup-go@v4 - with: - go-version: '1.23' - - - name: Build - run: go build -v -o hypr-zoom ./hypr-zoom.go # Specify the output binary name - - - name: Delete Previous artifact - uses: geekyeggo/delete-artifact@v5 - with: - name: hypr-zoom - failOnError: false - - - name: Upload Artifact - uses: actions/upload-artifact@v4 - with: - name: hypr-zoom - path: hypr-zoom diff --git a/hypr/hypr-zoom/exec.sh b/hypr/hypr-zoom/exec.sh deleted file mode 100755 index d83b73e..0000000 --- a/hypr/hypr-zoom/exec.sh +++ /dev/null @@ -1,8 +0,0 @@ -file="~/.config/hypr/hypr-zoom/hypr-zoom" -if [ -f "$file" ]; then - ./hypr-zoom -duration=10 -steps=50 -interp=Linear -else - cd ~/.config/hypr/hypr-zoom/ - go build -o hypr-zoom - ./hypr-zoom -duration=10 -steps=50 -interp=Linear -fi diff --git a/hypr/hypr-zoom/go.mod b/hypr/hypr-zoom/go.mod deleted file mode 100644 index 32db86a..0000000 --- a/hypr/hypr-zoom/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module hypr-zoom - -go 1.22.5 - -require github.com/fogleman/ease v0.0.0-20170301025033-8da417bf1776 // indirect diff --git a/hypr/hypr-zoom/go.sum b/hypr/hypr-zoom/go.sum deleted file mode 100644 index 8254f11..0000000 --- a/hypr/hypr-zoom/go.sum +++ /dev/null @@ -1,2 +0,0 @@ -github.com/fogleman/ease v0.0.0-20170301025033-8da417bf1776 h1:VRIbnDWRmAh5yBdz+J6yFMF5vso1It6vn+WmM/5l7MA= -github.com/fogleman/ease v0.0.0-20170301025033-8da417bf1776/go.mod h1:9wvnDu3YOfxzWM9Cst40msBF1C2UdQgDv962oTxSuMs= diff --git a/hypr/hypr-zoom/hypr-zoom.go b/hypr/hypr-zoom/hypr-zoom.go deleted file mode 100644 index d77606c..0000000 --- a/hypr/hypr-zoom/hypr-zoom.go +++ /dev/null @@ -1,143 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "math" - "os/exec" - "strconv" - "strings" - "time" - - "github.com/fogleman/ease" -) - -type EasingFunction func(t float64) float64 -type InterpolatorFunc func(s, e, t float64) float64 - -// Linear interpolation function -func lerp(start, end, t float64) float64 { - return start + t*(end-start) -} - -func logInterp(start, end, t float64) float64 { - if t == 0 { - return start - } - return start + (end-start)*(math.Log(t+1)/math.Log(2)) -} - -// Main animation loop -func zoom(duration int, steps int, startValue, endValue float64, easingFunc EasingFunction, interInterpolatorFunc InterpolatorFunc) { - interval := float64(duration) / float64(steps) / 1000 - - for i := 0; i <= steps; i++ { - t := float64(i) / float64(steps) - easedT := easingFunc(t) - interpolatedValue := interInterpolatorFunc(startValue, endValue, easedT) - - _ = exec.Command("hyprctl", "keyword", "cursor:zoom_factor", fmt.Sprintf("%f", interpolatedValue)).Run() - time.Sleep(time.Duration(interval * float64(time.Second))) - } -} - -// Execute a shell command and return its output as a string -func executeCommand(command string) (string, error) { - output, err := exec.Command("bash", "-c", command).Output() - if err != nil { - return "", err - } - return string(output), nil -} - -func main() { - output, err := executeCommand("hyprctl getoption cursor:zoom_factor | grep 'float:' | awk '{print $2}' | tr -d '[:space:]'") - if err != nil { - fmt.Println("Error getting initial zoom factor:", err) - return - } - - duration := flag.Int("duration", 500, "Duration of the animation in milliseconds") - steps := flag.Int("steps", 100, "Number of steps in the animation") - easing := flag.String("easing", "InOutExpo", "Easing function to use") - easingOut := flag.String("easingOut", "", "Easing function to use for zoom-out (optional)") - targetZoom := flag.Float64("target", 2.0, "Zoom Target") - interpolator := flag.String("interp", "Log", "Animation interpolator function") - force := flag.Bool("force", false, "Forcing target parameter even if zoom is not equal to 1") - flag.Parse() - - initialZoom, err := strconv.ParseFloat(strings.TrimSpace(output), 64) - if err != nil { - fmt.Println("Error parsing initial zoom factor:", err) - return - } - - if *steps <= 0 { - fmt.Println("Error: `steps` must be greater than 0.") - return - } - - easingFunctions := map[string]EasingFunction{ - "Linear": ease.Linear, - "InQuad": ease.InQuad, - "OutQuad": ease.OutQuad, - "InOutQuad": ease.InOutQuad, - "InCubic": ease.InCubic, - "OutCubic": ease.OutCubic, - "InOutCubic": ease.InOutCubic, - "InQuart": ease.InQuart, - "OutQuart": ease.OutQuart, - "InOutQuart": ease.InOutQuart, - "InQuint": ease.InQuint, - "OutQuint": ease.OutQuint, - "InOutQuint": ease.InOutQuint, - "InSine": ease.InSine, - "OutSine": ease.OutSine, - "InOutSine": ease.InOutSine, - "InExpo": ease.InExpo, - "OutExpo": ease.OutExpo, - "InOutExpo": ease.InOutExpo, - "InCirc": ease.InCirc, - "OutCirc": ease.OutCirc, - "InOutCirc": ease.InOutCirc, - // "InElastic": ease.InElastic, - // "OutElastic": ease.OutElastic, - // "InOutElastic": ease.InOutElastic, - "InBack": ease.InBack, - "OutBack": ease.OutBack, - "InOutBack": ease.InOutBack, - "InBounce": ease.InBounce, - "OutBounce": ease.OutBounce, - "InOutBounce": ease.InOutBounce, - "InSquare": ease.InSquare, - "OutSquare": ease.OutSquare, - "InOutSquare": ease.InOutSquare, - } - - interpolatorFunctions := map[string]InterpolatorFunc{ - "Log": logInterp, - "Linear": lerp, - } - - interpolatorFunc, exists := interpolatorFunctions[*interpolator] - if !exists { - fmt.Println("Unknown interpolator function:", *interpolator, "Set to default") - interpolatorFunc = interpolatorFunctions["Log"] - } - - easingFunction, exists := easingFunctions[*easing] - if !exists { - fmt.Println("Unknown easing function:", *easing, "Set to default") - easingFunction = easingFunctions["InOutExpo"] - } - - if (initialZoom > 1 && !*force) { - *targetZoom = 1.0 - _, exists := easingFunctions[*easingOut] - if exists { - easingFunction = easingFunctions[*easingOut] - } - } - - zoom(*duration, *steps, initialZoom, *targetZoom, easingFunction, interpolatorFunc) -} diff --git a/hypr/hypr-zoom/readme.md b/hypr/hypr-zoom/readme.md deleted file mode 100644 index ab938ad..0000000 --- a/hypr/hypr-zoom/readme.md +++ /dev/null @@ -1,104 +0,0 @@ -# hypr-zoom - -`hypr-zoom` is a command-line tool written in Go that smoothly animates the Hyprland cursor zoom-factor changes using variety of easing functions. -It simply uses the `hyprctl` command to adjust the cursor zoom-factor and the ease library for animation interpolation. - -## Why ? -Hyprland cursor zoom factor changes happen instantly, which can feel ood since Hyprland has cool animations. This little CLI solves that. - -## Features - -- Smoothly animates cursor zoom-factor using a variety of easing and interpolation functions. -- Configurable animation duration and steps. - -## Installation -install from aur: [hypr-zoom](https://aur.archlinux.org/packages/hypr-zoom) - -Grab from release or : -1. Clone the repository: - ```sh - git clone https://github.com/FaqihS/hypr-zoom.git - cd hypr-zoom - ``` - -2. Build the project: - ```sh - go build -o hypr-zoom - ``` - -## Usage - -The `hypr-zoom` command has several flags to configure the animation: - -- `-duration`: Duration of the animation in milliseconds (default: 500) -- `-steps`: Number of steps in the animation (default: 100) -- `-easing`: Easing function to use for the animation (default: InOutExpo) -- `-easingOut`: Easing function to use for the zoom-out animation (optional) -- `-target`: Target zoom factor (default: 2.0) -- `-interp`: Interpolation Function used for animation(default: Log) -- `-force` : Forcing target parameter (default: false) - -### Example - -```sh -hypr-zoom -easing=InOutExpo -duration=500 -steps=60 -target=1.2 -``` - -This command will animate the zoom factor to 1.2 using the InOutExpo easing function over 500 milliseconds with 60 steps. - -```sh -hypr-zoom -easing=OutBack -easingOut=OutExpo -``` - -This command will animate the zoom factor using the OutBack easing function when zooming-in and OutExpo when zooming-out. - -> [!WARNING] -> Adjust duration and steps wisely. - -### Supported Easing Functions -The following easing functions are supported: - -- Linear -- InQuad, OutQuad, InOutQuad -- InCubic, OutCubic, InOutCubic -- InQuart, OutQuart, InOutQuart -- InQuint, OutQuint, InOutQuint -- InSine, OutSine, InOutSine -- InExpo, OutExpo, InOutExpo -- InCirc, OutCirc, InOutCirc -- InBack, OutBack, InOutBack -- InBounce, OutBounce, InOutBounce -- InSquare, OutSquare, InOutSquare - -For animation preview [see here](https://github.com/fogleman/ease). - -### Supported Interpolation function -- Linear -- Log (Logarithmic) - -## Showcase -### Default+Linear -```sh -hypr-zoom -interp=Linear -``` -https://github.com/user-attachments/assets/261aff62-955f-49e6-9a7b-c5f714389dc4 -### InOutCubic -```sh -hypr-zoom -easing=InOutCubic -interp=Linear -``` -https://github.com/user-attachments/assets/622d4a4b-b805-495d-8178-ad5e130279c2 -### OutBack-Inback -```sh -hypr-zoom -duration=600 -steps=150 -easing=OutBack -easingOut=InBack -interp=Linear -``` -https://github.com/user-attachments/assets/de4f2924-b5e8-43a8-9bbf-6f1ac795687c - - - - -## Contributing -Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes. Although i'm not real Go Dev :p - -## Acknowledgements -- [fogleman/ease](https://github.com/fogleman/ease) - Easing functions library used in this project. -- [Hyprland](https://hyprland.org) diff --git a/hypr/hypridle.conf b/hypr/hypridle.conf deleted file mode 100644 index 88629ad..0000000 --- a/hypr/hypridle.conf +++ /dev/null @@ -1,22 +0,0 @@ -general { - lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances. - before_sleep_cmd = loginctl lock-session # lock before suspend. - after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display. -} - -listener { - timeout = 150 # 2.5min. - on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor. - on-resume = brightnessctl -r # monitor backlight restore. -} - -listener { - timeout = 300 # 5min - on-timeout = loginctl lock-session # lock screen when timeout has passed -} - -listener { - timeout = 330 # 5.5min - on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed - on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired. -} diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf deleted file mode 100644 index 444b80c..0000000 --- a/hypr/hyprland.conf +++ /dev/null @@ -1,74 +0,0 @@ -source=hyprland/vars.conf -source=catppuccin/themes/macchiato.conf -source=hyprland/exec_once.conf -source=hyprland/input.conf -source=hyprland/keybinds.conf -source=hyprland/look_and_feel.conf -source=hyprland/env.conf - -monitor=,preferred,auto,1 - - -################### -### PERMISSIONS ### -################### - -# See https://wiki.hyprland.org/Configuring/Permissions/ -# Please note permission changes here require a Hyprland restart and are not applied on-the-fly -# for security reasons - -# ecosystem { -# enforce_permissions = 1 -# } - -# permission = /usr/(bin|local/bin)/grim, screencopy, allow -# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow -# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow - -# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more -dwindle { - preserve_split = true # You probably want this -} - -# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more -master { - new_status = master -} - -# https://wiki.hyprland.org/Configuring/Variables/#misc -misc { - force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers - disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :( -} - -############################## -### WINDOWS AND WORKSPACES ### -############################## - -# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more -# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules - -# Example windowrule -# windowrule = float,class:^(kitty)$,title:^(kitty)$ - -windowrule { - # Ignore maximize requests from all apps. You'll probably like this. - name = suppress-maximize-events - match:class = .* - - suppress_event = maximize -} - -windowrule { - # Fix some dragging issues with XWayland - name = fix-xwayland-drags - match:class = ^$ - match:title = ^$ - match:xwayland = true - match:float = true - match:fullscreen = false - match:pin = false - - no_focus = true -} - diff --git a/hypr/hyprland/env.conf b/hypr/hyprland/env.conf deleted file mode 100644 index 169638d..0000000 --- a/hypr/hyprland/env.conf +++ /dev/null @@ -1,5 +0,0 @@ -env = XCURSOR_THEME,catppuccin-mocha-mauve-cursors -env = HYPRCURSOR_THEME,catppuccin-mocha-mauve-cursors -env = XCURSOR_SIZE,24 -env = HYPRCURSOR_SIZE,24 - diff --git a/hypr/hyprland/exec_once.conf b/hypr/hyprland/exec_once.conf deleted file mode 100644 index 87c8e91..0000000 --- a/hypr/hyprland/exec_once.conf +++ /dev/null @@ -1,6 +0,0 @@ -exec-once = ~/.config/hypr/battery-notif.sh -exec-once = ~/.config/hypr/greyline.sh -exec-once = wl-paste --watch cliphist store -exec-once = qs -exec-once = hyprsunset -#exec-once = hyprpaper diff --git a/hypr/hyprland/input.conf b/hypr/hyprland/input.conf deleted file mode 100644 index 8846120..0000000 --- a/hypr/hyprland/input.conf +++ /dev/null @@ -1,25 +0,0 @@ -# https://wiki.hyprland.org/Configuring/Variables/#input -input { - kb_layout = us - kb_variant = - kb_model = - kb_options = - kb_rules = - - follow_mouse = 1 - left_handed = true - - sensitivity = 0.5 # -1.0 - 1.0, 0 means no modification. - - touchpad { - natural_scroll = true - } -} - -# Example per-device config -# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more -device { - name = epic-mouse-v1 - sensitivity = -0.01 -} - diff --git a/hypr/hyprland/keybinds.conf b/hypr/hyprland/keybinds.conf deleted file mode 100644 index dda7ddf..0000000 --- a/hypr/hyprland/keybinds.conf +++ /dev/null @@ -1,73 +0,0 @@ -# See https://wiki.hyprland.org/Configuring/Keywords/ -$mainMod = SUPER # Sets "Windows" key as main modifier - -# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more -bind = $mainMod, T, exec, $terminal -bind = $mainMod, Q, killactive, -bind = $mainMod SHIFT, L, exit, -bind = $mainMod, L, exec, hyprlock -bind = $mainMod, E, exec, $fileManager -bind = $mainMod, F, togglefloating, -bind = $mainMod, R, global, quickshell:toggleLauncher -bind = $mainMod SHIFT, D, global, quickshell:toggleBar -bind = $mainMod, D, global, quickshell:toggleDnd -bind = $mainMod, P, exec, hyprpicker -bind = $mainMod, J, layoutmsg, togglesplit -bind = CTRL SHIFT, escape, exec, $taskManager -bind = $mainMod SHIFT, R, exec, ~/.config/hypr/wf-recorder/record.sh - -# Move focus with mainMod + arrow keys -bind = $mainMod, left, movefocus, l -bind = $mainMod, right, movefocus, r -bind = $mainMod, up, movefocus, u -bind = $mainMod, down, movefocus, d - -# Switch workspaces with mainMod + [0-5] -bind = $mainMod, 1, workspace, 1 -bind = $mainMod, 2, workspace, 2 -bind = $mainMod, 3, workspace, 3 -bind = $mainMod, 4, workspace, 4 -bind = $mainMod, 5, workspace, 5 - -# Move active window to a workspace with mainMod + SHIFT + [0-9] -bind = $mainMod SHIFT, 1, movetoworkspace, 1 -bind = $mainMod SHIFT, 2, movetoworkspace, 2 -bind = $mainMod SHIFT, 3, movetoworkspace, 3 -bind = $mainMod SHIFT, 4, movetoworkspace, 4 -bind = $mainMod SHIFT, 5, movetoworkspace, 5 - -# Example special workspace (scratchpad) -bind = $mainMod, S, togglespecialworkspace, magic -bind = $mainMod SHIFT, S, movetoworkspace, special:magic -bind = $mainMod CTRL, S, movetoworkspace, e+0 - -# Scroll through existing workspaces with mainMod + scroll -bind = $mainMod, mouse_down, workspace, e+1 -bind = $mainMod, mouse_up, workspace, e-1 - -# Move/resize windows with mainMod + LMB/RMB and dragging -bindm = $mainMod, mouse:272, movewindow -bindm = $mainMod, mouse:273, resizewindow - -# Screenshots -bind = ,Print, exec, grim ~/Pictures/Screenshots/screenshot_$(date +'%Y-%m-%d_%H-%M-%S').png # Fullscreen screenshot -> ~/Pictures/Screenshots -bind = SHIFT,Print, exec, grim -g "$(slurp)" ~/Pictures/Screenshots/screenshot_$(date +'%Y-%m-%d_%H-%M-%S').png # Select area screenshot with slurp -bind = SUPER,Print, exec, grim -g "$(slurp)" - | wl-copy # Select area screenshot and copy to clipboard - -# Laptop multimedia keys for volume and LCD brightness -bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ -bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- -bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle -bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle -bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 100%+ -bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 100%- - -# Requires playerctl -bindl = ,XF86AudioNext, exec, playerctl next -bindl = ,XF86AudioPause, exec, playerctl play-pause -bindl = ,XF86AudioPlay, exec, playerctl play-pause -bindl = ,XF86AudioPrev, exec, playerctl previous - -bind = $mainMod, equal, exec, ~/.config/hypr/hypr-zoom/exec.sh -bind = $mainMod, bracketleft, exec, ~/.config/hypr/hyprsunset/increase_sunset.sh -bind = $mainMod, bracketright, exec, ~/.config/hypr/hyprsunset/decrease_sunset.sh diff --git a/hypr/hyprland/look_and_feel.conf b/hypr/hyprland/look_and_feel.conf deleted file mode 100644 index f510e3b..0000000 --- a/hypr/hyprland/look_and_feel.conf +++ /dev/null @@ -1,79 +0,0 @@ -# Refer to https://wiki.hyprland.org/Configuring/Variables/ - -# https://wiki.hyprland.org/Configuring/Variables/#general -general { - gaps_in = 0 - gaps_out = 0 - - border_size = 2 - - col.active_border = $lavender $flamingo 45deg - col.inactive_border = $surface2 - - resize_on_border = false - allow_tearing = false - layout = dwindle -} - -# https://wiki.hyprland.org/Configuring/Variables/#decoration -decoration { - rounding = 0 - rounding_power = 2 - - active_opacity = 1.0 - inactive_opacity = 1.0 - - shadow { - enabled = true - range = 4 - render_power = 3 - color = $crust - } - - # https://wiki.hyprland.org/Configuring/Variables/#blur - blur { - enabled = true - size = 3 - passes = 1 - - vibrancy = 0.1696 - } -} - -# https://wiki.hyprland.org/Configuring/Variables/#animations -animations { - enabled = yes, please :) - - bezier = easeOutQuint,0.23,1,0.32,1 - bezier = easeInOutCubic,0.65,0.05,0.36,1 - bezier = linear,0,0,1,1 - bezier = almostLinear,0.5,0.5,0.75,1.0 - bezier = quick,0.15,0,0.1,1 - - animation = global, 1, 10, default - animation = border, 1, 5.39, easeOutQuint - animation = windows, 1, 4.79, easeOutQuint - animation = windowsIn, 1, 4.1, easeOutQuint, popin 87% - animation = windowsOut, 1, 1.49, linear, popin 87% - animation = fadeIn, 1, 1.73, almostLinear - animation = fadeOut, 1, 1.46, almostLinear - animation = fade, 1, 3.03, quick - animation = layers, 1, 3.81, easeOutQuint - animation = layersIn, 1, 4, easeOutQuint, fade - animation = layersOut, 1, 1.5, linear, fade - animation = fadeLayersIn, 1, 1.79, almostLinear - animation = fadeLayersOut, 1, 1.39, almostLinear - animation = workspaces, 1, 1.94, almostLinear, fade - animation = workspacesIn, 1, 1.21, almostLinear, fade - animation = workspacesOut, 1, 1.94, almostLinear, fade -} - -# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/ -# "Smart gaps" / "No gaps when only" -# uncomment all if you wish to use that. -# workspace = w[tv1], gapsout:0, gapsin:0 -# workspace = f[1], gapsout:0, gapsin:0 -# windowrule = bordersize 0, floating:0, onworkspace:w[tv1] -# windowrule = rounding 0, floating:0, onworkspace:w[tv1] -# windowrule = bordersize 0, floating:0, onworkspace:f[1] -# windowrule = rounding 0, floating:0, onworkspace:f[1] diff --git a/hypr/hyprland/vars.conf b/hypr/hyprland/vars.conf deleted file mode 100644 index ec28f62..0000000 --- a/hypr/hyprland/vars.conf +++ /dev/null @@ -1,3 +0,0 @@ -$terminal = foot -$fileManager = foot -e yazi -$taskManager = foot -e btop --force-utf diff --git a/hypr/hyprlock.conf b/hypr/hyprlock.conf deleted file mode 100644 index 73a9495..0000000 --- a/hypr/hyprlock.conf +++ /dev/null @@ -1,85 +0,0 @@ -# https://github.com/end-4/dots-hyprland/blob/main/.config/hypr/hyprlock.conf - -source=~/.config/hypr/hyprlock/colors.conf - -background { - color = rgba(181818FF) -} - -input-field { - monitor = - size = 250, 50 - outline_thickness = 2 - dots_size = 0.1 - dots_spacing = 0.3 - outer_color = $entry_border_color - inner_color = $entry_background_color - font_color = $entry_color - fade_on_empty = true - - position = 0, 20 - halign = center - valign = center -} - -label { # Caps Lock Warning - monitor = - text = cmd[update:250] ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/hyprlock/check-capslock.sh - color = $text_color - font_size = 13 - font_family = $font_family - position = 0, -25 - halign = center - valign = center -} - - -label { # Clock - monitor = - text = $TIME - color = $text_color - font_size = 65 - font_family = $font_family_clock - - position = 0, 300 - halign = center - valign = center -} -label { # Date - monitor = - text = cmd[update:5000] date +"%A, %B %d" - color = $text_color - font_size = 17 - font_family = $font_family_clock - - position = 0, 240 - halign = center - valign = center -} - -label { # User - monitor = - text = ๏พ $USER - color = $text_color - outline_thickness = 2 - dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8 - dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0 - dots_center = true - font_size = 20 - font_family = $font_family - position = 0, 50 - halign = center - valign = bottom -} - -label { # Status - monitor = - text = cmd[update:5000] ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/hyprlock/status.sh - color = $text_color - font_size = 14 - font_family = $font_family - - position = 30, -30 - halign = left - valign = top -} diff --git a/hypr/hyprlock/check-capslock.sh b/hypr/hyprlock/check-capslock.sh deleted file mode 100755 index ca56178..0000000 --- a/hypr/hyprlock/check-capslock.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/env bash - -MAIN_KB_CAPS=$(hyprctl devices | grep -B 6 "main: yes" | grep "capsLock" | head -1 | awk '{print $2}') - -if [ "$MAIN_KB_CAPS" = "yes" ]; then - echo "Caps Lock active" -else - echo "" -fi diff --git a/hypr/hyprlock/colors.conf b/hypr/hyprlock/colors.conf deleted file mode 100644 index b87c815..0000000 --- a/hypr/hyprlock/colors.conf +++ /dev/null @@ -1,7 +0,0 @@ -$text_color = rgba(FFDAD6FF) -$entry_background_color = rgba(41000311) -$entry_border_color = rgba(896E6C55) -$entry_color = rgba(FFDAD6FF) -$font_family = JetBrainsMono Nerd Font -$font_family_clock = JetBrainsMono Nerd Font -$font_material_symbols = Material Symbols Rounded diff --git a/hypr/hyprlock/status.sh b/hypr/hyprlock/status.sh deleted file mode 100755 index 0d4ec2d..0000000 --- a/hypr/hyprlock/status.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env bash - -############ Variables ############ -enable_battery=false -battery_charging=false - -####### Check availability ######## -for battery in /sys/class/power_supply/*BAT*; do - if [[ -f "$battery/uevent" ]]; then - enable_battery=true - if [[ $(cat /sys/class/power_supply/*/status | head -1) == "Charging" ]]; then - battery_charging=true - fi - break - fi -done - -############# Output ############# -if [[ $enable_battery == true ]]; then - if [[ $battery_charging == true ]]; then - echo -n "(+) " - fi - echo -n "$(cat /sys/class/power_supply/*/capacity | head -1)"% - if [[ $battery_charging == false ]]; then - echo -n " remaining" - fi -fi - -echo '' diff --git a/hypr/hyprpaper.conf b/hypr/hyprpaper.conf deleted file mode 100644 index 9580494..0000000 --- a/hypr/hyprpaper.conf +++ /dev/null @@ -1,5 +0,0 @@ -wallpaper { - monitor = - path = ~/Pictures/space.png - fit_mode = cover -} diff --git a/hypr/hyprsunset.conf b/hypr/hyprsunset.conf deleted file mode 100644 index 22a688c..0000000 --- a/hypr/hyprsunset.conf +++ /dev/null @@ -1,12 +0,0 @@ -max-gamma = 150 - -profile { - time = 7:30 - identity = true -} - -profile { - time = 21:00 - temperature = 4000 - gamma = 1.0 -} diff --git a/hypr/hyprsunset/decrease_sunset.sh b/hypr/hyprsunset/decrease_sunset.sh deleted file mode 100755 index 7af5aa8..0000000 --- a/hypr/hyprsunset/decrease_sunset.sh +++ /dev/null @@ -1 +0,0 @@ -hyprctl hyprsunset temperature +1000 diff --git a/hypr/hyprsunset/increase_sunset.sh b/hypr/hyprsunset/increase_sunset.sh deleted file mode 100755 index 99d1d9f..0000000 --- a/hypr/hyprsunset/increase_sunset.sh +++ /dev/null @@ -1 +0,0 @@ -hyprctl hyprsunset temperature -1000 diff --git a/hypr/monitors.conf b/hypr/monitors.conf deleted file mode 100644 index e69de29..0000000 --- a/hypr/monitors.conf +++ /dev/null diff --git a/hypr/wf-recorder/record.sh b/hypr/wf-recorder/record.sh deleted file mode 100755 index c828fee..0000000 --- a/hypr/wf-recorder/record.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env bash - -# Check if a recording is already in progress -if pgrep -x wf-recorder > /dev/null -then - # If recording, stop it - notify-send -h string:wf-recorder:record -t 1000 "Recording Stopped" - pkill wf-recorder -else - # If not recording, start it - mkdir -p ~/Videos - mkdir -p ~/Videos/Screencasts/ - notify-send -h string:wf-recorder:record -t 1000 "Recording Started" - wf-recorder \ - -f ~/Videos/Screencasts/$(date '+%H%M%S-%d-%m-%Y').mp4 \ - --audio --audio-device alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__HDMI3__sink.monitor - -fi diff --git a/hypr/workspaces.conf b/hypr/workspaces.conf deleted file mode 100644 index e69de29..0000000 --- a/hypr/workspaces.conf +++ /dev/null diff --git a/i3/config b/i3/config new file mode 100644 index 0000000..dc633fc --- /dev/null +++ b/i3/config @@ -0,0 +1,111 @@ +set $mod Mod4 +font pango:Jetbrains Mono Nerd Font 16 +exec --no-startup-id dex --autostart --environment i3 +exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork +exec --no-startup-id nm-applet + +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 + +floating_modifier $mod +tiling_drag modifier titlebar + +bindsym $mod+t exec kitty +bindsym $mod+q kill + +bindsym $mod+d exec --no-startup-id dmenu_run + +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +bindsym $mod+h split h +bindsym $mod+v split v + +bindsym $mod+f fullscreen toggle +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +bindsym $mod+Shift+f 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 + +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" + +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 + +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+l 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'" + +mode "resize" { + 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 + + 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 + + bindsym Return mode "default" + bindsym Escape mode "default" + bindsym $mod+r mode "default" +} + +bindsym $mod+r mode "resize" + +exec xrandr --auto +exec --no-startup-id 'xmodmap -e "pointer = 3 2 1"' + +bar { + status_command i3status +} diff --git a/kitty/kitty.conf b/kitty/kitty.conf new file mode 100644 index 0000000..d019b9e --- /dev/null +++ b/kitty/kitty.conf @@ -0,0 +1,2 @@ +font_family JetBrains Mono Nerd Font +confirm_os_window_close 0 diff --git a/lxqt/lxqt-config-appearance.conf b/lxqt/lxqt-config-appearance.conf new file mode 100644 index 0000000..b246e4b --- /dev/null +++ b/lxqt/lxqt-config-appearance.conf @@ -0,0 +1,4 @@ +[General] +ControlGTKThemeEnabled=false +__userfile__=true +size=@Size(600 461) diff --git a/lxqt/lxqt-config-file-associations.conf b/lxqt/lxqt-config-file-associations.conf new file mode 100644 index 0000000..045a3dc --- /dev/null +++ b/lxqt/lxqt-config-file-associations.conf @@ -0,0 +1,2 @@ +[General] +size=@Size(600 400) diff --git a/lxqt/lxqt-config-input.conf b/lxqt/lxqt-config-input.conf new file mode 100644 index 0000000..6eb2392 --- /dev/null +++ b/lxqt/lxqt-config-input.conf @@ -0,0 +1,3 @@ +[General] +__userfile__=true +size=@Size(600 400) diff --git a/lxqt/lxqt-config-locale.conf b/lxqt/lxqt-config-locale.conf new file mode 100644 index 0000000..79b42c6 --- /dev/null +++ b/lxqt/lxqt-config-locale.conf @@ -0,0 +1,2 @@ +[General] +__userfile__=true diff --git a/lxqt/lxqt-config.conf b/lxqt/lxqt-config.conf new file mode 100644 index 0000000..eec583c --- /dev/null +++ b/lxqt/lxqt-config.conf @@ -0,0 +1,2 @@ +[General] +size=@Size(956 1024) diff --git a/lxqt/lxqt-powermanagement.conf b/lxqt/lxqt-powermanagement.conf new file mode 100644 index 0000000..79b42c6 --- /dev/null +++ b/lxqt/lxqt-powermanagement.conf @@ -0,0 +1,2 @@ +[General] +__userfile__=true diff --git a/lxqt/lxqt.conf b/lxqt/lxqt.conf new file mode 100644 index 0000000..9bc035d --- /dev/null +++ b/lxqt/lxqt.conf @@ -0,0 +1,27 @@ +[General] +__userfile__=true +icon_follow_color_scheme=true +palette_override=true +single_click_activate=false +theme=ambiance +tool_bar_icon_size=24 +tool_button_style=ToolButtonTextBesideIcon +wallpaper_override=true + +[Palette] +base_color=#3c3b37 +highlight_color=#ef7747 +highlighted_text_color=#ffffff +link_color=#8c9bff +link_visited_color=#ffb3f7 +text_color=#eeedec +tooltip_base_color=#31302d +tooltip_text_color=#eeedec +window_color=#31302d +window_text_color=#f2f1f0 + +[Qt] +doubleClickInterval=400 +font="JetBrainsMono Nerd Font,14,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,,0,0" +style=Fusion +wheelScrollLines=3 diff --git a/lxqt/notifications.conf b/lxqt/notifications.conf new file mode 100644 index 0000000..6e9439b --- /dev/null +++ b/lxqt/notifications.conf @@ -0,0 +1,7 @@ +[General] +__userfile__=true +doNotDisturb=false +placement=top-left +screenWithMouse=false +server_decides=10 +unattendedMaxNum=10 diff --git a/lxqt/session.conf b/lxqt/session.conf new file mode 100644 index 0000000..2d45d38 --- /dev/null +++ b/lxqt/session.conf @@ -0,0 +1,9 @@ +[General] +__userfile__=true + +[Mouse] +accel_factor=20 +accel_threshold=10 +cursor_size=22 +cursor_theme=breeze_cursors +left_handed=true diff --git a/nixos/desktop-environment.nix b/nixos/desktop-environment.nix index a6bb6fd..bde2730 100644 --- a/nixos/desktop-environment.nix +++ b/nixos/desktop-environment.nix @@ -1,38 +1,47 @@ -{ config, pkgs, quickshell, sessions, ... }: +{ config, pkgs, sessions, ... }: { services.xserver.enable = true; services.xserver.displayManager.startx.enable = true; services.displayManager.ly.enable = true; - services.desktopManager.gnome.enable = false; services.desktopManager.plasma6.enable = true; - programs.hyprland.enable = sessions.hyprland_wayland; - programs.hyprlock.enable = sessions.hyprland_wayland; - programs.foot.enable = true; + services.xserver.windowManager.i3.enable = sessions.i3_x11; + services.xserver.windowManager.twm.enable = true; programs.dconf.enable = true; + + services.desktopManager.gnome.enable = false; + programs.hyprland.enable = false; + programs.hyprlock.enable = false; + environment.systemPackages = with pkgs; [ - playerctl - libnotify - libGL - lm_sensors - slurp - ] ++ (if sessions.hyprland_wayland then [ - quickshell.packages.${pkgs.system}.quickshell - qt6.qtwayland - catppuccin-cursors.mochaMauve - grim - awww - hyprcursor - hyprsunset - hyprpicker - wl-clipboard - ] else []) ++ (if sessions.plasma_x11 then [ - xclip - libx11 - libxrandr - libxinerama - libxcursor - libxi - libxext - libxfixes - ] else []); + playerctl + libnotify + libGL + lm_sensors + slurp + xclip + libx11 + libxrandr + libxinerama + libxcursor + libxi + libxext + libxfixes + kitty + mesa-demos + xmodmap + xwallpaper + + lxqt.lxqt-notificationd + lxqt.lxqt-powermanagement + lxqt.pavucontrol-qt + lxqt.pcmanfm-qt + lxqt.qlipper + lxqt.lxqt-config + lxqt.lxqt-themes + + # Useful i3 tools + dmenu + i3status + i3lock + ]; } diff --git a/nixos/environment.nix b/nixos/environment.nix index c29c8bf..90ade53 100644 --- a/nixos/environment.nix +++ b/nixos/environment.nix @@ -47,7 +47,6 @@ btop yazi scrcpy - wf-recorder cava wget diff --git a/nixos/home.nix b/nixos/home.nix index 95cdd2b..eb1413b 100644 --- a/nixos/home.nix +++ b/nixos/home.nix @@ -3,7 +3,7 @@ users.users.${username} = { isNormalUser = true; description = "User"; - extraGroups = [ "networkmanager" "wheel" "kvm" "adbusers" "docker" ]; + extraGroups = [ "networkmanager" "wheel" "kvm" "adbusers" "docker" "video" "input" ]; packages = with pkgs; []; shell = pkgs.fish; }; diff --git a/quickshell/AppLauncher.qml b/quickshell/AppLauncher.qml deleted file mode 100644 index f903f1f..0000000 --- a/quickshell/AppLauncher.qml +++ /dev/null @@ -1,242 +0,0 @@ -import QtQuick -import QtQuick.Controls -import Quickshell -import Quickshell.Io - -Rectangle { - id: appLauncher - - width: 400 - height: 600 - color: shellRoot.black - antialiasing: true - - property bool isVisible: false - property int hoverIndex: 0 - property var apps: [] - - signal requestClose() - - focus: true - - Keys.onEscapePressed: requestClose() - - Keys.onUpPressed: { - hoverIndex--; - if (hoverIndex < 0) hoverIndex += appListModel.count; - listView.positionViewAtIndex(hoverIndex, ListView.Contain); - } - - Keys.onDownPressed: { - hoverIndex = (hoverIndex + 1) % appListModel.count; - listView.positionViewAtIndex(hoverIndex, ListView.Contain); - } - - Keys.onReturnPressed: { - if (hoverIndex >= 0 && hoverIndex < appListModel.count) { - launchApp(appListModel.get(hoverIndex).appCommand) - console.log(appListModel.get(hoverIndex).appCommand) - } - } - - Keys.onEnterPressed: { - if (hoverIndex >= 0 && hoverIndex < appListModel.count) { - launchApp(appListModel.get(hoverIndex).appCommand) - console.log(appListModel.get(hoverIndex).appCommand) - } - } - - onIsVisibleChanged: { - if (!isVisible) return; - hoverIndex = 0; - appLauncher.forceActiveFocus(); - searchInput.forceActiveFocus(); - } - - Process { - id: appLoader - running: false - command: ["sh", "-c", "~/.config/quickshell/scripts/list-apps.sh"] - - stdout: SplitParser { - onRead: data => { - const lines = data.split('\n'); - for (const line of lines) { - if (line.trim().length === 0) continue; - - const parts = line.split('|'); - if (parts.length < 4) continue; - - apps.push({ - appName: parts[0], - appDescription: parts[1], - appIcon: parts[2], - appCommand: parts[3] - }); - } - - applySearch(""); - } - } - - onRunningChanged: { - if (running) return; - appLoader.running = false; - } - } - - function loadApps() { - appLoader.running = true; - } - - function applySearch(searchString) { - appListModel.clear(); - for (const app of apps) { - if (app.appName.toLowerCase().includes(searchString.toLowerCase())) { - appListModel.append(app); - } - } - } - - Component.onCompleted: { - loadApps(); - } - - Column { - anchors.fill: parent - anchors.margins: 12 - spacing: 8 - - Rectangle { - width: parent.width - height: 36 - color: "transparent" - - Text { - anchors.centerIn: parent - text: "Applications" - font.family: shellRoot.fontFamily - font.pixelSize: 20 - font.weight: Font.Medium - color: shellRoot.white - } - - Rectangle { - width: 28 - height: 28 - anchors.right: parent.right - anchors.verticalCenter: parent.verticalCenter - radius: 6 - color: closeMouseArea.containsMouse ? shellRoot.red : "transparent" - - Text { - anchors.centerIn: parent - text: "โ" - font.family: shellRoot.fontFamily - font.pixelSize: 16 - font.weight: Font.Bold - color: closeMouseArea.containsMouse ? shellRoot.white : shellRoot.red - } - - MouseArea { - id: closeMouseArea - anchors.fill: parent - hoverEnabled: true - cursorShape: Qt.PointingHandCursor - onClicked: appLauncher.requestClose() - } - } - } - - Rectangle { - width: parent.width - height: 36 - color: shellRoot.black - border.color: shellRoot.green - border.width: 1 - - TextInput { - id: searchInput - width: parent.width - anchors.left: parent.left - anchors.right: parent.right - anchors.leftMargin: 8 - anchors.rightMargin: 8 - anchors.verticalCenter: parent.verticalCenter - color: "white" - font.pixelSize: 14 - onTextEdited: { - applySearch(searchInput.text); - hoverIndex = 0; - } - } - } - - ListView { - id: listView - width: parent.width - height: parent.height - 88 - spacing: 8 - clip: true - - model: ListModel { - id: appListModel - } - - delegate: Rectangle { - width: listView.width - height: 30 - color: { - if (appLauncher.hoverIndex === index) return shellRoot.lightgray; - return shellRoot.gray; - } - - Row { - anchors.fill: parent - anchors.leftMargin: 12 - anchors.rightMargin: 12 - anchors.topMargin: 8 - anchors.bottomMargin: 8 - spacing: 12 - - Text { - width: parent.width - 62 - anchors.centerIn: parent - text: model.appName - font.family: shellRoot.fontFamily - font.pixelSize: 14 - font.weight: Font.Medium - color: { - return shellRoot.white; - } - elide: Text.ElideRight - } - } - - MouseArea { - id: mouseArea - anchors.fill: parent - hoverEnabled: true - cursorShape: Qt.PointingHandCursor - - onEntered: { - appLauncher.hoverIndex = index; - } - - onClicked: { - launchApp(model.appCommand); - } - } - } - } - } - - function launchApp(command) { - appLauncher.requestClose() - - // Use a small delay before launching to ensure the window closes properly - Qt.callLater(() => { - Quickshell.execDetached(["sh", "-c", command + " &"]) - }) - } -} diff --git a/quickshell/BatteryInfo.qml b/quickshell/BatteryInfo.qml deleted file mode 100644 index 72e4f3b..0000000 --- a/quickshell/BatteryInfo.qml +++ /dev/null @@ -1,139 +0,0 @@ -import QtQuick -import QtQuick.Layouts -import Quickshell -import Quickshell.Io - -Rectangle { - id: batteryInfoRect - - width: 300 - height: 120 - Layout.fillWidth: true - Layout.fillHeight: true - color: shellRoot.black - antialiasing: true - topLeftRadius: 10 - topRightRadius: 10 - property var energy: "" - property var voltage: "" - property var capacity: "" - - Timer { - interval: 5000 - running: true - repeat: false - onTriggered: { - fetchProc.running = true; - } - } - - signal requestClose() - focus: true - Keys.onEscapePressed: requestClose() - - Process { - id: fetchProc - command: ["sh", "-c", "~/.config/quickshell/scripts/battery-info.sh"] - - stdout: SplitParser { - onRead: data => { - if (data.includes("energy")) { - energy = data.split(":")[1] - return - } - if (data.includes("voltage")) { - voltage = data.split(":")[1] - return - } - if (data.includes("capacity")) { - capacity = data.split(":")[1] - return - } - } - - } - Component.onCompleted: running = true - } - - RowLayout { - anchors.centerIn: parent - ColumnLayout { - anchors.left: parent - Text { - text: "Energy" - font.family: shellRoot.fontFamily - font.pixelSize: 20 - font.weight: Font.Medium - color: shellRoot.green - MouseArea { - anchors.fill: parent - onClicked: { - } - } - } - Text { - text: "Capacity" - font.family: shellRoot.fontFamily - font.pixelSize: 20 - font.weight: Font.Medium - color: shellRoot.green - MouseArea { - anchors.fill: parent - onClicked: { - } - } - } - Text { - text: "Voltage" - font.family: shellRoot.fontFamily - font.pixelSize: 20 - font.weight: Font.Medium - color: shellRoot.green - MouseArea { - anchors.fill: parent - onClicked: { - } - } - } - } - ColumnLayout { - anchors.right: parent - Text { - text: energy - font.family: shellRoot.fontFamily - font.pixelSize: 20 - font.weight: Font.Medium - color: shellRoot.white - MouseArea { - anchors.fill: parent - onClicked: { - } - } - } - Text { - text: capacity - font.family: shellRoot.fontFamily - font.pixelSize: 20 - font.weight: Font.Medium - color: shellRoot.white - MouseArea { - anchors.fill: parent - onClicked: { - } - } - } - Text { - text: voltage - font.family: shellRoot.fontFamily - font.pixelSize: 20 - font.weight: Font.Medium - color: shellRoot.white - MouseArea { - anchors.fill: parent - onClicked: { - } - } - } - } - } -} diff --git a/quickshell/IconButton.qml b/quickshell/IconButton.qml deleted file mode 100644 index 96c4c7f..0000000 --- a/quickshell/IconButton.qml +++ /dev/null @@ -1,41 +0,0 @@ -import QtQuick - -MouseArea { - id: iconButton - - property string icon: "" - property string tooltip: "" - - width: 32 - height: 32 - - hoverEnabled: true - cursorShape: Qt.PointingHandCursor - enabled: true - z: 10 - - Rectangle { - anchors.fill: parent - color: "transparent" - radius: 6 - - Behavior on color { - ColorAnimation { duration: 200 } - } - - Text { - id: iconText - anchors.centerIn: parent - text: iconButton.icon - font.family: shellRoot.fontFamily - font.pixelSize: 22 - color: shellRoot.white - - Component.onCompleted: { - console.log("IconButton text:", iconButton.icon, "length:", iconButton.icon.length) - } - } - } - - -} diff --git a/quickshell/NotificationOverlay.qml b/quickshell/NotificationOverlay.qml deleted file mode 100644 index d54f8f6..0000000 --- a/quickshell/NotificationOverlay.qml +++ /dev/null @@ -1,121 +0,0 @@ -import Quickshell -import Quickshell.Services.Notifications -import Quickshell.Wayland -import QtQuick - -PanelWindow { - id: root - - anchors { - top: true - left: true - } - - margins { - top: 15 - left: 15 - } - - implicitWidth: 360 - implicitHeight: notificationColumn.implicitHeight - - color: "transparent" - exclusiveZone: 0 - - WlrLayershell.layer: WlrLayer.Overlay - - NotificationServer { - id: server - - bodySupported: true - imageSupported: false - actionsSupported: true - - onNotification: notification => { - notification.tracked = true - } - } - - Column { - id: notificationColumn - - spacing: 10 - - Repeater { - model: server.trackedNotifications - - Rectangle { - id: notification - - width: 360 - height: Math.max(content.implicitHeight + 24, 80) - - color: "#000000" - - border.width: 1 - border.color: "#404040" - - opacity: 0 - - Behavior on y { - NumberAnimation { - duration: 200 - easing.type: Easing.OutCubic - } - } - - Behavior on opacity { - NumberAnimation { - duration: 150 - } - } - - Component.onCompleted: opacity = shellRoot.dnd ? 0 : 0.8 - - Timer { - interval: 2000 - running: true - repeat: false - - onTriggered: { - notification.opacity = 0 - destroyTimer.start() - } - } - - Timer { - id: destroyTimer - - interval: 150 - running: false - repeat: false - - onTriggered: { - modelData.dismiss() - } - } - - Column { - id: content - - anchors.fill: parent - anchors.margins: 12 - - spacing: 4 - - Text { - text: modelData.summary - color: "white" - font.bold: true - } - - Text { - text: modelData.body - color: "white" - wrapMode: Text.Wrap - } - } - } - } - } -} diff --git a/quickshell/Procs.qml b/quickshell/Procs.qml deleted file mode 100644 index 6442bfb..0000000 --- a/quickshell/Procs.qml +++ /dev/null @@ -1,137 +0,0 @@ -import Quickshell -import Quickshell.Io -import QtQuick - -Scope { - Timer { - interval: 5000 - running: true - repeat: true - onTriggered: { - cpuProc.running = true - memProc.running = true - brightnessProc.running = true - volumeProc.running = true - batteryProc.running = true - networkProc.running = true - bluetoothProc.running = true - temperatureProc.running = true - } - } - - Process { - id: cpuProc - command: ["sh", "-c", "head -1 /proc/stat"] - - stdout: SplitParser { - onRead: data => { - var p = data.trim().split(/\s+/) - var idle = parseInt(p[4]) + parseInt(p[5]) - var total = p.slice(1, 8).reduce((a, b) => a + parseInt(b), 0) - if (lastCpuTotal > 0) { - cpuUsage = Math.round(100 * (1 - (idle - lastCpuIdle) / (total - lastCpuTotal))) - } - lastCpuTotal = total - lastCpuIdle = idle - } - } - Component.onCompleted: running = true - } - - Process { - id: memProc - command: ["sh", "-c", "free | grep Mem"] - stdout: SplitParser { - onRead: data => { - var parts = data.trim().split(/\s+/) - var total = parseInt(parts[1]) || 1 - var used = parseInt(parts[2]) || 0 - memUsage = Math.round(100 * used / total) - } - } - Component.onCompleted: running = true - } - - Process { - id: temperatureProc - command: ["sh", "-c", "~/.config/quickshell/scripts/cpu_temp.sh"] - stdout: SplitParser { - onRead: data => { - cpu_temperature = parseInt(data.trim()) || 0 - } - } - Component.onCompleted: running = true - } - - Process { - id: brightnessProc - command: ["sh", "-c", "~/.config/quickshell/scripts/brightness.sh"] - stdout: SplitParser { - onRead: data => { - var parts = data.trim().split(/\s+/) - brightness = parseInt(parts[0]) || 100 - temperature = parseInt(parts[1]) || 6000 - } - } - Component.onCompleted: running = true - } - - Process { - id: volumeProc - command: ["sh", "-c", "wpctl get-volume @DEFAULT_AUDIO_SINK@"] - stdout: SplitParser { - onRead: data => { - var parts = data.trim().split(/\s+/) - if (parts.length == 3) { - volume_muted = true; - } else { - volume_muted = false; - } - volume = (parseFloat(parts[1].trim()) || 0) * 100 - } - } - Component.onCompleted: running = true - } - - Process { - id: batteryProc - command: ["sh", "-c", "~/.config/quickshell/scripts/battery.sh"] - stdout: SplitParser { - onRead: data => { - var parts = data.trim().split(/\s+/) - battery = parseInt(parts[0]) || 0 - batteryCharging = parseInt(parts[1]) || false - } - } - Component.onCompleted: running = true - } - - Process { - id: networkProc - command: ["sh", "-c", "~/.config/quickshell/scripts/network.sh"] - stdout: SplitParser { - onRead: data => { - var parts = data.trim().split(/\s+/) - wifiName = parts[0]; - } - } - Component.onCompleted: running = true - } - - Process { - id: bluetoothProc - command: ["sh", "-c", "~/.config/quickshell/scripts/bluetooth.sh"] - stdout: SplitParser { - onRead: data => { - data = data.trim() - if (data == "Offline") { - bluetoothName = "Offline" - return - } - var parts = data.split(" ") - bluetoothName = parts.slice(2).join(" ") - } - } - Component.onCompleted: running = true - } -} diff --git a/quickshell/items/DataBus.qml b/quickshell/items/DataBus.qml deleted file mode 100644 index ef9f952..0000000 --- a/quickshell/items/DataBus.qml +++ /dev/null @@ -1,23 +0,0 @@ -import QtQuick -import QtQuick.Layouts - -RowLayout { - spacing: 0 - Text { - text: " Data Bus:" - color: shellRoot.white - font { - family: shellRoot.fontFamily - pixelSize: shellRoot.fontSize - } - } - Text { - text: cpuUsage - color: shellRoot.orange - font { - family: shellRoot.fontFamily - pixelSize: shellRoot.fontSize - bold: true - } - } -} diff --git a/quickshell/items/Electrons.qml b/quickshell/items/Electrons.qml deleted file mode 100644 index f75c126..0000000 --- a/quickshell/items/Electrons.qml +++ /dev/null @@ -1,27 +0,0 @@ -import QtQuick -import QtQuick.Layouts - -RowLayout { - spacing: 0 - Text { - text: " Electrons:" - color: shellRoot.white - font { - family: shellRoot.fontFamily - pixelSize: shellRoot.fontSize - } - } - Text { - text: (batteryCharging ? ("AC/DC(" + battery + ")") : battery) - color: (battery <= redBatteryPoint) ? shellRoot.red : ((battery <= orangeBatteryPoint) ? shellRoot.orange : shellRoot.green) - font { - family: shellRoot.fontFamily - pixelSize: shellRoot.fontSize - bold: true - } - } - MouseArea { - anchors.fill: parent - onClicked: shellRoot.batteryInfo = !shellRoot.batteryModeConfig - } -} diff --git a/quickshell/items/Latch.qml b/quickshell/items/Latch.qml deleted file mode 100644 index 5cc6487..0000000 --- a/quickshell/items/Latch.qml +++ /dev/null @@ -1,23 +0,0 @@ -import QtQuick -import QtQuick.Layouts - -RowLayout { - spacing: 0 - Text { - text: " Latch:" - color: shellRoot.white - font { - family: shellRoot.fontFamily - pixelSize: shellRoot.fontSize - } - } - Text { - text: memUsage - color: shellRoot.orange - font { - family: shellRoot.fontFamily - pixelSize: shellRoot.fontSize - bold: true - } - } -} diff --git a/quickshell/items/LowEnergy.qml b/quickshell/items/LowEnergy.qml deleted file mode 100644 index bfd33ab..0000000 --- a/quickshell/items/LowEnergy.qml +++ /dev/null @@ -1,28 +0,0 @@ -import QtQuick -import QtQuick.Layouts - -RowLayout { - spacing: 0 - opacity: !shellRoot.dnd - Text { - text: " Low Energy:" - color: shellRoot.white - font { - family: shellRoot.fontFamily - pixelSize: shellRoot.fontSize - } - } - Text { - text: bluetoothName - color: bluetoothName == "Offline" ? shellRoot.red : shellRoot.green - font { - family: shellRoot.fontFamily - pixelSize: shellRoot.fontSize - bold: true - } - } - MouseArea { - anchors.fill: parent - onClicked: bluetoothManagerProc.running = true - } -} diff --git a/quickshell/items/Photons.qml b/quickshell/items/Photons.qml deleted file mode 100644 index 0ba94ee..0000000 --- a/quickshell/items/Photons.qml +++ /dev/null @@ -1,32 +0,0 @@ -import QtQuick -import QtQuick.Layouts - -RowLayout { - spacing: 0 - Text { - text: " Photons:" - color: shellRoot.white - font { - family: shellRoot.fontFamily - pixelSize: shellRoot.fontSize - } - } - Text { - text: brightness - color: shellRoot.orange - font { - family: shellRoot.fontFamily - pixelSize: shellRoot.fontSize - bold: true - } - } - Text { - text: "(" + temperature + "K)" - color: shellRoot.red - font { - family: shellRoot.fontFamily - pixelSize: shellRoot.fontSize - bold: true - } - } -} diff --git a/quickshell/items/Radiation.qml b/quickshell/items/Radiation.qml deleted file mode 100644 index e2a6c09..0000000 --- a/quickshell/items/Radiation.qml +++ /dev/null @@ -1,23 +0,0 @@ -import QtQuick -import QtQuick.Layouts - -RowLayout { - spacing: 0 - Text { - text: " Radiation:" - color: shellRoot.white - font { - family: shellRoot.fontFamily - pixelSize: shellRoot.fontSize - } - } - Text { - text: cpu_temperature + "K" - color: shellRoot.orange - font { - family: shellRoot.fontFamily - pixelSize: shellRoot.fontSize - bold: true - } - } -} diff --git a/quickshell/items/Radio.qml b/quickshell/items/Radio.qml deleted file mode 100644 index 77e542e..0000000 --- a/quickshell/items/Radio.qml +++ /dev/null @@ -1,29 +0,0 @@ -import QtQuick -import QtQuick.Layouts - -RowLayout { - spacing: 0 - opacity: !shellRoot.dnd - - Text { - text: " Radio:" - color: shellRoot.white - font { - family: shellRoot.fontFamily - pixelSize: shellRoot.fontSize - } - } - Text { - text: wifiName - color: wifiName == "Offline" ? shellRoot.red : shellRoot.green - font { - family: shellRoot.fontFamily - pixelSize: shellRoot.fontSize - bold: true - } - } - MouseArea { - anchors.fill: parent - onClicked: networkManagerProc.running = true - } -} diff --git a/quickshell/items/Spin.qml b/quickshell/items/Spin.qml deleted file mode 100644 index 72e6105..0000000 --- a/quickshell/items/Spin.qml +++ /dev/null @@ -1,45 +0,0 @@ -import QtQuick -import QtQuick.Layouts - -RowLayout { - spacing: 0 - Text { - text: " Spin:" - color: shellRoot.white - font { - family: shellRoot.fontFamily - pixelSize: shellRoot.fontSize - } - } - Text { - property var formatMode: "HH:mm:ss" - - id: clock - text: Qt.formatDateTime(new Date(), clock.formatMode) - color: shellRoot.purple - font { - family: shellRoot.fontFamily - pixelSize: shellRoot.fontSize - bold: true - } - - Timer { - interval: 1000 - running: true - repeat: true - onTriggered: clock.text = Qt.formatDateTime(new Date(), clock.formatMode) - } - - MouseArea { - anchors.fill: parent - onClicked: { - if (clock.formatMode === "HH:mm:ss") { - clock.formatMode = "yyyy/MM/dd, dddd" - } else { - clock.formatMode = "HH:mm:ss" - } - clock.text = Qt.formatDateTime(new Date(), clock.formatMode) - } - } - } -} diff --git a/quickshell/items/Waves.qml b/quickshell/items/Waves.qml deleted file mode 100644 index f8c0359..0000000 --- a/quickshell/items/Waves.qml +++ /dev/null @@ -1,23 +0,0 @@ -import QtQuick -import QtQuick.Layouts - -RowLayout { - spacing: 0 - Text { - text: " Waves:" - color: shellRoot.white - font { - family: shellRoot.fontFamily - pixelSize: shellRoot.fontSize - } - } - Text { - text: volume - color: volume_muted ? shellRoot.red : shellRoot.green - font { - family: shellRoot.fontFamily - pixelSize: shellRoot.fontSize - bold: true - } - } -} diff --git a/quickshell/items/Workspace.qml b/quickshell/items/Workspace.qml deleted file mode 100644 index f793850..0000000 --- a/quickshell/items/Workspace.qml +++ /dev/null @@ -1,22 +0,0 @@ -import QtQuick -import Quickshell.Hyprland - -Repeater { - model: 5 - - Text { - property bool isActive: Hyprland.focusedWorkspace?.id === (index + 1) - - text: index + 1 - color: isActive ? shellRoot.green : shellRoot.white - font { - pixelSize: shellRoot.fontSize; - bold: true; - } - - MouseArea { - anchors.fill: parent - onClicked: Hyprland.dispatch("workspace " + (index + 1)) - } - } -} diff --git a/quickshell/scripts/battery-info.py b/quickshell/scripts/battery-info.py deleted file mode 100644 index c3958f7..0000000 --- a/quickshell/scripts/battery-info.py +++ /dev/null @@ -1,39 +0,0 @@ -# this script was used to generate the battery-info.sh via chatgpt - -import subprocess - -output = subprocess.run( - ["upower", "--enumerate"], - capture_output=True -).stdout.decode('utf-8') - -target = None - -for line in output.split("\n"): - if "BAT" not in line: - continue - target = line - break - -print(line) - -output = subprocess.run( - ["upower", "-i", line], - capture_output=True -).stdout.decode('utf-8') - -energy = None -voltage = None -capacity = None - -for line in output.split("\n"): - if energy is None and "energy:" in line: - energy = line.split(":")[1].strip() - if voltage is None and "voltage:" in line: - voltage = line.split(":")[1].strip() - if capacity is None and "capacity:" in line: - capacity = line.split(":")[1].strip() - -print("energy:", energy) -print("voltage:", voltage) -print("capacity:", capacity) diff --git a/quickshell/scripts/battery-info.sh b/quickshell/scripts/battery-info.sh deleted file mode 100755 index 414d168..0000000 --- a/quickshell/scripts/battery-info.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -target=$(upower --enumerate | awk '/BAT/ { print; exit }') - -upower -i "$target" | awk -F: ' -/energy:/ && !e { e=$2 } -/voltage:/ && !v { v=$2 } -/capacity:/ && !c { c=$2 } -END { - gsub(/^[ \t]+/, "", e) - gsub(/^[ \t]+/, "", v) - gsub(/^[ \t]+/, "", c) - - print "energy:", e - print "voltage:", v - print "capacity:", c -}' diff --git a/quickshell/scripts/battery.sh b/quickshell/scripts/battery.sh deleted file mode 100755 index 77f800a..0000000 --- a/quickshell/scripts/battery.sh +++ /dev/null @@ -1,3 +0,0 @@ -battery=$(cat /sys/class/power_supply/BAT1/capacity) -charging=$(cat /sys/class/power_supply/ACAD/online) -echo "$battery $charging" diff --git a/quickshell/scripts/bluetooth.sh b/quickshell/scripts/bluetooth.sh deleted file mode 100755 index 861e4a3..0000000 --- a/quickshell/scripts/bluetooth.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash - -connected="$(bluetoothctl devices Connected)" - -if [ -z "$connected" ]; then - echo "Offline" -else - echo "$connected" -fi diff --git a/quickshell/scripts/brightness.sh b/quickshell/scripts/brightness.sh deleted file mode 100755 index a39b85d..0000000 --- a/quickshell/scripts/brightness.sh +++ /dev/null @@ -1,4 +0,0 @@ -brightness=$(cat /sys/class/backlight/acpi_video0/actual_brightness) -temp=$(hyprctl hyprsunset temperature 2>/dev/null | grep -o '[0-9]\+') -if [ -z "$temp" ]; then temp=6000; fi -echo "$brightness $temp" diff --git a/quickshell/scripts/cpu_temp.sh b/quickshell/scripts/cpu_temp.sh deleted file mode 100755 index de73d7d..0000000 --- a/quickshell/scripts/cpu_temp.sh +++ /dev/null @@ -1,2 +0,0 @@ -temp=$(sensors | awk '/^Package id 0:/ {print int($4) + 273}') -echo "$temp" diff --git a/quickshell/scripts/list-apps.sh b/quickshell/scripts/list-apps.sh deleted file mode 100755 index bac48b6..0000000 --- a/quickshell/scripts/list-apps.sh +++ /dev/null @@ -1,115 +0,0 @@ -#!/bin/sh -# List desktop applications for the launcher - -# Blacklist - apps to hide (add desktop file basenames here) -BLACKLIST=( - # "xfce4-about.desktop" - # "avahi-discover.desktop" - # "bssh.desktop" - # "bvnc.desktop" - # "qv4l2.desktop" - # "qvidcap.desktop" - # "lstopo.desktop" - # "uuctl.desktop" - # "codium.desktop" # Hide regular VSCodium (keep Wayland version) - # "xgps.desktop" # Hide Xgps - # "xgpsspeed.desktop" # Hide Xgpsspeed -) - -# Search paths for .desktop files (local first so overrides work) -XDG_DATA_DIRS="${XDG_DATA_DIRS:-/usr/local/share:/usr/share}" -IFS=':' read -ra SEARCH_PATHS <<< "$XDG_DATA_DIRS" - -# Function to find icon path -find_icon() { - local icon_name="$1" - - # If it's already a path, return it - if [[ "$icon_name" == /* ]]; then - echo "$icon_name" - return - fi - - # Common icon sizes to try - local sizes=(48 32 64 128 256) - - # Icon theme paths - local icon_paths=( - "$HOME/.local/share/icons" - "$HOME/.icons" - "/usr/share/icons" - "/usr/share/pixmaps" - ) - - # Try to find the icon - for path in "${icon_paths[@]}"; do - # Try with extensions - for ext in png svg xpm; do - # Direct match in pixmaps - if [ -f "$path/$icon_name.$ext" ]; then - echo "$path/$icon_name.$ext" - return - fi - - # Try in hicolor theme with different sizes - for size in "${sizes[@]}"; do - if [ -f "$path/hicolor/${size}x${size}/apps/$icon_name.$ext" ]; then - echo "$path/hicolor/${size}x${size}/apps/$icon_name.$ext" - return - fi - done - done - done - - # If not found, just return the icon name - echo "$icon_name" -} - -# Collect all desktop files and process, avoiding duplicates -# We use process substitution to avoid subshell issues with arrays -declare -A seen_apps - -for dir in "${SEARCH_PATHS[@]}"; do - [ ! -d "$dir" ] && continue - - while IFS= read -r desktop_file; do - basename_file=$(basename "$desktop_file") - - # Skip duplicates (local overrides system) - [[ -n "${seen_apps[$basename_file]}" ]] && continue - seen_apps[$basename_file]=1 - - # Skip blacklisted - skip=0 - for blacklisted in "${BLACKLIST[@]}"; do - if [[ "$basename_file" == "$blacklisted" ]]; then - skip=1 - break - fi - done - [[ $skip -eq 1 ]] && continue - - # Skip if NoDisplay=true - grep -q "^NoDisplay=true" "$desktop_file" 2>/dev/null && continue - - # Extract fields - name=$(grep "^Name=" "$desktop_file" | head -1 | cut -d= -f2-) - comment=$(grep "^Comment=" "$desktop_file" | head -1 | cut -d= -f2-) - icon=$(grep "^Icon=" "$desktop_file" | head -1 | cut -d= -f2-) - exec=$(grep "^Exec=" "$desktop_file" | head -1 | cut -d= -f2- | sed 's/%[uUfF]//g' | sed 's/%[cdnNvmki]//g') - - # Skip if no name or exec - [ -z "$name" ] && continue - [ -z "$exec" ] && continue - - # Default comment if empty - [ -z "$comment" ] && comment="Application" - - # Find icon path - icon_path=$(find_icon "$icon") - - # Output in format: name|comment|icon_path|exec - echo "$name|$comment|$icon_path|$exec" - - done < <(find -L "$dir" -name "*.desktop" -type f 2>/dev/null) -done | sort -u diff --git a/quickshell/scripts/network.sh b/quickshell/scripts/network.sh deleted file mode 100755 index f50707e..0000000 --- a/quickshell/scripts/network.sh +++ /dev/null @@ -1,2 +0,0 @@ -connections=$(nmcli connection show --active | sed -n '2 p') -echo "$connections" diff --git a/quickshell/shell.qml b/quickshell/shell.qml deleted file mode 100644 index 2396ea8..0000000 --- a/quickshell/shell.qml +++ /dev/null @@ -1,253 +0,0 @@ -import "./items" -import Quickshell -import Quickshell.Wayland -import Quickshell.Hyprland -import Quickshell.Io -import QtQuick -import QtQuick.Layouts - -ShellRoot { - id: shellRoot - - property int redBatteryPoint: 15 - property int orangeBatteryPoint: 30 - - property color black: "#000000" - property color gray: "#202020" - property color lightgray: "#404040" - property color white: "#ffffff" - property color green: "#28CD41" - property color red: "#FF4040" - property color orange: "#FFA500" - property color purple: "#BF00FF" - property color blue: "#00FFFF" - property string fontFamily: "JetBrainsMono Nerd Font" - property int fontSize: 18 - - property bool appLauncherVisible: false - property bool barVisible: true - property bool calendarVisible: false - property bool dnd: false - property bool batteryInfo: false - property bool blink: false - - GlobalShortcut { - id: barShortcut - name: "toggleBar" - onPressed: { - barVisible = !barVisible - } - } - GlobalShortcut { - id: launcherShortcut - name: "toggleLauncher" - onPressed: { - appLauncherVisible = !appLauncherVisible - } - } - GlobalShortcut { - id: dndShortCut - name: "toggleDnd" - onPressed: { - dnd = !dnd - } - } - - Variants { - model: Quickshell.screens - PanelWindow { - id: root - // don't render this if shell.navVisible is false - visible: shellRoot.barVisible - - property int cpuUsage: 0 - property int lastCpuTotal: 0 - property int lastCpuIdle: 0 - property int memUsage: 0 - property int cpu_temperature: 6000 - property int brightness: 100 - property int temperature: 6000 - property int volume: 12 - property bool volume_muted: false - property int battery: 12 - property bool batteryCharging: false - property string wifiName: "Offline" - property string bluetoothName: "Offline" - - Procs {} - Process { - id: networkManagerProc - command: ["foot", "-e", "nmtui"] - Component.onCompleted: running = false - } - Process { - id: bluetoothManagerProc - command: ["foot", "-e", "bluetui"] - Component.onCompleted: running = false - } - - anchors.bottom: true - anchors.left: true - anchors.right: true - implicitHeight: 32 - color: shellRoot.black - - RowLayout { - anchors.fill: parent - anchors.margins: 0 - anchors.leftMargin: 10 - anchors.rightMargin: 10 - - - Workspace {} - Item { Layout.fillWidth: true } - Radio {} - LowEnergy {} - Electrons {} - Waves {} - Photons {} - Radiation {} - DataBus {} - Latch {} - Spin {} - } - } - } - Variants { - model: Quickshell.screens - - PanelWindow { - visible: shellRoot.appLauncherVisible - - anchors { - top: true - left: true - } - - margins { - top: 5 - left: Screen.width/2 - 200 - } - - implicitWidth: 400 - implicitHeight: 600 - - color: "transparent" - exclusiveZone: 0 - - WlrLayershell.layer: WlrLayer.Overlay - WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand - - Behavior on height { - NumberAnimation { duration: 200; easing.type: Easing.OutCubic } - } - - AppLauncher { - anchors.fill: parent - isVisible: shellRoot.appLauncherVisible - - onRequestClose: { - shellRoot.appLauncherVisible = false - } - } - } - } - - Variants { - model: Quickshell.screens - - PanelWindow { - visible: shellRoot.batteryInfo - - anchors { - bottom: true - left: true - } - - margins { - top: 0 - left: Screen.width / 2 - 100 - } - - implicitWidth: 300 - implicitHeight: 120 - - color: "transparent" - exclusiveZone: 0 - - WlrLayershell.layer: WlrLayer.Overlay - WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand - - Behavior on height { - NumberAnimation { duration: 200; easing.type: Easing.OutCubic } - } - - BatteryInfo { - onRequestClose: { - shellRoot.batteryInfo = false - } - } - } - } - - NotificationOverlay {} - - Timer { - interval: 1000 * 60 * 30 - running: true - repeat: true - onTriggered: { - if (dnd) return; - shellRoot.blink = true; - } - } - - Variants { - model: Quickshell.screens - - PanelWindow { - visible: shellRoot.blink - - margins { - top: 0 - left: 0 - } - - implicitWidth: 800 - implicitHeight: 400 - - color: "transparent" - exclusiveZone: 0 - - WlrLayershell.layer: WlrLayer.Overlay - WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand - - Behavior on height { - NumberAnimation { duration: 200; easing.type: Easing.OutCubic } - } - - Rectangle { - id: blinkRect - - width: 800 - height: 400 - Layout.fillWidth: true - Layout.fillHeight: true - color: shellRoot.black - antialiasing: true - radius: 10 - focus: true - Keys.onEscapePressed: shellRoot.blink = false; - - Text { - anchors.centerIn: parent - text: "BLINK" - font.family: shellRoot.fontFamily - font.weight: 800 - font.pixelSize: 200 - color: shellRoot.white - } - } - } - } -} diff --git a/hypr/battery-notif.sh b/scripts/battery_notif.sh index 6c721a5..e5f44e9 100755..100644 --- a/hypr/battery-notif.sh +++ b/scripts/battery_notif.sh @@ -1,5 +1,4 @@ #!/usr/bin/env bash - while true; do status=$(cat /sys/class/power_supply/BAT1/status) if [[ "$status" = "Discharging" ]]; then |
