Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 667e42ba15 | |||
| 5e6d48b30a | |||
| 9e8411a176 | |||
| 6d5d2caeca | |||
| 86c964c274 | |||
| 7958f17951 |
@@ -25,3 +25,4 @@
|
|||||||
!systemd/
|
!systemd/
|
||||||
fish/fish_variables
|
fish/fish_variables
|
||||||
waybar/fluxo-rs
|
waybar/fluxo-rs
|
||||||
|
!fluxo/
|
||||||
|
|||||||
@@ -0,0 +1,85 @@
|
|||||||
|
# fluxo-rs configuration
|
||||||
|
# Location: ~/.config/fluxo/config.toml
|
||||||
|
|
||||||
|
[general]
|
||||||
|
menu_command = "fuzzel --dmenu --prompt \"$FLUXO_PROMPT\""
|
||||||
|
|
||||||
|
[signals]
|
||||||
|
network = 1
|
||||||
|
cpu = 2
|
||||||
|
memory = 3
|
||||||
|
gpu = 4
|
||||||
|
sys = 5
|
||||||
|
disk = 6
|
||||||
|
game = 7
|
||||||
|
audio = 8
|
||||||
|
bt = 9
|
||||||
|
power = 10
|
||||||
|
mpris = 11
|
||||||
|
backlight = 12
|
||||||
|
dnd = 13
|
||||||
|
|
||||||
|
[network]
|
||||||
|
format = "{interface} ({ip}): {rx:^4.1} MB/s {tx:^4.1} MB/s"
|
||||||
|
|
||||||
|
[cpu]
|
||||||
|
format = "CPU: {usage:^4.1}% {temp:^4.1}C"
|
||||||
|
|
||||||
|
[memory]
|
||||||
|
format = "MEM: {used:^4.1}/{total:^4.1}GB"
|
||||||
|
|
||||||
|
[sys]
|
||||||
|
format = "UP: {uptime} LOAD: {load1:^3.1} "
|
||||||
|
|
||||||
|
[disk]
|
||||||
|
format = "{mount} {used:^3.0}/{total:^3.0}G"
|
||||||
|
|
||||||
|
|
||||||
|
[power]
|
||||||
|
format = "{percentage:>3}% {icon}"
|
||||||
|
|
||||||
|
[audio]
|
||||||
|
format_sink_unmuted = "{name} {volume:>3}% <span size='large'> {icon}</span>"
|
||||||
|
format_sink_muted = "{name} <span size='large'> {icon}</span>"
|
||||||
|
format_source_unmuted = "{name} {volume:>3}% <span size='large'> {icon}</span>"
|
||||||
|
format_source_muted = "{name} <span size='large'> {icon}</span>"
|
||||||
|
|
||||||
|
[bt]
|
||||||
|
format_plugin = "{alias} [{left}|{right}] {anc} <span size='large'> </span>"
|
||||||
|
format_connected = "{alias} <span size='large'> </span>"
|
||||||
|
format_disconnected = "Disconnected <span size='large'> </span>"
|
||||||
|
format_disabled = "<span size='large'></span>"
|
||||||
|
|
||||||
|
[game]
|
||||||
|
format_active = "<span size='large'></span>"
|
||||||
|
format_inactive = "<span size='large'></span>"
|
||||||
|
|
||||||
|
[mpris]
|
||||||
|
format = "{artist} - {title}"
|
||||||
|
max_length = 20
|
||||||
|
scroll = true
|
||||||
|
scroll_speed = 500
|
||||||
|
scroll_separator = " /// "
|
||||||
|
|
||||||
|
[pool]
|
||||||
|
enabled = false
|
||||||
|
format = "{used:>4.0}G / {total:>4.0}G"
|
||||||
|
|
||||||
|
[gpu]
|
||||||
|
enabled = false
|
||||||
|
format_amd = "AMD: {usage:>3.0}% {vram_used:>4.1}/{vram_total:>4.1}GB {temp:>4.1}C"
|
||||||
|
format_intel = "iGPU: {usage:>3.0}%"
|
||||||
|
format_nvidia = "NV: {usage:>3.0}% {vram_used:>4.1}/{vram_total:>4.1}GB {temp:>4.1}C"
|
||||||
|
|
||||||
|
[keyboard]
|
||||||
|
enabled = false
|
||||||
|
format = "{layout}"
|
||||||
|
|
||||||
|
[backlight]
|
||||||
|
enable = true
|
||||||
|
format = " {icon} {percentage}"
|
||||||
|
|
||||||
|
[dnd]
|
||||||
|
enabled = true
|
||||||
|
format_dnd = "<span size='large'></span>"
|
||||||
|
format_normal = "<span size='large'></span>"
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
<div align="center">
|
||||||
|
<h1>✦ Google-ish Hyprlock Theme ✦</h1>
|
||||||
|
<h3></h3>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## ▶️ Preview
|
||||||
|
<details>
|
||||||
|
<summary><b>Without Profile & User Info</b></summary>
|
||||||
|
<img src="https://github.com/user-attachments/assets/7bbacd47-b0d7-4132-9951-53dc0ead604c" alt="Hyprlock-Without-Profile" width="1280">
|
||||||
|
</details>
|
||||||
|
<details>
|
||||||
|
<summary><b>With Profile & User Info</b></summary>
|
||||||
|
<img src="https://github.com/user-attachments/assets/9a58a6e2-a71f-4b28-998a-8a45c8950aaf" alt="Hyprlock-With-Profile" width="1280">
|
||||||
|
</details>
|
||||||
|
<details>
|
||||||
|
<summary><b>With Profile & User Info [12H Format]</b></summary>
|
||||||
|
<img src="https://github.com/user-attachments/assets/e0049860-7511-432e-8814-8d17d448182b" alt="Hyprlock-With-Profile" width="1280">
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## 📦 Installation
|
||||||
|
><i><b>❗ This configuration is based on a 1080p display, if you are using a higher screen resolution,</br>you may need to reconfigure the sizes and recoordinate all the components.</b></i>
|
||||||
|
|
||||||
|
<b>Auto-Installation :</b>
|
||||||
|
```bash
|
||||||
|
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Tamarindtype/googlish-hyprlock-theme/main/install.sh)"
|
||||||
|
```
|
||||||
|
</br><b>Manual Installation :</b>
|
||||||
|
```bash
|
||||||
|
# Backup your current Hyprlock config first!
|
||||||
|
# Clone the repository
|
||||||
|
git clone https://github.com/Tamarindtype/googlish-hyprlock-theme.git
|
||||||
|
|
||||||
|
# Move all the files to the hyprland config folder
|
||||||
|
mv ./googlish-hyprlock-theme/* ~/.config/hypr/
|
||||||
|
|
||||||
|
# Go to script folder
|
||||||
|
cd $HOME/.config/hypr/hyprlock/
|
||||||
|
|
||||||
|
# Change all the scripts permission to make them executable
|
||||||
|
chmod +x *.sh
|
||||||
|
|
||||||
|
# Run the Hyprlock
|
||||||
|
hyprlock
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🗄️ Directory Structure
|
||||||
|
```md
|
||||||
|
$HOME
|
||||||
|
└── .config
|
||||||
|
└── hypr
|
||||||
|
├── hyprlock
|
||||||
|
│ ├── assets
|
||||||
|
│ ├── battery.sh
|
||||||
|
│ ├── bluetooth.sh
|
||||||
|
│ ├── change_wallpaper.sh
|
||||||
|
│ ├── greeting.sh
|
||||||
|
│ ├── network.sh
|
||||||
|
│ ├── medianotif.sh
|
||||||
|
│ └── weatherinfo.sh
|
||||||
|
└── hyprlock.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🗨️ FAQ
|
||||||
|
| Question | Answer |
|
||||||
|
| --- | --- |
|
||||||
|
| Profile & User info does not appear? | By default, it set without profile and user info. You can enable it by uncomment the `image` @PROFILE PICTURE and `label` @USER INFO in `hyprlock.conf` |
|
||||||
|
| Battery percentage number does not appear? | Change your battery module in `battery.sh`. The default is `BAT0`, you can check it by running this command `ls /sys/class/power_supply/` |
|
||||||
|
| How to change the 24H Format to 12H Format? | Comment the 24H format and uncomment the 12H format. also uncomment the AM/PM `label` & `shape` in `hyprlock.conf` |
|
||||||
|
| null location or Unable to determine your location? | Change the IP Geolocation provider in `weatherinfo.sh` |
|
||||||
|
|
||||||
|
## 🏅 Recommendations
|
||||||
|
| Type | Name | Links |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Regular | PP Neue Machina | [Pangram Pangram](https://pangrampangram.com/products/neue-machina) |
|
||||||
|
| Nerd Font | Geist & Space Mono | [Nerd Fonts](https://github.com/ryanoasis/nerd-fonts/releases) |
|
||||||
|
| Emoji | Apple Emoji | [apple-emoji-linux](https://github.com/samuelngs/apple-emoji-linux) |
|
||||||
|
|
||||||
|
## ✨ Special Thanks & Credits
|
||||||
|
|
||||||
|
| Details | Credit |
|
||||||
|
| --- | --- |
|
||||||
|
| Battery & Playerctl Widget Scripts | @ashish-kus [minimal Hyprlock](https://gist.github.com/ashish-kus/dd562b0bf5e8488a09e0b9c289f4574c) |
|
||||||
|
| Helped Me Create Dynamic WiFi, Bluetooth, Weathercast and Greeting Widget | @OPENAI [ChatGPT](https://chatgpt.com/)|
|
||||||
+524
-134
@@ -1,155 +1,545 @@
|
|||||||
source = $HOME/.config/hypr/catppuccin-hyprland/themes/mocha.conf
|
# For more information visit https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/
|
||||||
|
|
||||||
|
source = ~/.config/hypr/catppuccin-hyprland/themes/mocha.conf
|
||||||
|
|
||||||
|
$scrPath = ~/.config/hypr/hyprlock/
|
||||||
|
$imgPath = ~/.config/hypr/hyprlock/assets/
|
||||||
|
|
||||||
|
$USER = narl # Your Alias
|
||||||
|
$host = uname -n #Your Alias
|
||||||
|
$wifi-mode = false # Change the WiFi output. true = show SSID, false = Connected.
|
||||||
|
$bt-mode = false # Change the Bluetooth output. true = show Device name, false = Connected.
|
||||||
|
|
||||||
|
# Default geolocation provider is IP-API.COM, hardcode it if the location does not match the current location.
|
||||||
|
# Hardcode your location (If hardcode does not recognize your City, change it to IP Geolocation provider in weatherinfo.sh)
|
||||||
|
$CITY =
|
||||||
|
$COUNTRY =
|
||||||
|
|
||||||
|
# WALLPAPER
|
||||||
|
# Just comment and uncomment to select
|
||||||
|
$wallpaper = screenshot
|
||||||
|
#$wallpaper = ~/your/wallpaper-path.png
|
||||||
|
$blur = 2
|
||||||
|
|
||||||
|
# ADJUST HERE
|
||||||
|
$rounding = 12
|
||||||
|
$shape-rd = -1
|
||||||
|
$font-text = GeistMono Nerd Font Bold
|
||||||
|
$font-text0 = GeistMono Nerd Font
|
||||||
|
$font-display = PP Neue Machina Ultra-Bold
|
||||||
|
$font-symbol = JetBrainsMono Nerd Font Mono
|
||||||
|
# Input Var
|
||||||
|
$weight = 2
|
||||||
|
$inner-color = rgba($baseAlpha80)
|
||||||
|
$border-color = rgba($mauveAlpha80)
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
$clock-color = $text
|
||||||
|
$fg0 = $text
|
||||||
|
$fg1 = $base
|
||||||
|
$shape-col0 = $mauve
|
||||||
|
$shape-col1 = rgba($surface0Alpha80)
|
||||||
|
$shape-col2 = rgba($surface1Alpha80)
|
||||||
|
$shadow-pass = 2
|
||||||
|
$shadow-size = 3
|
||||||
|
$shadow-color = $crust
|
||||||
|
$shadow-boost = 1.2
|
||||||
|
$text-shadow-pass = 1
|
||||||
|
$text-shadow-boost = 0.5
|
||||||
|
|
||||||
|
|
||||||
$accent = $mauve
|
|
||||||
$accentAlpha = $mauveAlpha
|
|
||||||
$font = JetBrainsMono Nerd Font
|
|
||||||
|
|
||||||
# GENERAL
|
# GENERAL
|
||||||
general {
|
general {
|
||||||
hide_cursor = true
|
no_fade_in = true
|
||||||
no_fade_in = false
|
grace = 1
|
||||||
grace = 0
|
disable_loading_bar = false
|
||||||
disable_loading_bar = true
|
hide_cursor = true
|
||||||
|
ignore_empty_input = true
|
||||||
|
text_trim = true
|
||||||
}
|
}
|
||||||
|
|
||||||
# BACKGROUND
|
#BACKGROUND
|
||||||
background {
|
background {
|
||||||
monitor =
|
monitor =
|
||||||
path = $HOME/Pictures/reze/reze.png
|
path = $wallpaper
|
||||||
blur_passes = 3
|
|
||||||
blur_size = 7
|
blur_passes = $blur
|
||||||
noise = 0.0117
|
contrast = 0.8916
|
||||||
contrast = 0.8916
|
brightness = 0.7172
|
||||||
brightness = 0.8172
|
vibrancy = 0.1696
|
||||||
vibrancy = 0.1696
|
vibrancy_darkness = 0
|
||||||
vibrancy_darkness = 0.0
|
|
||||||
color = $base
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# TIME
|
# PROFILE PICTURE
|
||||||
|
image {
|
||||||
|
monitor =
|
||||||
|
path = $imgPath/profile.jpg
|
||||||
|
size = 120 # lesser side if not 1:1 ratio
|
||||||
|
opacity = 0.25
|
||||||
|
|
||||||
|
shadow_pass = $shadow-pass
|
||||||
|
shadow_size = $shadow-size
|
||||||
|
shadow_color = $shadow-color
|
||||||
|
shadow_boost = $shadow-boost
|
||||||
|
|
||||||
|
rounding = $rounding # negative values mean circle
|
||||||
|
border_size = 4
|
||||||
|
border_color = $mauve
|
||||||
|
rotate = 0 # degrees, counter-clockwise
|
||||||
|
|
||||||
|
position = 20, -20
|
||||||
|
halign = left
|
||||||
|
valign = top
|
||||||
|
zindex = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# USER INFO
|
||||||
label {
|
label {
|
||||||
monitor =
|
monitor =
|
||||||
text = $TIME
|
text = cmd[update:1000] echo -e "$USER\n $($host)\n\n$(uname -r)\nPackages: $(pacman -Q | wc -l) pacman"
|
||||||
color = $text
|
|
||||||
font_size = 120
|
shadow_passes = 1
|
||||||
font_family = $font
|
shadow_boost = 0.5
|
||||||
position = 0, 300
|
|
||||||
halign = center
|
color = $fg0
|
||||||
valign = center
|
font_size = 11
|
||||||
|
font_family = $font-text
|
||||||
|
|
||||||
|
position = 170, -35
|
||||||
|
halign = left
|
||||||
|
valign = top
|
||||||
|
}
|
||||||
|
|
||||||
|
# WEATHERCAST & LOCATION
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:1000] echo "$(bash $scrPath/weatherinfo.sh)"
|
||||||
|
|
||||||
|
shadow_passes = 1
|
||||||
|
shadow_boost = 0.5
|
||||||
|
|
||||||
|
color = $fg0
|
||||||
|
font_size = 11
|
||||||
|
font_family = $font-text
|
||||||
|
|
||||||
|
position = 0, -20
|
||||||
|
halign = center
|
||||||
|
valign = top
|
||||||
|
}
|
||||||
|
|
||||||
|
# INPUT FIELD
|
||||||
|
input-field {
|
||||||
|
monitor =
|
||||||
|
size = 275, 55
|
||||||
|
rounding = $rounding
|
||||||
|
|
||||||
|
outline_thickness = $weight
|
||||||
|
outer_color = $border-color
|
||||||
|
dots_size = 0.1 # Scale of input-field height, 0.2 - 0.8
|
||||||
|
dots_spacing = 1 # Scale of dots' absolute size, 0.0 - 1.0
|
||||||
|
dots_center = true
|
||||||
|
|
||||||
|
inner_color = $inner-color
|
||||||
|
font_color = $fg0
|
||||||
|
fade_on_empty = false
|
||||||
|
|
||||||
|
font_family = $font-text
|
||||||
|
placeholder_text = <span foreground="##$textAlpha"> $USER</span>
|
||||||
|
hide_input = false
|
||||||
|
check_color = $mauve
|
||||||
|
fail_color = $red
|
||||||
|
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
|
||||||
|
capslock_color = $yellow
|
||||||
|
|
||||||
|
position = 0, -240
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
zindex = 10
|
||||||
|
}
|
||||||
|
|
||||||
|
# TIME HR
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:1000] echo -e "$(date +"%H")" # 24-Hour Format
|
||||||
|
#text = cmd[update:1000] echo -e "$(date +"%I")" # 12-Hour Format
|
||||||
|
color = $clock-color
|
||||||
|
|
||||||
|
shadow_pass = $shadow-pass
|
||||||
|
shadow_size = $shadow-size
|
||||||
|
shadow_color = $shadow-color
|
||||||
|
shadow_boost = $shadow-boost
|
||||||
|
|
||||||
|
font_size = 150
|
||||||
|
font_family = $font-display
|
||||||
|
|
||||||
|
position = 0, -155
|
||||||
|
halign = center
|
||||||
|
valign = top
|
||||||
|
}
|
||||||
|
|
||||||
|
# TIME MM
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:1000] echo -e "$(date +"%M")"
|
||||||
|
color = $clock-color
|
||||||
|
|
||||||
|
shadow_pass = $shadow-pass
|
||||||
|
shadow_size = $shadow-size
|
||||||
|
shadow_color = $shadow-color
|
||||||
|
shadow_boost = $shadow-boost
|
||||||
|
|
||||||
|
font_size = 150
|
||||||
|
font_family = $font-display
|
||||||
|
|
||||||
|
position = 0, -325
|
||||||
|
halign = center
|
||||||
|
valign = top
|
||||||
|
}
|
||||||
|
|
||||||
|
# AM/PM for 12-Hour Format
|
||||||
|
#label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:1000] echo -e "$(date +"%p")"
|
||||||
|
color = $clock-color
|
||||||
|
|
||||||
|
shadow_pass = $shadow-pass
|
||||||
|
shadow_size = $shadow-size
|
||||||
|
shadow_color = $shadow-color
|
||||||
|
shadow_boost = $shadow-boost
|
||||||
|
|
||||||
|
font_size = 16
|
||||||
|
font_family = $font-display
|
||||||
|
|
||||||
|
position = 0, 17
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
zindex = 5
|
||||||
|
}
|
||||||
|
|
||||||
|
# AM/PM BG
|
||||||
|
#shape {
|
||||||
|
monitor =
|
||||||
|
size = 70, 40
|
||||||
|
|
||||||
|
shadow_passes = $text-shadow-pass
|
||||||
|
shadow_boost = $text-shadow-boost
|
||||||
|
|
||||||
|
color = $shape-col2
|
||||||
|
rounding = $rounding
|
||||||
|
border_size =
|
||||||
|
border_color =
|
||||||
|
|
||||||
|
position = 0, 20
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
zindex = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# GREETING
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:1000] echo "$(bash $scrPath/greeting.sh)"
|
||||||
|
|
||||||
|
shadow_passes = $text-shadow-pass
|
||||||
|
shadow_boost = $text-shadow-boost
|
||||||
|
|
||||||
|
color = $fg0
|
||||||
|
font_size = 11
|
||||||
|
font_family = $font-text
|
||||||
|
|
||||||
|
position = 0, -55
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
}
|
||||||
|
|
||||||
|
# TODAY IS
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:1000] bash -c 'day=$(date +%A); echo "Today is $day"'
|
||||||
|
|
||||||
|
shadow_passes = $text-shadow-pass
|
||||||
|
shadow_boost = $text-shadow-boost
|
||||||
|
|
||||||
|
color = $fg0
|
||||||
|
font_size = 11
|
||||||
|
font_family = $font-text
|
||||||
|
|
||||||
|
position = 0, -75
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
}
|
}
|
||||||
|
|
||||||
# DATE
|
# DATE
|
||||||
label {
|
label {
|
||||||
monitor =
|
monitor =
|
||||||
text = cmd[update:43200000] date +"%A, %d %B %Y"
|
text = cmd[update:1000] bash -c 'day=$(date +%d); case "$day" in 1) suffix="st";; 2) suffix="nd";; 3) suffix="rd";; *) suffix="th";; esac; echo -e "$(date +"%B %e")'$day'$suffix, $(date +%Y)"'
|
||||||
color = $text
|
|
||||||
font_size = 30
|
shadow_passes = $text-shadow-pass
|
||||||
font_family = $font
|
shadow_boost = $text-shadow-boost
|
||||||
position = 0, 200
|
|
||||||
halign = center
|
color = $fg0
|
||||||
valign = center
|
font_size = 14
|
||||||
|
font_family = $font-text
|
||||||
|
|
||||||
|
position = 0, -115
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
}
|
}
|
||||||
|
|
||||||
# USER AVATAR (Center)
|
# BATTERY
|
||||||
image {
|
|
||||||
monitor =
|
|
||||||
path = $HOME/.face
|
|
||||||
size = 120
|
|
||||||
border_color = rgba(255, 255, 255, 0.1)
|
|
||||||
position = 0, 50
|
|
||||||
halign = center
|
|
||||||
valign = center
|
|
||||||
}
|
|
||||||
|
|
||||||
# INPUT FIELD (Center)
|
|
||||||
input-field {
|
|
||||||
monitor =
|
|
||||||
size = 300, 60
|
|
||||||
outline_thickness = 2
|
|
||||||
dots_size = 0.2
|
|
||||||
dots_spacing = 0.2
|
|
||||||
dots_center = true
|
|
||||||
outer_color = rgba(255, 255, 255, 0.1)
|
|
||||||
inner_color = rgba(0, 0, 0, 0.2)
|
|
||||||
font_color = $text
|
|
||||||
fade_on_empty = false
|
|
||||||
placeholder_text = <span foreground="##$textAlpha"><i> Logged in as </i><span foreground="##$accentAlpha">$USER</span></span>
|
|
||||||
hide_input = false
|
|
||||||
check_color = $accent
|
|
||||||
fail_color = $red
|
|
||||||
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
|
|
||||||
capslock_color = $yellow
|
|
||||||
position = 0, -60
|
|
||||||
halign = center
|
|
||||||
valign = center
|
|
||||||
}
|
|
||||||
|
|
||||||
# --- MUSIC DASHBOARD (TOP RIGHT) ---
|
|
||||||
|
|
||||||
# ALBUM ART (At the very top right, 80px high, adjusted -3px for perfect alignment)
|
|
||||||
image {
|
|
||||||
monitor =
|
|
||||||
path = /tmp/hyprlock_art.png
|
|
||||||
size = 80
|
|
||||||
rounding = 15
|
|
||||||
border_color = rgba(255, 255, 255, 0.1)
|
|
||||||
reload_time = 2
|
|
||||||
reload_cmd = ~/.config/hypr/scripts/album_art.sh
|
|
||||||
position = -20, -17
|
|
||||||
halign = right
|
|
||||||
valign = top
|
|
||||||
}
|
|
||||||
|
|
||||||
# MUSIC TEXT BOX (To the left of the image, same height)
|
|
||||||
shape {
|
|
||||||
monitor =
|
|
||||||
size = 300, 80
|
|
||||||
color = rgba(0, 0, 0, 0.3)
|
|
||||||
rounding = 15
|
|
||||||
border_size = 1
|
|
||||||
border_color = rgba(255, 255, 255, 0.1)
|
|
||||||
position = -110, -20
|
|
||||||
halign = right
|
|
||||||
valign = top
|
|
||||||
}
|
|
||||||
|
|
||||||
# MUSIC TEXT (Right aligned and vertically centered inside the 80px box)
|
|
||||||
label {
|
label {
|
||||||
monitor =
|
monitor =
|
||||||
text = cmd[update:1000] ~/.config/hypr/scripts/songdetail.sh
|
text = cmd[update:1000] echo -e "$($scrPath/battery.sh)"
|
||||||
color = $text
|
|
||||||
font_size = 14
|
color = $fg1
|
||||||
font_family = $font
|
font_size = 12
|
||||||
position = -125, -37
|
font_family = $font-text
|
||||||
halign = right
|
|
||||||
valign = top
|
position = -37, 29
|
||||||
text_align = right
|
halign = right
|
||||||
|
valign = bottom
|
||||||
|
zindex = 5
|
||||||
}
|
}
|
||||||
|
|
||||||
# --- STATUS DASHBOARD (BOTTOM RIGHT) ---
|
# NETWORK
|
||||||
|
|
||||||
# SYSTEM INFO BOX (Vertical stack container)
|
|
||||||
shape {
|
|
||||||
monitor =
|
|
||||||
size = 300, 100
|
|
||||||
color = rgba(0, 0, 0, 0.3)
|
|
||||||
rounding = 15
|
|
||||||
border_size = 1
|
|
||||||
border_color = rgba(255, 255, 255, 0.1)
|
|
||||||
position = -20, 20
|
|
||||||
halign = right
|
|
||||||
valign = bottom
|
|
||||||
}
|
|
||||||
|
|
||||||
# SYSTEM INFO TEXT (3 lines, top of each other, right aligned)
|
|
||||||
label {
|
label {
|
||||||
monitor =
|
monitor =
|
||||||
text = cmd[update:5000] ~/.config/hypr/scripts/status_info.sh
|
text = cmd[update:1000] echo -e "$($scrPath/network.sh)"
|
||||||
color = $text
|
|
||||||
font_size = 14
|
color = $fg1
|
||||||
font_family = $font
|
font_size = 12
|
||||||
position = -35, 35
|
font_family = $font-text
|
||||||
halign = right
|
|
||||||
valign = bottom
|
position = 37, 29
|
||||||
text_align = right
|
halign = left
|
||||||
|
valign = bottom
|
||||||
|
zindex = 5
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# BLUETOOTH
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:1000] echo -e "$(~/.config/hypr/hyprlock/bluetooth.sh)"
|
||||||
|
|
||||||
|
color = $fg1
|
||||||
|
font_size = 12
|
||||||
|
font_family = $font-text
|
||||||
|
|
||||||
|
position = 37, 85
|
||||||
|
halign = left
|
||||||
|
valign = bottom
|
||||||
|
zindex = 5
|
||||||
|
}
|
||||||
|
|
||||||
|
# BATTERY BG
|
||||||
|
shape {
|
||||||
|
monitor =
|
||||||
|
size = 90, 40
|
||||||
|
|
||||||
|
shadow_passes = $text-shadow-pass
|
||||||
|
shadow_boost = $text-shadow-boost
|
||||||
|
|
||||||
|
color = $shape-col0
|
||||||
|
rounding = $shape-rd
|
||||||
|
border_size =
|
||||||
|
border_color =
|
||||||
|
|
||||||
|
position = -20, 20
|
||||||
|
halign = right
|
||||||
|
valign = bottom
|
||||||
|
zindex = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# NETWORK BG
|
||||||
|
shape {
|
||||||
|
monitor =
|
||||||
|
size = 150, 40
|
||||||
|
|
||||||
|
shadow_passes = $text-shadow-pass
|
||||||
|
shadow_boost = $text-shadow-boost
|
||||||
|
|
||||||
|
color = $shape-col0
|
||||||
|
rounding = $shape-rd
|
||||||
|
border_size =
|
||||||
|
border_color =
|
||||||
|
|
||||||
|
position = 20, 20
|
||||||
|
halign = left
|
||||||
|
valign = bottom
|
||||||
|
zindex = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# BLUETOOTH BG
|
||||||
|
shape {
|
||||||
|
monitor =
|
||||||
|
size = 150, 40
|
||||||
|
|
||||||
|
shadow_passes = $text-shadow-pass
|
||||||
|
shadow_boost = $text-shadow-boost
|
||||||
|
|
||||||
|
color = $shape-col0
|
||||||
|
rounding = $shape-rd
|
||||||
|
border_size =
|
||||||
|
border_color =
|
||||||
|
|
||||||
|
position = 20, 75
|
||||||
|
halign = left
|
||||||
|
valign = bottom
|
||||||
|
zindex = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# MEDIA BG
|
||||||
|
image {
|
||||||
|
monitor =
|
||||||
|
path = $imgPath/media-bg-dark-25.png
|
||||||
|
size = 8%
|
||||||
|
opacity = 0.25
|
||||||
|
|
||||||
|
rounding = 5
|
||||||
|
border_size = 0
|
||||||
|
rotate = 0
|
||||||
|
|
||||||
|
position = 0, -10%
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
zindex = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
shape {
|
||||||
|
monitor =
|
||||||
|
size = 35%, 8%
|
||||||
|
|
||||||
|
shadow_passes = $text-shadow-pass
|
||||||
|
shadow_boost = $text-shadow-boost
|
||||||
|
|
||||||
|
color = $shape-col1
|
||||||
|
rounding = $rounding
|
||||||
|
border_size =
|
||||||
|
border_color =
|
||||||
|
|
||||||
|
position = 0, 5%
|
||||||
|
halign = center
|
||||||
|
valign = bottom
|
||||||
|
zindex = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# PLAYER TITLE
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:1000] echo "$($scrPath/playerctl.sh --title)"
|
||||||
|
|
||||||
|
color = $fg0
|
||||||
|
font_size = 14
|
||||||
|
font_family = $font-text
|
||||||
|
|
||||||
|
position = 0, -40%
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
zindex = 5
|
||||||
|
}
|
||||||
|
|
||||||
|
# PLAYER ARTIST
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:1000] echo "$($scrPath/playerctl.sh --artist)"
|
||||||
|
|
||||||
|
color = $fg0
|
||||||
|
font_size = 11
|
||||||
|
font_family = $font-text
|
||||||
|
|
||||||
|
position = 0, -42%
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
zindex = 5
|
||||||
|
}
|
||||||
|
|
||||||
|
# PLAYER ALBUM
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:1000] echo "$($scrPath/playerctl.sh --album)"
|
||||||
|
|
||||||
|
color = $fg0
|
||||||
|
font_size = 11
|
||||||
|
font_family = $font-text0
|
||||||
|
|
||||||
|
position = 0, -44%
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
zindex = 5
|
||||||
|
}
|
||||||
|
|
||||||
|
# PLAYER STATUS SYMBOL
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:1000] echo "$($scrPath/playerctl.sh --status-symbol)"
|
||||||
|
|
||||||
|
color = $fg0
|
||||||
|
font_size = 16
|
||||||
|
font_family = $font-symbol
|
||||||
|
|
||||||
|
position = 33.5%, -38%
|
||||||
|
halign = left
|
||||||
|
valign = center
|
||||||
|
zindex = 5
|
||||||
|
}
|
||||||
|
|
||||||
|
# PLAYER STATUS
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:1000] echo "$($scrPath/playerctl.sh --status)"
|
||||||
|
|
||||||
|
color = $fg0
|
||||||
|
font_size = 10
|
||||||
|
font_family = $font-text
|
||||||
|
|
||||||
|
position = 35%, -38%
|
||||||
|
halign = left
|
||||||
|
valign = center
|
||||||
|
zindex = 5
|
||||||
|
}
|
||||||
|
|
||||||
|
# PLAYER SOURCE SYMBOL
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:1000] echo "$($scrPath/playerctl.sh --source-symbol)"
|
||||||
|
|
||||||
|
color = rgba($subtext0Alpha99)
|
||||||
|
font_size = 16
|
||||||
|
font_family = $font-symbol
|
||||||
|
|
||||||
|
position = -33.5%, -38%
|
||||||
|
halign = right
|
||||||
|
valign = center
|
||||||
|
zindex = 5
|
||||||
|
}
|
||||||
|
|
||||||
|
# PLAYER SOURCE
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:1000] echo "$($scrPath/playerctl.sh --source)"
|
||||||
|
|
||||||
|
color = rgba($subtext0Alpha99)
|
||||||
|
font_size = 10
|
||||||
|
font_family = $font-text
|
||||||
|
|
||||||
|
position = -35%, -38%
|
||||||
|
halign = right
|
||||||
|
valign = center
|
||||||
|
zindex = 5
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text =
|
||||||
|
|
||||||
|
color = $fg0
|
||||||
|
font_size = 24
|
||||||
|
font_family = $font-symbol
|
||||||
|
|
||||||
|
position = 0, 1%
|
||||||
|
halign = center
|
||||||
|
valign = bottom
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,155 @@
|
|||||||
|
source = $HOME/.config/hypr/catppuccin-hyprland/themes/mocha.conf
|
||||||
|
|
||||||
|
$accent = $mauve
|
||||||
|
$accentAlpha = $mauveAlpha
|
||||||
|
$font = JetBrainsMono Nerd Font
|
||||||
|
|
||||||
|
# GENERAL
|
||||||
|
general {
|
||||||
|
hide_cursor = true
|
||||||
|
no_fade_in = false
|
||||||
|
grace = 0
|
||||||
|
disable_loading_bar = true
|
||||||
|
}
|
||||||
|
|
||||||
|
# BACKGROUND
|
||||||
|
background {
|
||||||
|
monitor =
|
||||||
|
path = $HOME/Pictures/reze/reze.png
|
||||||
|
blur_passes = 3
|
||||||
|
blur_size = 7
|
||||||
|
noise = 0.0117
|
||||||
|
contrast = 0.8916
|
||||||
|
brightness = 0.8172
|
||||||
|
vibrancy = 0.1696
|
||||||
|
vibrancy_darkness = 0.0
|
||||||
|
color = $base
|
||||||
|
}
|
||||||
|
|
||||||
|
# TIME
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = $TIME
|
||||||
|
color = $text
|
||||||
|
font_size = 120
|
||||||
|
font_family = $font
|
||||||
|
position = 0, 300
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
}
|
||||||
|
|
||||||
|
# DATE
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:43200000] date +"%A, %d %B %Y"
|
||||||
|
color = $text
|
||||||
|
font_size = 30
|
||||||
|
font_family = $font
|
||||||
|
position = 0, 200
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
}
|
||||||
|
|
||||||
|
# USER AVATAR (Center)
|
||||||
|
image {
|
||||||
|
monitor =
|
||||||
|
path = $HOME/.face
|
||||||
|
size = 120
|
||||||
|
border_color = rgba(255, 255, 255, 0.1)
|
||||||
|
position = 0, 50
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
}
|
||||||
|
|
||||||
|
# INPUT FIELD (Center)
|
||||||
|
input-field {
|
||||||
|
monitor =
|
||||||
|
size = 300, 60
|
||||||
|
outline_thickness = 2
|
||||||
|
dots_size = 0.2
|
||||||
|
dots_spacing = 0.2
|
||||||
|
dots_center = true
|
||||||
|
outer_color = rgba(255, 255, 255, 0.1)
|
||||||
|
inner_color = rgba(0, 0, 0, 0.2)
|
||||||
|
font_color = $text
|
||||||
|
fade_on_empty = false
|
||||||
|
placeholder_text = <span foreground="##$textAlpha"><i> Logged in as </i><span foreground="##$accentAlpha">$USER</span></span>
|
||||||
|
hide_input = false
|
||||||
|
check_color = $accent
|
||||||
|
fail_color = $red
|
||||||
|
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
|
||||||
|
capslock_color = $yellow
|
||||||
|
position = 0, -60
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- MUSIC DASHBOARD (TOP RIGHT) ---
|
||||||
|
|
||||||
|
# ALBUM ART (At the very top right, 80px high, adjusted -3px for perfect alignment)
|
||||||
|
image {
|
||||||
|
monitor =
|
||||||
|
path = /tmp/hyprlock_art.png
|
||||||
|
size = 80
|
||||||
|
rounding = 15
|
||||||
|
border_color = rgba(255, 255, 255, 0.1)
|
||||||
|
reload_time = 2
|
||||||
|
reload_cmd = ~/.config/hypr/scripts/album_art.sh
|
||||||
|
position = -20, -17
|
||||||
|
halign = right
|
||||||
|
valign = top
|
||||||
|
}
|
||||||
|
|
||||||
|
# MUSIC TEXT BOX (To the left of the image, same height)
|
||||||
|
shape {
|
||||||
|
monitor =
|
||||||
|
size = 300, 80
|
||||||
|
color = rgba(0, 0, 0, 0.3)
|
||||||
|
rounding = 15
|
||||||
|
border_size = 1
|
||||||
|
border_color = rgba(255, 255, 255, 0.1)
|
||||||
|
position = -110, -20
|
||||||
|
halign = right
|
||||||
|
valign = top
|
||||||
|
}
|
||||||
|
|
||||||
|
# MUSIC TEXT (Right aligned and vertically centered inside the 80px box)
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:1000] ~/.config/hypr/scripts/songdetail.sh
|
||||||
|
color = $text
|
||||||
|
font_size = 14
|
||||||
|
font_family = $font
|
||||||
|
position = -125, -37
|
||||||
|
halign = right
|
||||||
|
valign = top
|
||||||
|
text_align = right
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- STATUS DASHBOARD (BOTTOM RIGHT) ---
|
||||||
|
|
||||||
|
# SYSTEM INFO BOX (Vertical stack container)
|
||||||
|
shape {
|
||||||
|
monitor =
|
||||||
|
size = 300, 100
|
||||||
|
color = rgba(0, 0, 0, 0.3)
|
||||||
|
rounding = 15
|
||||||
|
border_size = 1
|
||||||
|
border_color = rgba(255, 255, 255, 0.1)
|
||||||
|
position = -20, 20
|
||||||
|
halign = right
|
||||||
|
valign = bottom
|
||||||
|
}
|
||||||
|
|
||||||
|
# SYSTEM INFO TEXT (3 lines, top of each other, right aligned)
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:5000] ~/.config/hypr/scripts/status_info.sh
|
||||||
|
color = $text
|
||||||
|
font_size = 14
|
||||||
|
font_family = $font
|
||||||
|
position = -35, 35
|
||||||
|
halign = right
|
||||||
|
valign = bottom
|
||||||
|
text_align = right
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 7.0 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.6 MiB |
Executable
+33
@@ -0,0 +1,33 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Get the current battery percentage
|
||||||
|
battery_percentage=$(cat /sys/class/power_supply/BAT0/capacity)
|
||||||
|
|
||||||
|
# Get the battery status (Charging or Discharging)
|
||||||
|
battery_status=$(cat /sys/class/power_supply/BAT0/status)
|
||||||
|
|
||||||
|
# Define the battery icons for each 10% segment
|
||||||
|
battery_icons=("" "" "" "" "" "" "" "" "" "")
|
||||||
|
|
||||||
|
# Define the charging icon
|
||||||
|
charging_icon=""
|
||||||
|
|
||||||
|
# Calculate the index for the icon array
|
||||||
|
# Ensure the index is within bounds (0 to 9) for battery percentages 0 to 100
|
||||||
|
icon_index=$((battery_percentage / 10))
|
||||||
|
|
||||||
|
# If the battery is 100%, use the last icon (index 9)
|
||||||
|
if [ "$battery_percentage" -eq 100 ]; then
|
||||||
|
icon_index=9
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get the corresponding icon
|
||||||
|
battery_icon=${battery_icons[$icon_index]}
|
||||||
|
|
||||||
|
# Check if the battery is charging
|
||||||
|
if [ "$battery_status" = "Charging" ]; then
|
||||||
|
battery_icon="$charging_icon"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Output the battery percentage and icon
|
||||||
|
echo "$battery_percentage% $battery_icon"
|
||||||
Executable
+47
@@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Path to the Hyprland configuration file
|
||||||
|
config_file="$HOME/.config/hypr/hyprlock.conf"
|
||||||
|
|
||||||
|
# Read the bt-mode value from the configuration file
|
||||||
|
bt_mode=$(grep -oP '^\$bt-mode\s*=\s*\K\S+' ~/.config/hypr/hyprlock.conf)
|
||||||
|
|
||||||
|
# Get Bluetooth power status
|
||||||
|
bluetooth_status=$(bluetoothctl show | grep "Powered:" | awk '{print $2}')
|
||||||
|
|
||||||
|
# Check if Bluetooth is powered on
|
||||||
|
if [ "$bluetooth_status" != "yes" ]; then
|
||||||
|
echo " Bluetooth Off"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Initialize connected devices
|
||||||
|
connected_devices=$(echo "$connected_devices" | sed 's/[[:space:]]*$//')
|
||||||
|
|
||||||
|
# Process Bluetooth devices
|
||||||
|
while read -r line; do
|
||||||
|
echo "Processing line: $line" >&2
|
||||||
|
device_mac=$(echo "$line" | awk '{print $2}')
|
||||||
|
device_name=$(echo "$line" | cut -d' ' -f3-)
|
||||||
|
echo "Device MAC: $device_mac" >&2
|
||||||
|
echo "Device Name: $device_name" >&2
|
||||||
|
if bluetoothctl info "$device_mac" | grep -q "Connected: yes"; then
|
||||||
|
connected_devices+="$device_name "
|
||||||
|
fi
|
||||||
|
echo "Finished processing $device_mac" >&2
|
||||||
|
echo "---" >&2
|
||||||
|
done < <(bluetoothctl devices)
|
||||||
|
|
||||||
|
# If no connected devices, show "No Devices"
|
||||||
|
if [ -z "$connected_devices" ]; then
|
||||||
|
echo " No Devices"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Display output based on bt-mode
|
||||||
|
if [ "$bt_mode" = "true" ]; then
|
||||||
|
echo " $connected_devices"
|
||||||
|
else
|
||||||
|
echo " Connected"
|
||||||
|
fi
|
||||||
|
|
||||||
Executable
+22
@@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Only works if you use SWWW for your wallpapers
|
||||||
|
|
||||||
|
SWWW_DIR="$HOME/.cache/swww/"
|
||||||
|
HYPRLOCK="$HOME/.config/hypr/hyprlock.conf"
|
||||||
|
|
||||||
|
# Get a Monitor Cache File
|
||||||
|
FIRST_FILE=$(find "$SWWW_DIR" -type f | head -n 1)
|
||||||
|
|
||||||
|
# Check if SWWW file exists
|
||||||
|
if [ -n "$FIRST_FILE" ] && [ -f "$FIRST_FILE" ]; then
|
||||||
|
WALLPAPER=$(sed -n '2p' "$FIRST_FILE")
|
||||||
|
|
||||||
|
sed -i "s|^\(\$wallpaper[[:space:]]*=[[:space:]]*\).*|\1$WALLPAPER # (screenshot or /path/to/your/wallpaper.jpg)|" "$HYPRLOCK"
|
||||||
|
echo "Wallpaper path updated to $WALLPAPER"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Error
|
||||||
|
echo "Fehler: kein Wallpaper gefunden."
|
||||||
|
exit 1
|
||||||
Executable
+32
@@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Set your Username
|
||||||
|
# username="TamarindX"
|
||||||
|
|
||||||
|
# Read the username alias from hyprlock.conf
|
||||||
|
username=$(grep -oP '^\$USER\s*=\s*\K\S+' ~/.config/hypr/hyprlock.conf)
|
||||||
|
|
||||||
|
# Check if the username was successfully extracted
|
||||||
|
if [ -z "$username" ]; then
|
||||||
|
echo "Username not found in hyprlock.conf."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get the current hour
|
||||||
|
hour=$(date +%H)
|
||||||
|
|
||||||
|
# Determine the greeting based on the time
|
||||||
|
if [ "$hour" -ge 5 ] && [ "$hour" -lt 12 ]; then
|
||||||
|
greeting="Good Morning"
|
||||||
|
elif [ "$hour" -ge 12 ] && [ "$hour" -lt 17 ]; then
|
||||||
|
greeting="Good Afternoon"
|
||||||
|
elif [ "$hour" -ge 17 ] && [ "$hour" -lt 21 ]; then
|
||||||
|
greeting="Good Evening"
|
||||||
|
elif [ "$hour" -ge 21 ] && [ "$hour" -lt 24 ]; then
|
||||||
|
greeting="Good Night"
|
||||||
|
else
|
||||||
|
greeting="GO TO SLEEP!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Output the combined text
|
||||||
|
echo -e "Hello, $username! $greeting"
|
||||||
Executable
+65
@@ -0,0 +1,65 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Set this variable to control the output
|
||||||
|
# Set to "true" to show SSID, "false" to show "Connected"
|
||||||
|
# show_ssid=false
|
||||||
|
|
||||||
|
# Read the wifi-mode alias from hyprlock.conf
|
||||||
|
show_ssid=$(grep -oP '^\$wifi-mode\s*=\s*\K\S+' ~/.config/hypr/hyprlock.conf)
|
||||||
|
|
||||||
|
# Check if the SSID was successfully extracted else fallback?!
|
||||||
|
if [ -z "$show_ssid" ]; then
|
||||||
|
show_ssid=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if any Ethernet connection is active
|
||||||
|
ethernet_connected=$(nmcli -t -f DEVICE,TYPE,STATE dev | grep -E 'ethernet:connected')
|
||||||
|
|
||||||
|
# If Ethernet
|
||||||
|
if [ -n "$ethernet_connected" ]; then
|
||||||
|
echo " Ethernet"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get Wi-Fi connection status
|
||||||
|
wifi_status=$(nmcli -t -f WIFI g)
|
||||||
|
|
||||||
|
# Check if Wi-Fi is enabled
|
||||||
|
if [ "$wifi_status" != "enabled" ]; then
|
||||||
|
echo " Wi-Fi Off"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get active Wi-Fi connection details
|
||||||
|
wifi_info=$(nmcli -t -f ACTIVE,SSID,SIGNAL dev wifi | grep '^yes')
|
||||||
|
|
||||||
|
# If no active connection, show "Disconnected"
|
||||||
|
if [ -z "$wifi_info" ]; then
|
||||||
|
echo " No Wi-Fi"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Extract SSID
|
||||||
|
ssid=$(echo "$wifi_info" | cut -d':' -f2)
|
||||||
|
|
||||||
|
# Extract signal strength
|
||||||
|
signal_strength=$(echo "$wifi_info" | cut -d':' -f3)
|
||||||
|
|
||||||
|
# Define Wi-Fi icons based on signal strength
|
||||||
|
wifi_icons=("" "" "" "" "") # From low to high signal
|
||||||
|
|
||||||
|
# Clamp signal strength between 0 and 100
|
||||||
|
signal_strength=$((signal_strength < 0 ? 0 : (signal_strength > 100 ? 100 : signal_strength)))
|
||||||
|
|
||||||
|
# Calculate the icon index based on signal strength
|
||||||
|
icon_index=$((signal_strength / 25))
|
||||||
|
|
||||||
|
# Get the corresponding icon
|
||||||
|
wifi_icon=${wifi_icons[$icon_index]}
|
||||||
|
|
||||||
|
# Output based on show_ssid variable
|
||||||
|
if [ "$show_ssid" = true ]; then
|
||||||
|
echo "$wifi_icon $ssid"
|
||||||
|
else
|
||||||
|
echo "$wifi_icon Connected"
|
||||||
|
fi
|
||||||
Executable
+116
@@ -0,0 +1,116 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
echo "Usage: $0 --title | --artist | --album | --source | --source-symbol"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Function to get metadata using playerctl
|
||||||
|
get_metadata() {
|
||||||
|
key=$1
|
||||||
|
playerctl metadata --player=%any,chromium,firefox --format "{{ $key }}" 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check for arguments
|
||||||
|
|
||||||
|
# Function to determine the source and return an icon and text
|
||||||
|
get_source_info_symbol() {
|
||||||
|
trackid=$(get_metadata "mpris:trackid")
|
||||||
|
if [[ "$trackid" == *"firefox"* ]]; then
|
||||||
|
echo -e ""
|
||||||
|
elif [[ "$trackid" == *"spotify"* ]]; then
|
||||||
|
echo -e ""
|
||||||
|
elif [[ "$trackid" == *"chromium"* ]]; then
|
||||||
|
echo -e ""
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
get_source_info() {
|
||||||
|
trackid=$(get_metadata "mpris:trackid")
|
||||||
|
if [[ "$trackid" == *"firefox"* ]]; then
|
||||||
|
echo -e "Firefox"
|
||||||
|
elif [[ "$trackid" == *"spotify"* ]]; then
|
||||||
|
echo -e "Spotify"
|
||||||
|
elif [[ "$trackid" == *"chromium"* ]]; then
|
||||||
|
echo -e "Chrome"
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to truncate text with ellipsis if necessary
|
||||||
|
truncate_with_ellipsis() {
|
||||||
|
text=$1
|
||||||
|
max_length=$2
|
||||||
|
if [ ${#text} -gt $max_length ]; then
|
||||||
|
echo "${text:0:$((max_length - 3))}..."
|
||||||
|
else
|
||||||
|
echo "$text"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Parse the argument
|
||||||
|
case "$1" in
|
||||||
|
--title)
|
||||||
|
title=$(get_metadata "xesam:title")
|
||||||
|
if [ -z "$title" ]; then
|
||||||
|
echo ""
|
||||||
|
else
|
||||||
|
truncate_with_ellipsis "$title" 28 # Limit the output to 50 characters
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
--artist)
|
||||||
|
artist=$(get_metadata "xesam:artist")
|
||||||
|
if [ -z "$artist" ]; then
|
||||||
|
echo ""
|
||||||
|
else
|
||||||
|
truncate_with_ellipsis "$artist" 28 # Limit the output to 50 characters
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
--status-symbol)
|
||||||
|
status=$(playerctl status 2>/dev/null)
|
||||||
|
if [[ $status == "Playing" ]]; then
|
||||||
|
echo ""
|
||||||
|
elif [[ $status == "Paused" ]]; then
|
||||||
|
echo ""
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
--status)
|
||||||
|
status=$(playerctl status 2>/dev/null)
|
||||||
|
if [[ $status == "Playing" ]]; then
|
||||||
|
echo "Playing Now"
|
||||||
|
elif [[ $status == "Paused" ]]; then
|
||||||
|
echo "Paused"
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
--album)
|
||||||
|
album=$(playerctl metadata --player=%any,chromium,firefox --format "{{ xesam:album }}" 2>/dev/null)
|
||||||
|
if [[ -n $album ]]; then
|
||||||
|
echo "$album"
|
||||||
|
else
|
||||||
|
status=$(playerctl status 2>/dev/null)
|
||||||
|
if [[ -n $status ]]; then
|
||||||
|
echo "Not album"
|
||||||
|
else
|
||||||
|
truncate_with_ellipsis "$album" 28 # Limit the output to 50 characters
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
--source-symbol)
|
||||||
|
get_source_info_symbol
|
||||||
|
;;
|
||||||
|
--source)
|
||||||
|
get_source_info
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Invalid option: $1"
|
||||||
|
echo "Usage: $0 --title | --artist | --album | --source | --source-symbol"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
Executable
+39
@@ -0,0 +1,39 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Get location data using IP Geolocation
|
||||||
|
|
||||||
|
# Recommended with API, but you can try w/o API [IPINFO.IO]
|
||||||
|
# API_TOKEN="YOUR_API_TOKEN"
|
||||||
|
# location_data=$(curl -s "https://ipinfo.io?token=$API_TOKEN" 2>/dev/null)
|
||||||
|
# location_data=$(curl -s https://ipinfo.io 2>/dev/null) #[Limited requests. Require API to send 50k request/month]
|
||||||
|
|
||||||
|
# Extract city and country code (ISO 3166-1 alpha-2 code)
|
||||||
|
# CITY=$(echo "$location_data" | jq -r '.city // empty')
|
||||||
|
# COUNTRY=$(echo "$location_data" | jq -r '.country // empty')
|
||||||
|
|
||||||
|
# IPINFO Alternative [IP-API.COM]
|
||||||
|
location_data=$(curl -s "http://ip-api.com/json/" 2>/dev/null)
|
||||||
|
|
||||||
|
# Extract city and country code
|
||||||
|
CITY=$(echo "$location_data" | jq -r '.city // empty')
|
||||||
|
COUNTRY=$(echo "$location_data" | jq -r '.countryCode // empty')
|
||||||
|
# Visit http://ip-api.com/json/ to find other variables
|
||||||
|
|
||||||
|
# HARDCODE Location
|
||||||
|
# CITY=$(grep -oP '^\$CITY\s*=\s*\K.+' ~/.config/hypr/hyprlock.conf)
|
||||||
|
# COUNTRY=$(grep -oP '^\$COUNTRY\s*=\s*\K.+' ~/.config/hypr/hyprlock.conf)
|
||||||
|
|
||||||
|
# Check if CITY and COUNTRY are valid
|
||||||
|
if [[ -n "$CITY" && -n "$COUNTRY" ]]; then
|
||||||
|
# Fetch weather info for the detected city from wttr.in
|
||||||
|
weather_info=$(curl -s "wttr.in/$CITY?format=%c+%C+%t" 2>/dev/null)
|
||||||
|
|
||||||
|
# Check if the weather info is valid
|
||||||
|
if [[ -n "$weather_info" ]]; then
|
||||||
|
echo "$COUNTRY, $CITY: $weather_info"
|
||||||
|
else
|
||||||
|
echo "Weather info unavailable for $COUNTRY, $CITY"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Unable to determine your location"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Set paths
|
||||||
|
CONFIG_DIR="$HOME/.config/hypr"
|
||||||
|
BACKUP_DIR="$CONFIG_DIR/hyprlock-backup-$(date +%Y%m%d%H%M%S)"
|
||||||
|
REPO_URL="https://github.com/Tamarindtype/googlish-hyprlock-theme.git"
|
||||||
|
TEMP_DIR="$(mktemp -d)"
|
||||||
|
|
||||||
|
read -p "Do you want to see every command executed? [y/N]: " choice
|
||||||
|
choice=${choice,,}
|
||||||
|
|
||||||
|
if [[ "$choice" == "y" ]]; then
|
||||||
|
SHOW_COMMANDS=true
|
||||||
|
else
|
||||||
|
SHOW_COMMANDS=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
run_cmd() {
|
||||||
|
local desc="$1"
|
||||||
|
local cmd="$2"
|
||||||
|
|
||||||
|
if [[ "$SHOW_COMMANDS" == true ]]; then
|
||||||
|
echo -e "\n$desc"
|
||||||
|
echo "-> $cmd"
|
||||||
|
read -p "Run command? [Y/n]: " confirm
|
||||||
|
confirm=${confirm,,}
|
||||||
|
|
||||||
|
if [[ "$confirm" == "n" ]]; then
|
||||||
|
echo "⏭ Skipped."
|
||||||
|
else
|
||||||
|
eval "$cmd"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
eval "$cmd"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Backup existing config
|
||||||
|
if [ -d "$CONFIG_DIR/hyprlock" ] || [ -f "$CONFIG_DIR/hyprlock.conf" ]; then
|
||||||
|
read -p "Do you want to create a backup of your config? [Y/n]: " choice
|
||||||
|
choice=${choice,,}
|
||||||
|
|
||||||
|
if [[ "$choice" != "n" ]]; then
|
||||||
|
run_cmd "Creating backup folder" "mkdir -p \"$BACKUP_DIR\""
|
||||||
|
|
||||||
|
if [ -d "$CONFIG_DIR/hyprlock" ]; then
|
||||||
|
run_cmd "Backing up folder" "mv \"$CONFIG_DIR/hyprlock\" \"$BACKUP_DIR/\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "$CONFIG_DIR/hyprlock.conf" ]; then
|
||||||
|
run_cmd "Backing up file" "mv \"$CONFIG_DIR/hyprlock.conf\" \"$BACKUP_DIR/\""
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "No existing hyprlock config found. Skipping backup."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Clone the repo
|
||||||
|
run_cmd "Cloning repository..." "git clone \"$REPO_URL\" \"$TEMP_DIR\""
|
||||||
|
|
||||||
|
# Move files
|
||||||
|
run_cmd "Creating config directory" "mkdir -p \"$CONFIG_DIR\""
|
||||||
|
|
||||||
|
if [ -d "$TEMP_DIR/hyprlock" ]; then
|
||||||
|
run_cmd "Moving hyprlock folder" "mv \"$TEMP_DIR/hyprlock\" \"$CONFIG_DIR/\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "$TEMP_DIR/hyprlock.conf" ]; then
|
||||||
|
run_cmd "Moving hyprlock.conf" "mv \"$TEMP_DIR/hyprlock.conf\" \"$CONFIG_DIR/\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Make scripts executable
|
||||||
|
if [ -d "$CONFIG_DIR/hyprlock" ]; then
|
||||||
|
run_cmd "Making scripts executable..." "chmod +x \"$CONFIG_DIR/hyprlock\"/*.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Optional: Run hyprlock
|
||||||
|
run_cmd "Running Hyprlock" "hyprlock"
|
||||||
|
|
||||||
|
read -p "Do you want to install the 'hyprlock-change-wallpaper' command? [Y/n]: " choice
|
||||||
|
choice=${choice,,}
|
||||||
|
|
||||||
|
if [[ "$choice" != "n" ]]; then
|
||||||
|
run_cmd "Installing hyprlock-change-wallpaper shortcut" "sudo ln -sf $CONFIG_DIR/hyprlock/change_wallpaper.sh /usr/local/bin/hyprlock-change-wallpaper"
|
||||||
|
run_cmd "Make command runable" "chmod +x $CONFIG_DIR/hyprlock/change_wallpaper.sh"
|
||||||
|
|
||||||
|
if command -v hyprlock-change-wallpaper &>/dev/null; then
|
||||||
|
echo "hyprlock-change-wallpaper was succesfully installed"
|
||||||
|
else
|
||||||
|
echo "Error while installing hyprlock-change-wallpaper."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "⏭ installation of hyprlock-change-wallpaper skipped"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
run_cmd "Cleaning up temp files..." "rm -rf \"$TEMP_DIR\""
|
||||||
+1
-1
@@ -1 +1 @@
|
|||||||
|
monitor=eDP-1, disable
|
||||||
|
|||||||
@@ -14,4 +14,3 @@ exec-once = uwsm app -- hyprpaper
|
|||||||
# exec-once = uwsm app -- /usr/lib/xdg-desktop-portal-hyprland
|
# exec-once = uwsm app -- /usr/lib/xdg-desktop-portal-hyprland
|
||||||
exec-once = wl-paste --type text --watch cliphist store # Stores only text data
|
exec-once = wl-paste --type text --watch cliphist store # Stores only text data
|
||||||
exec-once = wl-paste --type image --watch cliphist store # Stores only image data
|
exec-once = wl-paste --type image --watch cliphist store # Stores only image data
|
||||||
exec-once = uwsm app -- ~/.cargo/bin/fluxo-rs daemon
|
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ env = XCURSOR_THEME,Bibata-Modern-Classic
|
|||||||
env = XDG_CURRENT_DESKTOP,Hyprland
|
env = XDG_CURRENT_DESKTOP,Hyprland
|
||||||
# env = debug:full_cm_proto,true
|
# env = debug:full_cm_proto,true
|
||||||
env = QT_QPA_PLATFORMTHEME,qt6ct
|
env = QT_QPA_PLATFORMTHEME,qt6ct
|
||||||
# env = LIBVA_DRIVER_NAME,radeonsi
|
env = LIBVA_DRIVER_NAME,radeonsi
|
||||||
# env = VDPAU_DRIVER,radeonsi
|
env = VDPAU_DRIVER,radeonsi
|
||||||
env = MOZ_ENABLE_WAYLAND,1
|
env = MOZ_ENABLE_WAYLAND,1
|
||||||
env = ELECTRON_OZONE_PLATFORM_HINT,wayland
|
env = ELECTRON_OZONE_PLATFORM_HINT,wayland
|
||||||
env = EDITOR,nvim
|
env = EDITOR,nvim
|
||||||
|
|||||||
@@ -6,11 +6,13 @@ bindl=,switch:off:Lid Switch,exec,~/.config/hypr/scripts/lid_handler.sh open
|
|||||||
|
|
||||||
bindr = ALT, m, exec, cliphist list | fuzzel --dmenu | cliphist decode | wl-copy
|
bindr = ALT, m, exec, cliphist list | fuzzel --dmenu | cliphist decode | wl-copy
|
||||||
bind = , PRINT, exec, grim -g "$(slurp)" - | wl-copy
|
bind = , PRINT, exec, grim -g "$(slurp)" - | wl-copy
|
||||||
|
bind = SHIFT, PRINT, exec, grim -g "$(slurp)" ~/Pictures/Screenshots/$(date +'%Y-%m-%d_%H-%M-%S').png
|
||||||
bindr = ALT SHIFT, z, exec, ~/.config/hypr/scripts/replay-ctrl.sh save
|
bindr = ALT SHIFT, z, exec, ~/.config/hypr/scripts/replay-ctrl.sh save
|
||||||
bindr = ALT, z, exec, ~/.config/hypr/scripts/replay-ctrl.sh toggle
|
bindr = ALT, z, exec, ~/.config/hypr/scripts/replay-ctrl.sh toggle
|
||||||
bindr = ALT SHIFT, c, exec, ~/.config/hypr/scripts/droidcam-ctrl.sh toggle
|
bindr = ALT SHIFT, c, exec, ~/.config/hypr/scripts/droidcam-ctrl.sh toggle
|
||||||
|
|
||||||
# general binds
|
# general binds
|
||||||
|
bind = $mainMod, B, exec, fluxo bt menu
|
||||||
bind = $mainMod, RETURN, exec, $terminal
|
bind = $mainMod, RETURN, exec, $terminal
|
||||||
bind = $mainMod SHIFT, Q, killactive,
|
bind = $mainMod SHIFT, Q, killactive,
|
||||||
bind = $mainMod CTRL, L, exec, hyprlock
|
bind = $mainMod CTRL, L, exec, hyprlock
|
||||||
@@ -77,12 +79,12 @@ bindm = $mainMod, mouse:272, movewindow
|
|||||||
bindm = $mainMod, mouse:273, resizewindow
|
bindm = $mainMod, mouse:273, resizewindow
|
||||||
|
|
||||||
# Laptop multimedia keys for volume and LCD brightness
|
# Laptop multimedia keys for volume and LCD brightness
|
||||||
bindel = ,XF86AudioRaiseVolume, exec, fluxo-rs vol up 5
|
bindel = ,XF86AudioRaiseVolume, exec, fluxo vol up 5
|
||||||
bindel = ,XF86AudioLowerVolume, exec, fluxo-rs vol down 5
|
bindel = ,XF86AudioLowerVolume, exec, fluxo vol down 5
|
||||||
bindel = ,XF86AudioMute, exec, fluxo-rs vol mute
|
bindel = ,XF86AudioMute, exec, fluxo vol mute
|
||||||
bindel = ,XF86AudioMicMute, exec, fluxo-rs mic mute
|
bindel = ,XF86AudioMicMute, exec, fluxo mic mute
|
||||||
bindel = ,XF86MonBrightnessUp, exec, brightnessctl set 5%+
|
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s +10%
|
||||||
bindel = ,XF86MonBrightnessDown, exec, brightnessctl set 5%-
|
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
|
||||||
|
|
||||||
# Requires playerctl
|
# Requires playerctl
|
||||||
bindl = , XF86AudioNext, exec, playerctl next
|
bindl = , XF86AudioNext, exec, playerctl next
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
monitor = eDP-1, 1920x1080@60, 0x0, 1
|
monitor = eDP-1, 1920x1080@60, 0x0, 1
|
||||||
# samsung home monitor
|
# samsung home monitor
|
||||||
monitor = desc:Samsung Electric Company LC27G7xT H4ZRA00734, 2560x1440@144, 0x-1440, 1
|
monitor = desc:Samsung Electric Company LC27G7xT H4ZRA00734, 2560x1440@144, 0x-1440, 1
|
||||||
|
# monitor = desc:Samsung Electric Company LC27G7xT H4ZRA00734, 1920x1080@144, 0x-1080, 1
|
||||||
|
# monitor = desc:Samsung Electric Company LC27G7xT H4ZRA00734, 2560x1440@60, 0x-1440, 1
|
||||||
|
|
||||||
|
|
||||||
# lid_state fallback
|
# lid_state fallback
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
# VARIABLES
|
# VARIABLES
|
||||||
# ==========================================
|
# ==========================================
|
||||||
# Dialogs and utility apps that should float in the center
|
# Dialogs and utility apps that should float in the center
|
||||||
$dialog_titles = ^(Open Form|Open File|Select a File|Choose a file|Open Workspace|Choose Directory|Save As|Save File|branchdialog|pinentry-gtk-2|Confirm to replace files|File Operation Progress|Open Files|Anmelden – Google Konten — Zen Browser)$
|
$dialog_titles = ^(Open Form|Open File|Select a File|Choose a file|Open Workspace|Choose Directory.*|Save As.*|Save File.*|branchdialog|pinentry-gtk-2|Confirm to replace files|File Operation Progress|Open Files.*|Anmelden.*|File Upload.*|TRuDI-Export laden)$
|
||||||
$dialog_classes = ^(pavucontrol|blueman-manager|nm-connection-editor|org.pulseaudio.pavucontrol)$
|
$dialog_classes = ^(pavucontrol|blueman-manager|nm-connection-editor|org.pulseaudio.pavucontrol)$
|
||||||
|
|
||||||
# App classes
|
# App classes
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoff
|
|||||||
x-scheme-handler/ror2mm=r2modman.desktop
|
x-scheme-handler/ror2mm=r2modman.desktop
|
||||||
image/webp=feh.desktop
|
image/webp=feh.desktop
|
||||||
x-scheme-handler/claude-cli=claude-code-url-handler.desktop
|
x-scheme-handler/claude-cli=claude-code-url-handler.desktop
|
||||||
|
x-scheme-handler/msteams=teams-for-linux.desktop
|
||||||
|
|
||||||
[Added Associations]
|
[Added Associations]
|
||||||
application/pdf=org.pwmt.zathura-pdf-poppler.desktop;
|
application/pdf=org.pwmt.zathura-pdf-poppler.desktop;
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Fluxo — high-performance Waybar module daemon
|
||||||
|
Documentation=https://github.com/narl/fluxo-rs
|
||||||
|
PartOf=graphical-session.target
|
||||||
|
After=graphical-session.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=%h/.cargo/bin/fluxo daemon
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=3
|
||||||
|
|
||||||
|
# Ensure the daemon can reach the user's D-Bus session and Wayland/Hyprland sockets.
|
||||||
|
Slice=app-graphical.slice
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=graphical-session.target
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
/home/narl/.config/systemd/user/fluxo.service
|
||||||
+67
-55
@@ -11,16 +11,13 @@
|
|||||||
"margin-right": 10,
|
"margin-right": 10,
|
||||||
|
|
||||||
"modules-left": [
|
"modules-left": [
|
||||||
"hyprland/workspaces",
|
"group/spaces"
|
||||||
"hyprland/window"
|
|
||||||
],
|
],
|
||||||
"modules-center": [
|
"modules-center": [
|
||||||
"group/center"
|
"group/center"
|
||||||
],
|
],
|
||||||
"modules-right": [
|
"modules-right": [
|
||||||
"tray",
|
"group/powertray"
|
||||||
"custom/gamemode",
|
|
||||||
"custom/power_status"
|
|
||||||
],
|
],
|
||||||
|
|
||||||
// --- Standard Modules ---
|
// --- Standard Modules ---
|
||||||
@@ -39,28 +36,49 @@
|
|||||||
"custom/mpris": {
|
"custom/mpris": {
|
||||||
"format": "{}",
|
"format": "{}",
|
||||||
"return-type": "json",
|
"return-type": "json",
|
||||||
"exec": "fluxo-rs mpris",
|
"exec": "fluxo mpris",
|
||||||
"on-click": "playerctl play-pause",
|
"on-click": "playerctl play-pause",
|
||||||
"signal": 11,
|
"signal": 11
|
||||||
"interval": 0
|
|
||||||
},
|
},
|
||||||
"tray": {
|
"tray": {
|
||||||
"icon-size": 18,
|
"icon-size": 18,
|
||||||
"spacing": 10
|
"spacing": 10
|
||||||
},
|
},
|
||||||
|
"custom/dnd": {
|
||||||
|
"format": "{}",
|
||||||
|
"return-type": "json",
|
||||||
|
"exec": "fluxo dnd",
|
||||||
|
"on-click": "dunstctl set-paused toggle",
|
||||||
|
"signal": 13,
|
||||||
|
"interval": 5
|
||||||
|
},
|
||||||
|
"group/spaces": {
|
||||||
|
"orientation": "horizontal",
|
||||||
|
"modules": [
|
||||||
|
"hyprland/workspaces",
|
||||||
|
"hyprland/window"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"group/powertray": {
|
||||||
|
"orientation": "horizontal",
|
||||||
|
"modules": [
|
||||||
|
"custom/dnd",
|
||||||
|
"tray",
|
||||||
|
"custom/gamemode",
|
||||||
|
"custom/power_status"
|
||||||
|
]
|
||||||
|
},
|
||||||
"group/center": {
|
"group/center": {
|
||||||
"orientation": "horizontal",
|
"orientation": "horizontal",
|
||||||
"modules": [
|
"modules": [
|
||||||
"custom/mpris",
|
"custom/mpris",
|
||||||
"clock"
|
"clock"
|
||||||
// "custom/dnd"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"custom/gamemode": {
|
"custom/gamemode": {
|
||||||
"format": "{}",
|
"format": "{}",
|
||||||
"return-type": "json",
|
"return-type": "json",
|
||||||
"exec": "fluxo-rs game",
|
"exec": "fluxo game",
|
||||||
"on-click": "~/.config/hypr/scripts/gamemode.sh",
|
"on-click": "~/.config/hypr/scripts/gamemode.sh",
|
||||||
"signal": 7,
|
"signal": 7,
|
||||||
"interval": 5
|
"interval": 5
|
||||||
@@ -69,7 +87,7 @@
|
|||||||
"custom/power_status": {
|
"custom/power_status": {
|
||||||
"format": "{} ",
|
"format": "{} ",
|
||||||
"return-type": "json",
|
"return-type": "json",
|
||||||
"exec": "fluxo-rs power",
|
"exec": "fluxo power",
|
||||||
"on-click": "~/.config/hypr/scripts/powermenu.sh & disown",
|
"on-click": "~/.config/hypr/scripts/powermenu.sh & disown",
|
||||||
"signal": 10,
|
"signal": 10,
|
||||||
"interval": 5
|
"interval": 5
|
||||||
@@ -95,7 +113,8 @@
|
|||||||
"custom/cpu",
|
"custom/cpu",
|
||||||
"custom/mem",
|
"custom/mem",
|
||||||
"custom/disk-root",
|
"custom/disk-root",
|
||||||
"custom/network"
|
"custom/network",
|
||||||
|
"custom/backlight"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"modules-center": [
|
"modules-center": [
|
||||||
@@ -106,94 +125,87 @@
|
|||||||
"custom/mic"
|
"custom/mic"
|
||||||
],
|
],
|
||||||
|
|
||||||
// --- Fluxo-rs System & Hardware ---
|
// --- fluxo System & Hardware ---
|
||||||
"custom/sys": {
|
"custom/sys": {
|
||||||
"format": "{}",
|
"format": "{}",
|
||||||
"return-type": "json",
|
"return-type": "json",
|
||||||
"exec": "fluxo-rs sys",
|
"exec": "fluxo sys",
|
||||||
"signal": 5,
|
"signal": 5,
|
||||||
"interval": 1
|
"interval": 5
|
||||||
},
|
},
|
||||||
"custom/cpu": {
|
"custom/cpu": {
|
||||||
"format": "{}",
|
"format": "{}",
|
||||||
"return-type": "json",
|
"return-type": "json",
|
||||||
"exec": "fluxo-rs cpu",
|
"exec": "fluxo cpu",
|
||||||
"on-click": "zenmonitor & disown",
|
"on-click": "zenmonitor & disown",
|
||||||
"signal": 2,
|
"signal": 2
|
||||||
"interval": 1
|
|
||||||
},
|
},
|
||||||
"custom/mem": {
|
"custom/mem": {
|
||||||
"format": "{}",
|
"format": "{}",
|
||||||
"return-type": "json",
|
"return-type": "json",
|
||||||
"exec": "fluxo-rs mem",
|
"exec": "fluxo mem",
|
||||||
"signal": 3,
|
"signal": 3
|
||||||
"interval": 1
|
|
||||||
},
|
},
|
||||||
"custom/gpu": {
|
"custom/gpu": {
|
||||||
"format": "{}",
|
"format": "{}",
|
||||||
"return-type": "json",
|
"return-type": "json",
|
||||||
"exec": "fluxo-rs gpu",
|
"exec": "fluxo gpu",
|
||||||
"signal": 4,
|
"signal": 4
|
||||||
"interval": 1
|
|
||||||
},
|
},
|
||||||
"custom/network": {
|
"custom/network": {
|
||||||
"format": "{}",
|
"format": "{}",
|
||||||
"return-type": "json",
|
"return-type": "json",
|
||||||
"exec": "fluxo-rs net",
|
"exec": "fluxo net",
|
||||||
"signal": 1,
|
"signal": 1
|
||||||
"interval": 1
|
|
||||||
},
|
},
|
||||||
|
|
||||||
"custom/disk-root": {
|
"custom/disk-root": {
|
||||||
"format": "{}",
|
"format": "{}",
|
||||||
"return-type": "json",
|
"return-type": "json",
|
||||||
"exec": "fluxo-rs disk /",
|
"exec": "fluxo disk /",
|
||||||
"signal": 6,
|
"signal": 6
|
||||||
"interval": 1
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// --- Fluxo-rs Audio & BT ---
|
// --- fluxo Audio & BT ---
|
||||||
"custom/volume": {
|
"custom/volume": {
|
||||||
"format": "{}",
|
"format": "{}",
|
||||||
"return-type": "json",
|
"return-type": "json",
|
||||||
"exec": "fluxo-rs vol",
|
"exec": "fluxo vol",
|
||||||
"on-click": "fluxo-rs vol mute",
|
"on-click": "fluxo vol mute",
|
||||||
"on-scroll-up": "fluxo-rs vol up 5",
|
"on-scroll-up": "fluxo vol up 5",
|
||||||
"on-scroll-down": "fluxo-rs vol down 5",
|
"on-scroll-down": "fluxo vol down 5",
|
||||||
"on-click-right": "fluxo-rs vol cycle",
|
"on-click-right": "fluxo vol cycle",
|
||||||
"on-click-middle": "pavucontrol",
|
"on-click-middle": "pavucontrol",
|
||||||
"signal": 8,
|
"signal": 8
|
||||||
"interval": 1
|
|
||||||
},
|
},
|
||||||
"custom/mic": {
|
"custom/mic": {
|
||||||
"format": "{}",
|
"format": "{}",
|
||||||
"return-type": "json",
|
"return-type": "json",
|
||||||
"exec": "fluxo-rs mic",
|
"exec": "fluxo mic",
|
||||||
"on-click": "fluxo-rs mic mute",
|
"on-click": "fluxo mic mute",
|
||||||
"on-scroll-up": "fluxo-rs mic up 5",
|
"on-scroll-up": "fluxo mic up 5",
|
||||||
"on-scroll-down": "fluxo-rs mic down 5",
|
"on-scroll-down": "fluxo mic down 5",
|
||||||
"on-click-right": "fluxo-rs mic cycle",
|
"on-click-right": "fluxo mic cycle",
|
||||||
"on-click-middle": "pavucontrol",
|
"on-click-middle": "pavucontrol",
|
||||||
"signal": 8,
|
"signal": 8
|
||||||
"interval": 1
|
|
||||||
},
|
},
|
||||||
"custom/bluetooth-audio": {
|
"custom/bluetooth-audio": {
|
||||||
"format": "{}",
|
"format": "{}",
|
||||||
"return-type": "json",
|
"return-type": "json",
|
||||||
"exec": "fluxo-rs bt",
|
"exec": "fluxo bt",
|
||||||
"on-click": "fluxo-rs bt menu",
|
"on-click": "fluxo bt menu",
|
||||||
"on-click-right": "fluxo-rs bt cycle_mode",
|
"on-click-right": "fluxo bt cycle",
|
||||||
|
"on-click-middle": "fluxo bt cycle_mode",
|
||||||
"signal": 9,
|
"signal": 9,
|
||||||
"interval": 1,
|
|
||||||
"tooltip": true
|
"tooltip": true
|
||||||
},
|
},
|
||||||
"custom/dnd": {
|
"custom/backlight": {
|
||||||
"format": "{}",
|
"format": "{}",
|
||||||
"return-type": "json",
|
"return-type": "json",
|
||||||
"exec": "fluxo-rs dnd",
|
"exec": "fluxo backlight",
|
||||||
"on-click": "fluxo-rs dnd toggle",
|
"on-scroll-up": "brightnessctl s +10%",
|
||||||
"signal": 14,
|
"on-scroll-down": "brightnessctl s 10%-",
|
||||||
"interval": 0
|
"signal": 12
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
+137
-144
@@ -1,55 +1,107 @@
|
|||||||
/* ~/.config/waybar/style.css */
|
/* ~/.config/waybar/style.css */
|
||||||
@import "./catppuccin-waybar/themes/mocha.css";
|
@import "./catppuccin-waybar/themes/mocha.css";
|
||||||
|
|
||||||
/* --- Global Reset --- */
|
/* ==========================================================================
|
||||||
|
Global Reset & Bar
|
||||||
|
========================================================================== */
|
||||||
* {
|
* {
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 12px;
|
border-radius: 12px;
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
font-family: JetBrainsMono Nerd Font, sans-serif;
|
font-family: "JetBrainsMono Nerd Font", sans-serif;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
|
transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --- Bar Background (Floating Island Style) --- */
|
|
||||||
window#waybar {
|
window#waybar {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
color: @text;
|
color: @text;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --- Top Bar Special Handling --- */
|
/* ==========================================================================
|
||||||
window#waybar.top {
|
Base Islands (Containers)
|
||||||
margin-top: 6px;
|
========================================================================== */
|
||||||
}
|
/* Groups and standalone modules receive the floating island styling */
|
||||||
|
#spaces,
|
||||||
/* --- Bottom Bar Special Handling --- */
|
#powertray,
|
||||||
window#waybar.bottom {
|
|
||||||
margin-bottom: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* --- Shared Island Styling --- */
|
|
||||||
#workspaces,
|
|
||||||
#window,
|
|
||||||
#tray,
|
|
||||||
#hardware,
|
#hardware,
|
||||||
|
#center,
|
||||||
#custom-bluetooth-audio,
|
#custom-bluetooth-audio,
|
||||||
#custom-volume,
|
#custom-volume,
|
||||||
#custom-buds,
|
#custom-buds,
|
||||||
#custom-mic,
|
#custom-mic {
|
||||||
#custom-dnd,
|
|
||||||
#custom-gamemode,
|
|
||||||
#custom-power_status {
|
|
||||||
background-color: alpha(@surface0, 0.8);
|
background-color: alpha(@surface0, 0.8);
|
||||||
margin: 4px 6px;
|
margin: 4px 6px;
|
||||||
padding: 4px 16px;
|
padding: 4px 16px;
|
||||||
border: 1px solid alpha(@surface1, 0.5);
|
border: 1px solid alpha(@surface1, 0.5);
|
||||||
box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15);
|
box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15);
|
||||||
color: @text; /* Unifies all standard text to the soft Catppuccin white */
|
color: @text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Group-specific sizing overrides */
|
||||||
|
#hardware,
|
||||||
|
#powertray,
|
||||||
|
#spaces {
|
||||||
|
border-radius: 24px;
|
||||||
|
padding: 4px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Center Pill (Clock + MPRIS) Override */
|
||||||
|
#center {
|
||||||
|
background: linear-gradient(45deg, @mauve, @lavender);
|
||||||
|
color: @surface0;
|
||||||
|
font-weight: 900;
|
||||||
|
padding: 4px 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
Grouped Modules (Inner Items)
|
||||||
|
========================================================================== */
|
||||||
|
/* Strip backgrounds and borders from items that live inside groups */
|
||||||
|
#workspaces,
|
||||||
|
#window,
|
||||||
|
#custom-cpu,
|
||||||
|
#custom-mem,
|
||||||
|
#custom-sys,
|
||||||
|
#custom-gpu,
|
||||||
|
#custom-disk-root,
|
||||||
|
#custom-mpris,
|
||||||
|
#custom-network,
|
||||||
|
#custom-backlight,
|
||||||
|
#clock,
|
||||||
|
#tray,
|
||||||
|
#custom-gamemode,
|
||||||
|
#custom-dnd,
|
||||||
|
#custom-power_status {
|
||||||
|
background-color: transparent;
|
||||||
|
border: none;
|
||||||
|
box-shadow: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Subtle vertical separator line between inner items */
|
||||||
|
#custom-cpu,
|
||||||
|
#custom-mem,
|
||||||
|
#custom-sys,
|
||||||
|
#custom-gpu,
|
||||||
|
#custom-disk-root,
|
||||||
|
#custom-mpris,
|
||||||
|
#custom-network,
|
||||||
|
#tray,
|
||||||
|
#custom-gamemode,
|
||||||
|
#custom-dnd {
|
||||||
|
border-right: 1px solid alpha(@surface1, 0.5);
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ==========================================================================
|
||||||
|
Specific Module Overrides & Alerts
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
/* --- Workspaces --- */
|
/* --- Workspaces --- */
|
||||||
#workspaces {
|
#workspaces {
|
||||||
padding: 2px 8px;
|
padding: 0px 8px; /* Override the inner item padding */
|
||||||
}
|
}
|
||||||
|
|
||||||
#workspaces button {
|
#workspaces button {
|
||||||
@@ -57,19 +109,17 @@ window#waybar.bottom {
|
|||||||
margin: 4px;
|
margin: 4px;
|
||||||
min-width: 12px;
|
min-width: 12px;
|
||||||
min-height: 12px;
|
min-height: 12px;
|
||||||
background-color: @subtext0; /* Subtle dark gray for inactive */
|
background-color: @subtext0;
|
||||||
color: transparent;
|
color: transparent;
|
||||||
border-radius: 12px;
|
border-radius: 12px;
|
||||||
transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#workspaces button.active {
|
#workspaces button.active,
|
||||||
|
#workspaces button.active:hover {
|
||||||
min-width: 30px;
|
min-width: 30px;
|
||||||
background-color: @mauve; /* Signature Catppuccin accent */
|
background-color: @mauve;
|
||||||
}
|
}
|
||||||
|
|
||||||
#workspaces button.active:hover { min-width: 30px; background-color: @mauve; }
|
|
||||||
|
|
||||||
#workspaces button:hover {
|
#workspaces button:hover {
|
||||||
background-color: @lavender;
|
background-color: @lavender;
|
||||||
min-width: 20px;
|
min-width: 20px;
|
||||||
@@ -79,139 +129,76 @@ window#waybar.bottom {
|
|||||||
background-color: @red;
|
background-color: @red;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --- Clock (Centered Pill) --- */
|
/* --- Hardware Semantic Alerts --- */
|
||||||
#center {
|
.normal { color: @mauve; }
|
||||||
background: linear-gradient(45deg, @mauve, @lavender); /* Cohesive pastel gradient */
|
.high { color: @peach; }
|
||||||
color: @surface0;
|
.max { color: @red; }
|
||||||
font-weight: 900;
|
|
||||||
margin: 4px 6px;
|
#custom-network { color: @mauve; }
|
||||||
padding: 4px 20px;
|
#custom-gamemode.active { color: @mauve; }
|
||||||
border-radius: 12px;
|
|
||||||
box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15);
|
/* --- Media / Controls --- */
|
||||||
|
#custom-volume.unmuted,
|
||||||
|
#custom-mic.unmuted {
|
||||||
|
color: @mauve;
|
||||||
|
}
|
||||||
|
#custom-volume.muted,
|
||||||
|
#custom-mic.muted {
|
||||||
|
color: @overlay1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Bluetooth Audio --- */
|
||||||
|
#custom-bluetooth-audio.disabled,
|
||||||
|
#custom-bluetooth-audio.disconnected {
|
||||||
|
color: @overlay1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-bluetooth-audio.connected {
|
||||||
|
color: @blue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ANC States */
|
||||||
|
#custom-bluetooth-audio.anc-active,
|
||||||
|
#custom-bluetooth-audio.connected.anc-active,
|
||||||
|
#custom-bluetooth-audio.connected\ anc-active {
|
||||||
|
color: @mauve;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-bluetooth-audio.anc-aware,
|
||||||
|
#custom-bluetooth-audio.connected.anc-aware,
|
||||||
|
#custom-bluetooth-audio.connected\ anc-aware {
|
||||||
|
color: @green;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-bluetooth-audio.anc-off,
|
||||||
|
#custom-bluetooth-audio.connected.anc-off,
|
||||||
|
#custom-bluetooth-audio.connected\ anc-off {
|
||||||
|
color: @blue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --- Power Status --- */
|
/* --- Power Status --- */
|
||||||
#custom-power_status {
|
#custom-power_status.charging { color: @green; }
|
||||||
font-weight: bold;
|
#custom-power_status.warning { color: @peach; }
|
||||||
}
|
|
||||||
#custom-power_status.charging {
|
|
||||||
color: @green;
|
|
||||||
}
|
|
||||||
#custom-power_status.warning {
|
|
||||||
color: @peach;
|
|
||||||
}
|
|
||||||
#custom-power_status.critical {
|
#custom-power_status.critical {
|
||||||
color: @red;
|
color: @red;
|
||||||
animation: blink 1s infinite alternate;
|
animation: blink 1s infinite alternate;
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes blink {
|
|
||||||
to {
|
|
||||||
color: @base;
|
|
||||||
background-color: @red;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* --- Hardware Group (Left Bottom) --- */
|
/* Interactive Hover States for Standalone Modules */
|
||||||
#hardware {
|
|
||||||
border-radius: 24px;
|
|
||||||
padding: 4px 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Strip backgrounds and borders from the items inside the group */
|
|
||||||
#custom-cpu,
|
|
||||||
#custom-mem,
|
|
||||||
#custom-network
|
|
||||||
#custom-sys,
|
|
||||||
#custom-gpu,
|
|
||||||
#custom-disk-root,
|
|
||||||
#custom-mpris,
|
|
||||||
#clock,
|
|
||||||
#custom-dnd {
|
|
||||||
background-color: transparent;
|
|
||||||
border: none;
|
|
||||||
box-shadow: none;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Subtle vertical separator line between them */
|
|
||||||
#custom-cpu,
|
|
||||||
#custom-mem,
|
|
||||||
#custom-sys,
|
|
||||||
#custom-gpu,
|
|
||||||
#custom-disk-root,
|
|
||||||
#custom-mpris
|
|
||||||
/* #clock */ {
|
|
||||||
border-right: 1px solid alpha(@surface1, 0.5);
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-network {
|
|
||||||
padding-left: 8px;
|
|
||||||
color: @mauve;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hardware Semantic Alerts */
|
|
||||||
.normal { color: @mauve; }
|
|
||||||
.high { color: @peach; }
|
|
||||||
.max { color: @red; }
|
|
||||||
|
|
||||||
/* Stale Data Warning (Module in backoff/failure state) */
|
|
||||||
/* .warning {
|
|
||||||
color: @peach;
|
|
||||||
opacity: 0.6;
|
|
||||||
} */
|
|
||||||
|
|
||||||
/* --- Center Bottom Utilities --- */
|
|
||||||
#custom-gamemode.active {
|
|
||||||
color: @mauve; /* Matches the workspace accent */
|
|
||||||
/* padding-left: 9px; */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* --- Right Bottom Controls Semantic Alerts --- */
|
|
||||||
#custom-volume.muted,
|
|
||||||
#custom-mic.muted {
|
|
||||||
color: @overlay1; /* Dims when muted */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#custom-bluetooth-audio.disabled {
|
|
||||||
color: @overlay1; /* Green for active ANC */
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-bluetooth-audio.connected {
|
|
||||||
color: @blue; /* Green for active ANC */
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-bluetooth-audio.anc-off {
|
|
||||||
color: @blue; /* Green for active ANC */
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-bluetooth-audio.anc-active {
|
|
||||||
color: @blue; /* Green for active ANC */
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-bluetooth-audio.anc-aware {
|
|
||||||
color: @blue; /* Yellow for transparency mode */
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-bluetooth-audio.disconnected {
|
|
||||||
color: @text; /* Gray when off */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* --- Hover States --- */
|
|
||||||
#custom-volume:hover,
|
#custom-volume:hover,
|
||||||
#custom-buds:hover,
|
#custom-buds:hover,
|
||||||
#custom-mic:hover,
|
#custom-mic:hover,
|
||||||
#custom-bluetooth-audio:hover,
|
#custom-bluetooth-audio:hover,
|
||||||
#custom-power_status:hover {
|
#custom-power_status:hover {
|
||||||
background-color: @surface1;
|
background-color: @surface1;
|
||||||
color: @mauve; /* Subtle accent color on hover instead of jarring borders */
|
color: @mauve;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* --- Tooltip --- */
|
/* ==========================================================================
|
||||||
|
Tooltips & Animations
|
||||||
|
========================================================================== */
|
||||||
tooltip {
|
tooltip {
|
||||||
background-color: alpha(@base, 0.9);
|
background-color: alpha(@base, 0.9);
|
||||||
border: 1px solid @surface1;
|
border: 1px solid @surface1;
|
||||||
@@ -223,3 +210,9 @@ tooltip label {
|
|||||||
padding: 8px;
|
padding: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@keyframes blink {
|
||||||
|
to {
|
||||||
|
color: @base;
|
||||||
|
background-color: @red;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user