diff --git a/.gitignore b/.gitignore index 56fe045..aab53d0 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ !systemd/ fish/fish_variables waybar/fluxo-rs +!fluxo/ diff --git a/fluxo/config.toml b/fluxo/config.toml new file mode 100644 index 0000000..77b985d --- /dev/null +++ b/fluxo/config.toml @@ -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 = " {icon} {name} {volume:>3}%" +format_sink_muted = " {icon} {name}" +format_source_unmuted = "{icon} {name} {volume:>3}%" +format_source_muted = "{icon} {name}" + +[bt] +format_plugin = "󰂰 {alias} [{left}|{right}] {anc}" +format_connected = "󰂰 {alias}" +format_disconnected = "󰂯 Disconnected" +format_disabled = "󰂲 Off" + +[game] +format_active = "󰊖" +format_inactive = "" + +[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 = "󰂛" +format_normal = "󰂚" diff --git a/hypr/README.md b/hypr/README.md new file mode 100644 index 0000000..69bfa93 --- /dev/null +++ b/hypr/README.md @@ -0,0 +1,83 @@ +
+

✦ Google-ish Hyprlock Theme ✦

+

+
+ +## ▶️ Preview +
+ Without Profile & User Info + Hyprlock-Without-Profile +
+
+ With Profile & User Info + Hyprlock-With-Profile +
+
+ With Profile & User Info [12H Format] + Hyprlock-With-Profile +
+ +## 📦 Installation +>❗ This configuration is based on a 1080p display, if you are using a higher screen resolution,
you may need to reconfigure the sizes and recoordinate all the components.
+ +Auto-Installation : +```bash +sh -c "$(curl -fsSL https://raw.githubusercontent.com/Tamarindtype/googlish-hyprlock-theme/main/install.sh)" +``` +
Manual Installation : +```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/)| \ No newline at end of file diff --git a/hypr/hyprlock.conf b/hypr/hyprlock.conf index 8f3f25f..c2e66f8 100644 --- a/hypr/hyprlock.conf +++ b/hypr/hyprlock.conf @@ -1,155 +1,538 @@ -source = $HOME/.config/hypr/catppuccin-hyprland/themes/mocha.conf +# For more information visit https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/ + +$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(0, 0, 0, 0.5) +$border-color = rgba(255, 255, 255, 0.15) + +# Colors +$clock-color = rgba(255, 255, 255, 1) +$fg0 = rgba(255, 255, 255, 1) +$fg1 = rgba(0, 0, 0, 1) +$shape-col0 = rgba(255, 255, 255, 1) +$shape-col1 = rgba(0, 0, 0, 0.25) +$shape-col2 = rgba(255, 255, 255, 0.25) +$shadow-pass = 2 +$shadow-size = 3 +$shadow-color = rgb(0,0,0) +$shadow-boost = 1.2 +$text-shadow-pass = 1 +$text-shadow-boost = 0.5 + -$accent = $mauve -$accentAlpha = $mauveAlpha -$font = JetBrainsMono Nerd Font # GENERAL general { - hide_cursor = true - no_fade_in = false - grace = 0 - disable_loading_bar = true + no_fade_in = true + grace = 1 + disable_loading_bar = false + hide_cursor = true + ignore_empty_input = true + text_trim = true } -# BACKGROUND +#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 + monitor = + path = $wallpaper + + blur_passes = $blur + contrast = 0.8916 + brightness = 0.7172 + vibrancy = 0.1696 + vibrancy_darkness = 0 } -# 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 + rotate = 0 # degrees, counter-clockwise + + position = 20, -20 + halign = left + valign = top + zindex = 1 +} + +# USER INFO label { - monitor = - text = $TIME - color = $text - font_size = 120 - font_family = $font - position = 0, 300 - halign = center - valign = center + monitor = + text = cmd[update:1000] echo -e "$USER\n󰁥 $($host)\n\n$(uname -r)\nPackages: $(pacman -Q | wc -l) pacman" + + shadow_passes = 1 + shadow_boost = 0.5 + + color = $fg0 + 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 = 󰢏 $USER + hide_input = false + + 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 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 + monitor = + 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)"' + + shadow_passes = $text-shadow-pass + shadow_boost = $text-shadow-boost + + color = $fg0 + font_size = 14 + font_family = $font-text + + position = 0, -115 + 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 = 󰌾 Logged in as $USER - hide_input = false - check_color = $accent - fail_color = $red - fail_text = $FAIL ($ATTEMPTS) - 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) +# BATTERY 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 + monitor = + text = cmd[update:1000] echo -e "$($scrPath/battery.sh)" + + color = $fg1 + font_size = 12 + font_family = $font-text + + position = -37, 29 + halign = right + valign = bottom + zindex = 5 } -# --- 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) +# NETWORK 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 + monitor = + text = cmd[update:1000] echo -e "$($scrPath/network.sh)" + + color = $fg1 + font_size = 12 + font_family = $font-text + + position = 37, 29 + 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(255, 255, 255, 0.6) + 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(255, 255, 255, 0.6) + 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 +} + + diff --git a/hypr/hyprlock.conf.bak b/hypr/hyprlock.conf.bak new file mode 100644 index 0000000..8f3f25f --- /dev/null +++ b/hypr/hyprlock.conf.bak @@ -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 = 󰌾 Logged in as $USER + hide_input = false + check_color = $accent + fail_color = $red + fail_text = $FAIL ($ATTEMPTS) + 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 +} diff --git a/hypr/hyprlock/assets/profile-[1:1-500px].png b/hypr/hyprlock/assets/profile-[1:1-500px].png new file mode 100644 index 0000000..1de98e7 Binary files /dev/null and b/hypr/hyprlock/assets/profile-[1:1-500px].png differ diff --git a/hypr/hyprlock/assets/profile.jpg b/hypr/hyprlock/assets/profile.jpg new file mode 100644 index 0000000..0f388ab Binary files /dev/null and b/hypr/hyprlock/assets/profile.jpg differ diff --git a/hypr/hyprlock/battery.sh b/hypr/hyprlock/battery.sh new file mode 100755 index 0000000..e3e2606 --- /dev/null +++ b/hypr/hyprlock/battery.sh @@ -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" diff --git a/hypr/hyprlock/bluetooth.sh b/hypr/hyprlock/bluetooth.sh new file mode 100755 index 0000000..1686367 --- /dev/null +++ b/hypr/hyprlock/bluetooth.sh @@ -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 + diff --git a/hypr/hyprlock/change_wallpaper.sh b/hypr/hyprlock/change_wallpaper.sh new file mode 100755 index 0000000..fb78176 --- /dev/null +++ b/hypr/hyprlock/change_wallpaper.sh @@ -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 diff --git a/hypr/hyprlock/greeting.sh b/hypr/hyprlock/greeting.sh new file mode 100755 index 0000000..1d17b85 --- /dev/null +++ b/hypr/hyprlock/greeting.sh @@ -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" diff --git a/hypr/hyprlock/network.sh b/hypr/hyprlock/network.sh new file mode 100755 index 0000000..c9b25cc --- /dev/null +++ b/hypr/hyprlock/network.sh @@ -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 diff --git a/hypr/hyprlock/playerctl.sh b/hypr/hyprlock/playerctl.sh new file mode 100755 index 0000000..0a1d13c --- /dev/null +++ b/hypr/hyprlock/playerctl.sh @@ -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 diff --git a/hypr/hyprlock/weatherinfo.sh b/hypr/hyprlock/weatherinfo.sh new file mode 100755 index 0000000..a41b4b2 --- /dev/null +++ b/hypr/hyprlock/weatherinfo.sh @@ -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 diff --git a/hypr/install.sh b/hypr/install.sh new file mode 100644 index 0000000..31c0066 --- /dev/null +++ b/hypr/install.sh @@ -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\"" diff --git a/waybar/config.jsonc b/waybar/config.jsonc index 73df0fc..3f98a33 100644 --- a/waybar/config.jsonc +++ b/waybar/config.jsonc @@ -72,7 +72,8 @@ "return-type": "json", "exec": "fluxo-rs game", "on-click": "~/.config/hypr/scripts/gamemode.sh", - "signal": 7 + "signal": 7, + "interval": 5 }, "custom/power_status": { @@ -195,7 +196,8 @@ "return-type": "json", "exec": "fluxo-rs dnd", "on-click": "fluxo-rs dnd toggle", - "signal": 13 + "signal": 13, + "interval": 5 }, "custom/backlight": { "format": "{}",