init
This commit is contained in:
26
waybar/catppuccin-waybar/.catppuccin.yaml
Normal file
26
waybar/catppuccin-waybar/.catppuccin.yaml
Normal file
@@ -0,0 +1,26 @@
|
||||
# A catppuccin RC for waybar. In beta, specs may change.
|
||||
app_name: waybar
|
||||
binary_name: waybar
|
||||
installation:
|
||||
location:
|
||||
macos: %appdata%/waybar/
|
||||
linux: %appdata%/waybar/
|
||||
flavours:
|
||||
all:
|
||||
default:
|
||||
- themes/
|
||||
latte:
|
||||
default:
|
||||
- themes/latte.css
|
||||
frappe:
|
||||
default:
|
||||
- themes/frappe.css
|
||||
macchiato:
|
||||
default:
|
||||
- themes/macchiato.css
|
||||
mocha:
|
||||
default:
|
||||
- themes/mocha.css
|
||||
to: ./
|
||||
one_flavour: false
|
||||
comments: "Add `@import \"$HOME/.config/waybar/<flavour>.css\";` to include the file in your style.css"
|
34
waybar/catppuccin-waybar/.editorconfig
Normal file
34
waybar/catppuccin-waybar/.editorconfig
Normal file
@@ -0,0 +1,34 @@
|
||||
# EditorConfig helps developers define and maintain consistent
|
||||
# coding styles between different editors and IDEs
|
||||
# EditorConfig is awesome: https://EditorConfig.org
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_size = 2
|
||||
indent_style = space
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
# go
|
||||
[*.go]
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
|
||||
# python
|
||||
[*.{ini,py,py.tpl,rst}]
|
||||
indent_size = 4
|
||||
|
||||
# rust
|
||||
[*.rs]
|
||||
indent_size = 4
|
||||
|
||||
# documentation, utils
|
||||
[*.{md,mdx,diff}]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
# windows shell scripts
|
||||
[*.{cmd,bat,ps1}]
|
||||
end_of_line = crlf
|
21
waybar/catppuccin-waybar/LICENSE
Normal file
21
waybar/catppuccin-waybar/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2021 Catppuccin
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
81
waybar/catppuccin-waybar/README.md
Normal file
81
waybar/catppuccin-waybar/README.md
Normal file
@@ -0,0 +1,81 @@
|
||||
<h3 align="center">
|
||||
<img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/logos/exports/1544x1544_circle.png" width="100" alt="Logo"/><br/>
|
||||
<img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/misc/transparent.png" height="30" width="0px"/>
|
||||
Catppuccin for <a href="https://github.com/Alexays/Waybar">Waybar</a>
|
||||
<img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/misc/transparent.png" height="30" width="0px"/>
|
||||
</h3>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/catppuccin/waybar/stargazers"><img src="https://img.shields.io/github/stars/catppuccin/waybar?colorA=363a4f&colorB=b7bdf8&style=for-the-badge"></a>
|
||||
<a href="https://github.com/catppuccin/waybar/issues"><img src="https://img.shields.io/github/issues/catppuccin/waybar?colorA=363a4f&colorB=f5a97f&style=for-the-badge"></a>
|
||||
<a href="https://github.com/catppuccin/waybar/contributors"><img src="https://img.shields.io/github/contributors/catppuccin/waybar?colorA=363a4f&colorB=a6da95&style=for-the-badge"></a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img src="assets/preview.webp"/>
|
||||
</p>
|
||||
|
||||
## Previews
|
||||
|
||||
<details>
|
||||
<summary>🌻 Latte</summary>
|
||||
<img src="assets/latte.webp"/>
|
||||
</details>
|
||||
<details>
|
||||
<summary>🪴 Frappé</summary>
|
||||
<img src="assets/frappe.webp"/>
|
||||
</details>
|
||||
<details>
|
||||
<summary>🌺 Macchiato</summary>
|
||||
<img src="assets/macchiato.webp"/>
|
||||
</details>
|
||||
<details>
|
||||
<summary>🌿 Mocha</summary>
|
||||
<img src="assets/mocha.webp"/>
|
||||
</details>
|
||||
|
||||
## Usage
|
||||
|
||||
1. Download the file with your desired flavor e.g. `mocha.css` (to be found in the [release](https://github.com/catppuccin/waybar/releases/latest) or after cloning the repository)
|
||||
2. Copy it into your waybar config e.g. `~/.config/waybar/`
|
||||
3. Include the file at the top of your `style.css`
|
||||
```css
|
||||
@import "<flavor>.css";
|
||||
```
|
||||
4. Use the colors in your Waybar `style.css`. Waybar uses [GTK3 CSS](https://docs.gtk.org/gtk3/css-overview.html#colors).
|
||||
```css
|
||||
* {
|
||||
/* reference the color by using @color-name */
|
||||
color: @text;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
/* you can also GTK3 CSS functions! */
|
||||
background-color: shade(@base, 0.9);
|
||||
border: 2px solid alpha(@crust, 0.3);
|
||||
}
|
||||
```
|
||||
|
||||
## 🙋 FAQ
|
||||
|
||||
- Q: **_"Waybar doesn't work with the colors"_**\
|
||||
A: Make sure you included the file in the right place and you are using `@COLOR`
|
||||
- Q: **_"How can I make the bar look like the preview image?"_**\
|
||||
A: Here's [the waybar config](https://github.com/rubyowo/dotfiles/tree/f925cf8e3461420a21b6dc8b8ad1190107b0cc56/config/waybar) for the preview image.
|
||||
## 💝 Thanks to
|
||||
|
||||
- [rubyowo](https://github.com/rubyowo)
|
||||
|
||||
|
||||
|
||||
<p align="center">
|
||||
<img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/footers/gray0_ctp_on_line.svg?sanitize=true" />
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
Copyright © 2021-present <a href="https://github.com/catppuccin" target="_blank">Catppuccin Org</a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/catppuccin/catppuccin/blob/main/LICENSE"><img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&logoColor=d9e0ee&colorA=363a4f&colorB=b7bdf8"/></a>
|
||||
</p>
|
0
waybar/catppuccin-waybar/assets/.gitkeep
Normal file
0
waybar/catppuccin-waybar/assets/.gitkeep
Normal file
BIN
waybar/catppuccin-waybar/assets/frappe.webp
Normal file
BIN
waybar/catppuccin-waybar/assets/frappe.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.1 KiB |
BIN
waybar/catppuccin-waybar/assets/latte.webp
Normal file
BIN
waybar/catppuccin-waybar/assets/latte.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.4 KiB |
BIN
waybar/catppuccin-waybar/assets/macchiato.webp
Normal file
BIN
waybar/catppuccin-waybar/assets/macchiato.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.1 KiB |
BIN
waybar/catppuccin-waybar/assets/mocha.webp
Normal file
BIN
waybar/catppuccin-waybar/assets/mocha.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.1 KiB |
BIN
waybar/catppuccin-waybar/assets/preview.webp
Normal file
BIN
waybar/catppuccin-waybar/assets/preview.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
20
waybar/catppuccin-waybar/justfile
Normal file
20
waybar/catppuccin-waybar/justfile
Normal file
@@ -0,0 +1,20 @@
|
||||
# Print out all recipes when running `just`
|
||||
_default:
|
||||
@just --list
|
||||
|
||||
# Variables
|
||||
output := "themes"
|
||||
whiskers_cmd := "whiskers"
|
||||
template_path := "waybar.tera"
|
||||
|
||||
# Create the output directory
|
||||
setup:
|
||||
mkdir -p {{output}}
|
||||
|
||||
# Remove all files in the output directory
|
||||
clean:
|
||||
rm -fv {{output}}/*.css
|
||||
|
||||
# Generate all four flavors
|
||||
all: setup
|
||||
{{whiskers_cmd}} {{template_path}}
|
26
waybar/catppuccin-waybar/themes/frappe.css
Normal file
26
waybar/catppuccin-waybar/themes/frappe.css
Normal file
@@ -0,0 +1,26 @@
|
||||
@define-color rosewater #f2d5cf;
|
||||
@define-color flamingo #eebebe;
|
||||
@define-color pink #f4b8e4;
|
||||
@define-color mauve #ca9ee6;
|
||||
@define-color red #e78284;
|
||||
@define-color maroon #ea999c;
|
||||
@define-color peach #ef9f76;
|
||||
@define-color yellow #e5c890;
|
||||
@define-color green #a6d189;
|
||||
@define-color teal #81c8be;
|
||||
@define-color sky #99d1db;
|
||||
@define-color sapphire #85c1dc;
|
||||
@define-color blue #8caaee;
|
||||
@define-color lavender #babbf1;
|
||||
@define-color text #c6d0f5;
|
||||
@define-color subtext1 #b5bfe2;
|
||||
@define-color subtext0 #a5adce;
|
||||
@define-color overlay2 #949cbb;
|
||||
@define-color overlay1 #838ba7;
|
||||
@define-color overlay0 #737994;
|
||||
@define-color surface2 #626880;
|
||||
@define-color surface1 #51576d;
|
||||
@define-color surface0 #414559;
|
||||
@define-color base #303446;
|
||||
@define-color mantle #292c3c;
|
||||
@define-color crust #232634;
|
26
waybar/catppuccin-waybar/themes/latte.css
Normal file
26
waybar/catppuccin-waybar/themes/latte.css
Normal file
@@ -0,0 +1,26 @@
|
||||
@define-color rosewater #dc8a78;
|
||||
@define-color flamingo #dd7878;
|
||||
@define-color pink #ea76cb;
|
||||
@define-color mauve #8839ef;
|
||||
@define-color red #d20f39;
|
||||
@define-color maroon #e64553;
|
||||
@define-color peach #fe640b;
|
||||
@define-color yellow #df8e1d;
|
||||
@define-color green #40a02b;
|
||||
@define-color teal #179299;
|
||||
@define-color sky #04a5e5;
|
||||
@define-color sapphire #209fb5;
|
||||
@define-color blue #1e66f5;
|
||||
@define-color lavender #7287fd;
|
||||
@define-color text #4c4f69;
|
||||
@define-color subtext1 #5c5f77;
|
||||
@define-color subtext0 #6c6f85;
|
||||
@define-color overlay2 #7c7f93;
|
||||
@define-color overlay1 #8c8fa1;
|
||||
@define-color overlay0 #9ca0b0;
|
||||
@define-color surface2 #acb0be;
|
||||
@define-color surface1 #bcc0cc;
|
||||
@define-color surface0 #ccd0da;
|
||||
@define-color base #eff1f5;
|
||||
@define-color mantle #e6e9ef;
|
||||
@define-color crust #dce0e8;
|
26
waybar/catppuccin-waybar/themes/macchiato.css
Normal file
26
waybar/catppuccin-waybar/themes/macchiato.css
Normal file
@@ -0,0 +1,26 @@
|
||||
@define-color rosewater #f4dbd6;
|
||||
@define-color flamingo #f0c6c6;
|
||||
@define-color pink #f5bde6;
|
||||
@define-color mauve #c6a0f6;
|
||||
@define-color red #ed8796;
|
||||
@define-color maroon #ee99a0;
|
||||
@define-color peach #f5a97f;
|
||||
@define-color yellow #eed49f;
|
||||
@define-color green #a6da95;
|
||||
@define-color teal #8bd5ca;
|
||||
@define-color sky #91d7e3;
|
||||
@define-color sapphire #7dc4e4;
|
||||
@define-color blue #8aadf4;
|
||||
@define-color lavender #b7bdf8;
|
||||
@define-color text #cad3f5;
|
||||
@define-color subtext1 #b8c0e0;
|
||||
@define-color subtext0 #a5adcb;
|
||||
@define-color overlay2 #939ab7;
|
||||
@define-color overlay1 #8087a2;
|
||||
@define-color overlay0 #6e738d;
|
||||
@define-color surface2 #5b6078;
|
||||
@define-color surface1 #494d64;
|
||||
@define-color surface0 #363a4f;
|
||||
@define-color base #24273a;
|
||||
@define-color mantle #1e2030;
|
||||
@define-color crust #181926;
|
26
waybar/catppuccin-waybar/themes/mocha.css
Normal file
26
waybar/catppuccin-waybar/themes/mocha.css
Normal file
@@ -0,0 +1,26 @@
|
||||
@define-color rosewater #f5e0dc;
|
||||
@define-color flamingo #f2cdcd;
|
||||
@define-color pink #f5c2e7;
|
||||
@define-color mauve #cba6f7;
|
||||
@define-color red #f38ba8;
|
||||
@define-color maroon #eba0ac;
|
||||
@define-color peach #fab387;
|
||||
@define-color yellow #f9e2af;
|
||||
@define-color green #a6e3a1;
|
||||
@define-color teal #94e2d5;
|
||||
@define-color sky #89dceb;
|
||||
@define-color sapphire #74c7ec;
|
||||
@define-color blue #89b4fa;
|
||||
@define-color lavender #b4befe;
|
||||
@define-color text #cdd6f4;
|
||||
@define-color subtext1 #bac2de;
|
||||
@define-color subtext0 #a6adc8;
|
||||
@define-color overlay2 #9399b2;
|
||||
@define-color overlay1 #7f849c;
|
||||
@define-color overlay0 #6c7086;
|
||||
@define-color surface2 #585b70;
|
||||
@define-color surface1 #45475a;
|
||||
@define-color surface0 #313244;
|
||||
@define-color base #1e1e2e;
|
||||
@define-color mantle #181825;
|
||||
@define-color crust #11111b;
|
11
waybar/catppuccin-waybar/waybar.tera
Normal file
11
waybar/catppuccin-waybar/waybar.tera
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
whiskers:
|
||||
version: "2.0.0"
|
||||
matrix:
|
||||
- flavor
|
||||
filename: "themes/{{flavor.identifier}}.css"
|
||||
---
|
||||
|
||||
{%- for name, color in flavor.colors -%}
|
||||
@define-color {{ name }} #{{ color.hex }};
|
||||
{% endfor %}
|
126
waybar/config.jsonc
Normal file
126
waybar/config.jsonc
Normal file
@@ -0,0 +1,126 @@
|
||||
// ~/.config/waybar/config.jsonc
|
||||
{
|
||||
"layer": "top",
|
||||
"position": "top",
|
||||
"height": 35,
|
||||
"modules-left": ["hyprland/workspaces"],
|
||||
"modules-center": [],
|
||||
"modules-right": ["tray",
|
||||
"wireplumber",
|
||||
"custom/audio-output",
|
||||
"custom/pixelbuds",
|
||||
"custom/anc",
|
||||
"network",
|
||||
"cpu",
|
||||
"memory",
|
||||
"clock",
|
||||
"custom/gamemode",
|
||||
"custom/power"
|
||||
],
|
||||
|
||||
"hyprland/workspaces": {
|
||||
"format": "{icon}",
|
||||
"on-click": "activate"
|
||||
},
|
||||
"hyprland/window": {
|
||||
"format": "{}",
|
||||
"max-length": 35
|
||||
},
|
||||
"clock": {
|
||||
"format": "{:%H:%M}",
|
||||
"format-alt": "{:%a, %b %d}",
|
||||
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>"
|
||||
},
|
||||
"cpu": {
|
||||
"format": "CPU: {usage}%",
|
||||
"tooltip": true
|
||||
},
|
||||
"memory": {
|
||||
"format": "MEM: {}%"
|
||||
},
|
||||
"network": {
|
||||
"format-wifi": "{essid} ({signalStrength}%): {ipaddr}",
|
||||
"format-ethernet": "{ifname}: {ipaddr}",
|
||||
"format-disconnected": "Disconnected",
|
||||
"tooltip-format": "{ifname} via {gwaddr}"
|
||||
},
|
||||
"wireplumber": {
|
||||
"format": "{volume}% {icon}",
|
||||
"format-muted": "Muted ",
|
||||
"format-icons": {
|
||||
"headphone": "",
|
||||
"hands-free": "",
|
||||
"default": ["", ""]
|
||||
},
|
||||
"on-click": "pavucontrol",
|
||||
"scroll-step": 1
|
||||
},
|
||||
|
||||
"pulseaudio": {
|
||||
"format": "{icon} {volume}%",
|
||||
"format-muted": " Muted",
|
||||
"format-icons": {
|
||||
"headphone": "",
|
||||
"hands-free": "",
|
||||
"headset": "",
|
||||
"phone": "",
|
||||
"portable": "",
|
||||
"car": "",
|
||||
"default": ["", ""]
|
||||
},
|
||||
"on-click": "pavucontrol"
|
||||
},
|
||||
"tray": {
|
||||
"icon-size": 18,
|
||||
"spacing": 10
|
||||
},
|
||||
"custom/power": {
|
||||
"format": "",
|
||||
"tooltip": false,
|
||||
"on-click": "~/.config/hypr/scripts/powermenu.sh"
|
||||
},
|
||||
"custom/tlp": {
|
||||
"format": "{}",
|
||||
"exec": "~/.config/waybar/scripts/tlp-profile.sh",
|
||||
"return-type": "json",
|
||||
"interval": 5
|
||||
},
|
||||
"battery": {
|
||||
"states": {
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
},
|
||||
"format": "{capacity}%",
|
||||
"format-charging": "{capacity}%",
|
||||
"format-plugged": "{capacity}%",
|
||||
"format-alt": "{time} {icon}",
|
||||
"format-full": "{capacity}%",
|
||||
"format-icons": ["", "", "", "", ""]
|
||||
},
|
||||
"custom/pixelbuds": {
|
||||
"format": "{}",
|
||||
"return-type": "json",
|
||||
"exec": "~/.config/waybar/scripts/pixelbuds.sh",
|
||||
"interval": 5,
|
||||
"on-click": "bluetoothctl disconnect B4:23:A2:09:D3:53"
|
||||
},
|
||||
"custom/anc": {
|
||||
"format": "{}",
|
||||
"return-type": "json",
|
||||
"exec": "~/.config/waybar/scripts/anc_control.sh",
|
||||
"interval": 5,
|
||||
"on-click": "~/.config/waybar/scripts/anc_control.sh off",
|
||||
"on-click-right": "~/.config/waybar/scripts/anc_control.sh cycle"
|
||||
},
|
||||
"custom/audio-output": {
|
||||
"format": "{}",
|
||||
"return-type": "json",
|
||||
"exec": "/home/narl/.config/waybar/scripts/get_audio_output.sh",
|
||||
"on-click": "/home/narl/.config/waybar/scripts/cycle_audio_output.sh",
|
||||
"interval": 1
|
||||
},
|
||||
"custom/gamemode": {
|
||||
"format": "",
|
||||
"on-click": "~/.config/hypr/scripts/gamemode.sh"
|
||||
}
|
||||
}
|
73
waybar/scripts/anc_control.sh
Executable file
73
waybar/scripts/anc_control.sh
Executable file
@@ -0,0 +1,73 @@
|
||||
#!/bin/bash
|
||||
|
||||
# --- CONFIGURATION ---
|
||||
# Your Pixel Buds Pro's MAC Address
|
||||
MAC_ADDRESS="B4:23:A2:09:D3:53"
|
||||
# --- END CONFIGURATION ---
|
||||
|
||||
# First, check if the device is connected using bluetoothctl.
|
||||
if bluetoothctl info "$MAC_ADDRESS" | grep -q "Connected: yes"; then
|
||||
# --- DEVICE IS CONNECTED ---
|
||||
|
||||
# This function gets the current ANC status and formats it for Waybar.
|
||||
get_status() {
|
||||
# Get the mode from pbpctrl. Redirect errors to null in case of a temporary glitch.
|
||||
current_mode=$(pbpctrl get anc 2>/dev/null)
|
||||
|
||||
# Fallback: If pbpctrl fails or returns 'unknown', hide the module.
|
||||
# This handles cases where buds are connected but not fully ready.
|
||||
if [[ $? -ne 0 || "$current_mode" == "unknown (0)"* || -z "$current_mode" ]]; then
|
||||
echo "{}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Set icon and tooltip based on the current mode.
|
||||
case "$current_mode" in
|
||||
"active")
|
||||
icon="ANC: Active"
|
||||
class="anc-active"
|
||||
;;
|
||||
"aware")
|
||||
icon="ANC: Aware"
|
||||
class="anc-aware"
|
||||
;;
|
||||
"off")
|
||||
icon="ANC: Off"
|
||||
class="anc-off"
|
||||
;;
|
||||
*)
|
||||
# Failsafe to hide the module if the mode is unrecognized.
|
||||
echo "{}"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
echo "{\"text\":\"$icon\", \"class\":\"$class\"}"
|
||||
}
|
||||
|
||||
# Handle click actions passed from Waybar.
|
||||
case "$1" in
|
||||
# Right-click: Cycle between active and aware modes.
|
||||
cycle)
|
||||
current_mode=$(pbpctrl get anc 2>/dev/null)
|
||||
if [[ "$current_mode" == "active" ]]; then
|
||||
pbpctrl set anc aware
|
||||
else
|
||||
pbpctrl set anc active
|
||||
fi
|
||||
sleep 0.1 # Brief pause for the state to update.
|
||||
;;
|
||||
# Left-click: Turn ANC off.
|
||||
off)
|
||||
pbpctrl set anc off
|
||||
sleep 0.1 # Brief pause for the state to update.
|
||||
;;
|
||||
esac
|
||||
|
||||
# Always display the current status after any action or on a scheduled interval.
|
||||
get_status
|
||||
|
||||
else
|
||||
# --- DEVICE IS NOT CONNECTED ---
|
||||
# Output an empty JSON object to completely hide the Waybar module.
|
||||
echo "{}"
|
||||
fi
|
12
waybar/scripts/cycle_audio_output.sh
Executable file
12
waybar/scripts/cycle_audio_output.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
SINKS=($(pactl list short sinks | awk '{print $2}'))
|
||||
CURRENT_SINK=$(pactl info | grep 'Default Sink' | cut -d ' ' -f3)
|
||||
NUM_SINKS=${#SINKS[@]}
|
||||
|
||||
for i in "${!SINKS[@]}"; do
|
||||
if [[ "${SINKS[$i]}" == "$CURRENT_SINK" ]]; then
|
||||
NEXT_INDEX=$(( (i + 1) % NUM_SINKS ))
|
||||
pactl set-default-sink "${SINKS[$NEXT_INDEX]}"
|
||||
break
|
||||
fi
|
||||
done
|
12
waybar/scripts/get_audio_output.sh
Executable file
12
waybar/scripts/get_audio_output.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
DEFAULT_SINK=$(pactl info | grep 'Default Sink' | cut -d ' ' -f3)
|
||||
DESCRIPTION=$(pactl list sinks | grep -A2 "Name: $DEFAULT_SINK" | grep "Description:" | cut -d ' ' -f2-)
|
||||
|
||||
if [ -z "$DESCRIPTION" ]; then
|
||||
DESCRIPTION=$DEFAULT_SINK
|
||||
fi
|
||||
|
||||
TEXT=$(echo "$DESCRIPTION" | cut -c -20)
|
||||
|
||||
printf '{"text": "%s", "tooltip": "%s"}
|
||||
' "$TEXT" "$DESCRIPTION"
|
49
waybar/scripts/pixelbuds.sh
Executable file
49
waybar/scripts/pixelbuds.sh
Executable file
@@ -0,0 +1,49 @@
|
||||
#!/bin/bash
|
||||
|
||||
# --- CONFIGURATION ---
|
||||
# Your Pixel Buds Pro's MAC Address
|
||||
MAC_ADDRESS="B4:23:A2:09:D3:53"
|
||||
# --- END CONFIGURATION ---
|
||||
|
||||
# Check if the device is connected using bluetoothctl.
|
||||
if bluetoothctl info "$MAC_ADDRESS" | grep -q "Connected: yes"; then
|
||||
|
||||
# If connected, get battery info from pbpctrl.
|
||||
if battery_output=$(pbpctrl show battery); then
|
||||
# Use awk to grab the third field, which is the percentage or "unknown".
|
||||
left_bud=$(echo "$battery_output" | grep "left bud:" | awk '{print $3}')
|
||||
right_bud=$(echo "$battery_output" | grep "right bud:" | awk '{print $3}')
|
||||
|
||||
# If both buds are unknown (e.g., case is closed and buds are out of range),
|
||||
# or if the command output is empty, hide the module.
|
||||
if ([[ "$left_bud" == "unknown" ]] && [[ "$right_bud" == "unknown" ]]) || \
|
||||
[[ -z "$left_bud" && -z "$right_bud" ]]; then
|
||||
echo "{}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Prepare the display string for the left bud.
|
||||
if [[ "$left_bud" == "unknown" ]]; then
|
||||
left_display="L: ---"
|
||||
else
|
||||
left_display="L: $left_bud"
|
||||
fi
|
||||
|
||||
# Prepare the display string for the right bud.
|
||||
if [[ "$right_bud" == "unknown" ]]; then
|
||||
right_display="R: ---"
|
||||
else
|
||||
right_display="R: $right_bud"
|
||||
fi
|
||||
|
||||
# Format the final output for Waybar as JSON.
|
||||
printf '{"text": "%s | %s", "tooltip": "Pixel Buds Pro 2", "class": "connected"}\n' "$left_display" "$right_display"
|
||||
|
||||
else
|
||||
# pbpctrl failed to run, so hide the module.
|
||||
echo "{}"
|
||||
fi
|
||||
else
|
||||
# Not connected, output an empty JSON object to hide the module.
|
||||
echo "{}"
|
||||
fi
|
54
waybar/scripts/power-profile.sh
Executable file
54
waybar/scripts/power-profile.sh
Executable file
@@ -0,0 +1,54 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script to manage and display system76-power profiles for Waybar
|
||||
|
||||
# Define the available power profiles
|
||||
PROFILES=("Performance" "Balanced" "Battery")
|
||||
|
||||
# Get the current power profile
|
||||
CURRENT_PROFILE=$(system76-power profile | awk '/Power Profile/ {print $3}')
|
||||
|
||||
# Function to switch to the next profile
|
||||
switch_next_profile() {
|
||||
# Find the index of the current profile
|
||||
for i in "${!PROFILES[@]}"; do
|
||||
if [[ "${PROFILES[$i]}" == "$CURRENT_PROFILE" ]]; then
|
||||
current_index=$i
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Calculate the index of the next profile
|
||||
next_index=$(((current_index + 1) % ${#PROFILES[@]}))
|
||||
NEXT_PROFILE=${PROFILES[$next_index]}
|
||||
|
||||
# Switch to the next profile
|
||||
system76-power profile "$NEXT_PROFILE"
|
||||
}
|
||||
|
||||
# If the script is called with "next", switch the profile
|
||||
if [[ "$1" == "next" ]]; then
|
||||
switch_next_profile
|
||||
# After switching, get the new current profile
|
||||
CURRENT_PROFILE=$(system76-power profile | awk '/Power Profile/ {print $3}')
|
||||
fi
|
||||
|
||||
# Set an icon based on the current profile
|
||||
case $CURRENT_PROFILE in
|
||||
"Performance")
|
||||
ICON="🚀"
|
||||
;;
|
||||
"Balanced")
|
||||
ICON="⚖️"
|
||||
;;
|
||||
"Battery")
|
||||
ICON="🔋"
|
||||
;;
|
||||
*)
|
||||
ICON="❓"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Output in JSON format for Waybar
|
||||
printf '{"text": "%s", "tooltip": "Power Profile: %s", "class": "%s"}\n' "$ICON" "$CURRENT_PROFILE" "$(echo $CURRENT_PROFILE | tr '[:upper:]' '[:lower:]')"
|
||||
|
2
waybar/scripts/power.sh
Executable file
2
waybar/scripts/power.sh
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
wlogout -p layer-shell
|
54
waybar/scripts/tlp-profile.sh
Executable file
54
waybar/scripts/tlp-profile.sh
Executable file
@@ -0,0 +1,54 @@
|
||||
#!/bin/bash
|
||||
|
||||
# --- Configuration ---
|
||||
CRITICAL_THRESHOLD=15
|
||||
WARNING_THRESHOLD=50
|
||||
# ---------------------
|
||||
|
||||
# Get the battery path from upower
|
||||
battery_path=$(upower -e | grep 'BAT')
|
||||
|
||||
# Handle case where no battery is found
|
||||
if [ -z "$battery_path" ]; then
|
||||
# Check if we are on AC power anyway
|
||||
if [[ $(tlp-stat -s | grep "Power source" | awk '{print $4}') == "AC" ]]; then
|
||||
printf '{"text": "", "tooltip": "AC Power (No Battery)", "class": "ac"}\n'
|
||||
else
|
||||
printf '{"text": "", "tooltip": "Error: Battery not found", "class": "unknown"}\n'
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Get battery percentage and state
|
||||
percentage=$(upower -i "$battery_path" | grep "percentage" | awk '{print $2}' | tr -d '%')
|
||||
state=$(upower -i "$battery_path" | grep "state" | awk '{print $2}')
|
||||
tlp_profile=$(tlp-stat -s | grep "Power source" | awk '{print $4}')
|
||||
|
||||
# Set icon, class, and tooltip based on state and percentage
|
||||
if [ "$state" == "charging" ] || [ "$tlp_profile" == "AC" ]; then
|
||||
icon=""
|
||||
class="charging"
|
||||
tooltip="TLP: AC | Charging at ${percentage}%"
|
||||
elif [ "$state" == "discharging" ]; then
|
||||
tooltip="TLP: Battery | Discharging at ${percentage}%"
|
||||
if [ "$percentage" -le "$CRITICAL_THRESHOLD" ]; then
|
||||
icon="" # Very low
|
||||
class="critical"
|
||||
elif [ "$percentage" -le "$WARNING_THRESHOLD" ]; then
|
||||
icon="" # Low
|
||||
class="warning"
|
||||
elif [ "$percentage" -le 85 ]; then
|
||||
icon="" # Healthy
|
||||
class="bat"
|
||||
else
|
||||
icon="" # Full
|
||||
class="bat"
|
||||
fi
|
||||
else # Fallback for "fully-charged", "pending-charge", etc.
|
||||
icon=""
|
||||
class="charging"
|
||||
tooltip="TLP: AC | Fully Charged at ${percentage}%"
|
||||
fi
|
||||
|
||||
# Output JSON for Waybar
|
||||
printf '{"text": "%s %s%%", "tooltip": "%s", "class": "%s"}\n' "$icon" "$percentage" "$tooltip" "$class"
|
185
waybar/style.css
Normal file
185
waybar/style.css
Normal file
@@ -0,0 +1,185 @@
|
||||
/* ~/.config/waybar/style.css */
|
||||
@import "./catppuccin-waybar/themes/mocha.css";
|
||||
|
||||
* {
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
min-height: 0;
|
||||
font-family: JetBrainsMono Nerd Font;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background-color: alpha(@base, 0.6);
|
||||
padding: 10px;
|
||||
transition-property: background-color;
|
||||
transition-duration: 0.5s;
|
||||
color: @text;
|
||||
}
|
||||
|
||||
window#waybar.hidden {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
all: initial;
|
||||
/* Remove GTK theme values (waybar #1351) */
|
||||
min-width: 0;
|
||||
/* Fix weird spacing in materia (waybar #450) */
|
||||
box-shadow: inset 0 -3px transparent;
|
||||
/* Use box-shadow instead of border so the text isn't offset */
|
||||
padding: 6px 18px;
|
||||
margin: 6px 3px;
|
||||
border-radius: 3px;
|
||||
background-color: alpha(@base, 0.9);
|
||||
color: @text;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
border-bottom: 3px solid @green;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
box-shadow: inherit;
|
||||
text-shadow: inherit;
|
||||
background-color: @teal;
|
||||
color: @base;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
border-bottom: 3px solid @red;
|
||||
}
|
||||
|
||||
#memory,
|
||||
#cpu,
|
||||
#custom-power,
|
||||
#custom-gamemode,
|
||||
#custom-tlp,
|
||||
#battery,
|
||||
#backlight,
|
||||
#wireplumber,
|
||||
#network,
|
||||
#clock,
|
||||
#tray,
|
||||
#custom-pixelbuds,
|
||||
#custom-anc,
|
||||
#custom-audio-output {
|
||||
border-radius: 4px;
|
||||
margin: 6px 3px;
|
||||
padding: 6px 12px;
|
||||
background-color: @base;
|
||||
color: @text;
|
||||
}
|
||||
|
||||
#custom-anc.anc-active {
|
||||
color: @teal;
|
||||
border-bottom: 3px solid @teal;
|
||||
}
|
||||
|
||||
#custom-anc.anc-aware {
|
||||
color: @yellow;
|
||||
border-bottom: 3px solid @yellow;
|
||||
}
|
||||
|
||||
#custom-anc.anc-off {
|
||||
color: @text;
|
||||
border-bottom: 3px solid @text;
|
||||
}
|
||||
|
||||
#custom-anc.disconnected {
|
||||
}
|
||||
|
||||
#custom-power,
|
||||
#custom-gamemode {
|
||||
color: @red;
|
||||
padding: 6px 12px 6px 10px;
|
||||
}
|
||||
|
||||
#custom-tlp {
|
||||
padding: 0 10px;
|
||||
min-width: 10px;
|
||||
}
|
||||
|
||||
#custom-tlp.charging {
|
||||
color: @teal;
|
||||
border-bottom: 3px solid @teal;
|
||||
}
|
||||
|
||||
#custom-tlp.bat {
|
||||
color: @sapphire;
|
||||
border-bottom: 3px solid @sapphire;
|
||||
}
|
||||
|
||||
#custom-tlp.warning {
|
||||
color: @yellow;
|
||||
border-bottom: 3px solid @yellow;
|
||||
}
|
||||
|
||||
#custom-tlp.critical {
|
||||
color: @red;
|
||||
border-bottom: 3px solid @red;
|
||||
animation-name: blink;
|
||||
animation-duration: 0.8s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
|
||||
@keyframes blink {
|
||||
to {
|
||||
color: @yellow;
|
||||
border-bottom: 3px solid @yellow;
|
||||
opacity: 0.6;
|
||||
}
|
||||
}
|
||||
|
||||
#memory,
|
||||
#cpu {
|
||||
color: @maroon;
|
||||
border-bottom: 3px solid @maroon;
|
||||
}
|
||||
|
||||
|
||||
#backlight {
|
||||
color: @mauve;
|
||||
}
|
||||
|
||||
#wireplumber {
|
||||
color: @mauve;
|
||||
padding-right: 15px;
|
||||
border-bottom: 3px solid @mauve;
|
||||
}
|
||||
|
||||
#custom-audio-output {
|
||||
color: @mauve;
|
||||
border-bottom: 3px solid @mauve;
|
||||
}
|
||||
|
||||
#network {
|
||||
color: @mauve;
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
#clock {
|
||||
font-family: JetBrainsMono Nerd Font;
|
||||
color: @mauve;
|
||||
}
|
||||
|
||||
tooltip {
|
||||
border-radius: 8px;
|
||||
padding: 15px;
|
||||
background-color: @base;
|
||||
}
|
||||
|
||||
tooltip label {
|
||||
padding: 5px;
|
||||
background-color: @base;
|
||||
}
|
||||
|
||||
#custom-pixelbuds.connected {
|
||||
color: @teal; /* A pleasant green */
|
||||
border-bottom: 3px solid @teal;
|
||||
}
|
157
waybar/style.css-without-borders
Normal file
157
waybar/style.css-without-borders
Normal file
@@ -0,0 +1,157 @@
|
||||
|
||||
/* ~/.config/waybar/style.css */
|
||||
@import "./catppuccin-waybar/themes/mocha.css";
|
||||
|
||||
* {
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
min-height: 0;
|
||||
font-family: JetBrainsMono Nerd Font;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background-color: alpha(@base, 0.6);
|
||||
margin: 10px;
|
||||
transition-property: background-color;
|
||||
transition-duration: 0.5s;
|
||||
color: @text;
|
||||
}
|
||||
|
||||
window#waybar.hidden {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
all: initial;
|
||||
/* Remove GTK theme values (waybar #1351) */
|
||||
min-width: 0;
|
||||
/* Fix weird spacing in materia (waybar #450) */
|
||||
box-shadow: inset 0 -3px transparent;
|
||||
/* Use box-shadow instead of border so the text isn't offset */
|
||||
padding: 6px 18px;
|
||||
margin: 6px 3px;
|
||||
border-radius: 3px;
|
||||
background-color: alpha(@base, 0.9);
|
||||
color: @text;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
border-bottom: 3px solid @green;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
box-shadow: inherit;
|
||||
text-shadow: inherit;
|
||||
background-color: @teal;
|
||||
color: @base;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
border-bottom: 3px solid @red;
|
||||
}
|
||||
|
||||
#memory,
|
||||
#cpu,
|
||||
#custom-power,
|
||||
#custom-tlp,
|
||||
#battery,
|
||||
#backlight,
|
||||
#wireplumber,
|
||||
#network,
|
||||
#clock,
|
||||
#tray {
|
||||
border-radius: 4px;
|
||||
margin: 6px 3px;
|
||||
padding: 6px 12px;
|
||||
background-color: @base;
|
||||
color: @text;
|
||||
}
|
||||
|
||||
#custom-power {
|
||||
color: @red;
|
||||
padding: 6px 12px 6px 10px;
|
||||
}
|
||||
|
||||
#custom-tlp {
|
||||
padding: 0 10px;
|
||||
padding-right: 10px;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
#custom-tlp.ac {
|
||||
color: @green; /* Catppuccin Green for AC power */
|
||||
}
|
||||
|
||||
#custom-tlp.bat {
|
||||
color: @yellow; /* Catppuccin Yellow for Battery power */
|
||||
}
|
||||
|
||||
#battery {
|
||||
color: @text;
|
||||
padding: 0 10px;
|
||||
padding-left: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
#battery.charging, #battery.plugged {
|
||||
color: @green;
|
||||
}
|
||||
|
||||
#battery.warning {
|
||||
color: @yellow;
|
||||
}
|
||||
|
||||
#battery.critical {
|
||||
color: @red;
|
||||
animation-name: blink;
|
||||
animation-duration: 0.8s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
|
||||
@keyframes blink {
|
||||
to {
|
||||
color: @text;
|
||||
}
|
||||
}
|
||||
|
||||
#memory,
|
||||
#cpu {
|
||||
color: @maroon;
|
||||
}
|
||||
|
||||
|
||||
#backlight {
|
||||
color: @mauve;
|
||||
}
|
||||
|
||||
#wireplumber {
|
||||
color: @mauve;
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
#network {
|
||||
color: @mauve;
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
#clock {
|
||||
font-family: JetBrainsMono Nerd Font;
|
||||
color: @mauve;
|
||||
}
|
||||
|
||||
tooltip {
|
||||
border-radius: 8px;
|
||||
padding: 15px;
|
||||
background-color: @base;
|
||||
}
|
||||
|
||||
tooltip label {
|
||||
padding: 5px;
|
||||
background-color: @base;
|
||||
}
|
81
waybar/style.css.bak
Normal file
81
waybar/style.css.bak
Normal file
@@ -0,0 +1,81 @@
|
||||
/* ~/.config/waybar/style.css */
|
||||
@import "./catppuccin-waybar/themes/mocha.css";
|
||||
|
||||
* {
|
||||
font-family: "0xProto Nerd Font", FontAwesome, sans-serif;
|
||||
font-size: 14px;
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background-color: alpha(@base, 0.9);
|
||||
border-bottom: 3px solid @mauve;
|
||||
color: @text;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 0 5px;
|
||||
background-color: transparent;
|
||||
color: @surface2;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
color: @mauve;
|
||||
border-bottom: 3px solid @pink;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background: @surface0;
|
||||
box-shadow: inherit;
|
||||
text-shadow: inherit;
|
||||
}
|
||||
|
||||
#custom-power {
|
||||
color: @red;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
#custom-tlp {
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
#custom-tlp.ac {
|
||||
color: @green; /* Catppuccin Green for AC power */
|
||||
}
|
||||
|
||||
#custom-tlp.bat {
|
||||
color: @yellow; /* Catppuccin Yellow for Battery power */
|
||||
}
|
||||
|
||||
#battery {
|
||||
color: @text;
|
||||
padding: 0 10px;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
#battery.charging, #battery.plugged {
|
||||
color: @green;
|
||||
}
|
||||
|
||||
#battery.warning {
|
||||
color: @yellow;
|
||||
}
|
||||
|
||||
#battery.critical {
|
||||
color: @red;
|
||||
animation-name: blink;
|
||||
animation-duration: 0.8s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
|
||||
@keyframes blink {
|
||||
to {
|
||||
color: @text;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user