This commit is contained in:
2025-07-29 01:29:28 +02:00
parent 299e5aa5de
commit 6d49a475b1
19 changed files with 673 additions and 585 deletions

View File

@@ -0,0 +1,15 @@
WM 下 Dolphin 的前景色可能会很奇怪,在 .config/dolphinrc 中添加以下内容可以解决:
```conf
[UiSettigs]
ColorScheme=<name>
```
例如<s>大家都喜欢的</s>猫布奇-抹茶-蓝
```conf
[UiSettigs]
ColorScheme=Catppuccin Mocha Blue
```
colorscheme 名(大概)可以在 `~/.local/share/color-schemes/`下的文件中查看。

View File

View File

View File

@@ -3,8 +3,8 @@ things I have installed:
full KDE Plasma 6 setup # not essential for sure full KDE Plasma 6 setup # not essential for sure
which can provide: which can provide:
SDDM theme # Breeze is enough SDDM theme # Breeze is enough
kcalc/kalc # calculator(s) kcalc/kalc # calculator(s), what's the difference?
kcolorchooser # works smoothly on hyprland kcolorchooser # or hyprpicker
pipewire & friends pipewire & friends
... ...
@@ -14,31 +14,28 @@ hyprpaper
hypridle hypridle
hyprlock hyprlock
hyprshot hyprshot
hyprlicker # kcolorchooser also works though hyprpicker
hyprland-plugin-hyprexpo # scale workspaces and put them in a grid hyprland-plugin-hyprexpo # scale workspaces and put them in a grid
# xdg-desktop-portal* # xdg-desktop-portal*
xdg-desktop-portal xdg-desktop-portal
xdg-desktop-portal-kde # Dolphin as file picker (change value of widget.use-xdg-desktop-portal.file-picker in about:config if not working correctly in firefox) xdg-desktop-portal-kde # Dolphin as file picker (for firefox, change value of widget.use-xdg-desktop-portal.file-picker in about:config if not working correctly)
xdg-desktop-portal-hyprland # not working with my Intel iGPU, but fine with NVIDIA dGPU xdg-desktop-portal-hyprland # not working with my Intel iGPU, but fine with NVIDIA dGPU
# terminal emulator(s) # terminal emulator(s)
kitty # normal terminal kitty # normal terminal
ghostty # floating terminal, for btop for example# ghostty # floating terminal, for btop for example
# under surface # under surface
mako # notification daemon mako # notification daemon
gnome-keyring # --password-store=gnome-libsecret gnome-keyring # --password-store=gnome-libsecret
wl-clipboard wl-clipboard
cliphist # clipboard history cliphist # clipboard history
network-manager-applet # nm-applet slurp # region selector
slurp # region selector wf-recorder # screen recorder
wf-recorder # screen recorder
brightnessctl brightnessctl
playerctl playerctl
pamixer pamixer
qt5ct
qt6ct
# GUI # GUI
waybar waybar
@@ -46,12 +43,13 @@ eww
wlogout wlogout
rofi(-wayland) rofi(-wayland)
mpv mpv
blueman # bluetooth GUI & applet network-manager-applet # nm-applet
blueman # bluetooth GUI & applet
pavucontrol pavucontrol
gnome-text-editor # or kwrite, just notepad replacement gnome-text-editor # or kwrite, just notepad replacement
btop # system monitor btop # system monitor
activate-linux # :/ activate-linux # :/
polkit-gnome # polkit authentication agent polkit-gnome # polkit authentication agent
# fonts & themes # fonts & themes
maplemono-nf-cn / ttf-maplemono-nf-cn-unhinted (archlinuxcn) maplemono-nf-cn / ttf-maplemono-nf-cn-unhinted (archlinuxcn)
@@ -62,6 +60,9 @@ spicetify # spotify tweaks
spicetify-maketplace # spotify themes spicetify-maketplace # spotify themes
nwg-look # theme of GTK apps nwg-look # theme of GTK apps
catppuccin-gtk-theme-mocha # theme of GTK apps catppuccin-gtk-theme-mocha # theme of GTK apps
kvantum
qt5ct
qt6ct
# utils # utils
bc bc

View File

@@ -0,0 +1,29 @@
虽然不是很确定发生了什么,但总归记录一下
问题:
休眠后立即唤醒
环境:
hyprland (kde 下无此问题)
hybrid (独显直连没有测试)
结论:
罗技 Bolt 接收器导致的
解决1
修改 /proc/acpi/wakeup 禁用 usb 唤醒
修改什么?问 LLM 吧,现在的我也不知道 :)
解决2
安装 solaar 并启动
步骤:
创建 plugdev 用户组:
sudo groupadd plugdev
sudo usermod $(whoami) -aG plugdev
安装 solaar
启用驱动:
sudo modprobe hid_logitech_dj
重载 udev 规则:
sudo udevadm control --reload-rules
插拔 Bolt 接收器
启动!

View File

View File

@@ -0,0 +1,35 @@
当安装了其他 notification manager 时plasma 在启动时可能会选择错误的 notification manager 导致通知中心无法正常工作 <s>(虽然平时也并不怎么在意这玩意,用什么 daemon 都无所谓,只要有通知看就行)</s>
如何知道是否是这种情况呢?以 mako 为例:
1. 先知道 mako 是什么时候被启动的 (或者自己推算时间)
```sh
journalctl --user -u mako.service --no-pager -g 'Starting'
```
2. 查看先后的日志:
```sh
journalctl --user --since '2025-07-29 00:43:16' --until '2025-07-29 00:43:18'
```
3. 如果发现类似以下内容:
```
...
Jul 29 00:43:17 Artemisia systemd[1080]: Starting Lightweight Wayland notification daemon...
Jul 29 00:43:17 Artemisia systemd[1080]: Started Lightweight Wayland notification daemon.
...
Jul 29 00:43:17 Artemisia plasmashell[1599]: org.kde.plasma.notificationmanager: Failed to register Notification service on DBus
...
```
那就是这种情况了。
解决方法也很简单,启动时屏蔽掉错误的服务,例如:
```sh
systemctl --user mask mako.service
```
或者将 plasmashell 的 notificationmanager 优先级提高:
```sh
mkdir -p ~/.local/share/dbus-1/services/
ln -s /usr/share/dbus-1/services/org.kde.plasma.Notifications.service ~/.local/share/dbus-1/services/org.kde.plasma.Notifications.service
```

View File

@@ -1,4 +1,4 @@
在 btrfs 分区下使用 swapfile 创建虚拟内存: 在 btrfs 分区下使用 swapfile 创建虚拟内存 (复杂方法)
1. 创建 swap 子卷 (假定已经挂载到 /mnt) 1. 创建 swap 子卷 (假定已经挂载到 /mnt)
@@ -12,7 +12,7 @@ btrfs subvolume create /mnt/@swap
touch /mnt/@swap/swapfile touch /mnt/@swap/swapfile
``` ```
3. 设置 COW 禁用属性 3. 禁用 COW
```bash ```bash
chattr +C /mnt/@swap/swapfile chattr +C /mnt/@swap/swapfile
@@ -44,9 +44,7 @@ swapon --show
7. 修改 `/etc/fstab` 以自动挂载 swap 文件: 7. 修改 `/etc/fstab` 以自动挂载 swap 文件:
```conf ```conf
# Btrfs @swap subvolume UUID={btrfs-uuid} /swap btrfs rw,noatime,ssd,discard=async,space_cache=v2,subvol=/@swap 0 0
UUID={btrfs-uuid} /swap btrfs subvol=@swap,defaults,noatime 0 0
# Swap file
/swap/swapfile none swap sw 0 0 /swap/swapfile none swap sw 0 0
``` ```

View File

@@ -0,0 +1,6 @@
安卓 13
搜索 Assistant点进 General禁用
搜索 Default Apps将 Digital assistant app 设置为 None
这样按 super 键就不会弹出 Google Assistant 了

View File

@@ -1,12 +1,7 @@
#!/bin/env bash #!/bin/env bash
function close() { function close() {
if pgrep -x "waybar" > /dev/null; then killall -q waybar
killall -q waybar
# Wait until the processes have been shut down
while pgrep -x waybar >/dev/null; do sleep 1; done
fi
# Also close the lyrics widget if open # Also close the lyrics widget if open
if eww active-windows | grep -q "lyrics-single"; then if eww active-windows | grep -q "lyrics-single"; then
@@ -15,19 +10,28 @@ function close() {
} }
function open() { function open() {
# the system tray will not work with kded6 started
if killall -q "kded6"; then
while pgrep -x "kded6" >/dev/null; do
sleep 0.2
done
fi
waybar & waybar &
} }
if [ -z "$1" ]; then if [ -z "$1" ]; then
close close
while pgrep -x "waybar" >/dev/null; do
sleep 0.2
done
open open
elif [ "$1" = "close" ]; then elif [ "$1" = "close" ]; then
if ! pgrep -x "waybar" > /dev/null; then if ! pgrep -x "waybar" >/dev/null; then
exit 1 exit 1
fi fi
close close
elif [ "$1" = "open" ]; then elif [ "$1" = "open" ]; then
if pgrep -x "waybar" > /dev/null; then if pgrep -x "waybar" >/dev/null; then
exit 1 exit 1
fi fi
open open

View File

@@ -1,271 +1,271 @@
* { * {
all: unset; all: unset;
transition: 200ms ease-out; transition: 200ms ease-out;
} }
.main-window { .main-window {
background-color: $bg; background-color: $bg;
font-family: 'Font Awesome 6 Free', FontAwesome; font-family: 'Font Awesome 6 Free', FontAwesome;
border-radius: 20px; border-radius: 20px;
border: 2px solid $blue; border: 2px solid $blue;
} }
.date-box { .date-box {
// background-color: $bg; // background-color: $bg;
margin: 20px 20px 0px 20px; margin: 20px 20px 0px 20px;
min-width: 290px; min-width: 290px;
padding: 20px 10px 20px 10px; padding: 20px 10px 20px 10px;
border-radius: 15px; border-radius: 15px;
color: $fg; color: $fg;
// box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5); // box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5);
} }
.time { .time {
font-weight: bold; font-weight: bold;
font-size: 80px; font-size: 80px;
margin-top: 24px; margin-top: 24px;
} }
.date { .date {
font-family: 'Noto Sans'; font-family: 'Noto Sans';
font-size: 24px; font-size: 24px;
margin-top: 20px; margin-top: 20px;
} }
.weather-box { .weather-box {
background-color: $gray-alt; background-color: $gray-alt;
margin: 20px 20px 0px 0px; margin: 20px 20px 0px 0px;
padding: 20px 10px 10px 20px; padding: 20px 10px 10px 20px;
border-radius: 15px; border-radius: 15px;
box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5); box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5);
} }
.weather-desc { .weather-desc {
font-family: 'Noto Sans'; font-family: 'Noto Sans';
color: $fg-alt; color: $fg-alt;
font-size: 20px; font-size: 20px;
} }
.weather-temp { .weather-temp {
font-size: 30px; font-size: 30px;
color: $fg; color: $fg;
padding-top: 10px; padding-top: 10px;
} }
.weather-icon { .weather-icon {
font-family: 'MesloLGM Nerd Font'; font-family: 'MesloLGM Nerd Font';
font-size: 60px; font-size: 60px;
margin-top: 5px; margin-top: 5px;
} }
.weather-updatetime { .weather-updatetime {
color: $fg-alt; color: $fg-alt;
font-size: 12px; font-size: 12px;
margin-top: 10px; margin-top: 10px;
} }
.stats-box { .stats-box {
background-color: $gray-alt; background-color: $gray-alt;
margin: 20px 20px 0px 20px; margin: 20px 20px 0px 20px;
padding: 20px 35px 20px 25px; padding: 20px 35px 20px 25px;
border-radius: 15px; border-radius: 15px;
box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5); box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5);
} }
.stats-header { .stats-header {
font-size: 20px; font-size: 20px;
font-weight: bold; font-weight: bold;
color: $gray; color: $gray;
} }
.volume-icon, .volume-icon,
.brightness-icon, .brightness-icon,
.cpu-icon, .cpu-icon,
.memory-icon { .memory-icon {
font-size: 20px; font-size: 20px;
color: $fg; color: $fg;
} }
.volume-scale trough, .volume-scale trough,
.brightness-scale trough, .brightness-scale trough,
.cpu-scale trough, .cpu-scale trough,
.memory-scale trough { .memory-scale trough {
all: unset; all: unset;
background-color: $gray; background-color: $gray;
min-height: 10px; min-height: 10px;
border-radius: 15px; border-radius: 15px;
margin-left: 10px; margin-left: 10px;
} }
.volume-scale highlight { .volume-scale highlight {
background-color: $sapphire; background-color: $sapphire;
border-radius: 15px; border-radius: 15px;
} }
.brightness-scale highlight { .brightness-scale highlight {
background-color: $teal; background-color: $teal;
border-radius: 15px; border-radius: 15px;
} }
.cpu-scale highlight { .cpu-scale highlight {
background-color: $yellow; background-color: $yellow;
border-radius: 15px; border-radius: 15px;
} }
.memory-scale highlight { .memory-scale highlight {
background-color: $peach; background-color: $peach;
border-radius: 15px; border-radius: 15px;
} }
.fortune-box { .fortune-box {
// background-color: $gray-alt; // background-color: $gray-alt;
margin: 20px 20px 0px 0px; margin: 20px 20px 0px 0px;
padding: 20px 35px 20px 25px; padding: 20px 35px 20px 25px;
border-radius: 15px; border-radius: 15px;
// box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5); // box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5);
} }
.fortune-header { .fortune-header {
font-size: 20px; font-size: 20px;
font-weight: bold; font-weight: bold;
color: $gray; color: $gray;
} }
.fortune-text { .fortune-text {
font-family: 'Noto Sans'; font-family: 'Noto Sans';
font-size: 14px; font-size: 14px;
color: $fg; color: $fg;
margin-top: 10px; margin-top: 10px;
} }
.music-art-box { .music-art-box {
background-size: cover; background-size: cover;
background-repeat: no-repeat; background-repeat: no-repeat;
min-width: 455px; min-width: 455px;
min-height: 240px; min-height: 240px;
border-radius: 17px; border-radius: 17px;
background-position: center; background-position: center;
margin: 20px 0px 0px 20px; margin: 20px 0px 0px 20px;
box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5); box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5);
} }
.music-title { .music-title {
margin: 20px 0px 0px 20px; margin: 20px 0px 0px 20px;
font-size: 28px; font-size: 28px;
font-weight: bold; font-weight: bold;
color: $fg; color: $fg;
} }
.music-artist { .music-artist {
margin: 10px 0px 0px 20px; margin: 10px 0px 0px 20px;
font-size: 20px; font-size: 20px;
color: $fg-alt; color: $fg-alt;
} }
.music-length { .music-length {
margin: 90px 0px 0px 20px; margin: 90px 0px 0px 20px;
font-size: 18px; font-size: 18px;
font-weight: bold; font-weight: bold;
color: $fg-alt; color: $fg-alt;
} }
.music-stuff-box { .music-stuff-box {
border-radius: 15px; border-radius: 15px;
background: linear-gradient(to right, $bg-alt, transparent); background: linear-gradient(to right, $bg-alt, transparent);
min-height: 240px; min-height: 240px;
} }
.player-cover-box { .player-cover-box {
background-size: 140px; background-size: 140px;
min-height: 140px; min-height: 140px;
min-width: 140px; min-width: 140px;
border-radius: 20px; border-radius: 20px;
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center; background-position: center;
} }
.player-box { .player-box {
margin: 40px 30px 30px 50px; margin: 40px 30px 30px 50px;
} }
.player-info-box { .player-info-box {
font-size: 14px; font-size: 14px;
} }
.player-info-title, .player-info-title,
.player-info-artist { .player-info-artist {
color: $blue; color: $blue;
font-weight: bold; font-weight: bold;
} }
.player-info-album, .player-info-album,
.player-info-length { .player-info-length {
color: $fg-alt; color: $fg-alt;
} }
.player-info-button { .player-info-button {
background-color: $gray-alt; background-color: $gray-alt;
padding: 15px; padding: 15px;
border-radius: 20px; border-radius: 20px;
font-weight: bold; font-weight: bold;
margin-top: 10px; margin-top: 10px;
} }
.cavabar { .cavabar {
font-size: 14px; font-size: 14px;
color: $blue; color: $blue;
} }
.music-controls-box { .music-controls-box {
margin: 20px 20px 0px 20px; margin: 20px 20px 0px 20px;
// background-color: $gray-alt; // background-color: $gray-alt;
padding: 0px 23px 0px 23px; padding: 0px 23px 0px 23px;
border-radius: 15px; border-radius: 15px;
text-shadow: 0px 0px 10px rgba(0, 0, 0, 1); text-shadow: 0px 0px 10px rgba(0, 0, 0, 1);
// box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5); // box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5);
} }
.music-next, .music-next,
.music-previous { .music-previous {
font-size: 30px; font-size: 30px;
} }
.music-pp { .music-pp {
font-size: 44px; font-size: 44px;
color: $fg; color: $fg;
} }
.music-next:hover, .music-next:hover,
.music-previous:hover, .music-previous:hover,
.music-pp:hover { .music-pp:hover {
color: $orange; color: $orange;
} }
.profile-stuff-box { .profile-stuff-box {
margin: 20px 20px 20px 20px; margin: 20px 20px 20px 20px;
// background-color: $gray-alt; // background-color: $gray-alt;
border-radius: 15px; border-radius: 15px;
padding: 15px 20px 15px 20px; padding: 15px 20px 15px 20px;
// box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5); // box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5);
} }
.profile-img { .profile-img {
border-radius: 10px; border-radius: 10px;
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: cover; background-size: cover;
background-position: center; background-position: center;
min-width: 90px; min-width: 90px;
box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5); box-shadow: 5px 5px 8px rgba(0, 0, 0, 0.5);
} }
.profile-stuff { .profile-stuff {
font-family: 'Noto Sans'; font-family: 'Noto Sans';
padding: 7px 0px 0px 30px; padding: 7px 0px 0px 30px;
font-size: 16px; font-size: 16px;
color: $fg; color: $fg;
} }
.profile-name { .profile-name {
font-family: 'Font Awesome 6 Free', FontAwesome; font-family: 'Font Awesome 6 Free', FontAwesome;
font-weight: bold; font-weight: bold;
} }

View File

@@ -24,4 +24,4 @@ env = NVD_BACKEND,direct
env = XCURSOR_SIZE,24 env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24 env = HYPRCURSOR_SIZE,24
env = ELECTRON_OZONE_PLATFORM_HINT,auto env = ELECTRON_OZONE_PLATFORM_HINT,auto
env = DISPLAY_DEVICE,intel_backlight # or nvidia_0 env = DISPLAY_DEVICE,nvidia_0 # or nvidia_0

View File

@@ -49,7 +49,7 @@ general {
gaps_in = 2 gaps_in = 2
gaps_out = 0, 3, 3, 3 gaps_out = 0, 3, 3, 3
gaps_workspaces = 50 gaps_workspaces = 50
border_size = 1 border_size = 2
resize_on_border = true resize_on_border = true
no_focus_fallback = true no_focus_fallback = true

View File

@@ -6,7 +6,7 @@
bind = Super, C, exec, code --password-store=gnome-libsecret # Launch VSCode (editor) bind = Super, C, exec, code --password-store=gnome-libsecret # Launch VSCode (editor)
bind = Super, E, exec, dolphin --new-window # Launch Dolphin (file manager) bind = Super, E, exec, dolphin --new-window # Launch Dolphin (file manager)
bind = Super, W, exec, firefox --new-window # Launch Firefox bind = Super, W, exec, firefox --new-window # Launch Firefox
bind = Super, X, exec, gnome-text-editor --new-window # Launch GNOME Text Editor bind = Super, X, exec, kwrite # Launch GNOME Text Editor
bind = Super, B, exec, killall btop || ghostty -e btop # Launch btop (system monitor) bind = Super, B, exec, killall btop || ghostty -e btop # Launch btop (system monitor)
bind = Super, Space, exec, eww open main --toggle # Launch dashboard (eww) bind = Super, Space, exec, eww open main --toggle # Launch dashboard (eww)
bind = Super+Shift, V, exec, pavucontrol # Launch pavucontrol (volume mixer) bind = Super+Shift, V, exec, pavucontrol # Launch pavucontrol (volume mixer)

View File

@@ -1,431 +1,431 @@
{ {
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// Global configuration // Global configuration
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
"layer": "top", "layer": "top",
"position": "top", "position": "top",
"height": 55, "height": 55,
"margin-left": 0, "margin-left": 0,
"margin-bottom": 0, "margin-bottom": 0,
"margin-right": 0, "margin-right": 0,
"spacing": 2, // Gaps between modules (px) "spacing": 2, // Gaps between modules (px)
"modules-left": [ "modules-left": [
"custom/rofi", "custom/rofi",
// "hyprland/workspaces", // "hyprland/workspaces",
// "custom/workspacenew", // "custom/workspacenew",
"group/workspaceactions", "group/workspaceactions",
"hyprland/window", "hyprland/window",
//"hyprland/submap", //"hyprland/submap",
//"idle_inhibitor", //"idle_inhibitor",
//"mpd" //"mpd"
"custom/mediaplayer" "custom/mediaplayer"
], ],
"modules-center": [ "modules-center": [
"clock#date" "clock#date"
//"custom/gammastep" //"custom/gammastep"
], ],
"modules-right": [ "modules-right": [
// "network#speed", // "network#speed",
// "memory", // "memory",
// "cpu", // "cpu",
// "battery", // "battery",
// //"pulseaudio", // //"pulseaudio",
// "backlight", // "backlight",
// "wireplumber", // "wireplumber",
"group/monitors", "group/monitors",
// "bluetooth", // "bluetooth",
// "network", // "network",
"tray", "tray",
"custom/caffeine", "custom/caffeine",
"custom/power" "custom/power"
], ],
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// Modules // Modules
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
// Separators // Separators
"custom/sp1": { "custom/sp1": {
"format": " | ", "format": " | ",
"tooltip": false "tooltip": false
}, },
"custom/sp2": { "custom/sp2": {
"format": " |", "format": " |",
"tooltip": false "tooltip": false
}, },
// Buttons // Buttons
"custom/power": { "custom/power": {
"format": "󰐥", "format": "󰐥",
"tooltip": false, "tooltip": false,
"on-click": "wlogout", "on-click": "wlogout",
"on-click-right": "hyprctl dispatch killactive", "on-click-right": "hyprctl dispatch killactive",
"min-length": 2, "min-length": 2,
"max-length": 2 "max-length": 2
}, },
"custom/rofi": { "custom/rofi": {
"format": "", "format": "",
"tooltip": false, "tooltip": false,
// "on-click-right": "fuzzel -l 0 -p '>> ' | xargs -r sh -c", // "on-click-right": "fuzzel -l 0 -p '>> ' | xargs -r sh -c",
// "on-click": "fuzzel", // "on-click": "fuzzel",
// "on-click-middle": "pkill -9 fuzzel", // "on-click-middle": "pkill -9 fuzzel",
"on-click": "eww open main --toggle", "on-click": "eww open main --toggle",
"on-click-right": "pkill rofi || rofi -show drun", "on-click-right": "pkill rofi || rofi -show drun",
"min-length": 2, "min-length": 2,
"max-length": 2 "max-length": 2
}, },
"custom/caffeine": { "custom/caffeine": {
"format": "{icon}", "format": "{icon}",
"return-type": "json", "return-type": "json",
"interval": "once", "interval": "once",
"exec": "$HOME/.config/waybar/modules/caffeine.sh", "exec": "$HOME/.config/waybar/modules/caffeine.sh",
"on-click": "$HOME/.config/waybar/modules/caffeine.sh toggle && sleep 1", "on-click": "$HOME/.config/waybar/modules/caffeine.sh toggle && sleep 0.2",
"exec-on-event": true, "exec-on-event": true,
"min-length": 2, "min-length": 2,
"max-length": 2, "max-length": 2,
"tooltip": false, "tooltip": false,
"format-icons": { "format-icons": {
"active": "", "active": "",
"inactive": "" "inactive": ""
} }
}, },
// Time and Date // Time and Date
"clock": { "clock": {
"format": " {:%H:%M  %e %b}", "format": " {:%H:%M  %e %b}",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>", "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"today-format": "<b>{}</b>" "today-format": "<b>{}</b>"
}, },
"clock#date": { "clock#date": {
"format": "󰥔 {:%H:%M |  %e %b}", "format": "󰥔 {:%H:%M |  %e %b}",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt>{calendar}</tt>", "tooltip-format": "<big>{:%Y %B}</big>\n<tt>{calendar}</tt>",
"today-format": "<b>{}</b>" "today-format": "<b>{}</b>"
}, },
"clock#1": { "clock#1": {
"format": " {:%a}", "format": " {:%a}",
"tooltip": false, "tooltip": false,
"on-click": "gsimplecal" "on-click": "gsimplecal"
}, },
"clock#2": { "clock#2": {
"format": " {:%d-%h-%Y}", "format": " {:%d-%h-%Y}",
"tooltip": false, "tooltip": false,
"on-click": "gsimplecal" "on-click": "gsimplecal"
}, },
"clock#3": { "clock#3": {
"format": " {:%H:%M:%S %p}", "format": " {:%H:%M:%S %p}",
"tooltip": false, "tooltip": false,
"on-click": "gsimplecal" "on-click": "gsimplecal"
}, },
"custom/screenshot_t": { "custom/screenshot_t": {
"format": " ", "format": " ",
"on-click": "~/.config/hypr/scripts/screenshot_full", "on-click": "~/.config/hypr/scripts/screenshot_full",
"on-click-right": "~/.config/hypr/scripts/screenshot_area" "on-click-right": "~/.config/hypr/scripts/screenshot_area"
}, },
// System monitors // System monitors
"group/monitors": { "group/monitors": {
"modules": ["network#speed", "temperature", "memory", "cpu", "battery", "backlight", "wireplumber"], "modules": ["network#speed", "temperature", "memory", "cpu", "battery", "backlight", "wireplumber"],
"orientation": "inherit" "orientation": "inherit"
},
"network#speed": {
"interval": 1,
"format": "{ifname}",
"format-wifi": " {bandwidthDownBytes}  {bandwidthUpBytes} ",
"format-ethernet": " {bandwidthDownBytes}  {bandwidthUpBytes} ",
"format-disconnected": "󰌙",
"tooltip-format": "{ipaddr}",
"format-linked": "󰈁 {ifname} (No IP)",
"tooltip-format-wifi": "{essid} {signalStrength}%",
"tooltip-format-ethernet": "{ifname} 󰌘",
"tooltip-format-disconnected": "󰌙 Disconnected",
"max-length": 24,
"min-length": 20
},
"temperature": {
"interval": 5,
"thermal-zone": 6,
"hwmon-path": "/sys/class/hwmon/hwmon6/temp1_input",
"critical-threshold": 80,
// "format-critical": " {temperatureC}°C",
"format-critical": " {temperatureC}°C",
"format": "{icon} {temperatureC}°C",
"format-icons": ["", "", ""],
"max-length": 7,
"min-length": 7
},
"memory": {
"interval": 11,
// "format": " {used:0.2f} / {total:0.0f} GB",
"format": "󰍛 {percentage}%",
"on-click": "killall btop || ghostty -e btop",
"min-length": 7,
"max-length": 7
},
"cpu": {
"interval": 3,
//"format": " {}%", // Icon: microchip
"format": "󰘚 {usage}%",
"max-length": 7,
"min-length": 7,
"on-click": "killall btop || ghostty -e btop"
},
"battery": {
"interval": 30,
"states": {
"good": 95,
"warning": 30,
"critical": 15
}, },
"network#speed": { "format": "{icon} {capacity}%",
"interval": 1, "format-charging": " {capacity}%",
"format": "{ifname}", "format-plugged": " {capacity}%",
"format-wifi": " {bandwidthDownBytes}  {bandwidthUpBytes} ", "format-icons": ["", "", "", "", ""],
"format-ethernet": " {bandwidthDownBytes}  {bandwidthUpBytes} ", "max-length": 7,
"format-disconnected": "󰌙", "min-length": 7
"tooltip-format": "{ipaddr}", },
"format-linked": "󰈁 {ifname} (No IP)", "backlight": {
"tooltip-format-wifi": "{essid} {signalStrength}%", "device": "$DISPLAY_DEVICE",
"tooltip-format-ethernet": "{ifname} 󰌘", "format": "{icon} {percent}%",
"tooltip-format-disconnected": "󰌙 Disconnected", "format-alt": "{percent}% {icon}",
"max-length": 24, "format-alt-click": "click-right",
"min-length": 20 //"format-icons": ["", ""],
}, "format-icons": [""],
"temperature": { "on-scroll-down": "brightnessctl -d $DISPLAY_DEVICE set 5%-",
"interval": 5, "on-scroll-up": "brightnessctl -d $DISPLAY_DEVICE set +5%",
"thermal-zone": 6, "max-length": 7,
"hwmon-path": "/sys/class/hwmon/hwmon6/temp1_input", "min-length": 7
"critical-threshold": 80, },
// "format-critical": " {temperatureC}°C", "wireplumber": {
"format-critical": " {temperatureC}°C", "on-click": "pavucontrol",
"format": "{icon} {temperatureC}°C", //on-click: "${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle";
"format-icons": ["", "", ""], "on-scroll-down": "wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 0.04-",
"max-length": 7, "on-scroll-up": "wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 0.04+",
"min-length": 7 "format": "{icon} {volume}%",
}, "format-muted": "",
"memory": { "format-source": "",
"interval": 11, "format-source-muted": "",
// "format": " {used:0.2f} / {total:0.0f} GB", //"format-muted": "<span foreground='#fab387'> </span>",
"format": "󰍛 {percentage}%", //"format-icons": [ "<span foreground='#fab387'></span>" ]
"on-click": "killall btop || ghostty -e btop", "format-icons": {
"min-length": 7, "headphone": "",
"max-length": 7 "phone": "",
}, "portable": "",
"cpu": { "car": "",
"interval": 3, "default": ["", "", "", "", "", ""]
//"format": " {}%", // Icon: microchip
"format": "󰘚 {usage}%",
"max-length": 7,
"min-length": 7,
"on-click": "killall btop || ghostty -e btop"
},
"battery": {
"interval": 30,
"states": {
"good": 95,
"warning": 30,
"critical": 15
},
"format": "{icon} {capacity}%",
"format-charging": " {capacity}%",
"format-plugged": " {capacity}%",
"format-icons": ["", "", "", "", ""],
"max-length": 7,
"min-length": 7
},
"backlight": {
"device": "$DISPLAY_DEVICE",
"format": "{icon} {percent}%",
"format-alt": "{percent}% {icon}",
"format-alt-click": "click-right",
//"format-icons": ["", ""],
"format-icons": [""],
"on-scroll-down": "brightnessctl -d $DISPLAY_DEVICE set 5%-",
"on-scroll-up": "brightnessctl -d $DISPLAY_DEVICE set +5%",
"max-length": 7,
"min-length": 7
},
"wireplumber": {
"on-click": "pavucontrol",
//on-click: "${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle";
"on-scroll-down": "wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 0.04-",
"on-scroll-up": "wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 0.04+",
"format": "{icon} {volume}%",
"format-muted": "",
"format-source": "",
"format-source-muted": "",
//"format-muted": "<span foreground='#fab387'> </span>",
//"format-icons": [ "<span foreground='#fab387'></span>" ]
"format-icons": {
"headphone": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", "", "", "", ""]
},
"max-length": 7,
"min-length": 7
}, },
"max-length": 7,
"min-length": 7
},
// Hyprland // Hyprland
"group/workspaceactions": { "group/workspaceactions": {
"modules": ["hyprland/workspaces#special", "hyprland/workspaces", "custom/workspacenew"], "modules": ["hyprland/workspaces#special", "hyprland/workspaces", "custom/workspacenew"],
"orientation": "inherit" "orientation": "inherit"
},
"hyprland/workspaces": {
"all-outputs": true,
"format": "{name}",
"on-scroll-up": "hyprctl dispatch workspace e+1 1>/dev/null",
"on-scroll-down": "hyprctl dispatch workspace e-1 1>/dev/null",
"sort-by-number": true,
"active-only": false
},
"hyprland/workspaces#special": {
"persistent-workspaces": {
"special:s": []
}, },
"hyprland/workspaces": { "persistent-only": true,
"all-outputs": true, "show-special": true,
"format": "{name}", "special-visible-only": false,
"on-scroll-up": "hyprctl dispatch workspace e+1 1>/dev/null", "format": "{icon}"
"on-scroll-down": "hyprctl dispatch workspace e-1 1>/dev/null", },
"sort-by-number": true, "custom/workspacenew": {
"active-only": false "format": "+",
}, "tooltip": false,
"hyprland/workspaces#special": { "on-click": "~/.scripts/workspace-new.sh"
"persistent-workspaces": { },
"special:s": [] "hyprland/window": {
}, "max-length": 100,
"persistent-only": true, "separate-outputs": true,
"show-special": true, "hide-empty-text": true
"special-visible-only": false, },
"format": "{icon}" "custom/mediaplayer": {
}, "format": "{text}",
"custom/workspacenew": { "return-type": "json",
"format": "+", "max-length": 100,
"tooltip": false, "format-icons": {
"on-click": "~/.scripts/workspace-new.sh" "spotify": "",
}, "default": ""
"hyprland/window": {
"max-length": 100,
"separate-outputs": true,
"hide-empty-text": true
},
"custom/mediaplayer": {
"format": "{text}",
"return-type": "json",
"max-length": 100,
"format-icons": {
"spotify": "",
"default": ""
},
"escape": true,
"exec": "$HOME/.config/waybar/modules/mediaplayer.py 2> /dev/null",
"on-click": "playerctl play-pause",
"on-click-right": "~/.scripts/lyrics-widgets.sh",
"on-scroll-up": "playerctl next",
"on-scroll-down": "playerctl previous"
},
"tray": {
"icon-size": 15,
"spacing": 5
}, },
"escape": true,
"exec": "$HOME/.config/waybar/modules/mediaplayer.py 2> /dev/null",
"on-click": "playerctl play-pause",
"on-click-right": "~/.scripts/lyrics-widgets.sh",
"on-scroll-up": "playerctl next",
"on-scroll-down": "playerctl previous"
},
"tray": {
"icon-size": 15,
"spacing": 5
},
// Not used // Not used
"network": { "network": {
"format-wifi": " {essid} ({signalStrength}%)", "format-wifi": " {essid} ({signalStrength}%)",
"format-ethernet": "{ifname}: {ipaddr}/{cidr} ", "format-ethernet": "{ifname}: {ipaddr}/{cidr} ",
"format-linked": "{ifname} (No IP)", "format-linked": "{ifname} (No IP)",
"format": "", "format": "",
"format-disconnected": "󰌙", "format-disconnected": "󰌙",
"format-alt": "{ifname}: {ipaddr}/{cidr}", "format-alt": "{ifname}: {ipaddr}/{cidr}",
"on-click": "wl-copy $(ip address show up scope global | grep inet | head -n1 | cut -d/ -f 1 | tr -d [:space:] | cut -c5-)", "on-click": "wl-copy $(ip address show up scope global | grep inet | head -n1 | cut -d/ -f 1 | tr -d [:space:] | cut -c5-)",
"on-click-right": "wl-copy $(ip address show up scope global | grep inet6 | head -n1 | cut -d/ -f 1 | tr -d [:space:] | cut -c6-)", "on-click-right": "wl-copy $(ip address show up scope global | grep inet6 | head -n1 | cut -d/ -f 1 | tr -d [:space:] | cut -c6-)",
"tooltip-format": " {bandwidthUpBits}  {bandwidthDownBits}\n{ifname}\n{ipaddr}/{cidr}\n", "tooltip-format": " {bandwidthUpBits}  {bandwidthDownBits}\n{ifname}\n{ipaddr}/{cidr}\n",
"tooltip-format-wifi": " {essid} {frequency}MHz\nStrength: {signaldBm}dBm ({signalStrength}%)\nIP: {ipaddr}/{cidr}\n {bandwidthUpBits}  {bandwidthDownBits}", "tooltip-format-wifi": " {essid} {frequency}MHz\nStrength: {signaldBm}dBm ({signalStrength}%)\nIP: {ipaddr}/{cidr}\n {bandwidthUpBits}  {bandwidthDownBits}",
"interval": 10, "interval": 10,
"max-length": 12 "max-length": 12
}, },
"custom/storage": { "custom/storage": {
"format": " {}", "format": " {}",
"format-alt": "{percentage}% ", "format-alt": "{percentage}% ",
"format-alt-click": "click-right", "format-alt-click": "click-right",
"return-type": "json", "return-type": "json",
"interval": 60, "interval": 60,
"exec": "~/.config/waybar/modules/storage.sh" "exec": "~/.config/waybar/modules/storage.sh"
}, },
"idle_inhibitor": { "idle_inhibitor": {
"format": "{icon}", "format": "{icon}",
"format-icons": { "format-icons": {
"activated": "", "activated": "",
"deactivated": "" "deactivated": ""
},
"tooltip": "true"
}, },
"custom/weather": { "tooltip": "true"
"format": "{}", },
"format-alt": "{alt}: {}", "custom/weather": {
"format-alt-click": "click-right", "format": "{}",
"interval": 3600, "format-alt": "{alt}: {}",
"exec": "curl -s 'https://wttr.in/?format=1'", "format-alt-click": "click-right",
//"return-type": "json", "interval": 3600,
//"exec": "~/.config/waybar/modules/weather.sh", "exec": "curl -s 'https://wttr.in/?format=1'",
"exec-if": "ping wttr.in -c1" //"return-type": "json",
//"exec": "~/.config/waybar/modules/weather.sh",
"exec-if": "ping wttr.in -c1"
},
"custom/pacman": {
"format": "<big>􏆲</big> {}",
"interval": 3600, // every hour
"exec": "checkupdates | wc -l", // # of updates
"exec-if": "exit 0", // always run; consider advanced run conditions
"on-click": "ghostty -e 'paru'; pkill -SIGRTMIN+8 waybar", // update system
"signal": 8,
"max-length": 7,
"min-length": 3
},
"custom/spotify": {
"exec": "~/.config/waybar/mediaplayer.py --player spotify",
"format": "{} ",
"return-type": "json",
"on-click": "playerctl play-pause",
"on-scroll-up": "playerctl next",
"on-scroll-down": "playerctl previous"
},
"custom/media": {
"format": "{0} {1}",
"return-type": "json",
"max-length": 40,
"format-icons": {
"spotify": "",
"default": "🎜"
}, },
"custom/pacman": { "escape": true
"format": "<big>􏆲</big> {}", //"exec": "~/.config/waybar/mediaplayer.py" // Script in resources folder
"interval": 3600, // every hour // "exec": "~/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
"exec": "checkupdates | wc -l", // # of updates },
"exec-if": "exit 0", // always run; consider advanced run conditions "custom/gammastep": {
"on-click": "ghostty -e 'paru'; pkill -SIGRTMIN+8 waybar", // update system "interval": 5,
"signal": 8, "return-type": "json",
"max-length": 7, "exec": {
"min-length": 3 "pre": "if unit_status=\"$(systemctl --user is-active gammastep)\"; then\nstatus=\"$unit_status ($(journalctl --user -u gammastep.service -g 'Period: ' | tail -1 | cut -d ':' -f6 | xargs))\"\nelse\nstatus=\"$unit_status\"\nfi",
"alt": "${status:-inactive}",
"tooltip": "Gammastep is $status"
}, },
"custom/spotify": { "format": "{icon}",
"exec": "~/.config/waybar/mediaplayer.py --player spotify", "format-icons": {
"format": "{} ", "activating": "󰁪 ",
"return-type": "json", "deactivating": "󰁪 ",
"on-click": "playerctl play-pause", "inactive": "? ",
"on-scroll-up": "playerctl next", "active (Night)": " ",
"on-scroll-down": "playerctl previous" "active (Nighttime)": " ",
"active (Transition (Night)": " ",
"active (Transition (Nighttime)": " ",
"active (Day)": " ",
"active (Daytime)": " ",
"active (Transition (Day)": " ",
"active (Transition (Daytime)": " "
}, },
"custom/media": { "on-click": "systemctl --user is-active gammastep && systemctl --user stop gammastep || systemctl --user start gammastep"
"format": "{0} {1}", },
"return-type": "json", "mpd": {
"max-length": 40, "max-length": 25,
"format-icons": { "format": "<span foreground='#bb9af7'></span> {title}",
"spotify": "", "format-paused": " {title}",
"default": "🎜" "format-stopped": "<span foreground='#bb9af7'></span>",
}, "format-disconnected": "",
"escape": true "on-click": "mpc --quiet toggle",
//"exec": "~/.config/waybar/mediaplayer.py" // Script in resources folder "on-click-right": "mpc update; mpc ls | mpc add",
// "exec": "~/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name "on-click-middle": "ghostty -e ncmpcpp",
}, "on-scroll-up": "mpc --quiet prev",
"custom/gammastep": { "on-scroll-down": "mpc --quiet next",
"interval": 5, "smooth-scrolling-threshold": 5,
"return-type": "json", "tooltip-format": "{title} - {artist} ({elapsedTime:%M:%S}/{totalTime:%H:%M:%S})"
"exec": { },
"pre": "if unit_status=\"$(systemctl --user is-active gammastep)\"; then\nstatus=\"$unit_status ($(journalctl --user -u gammastep.service -g 'Period: ' | tail -1 | cut -d ':' -f6 | xargs))\"\nelse\nstatus=\"$unit_status\"\nfi", "custom/title": {
"alt": "${status:-inactive}", "format": "{}",
"tooltip": "Gammastep is $status" "interval": 0,
}, "return-type": "json",
"format": "{icon}", //"max-length": 35,
"format-icons": { "tooltip": false
"activating": "󰁪 ", },
"deactivating": "󰁪 ", "custom/title#name": {
"inactive": "? ", "format": "{}",
"active (Night)": " ", "interval": 0,
"active (Nighttime)": "", "return-type": "json",
"active (Transition (Night)": " ", "max-length": 35,
"active (Transition (Nighttime)": " ", "exec": "$HOME/.scripts/title"
"active (Day)": " ", },
"active (Daytime)": " ", /*"custom/keyboard": {
"active (Transition (Day)": " ",
"active (Transition (Daytime)": " "
},
"on-click": "systemctl --user is-active gammastep && systemctl --user stop gammastep || systemctl --user start gammastep"
},
"mpd": {
"max-length": 25,
"format": "<span foreground='#bb9af7'></span> {title}",
"format-paused": " {title}",
"format-stopped": "<span foreground='#bb9af7'></span>",
"format-disconnected": "",
"on-click": "mpc --quiet toggle",
"on-click-right": "mpc update; mpc ls | mpc add",
"on-click-middle": "ghostty -e ncmpcpp",
"on-scroll-up": "mpc --quiet prev",
"on-scroll-down": "mpc --quiet next",
"smooth-scrolling-threshold": 5,
"tooltip-format": "{title} - {artist} ({elapsedTime:%M:%S}/{totalTime:%H:%M:%S})"
},
"custom/title": {
"format": "{}",
"interval": 0,
"return-type": "json",
//"max-length": 35,
"tooltip": false
},
"custom/title#name": {
"format": "{}",
"interval": 0,
"return-type": "json",
"max-length": 35,
"exec": "$HOME/.scripts/title"
},
/*"custom/keyboard": {
"format": " {}", "format": " {}",
"interval": 1, "interval": 1,
"exec": "$HOME/.config/waybar/get_kbdlayout.sh" "exec": "$HOME/.config/waybar/get_kbdlayout.sh"
},*/ },*/
"pulseaudio": { "pulseaudio": {
"scroll-step": 3, // %, can be a float "scroll-step": 3, // %, can be a float
"format": "{icon} {volume}% {format_source}", "format": "{icon} {volume}% {format_source}",
"format-bluetooth": "{volume}% {icon} {format_source}", "format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": " {icon} {format_source}", "format-bluetooth-muted": " {icon} {format_source}",
"format-muted": " {format_source}", "format-muted": " {format_source}",
//"format-source": "{volume}% ", //"format-source": "{volume}% ",
//"format-source-muted": "", //"format-source-muted": "",
"format-source": "", "format-source": "",
"format-source-muted": "", "format-source-muted": "",
"format-icons": { "format-icons": {
"headphone": "", "headphone": "",
"phone": "", "phone": "",
"portable": "", "portable": "",
"car": "", "car": "",
"default": ["", "", ""] "default": ["", "", ""]
},
"on-click": "pavucontrol",
"on-click-right": "amixer sset Master toggle"
}, },
"bluetooth": { "on-click": "pavucontrol",
"format-on": "󰂯", "on-click-right": "amixer sset Master toggle"
"format-off": "󰂲", },
"format-disabled": "", // an empty format will hide the module "bluetooth": {
"format-connected": "󰂱 {num_connections}", "format-on": "󰂯",
"tooltip-format-connected": "{device_enumerate}", "format-off": "󰂲",
"tooltip-format-enumerate-connected": "{device_alias}\t{device_address}", "format-disabled": "", // an empty format will hide the module
"on-click": "blueberry", "format-connected": "󰂱 {num_connections}",
"max-length": 3, "tooltip-format-connected": "{device_enumerate}",
"min-length": 3 "tooltip-format-enumerate-connected": "{device_alias}\t{device_address}",
} "on-click": "blueberry",
"max-length": 3,
"min-length": 3
}
} }

View File

@@ -11,18 +11,18 @@ if [ -n "$1" ]; then
pid=$(pgrep -x "hypridle") pid=$(pgrep -x "hypridle")
if [ -n "$pid" ]; then if [ -n "$pid" ]; then
killall hypridle > /dev/null 2>&1 killall hypridle > /dev/null 2>&1
notify-send "Caffeine enabled" "POWERRR!!!"
else else
hyprctl dispatch exec hypridle > /dev/null 2>&1 hyprctl dispatch exec hypridle > /dev/null 2>&1
notify-send "Caffeine disabled" "zzz..."
fi fi
exit 0 exit 0
fi fi
sleep 0.3 # Allow hypridle to start # sleep 0.2 # Allow hypridle to start
pid=$(pgrep -x "hypridle") pid=$(pgrep -x "hypridle")
if [ -n "$pid" ]; then if [ -n "$pid" ]; then
output "inactive" "inactive" output "inactive" "inactive"
notify-send "Caffeine disabled" "zzz..."
else else
output "active" "active" output "active" "active"
notify-send "Caffeine enabled" "POWERRR!!!"
fi fi