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
which can provide:
SDDM theme # Breeze is enough
kcalc/kalc # calculator(s)
kcolorchooser # works smoothly on hyprland
kcalc/kalc # calculator(s), what's the difference?
kcolorchooser # or hyprpicker
pipewire & friends
...
@@ -14,31 +14,28 @@ hyprpaper
hypridle
hyprlock
hyprshot
hyprlicker # kcolorchooser also works though
hyprpicker
hyprland-plugin-hyprexpo # scale workspaces and put them in a grid
# 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
# terminal emulator(s)
kitty # normal terminal
ghostty # floating terminal, for btop for example#
ghostty # floating terminal, for btop for example
# under surface
mako # notification daemon
gnome-keyring # --password-store=gnome-libsecret
mako # notification daemon
gnome-keyring # --password-store=gnome-libsecret
wl-clipboard
cliphist # clipboard history
network-manager-applet # nm-applet
slurp # region selector
wf-recorder # screen recorder
cliphist # clipboard history
slurp # region selector
wf-recorder # screen recorder
brightnessctl
playerctl
pamixer
qt5ct
qt6ct
# GUI
waybar
@@ -46,12 +43,13 @@ eww
wlogout
rofi(-wayland)
mpv
blueman # bluetooth GUI & applet
network-manager-applet # nm-applet
blueman # bluetooth GUI & applet
pavucontrol
gnome-text-editor # or kwrite, just notepad replacement
btop # system monitor
activate-linux # :/
polkit-gnome # polkit authentication agent
gnome-text-editor # or kwrite, just notepad replacement
btop # system monitor
activate-linux # :/
polkit-gnome # polkit authentication agent
# fonts & themes
maplemono-nf-cn / ttf-maplemono-nf-cn-unhinted (archlinuxcn)
@@ -62,6 +60,9 @@ spicetify # spotify tweaks
spicetify-maketplace # spotify themes
nwg-look # theme of GTK apps
catppuccin-gtk-theme-mocha # theme of GTK apps
kvantum
qt5ct
qt6ct
# utils
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)
@@ -12,7 +12,7 @@ btrfs subvolume create /mnt/@swap
touch /mnt/@swap/swapfile
```
3. 设置 COW 禁用属性
3. 禁用 COW
```bash
chattr +C /mnt/@swap/swapfile
@@ -44,9 +44,7 @@ swapon --show
7. 修改 `/etc/fstab` 以自动挂载 swap 文件:
```conf
# Btrfs @swap subvolume
UUID={btrfs-uuid} /swap btrfs subvol=@swap,defaults,noatime 0 0
UUID={btrfs-uuid} /swap btrfs rw,noatime,ssd,discard=async,space_cache=v2,subvol=/@swap 0 0
# Swap file
/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
function close() {
if pgrep -x "waybar" > /dev/null; then
killall -q waybar
# Wait until the processes have been shut down
while pgrep -x waybar >/dev/null; do sleep 1; done
fi
killall -q waybar
# Also close the lyrics widget if open
if eww active-windows | grep -q "lyrics-single"; then
@@ -15,23 +10,32 @@ function close() {
}
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 &
}
if [ -z "$1" ]; then
close
while pgrep -x "waybar" >/dev/null; do
sleep 0.2
done
open
elif [ "$1" = "close" ]; then
if ! pgrep -x "waybar" > /dev/null; then
if ! pgrep -x "waybar" >/dev/null; then
exit 1
fi
close
elif [ "$1" = "open" ]; then
if pgrep -x "waybar" > /dev/null; then
if pgrep -x "waybar" >/dev/null; then
exit 1
fi
open
else
echo "Usage: $0 [close|open]"
exit 1
fi
fi

View File

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

View File

@@ -24,4 +24,4 @@ env = NVD_BACKEND,direct
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
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_out = 0, 3, 3, 3
gaps_workspaces = 50
border_size = 1
border_size = 2
resize_on_border = 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, E, exec, dolphin --new-window # Launch Dolphin (file manager)
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, Space, exec, eww open main --toggle # Launch dashboard (eww)
bind = Super+Shift, V, exec, pavucontrol # Launch pavucontrol (volume mixer)

View File

@@ -1,431 +1,431 @@
{
// -------------------------------------------------------------------------
// Global configuration
// -------------------------------------------------------------------------
"layer": "top",
"position": "top",
"height": 55,
"margin-left": 0,
"margin-bottom": 0,
"margin-right": 0,
"spacing": 2, // Gaps between modules (px)
"modules-left": [
"custom/rofi",
// "hyprland/workspaces",
// "custom/workspacenew",
"group/workspaceactions",
"hyprland/window",
//"hyprland/submap",
//"idle_inhibitor",
//"mpd"
"custom/mediaplayer"
],
"modules-center": [
"clock#date"
//"custom/gammastep"
],
"modules-right": [
// "network#speed",
// "memory",
// "cpu",
// "battery",
// //"pulseaudio",
// "backlight",
// "wireplumber",
"group/monitors",
// "bluetooth",
// "network",
"tray",
"custom/caffeine",
"custom/power"
],
// -------------------------------------------------------------------------
// Modules
// -------------------------------------------------------------------------
// Separators
"custom/sp1": {
"format": " | ",
"tooltip": false
},
"custom/sp2": {
"format": " |",
"tooltip": false
},
// -------------------------------------------------------------------------
// Global configuration
// -------------------------------------------------------------------------
"layer": "top",
"position": "top",
"height": 55,
"margin-left": 0,
"margin-bottom": 0,
"margin-right": 0,
"spacing": 2, // Gaps between modules (px)
"modules-left": [
"custom/rofi",
// "hyprland/workspaces",
// "custom/workspacenew",
"group/workspaceactions",
"hyprland/window",
//"hyprland/submap",
//"idle_inhibitor",
//"mpd"
"custom/mediaplayer"
],
"modules-center": [
"clock#date"
//"custom/gammastep"
],
"modules-right": [
// "network#speed",
// "memory",
// "cpu",
// "battery",
// //"pulseaudio",
// "backlight",
// "wireplumber",
"group/monitors",
// "bluetooth",
// "network",
"tray",
"custom/caffeine",
"custom/power"
],
// -------------------------------------------------------------------------
// Modules
// -------------------------------------------------------------------------
// Separators
"custom/sp1": {
"format": " | ",
"tooltip": false
},
"custom/sp2": {
"format": " |",
"tooltip": false
},
// Buttons
"custom/power": {
"format": "󰐥",
"tooltip": false,
"on-click": "wlogout",
"on-click-right": "hyprctl dispatch killactive",
"min-length": 2,
"max-length": 2
},
"custom/rofi": {
"format": "",
"tooltip": false,
// "on-click-right": "fuzzel -l 0 -p '>> ' | xargs -r sh -c",
// "on-click": "fuzzel",
// "on-click-middle": "pkill -9 fuzzel",
"on-click": "eww open main --toggle",
"on-click-right": "pkill rofi || rofi -show drun",
"min-length": 2,
"max-length": 2
},
"custom/caffeine": {
"format": "{icon}",
"return-type": "json",
"interval": "once",
"exec": "$HOME/.config/waybar/modules/caffeine.sh",
"on-click": "$HOME/.config/waybar/modules/caffeine.sh toggle && sleep 1",
"exec-on-event": true,
"min-length": 2,
"max-length": 2,
"tooltip": false,
"format-icons": {
"active": "",
"inactive": ""
}
},
// Buttons
"custom/power": {
"format": "󰐥",
"tooltip": false,
"on-click": "wlogout",
"on-click-right": "hyprctl dispatch killactive",
"min-length": 2,
"max-length": 2
},
"custom/rofi": {
"format": "",
"tooltip": false,
// "on-click-right": "fuzzel -l 0 -p '>> ' | xargs -r sh -c",
// "on-click": "fuzzel",
// "on-click-middle": "pkill -9 fuzzel",
"on-click": "eww open main --toggle",
"on-click-right": "pkill rofi || rofi -show drun",
"min-length": 2,
"max-length": 2
},
"custom/caffeine": {
"format": "{icon}",
"return-type": "json",
"interval": "once",
"exec": "$HOME/.config/waybar/modules/caffeine.sh",
"on-click": "$HOME/.config/waybar/modules/caffeine.sh toggle && sleep 0.2",
"exec-on-event": true,
"min-length": 2,
"max-length": 2,
"tooltip": false,
"format-icons": {
"active": "",
"inactive": ""
}
},
// Time and Date
"clock": {
"format": " {:%H:%M  %e %b}",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"today-format": "<b>{}</b>"
},
"clock#date": {
"format": "󰥔 {:%H:%M |  %e %b}",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt>{calendar}</tt>",
"today-format": "<b>{}</b>"
},
"clock#1": {
"format": " {:%a}",
"tooltip": false,
"on-click": "gsimplecal"
},
"clock#2": {
"format": " {:%d-%h-%Y}",
"tooltip": false,
"on-click": "gsimplecal"
},
"clock#3": {
"format": " {:%H:%M:%S %p}",
"tooltip": false,
"on-click": "gsimplecal"
},
"custom/screenshot_t": {
"format": " ",
"on-click": "~/.config/hypr/scripts/screenshot_full",
"on-click-right": "~/.config/hypr/scripts/screenshot_area"
},
// Time and Date
"clock": {
"format": " {:%H:%M  %e %b}",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"today-format": "<b>{}</b>"
},
"clock#date": {
"format": "󰥔 {:%H:%M |  %e %b}",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt>{calendar}</tt>",
"today-format": "<b>{}</b>"
},
"clock#1": {
"format": " {:%a}",
"tooltip": false,
"on-click": "gsimplecal"
},
"clock#2": {
"format": " {:%d-%h-%Y}",
"tooltip": false,
"on-click": "gsimplecal"
},
"clock#3": {
"format": " {:%H:%M:%S %p}",
"tooltip": false,
"on-click": "gsimplecal"
},
"custom/screenshot_t": {
"format": " ",
"on-click": "~/.config/hypr/scripts/screenshot_full",
"on-click-right": "~/.config/hypr/scripts/screenshot_area"
},
// System monitors
"group/monitors": {
"modules": ["network#speed", "temperature", "memory", "cpu", "battery", "backlight", "wireplumber"],
"orientation": "inherit"
// System monitors
"group/monitors": {
"modules": ["network#speed", "temperature", "memory", "cpu", "battery", "backlight", "wireplumber"],
"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": {
"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
},
"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
"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
},
// Hyprland
"group/workspaceactions": {
"modules": ["hyprland/workspaces#special", "hyprland/workspaces", "custom/workspacenew"],
"orientation": "inherit"
// Hyprland
"group/workspaceactions": {
"modules": ["hyprland/workspaces#special", "hyprland/workspaces", "custom/workspacenew"],
"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": {
"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": []
},
"persistent-only": true,
"show-special": true,
"special-visible-only": false,
"format": "{icon}"
},
"custom/workspacenew": {
"format": "+",
"tooltip": false,
"on-click": "~/.scripts/workspace-new.sh"
},
"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
"persistent-only": true,
"show-special": true,
"special-visible-only": false,
"format": "{icon}"
},
"custom/workspacenew": {
"format": "+",
"tooltip": false,
"on-click": "~/.scripts/workspace-new.sh"
},
"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
},
// Not used
"network": {
"format-wifi": " {essid} ({signalStrength}%)",
"format-ethernet": "{ifname}: {ipaddr}/{cidr} ",
"format-linked": "{ifname} (No IP)",
"format": "",
"format-disconnected": "󰌙",
"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-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-wifi": " {essid} {frequency}MHz\nStrength: {signaldBm}dBm ({signalStrength}%)\nIP: {ipaddr}/{cidr}\n {bandwidthUpBits}  {bandwidthDownBits}",
"interval": 10,
"max-length": 12
},
"custom/storage": {
"format": " {}",
"format-alt": "{percentage}% ",
"format-alt-click": "click-right",
"return-type": "json",
"interval": 60,
"exec": "~/.config/waybar/modules/storage.sh"
},
// Not used
"network": {
"format-wifi": " {essid} ({signalStrength}%)",
"format-ethernet": "{ifname}: {ipaddr}/{cidr} ",
"format-linked": "{ifname} (No IP)",
"format": "",
"format-disconnected": "󰌙",
"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-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-wifi": " {essid} {frequency}MHz\nStrength: {signaldBm}dBm ({signalStrength}%)\nIP: {ipaddr}/{cidr}\n {bandwidthUpBits}  {bandwidthDownBits}",
"interval": 10,
"max-length": 12
},
"custom/storage": {
"format": " {}",
"format-alt": "{percentage}% ",
"format-alt-click": "click-right",
"return-type": "json",
"interval": 60,
"exec": "~/.config/waybar/modules/storage.sh"
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
},
"tooltip": "true"
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
},
"custom/weather": {
"format": "{}",
"format-alt": "{alt}: {}",
"format-alt-click": "click-right",
"interval": 3600,
"exec": "curl -s 'https://wttr.in/?format=1'",
//"return-type": "json",
//"exec": "~/.config/waybar/modules/weather.sh",
"exec-if": "ping wttr.in -c1"
"tooltip": "true"
},
"custom/weather": {
"format": "{}",
"format-alt": "{alt}: {}",
"format-alt-click": "click-right",
"interval": 3600,
"exec": "curl -s 'https://wttr.in/?format=1'",
//"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": {
"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
"escape": true
//"exec": "~/.config/waybar/mediaplayer.py" // Script in resources folder
// "exec": "~/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
},
"custom/gammastep": {
"interval": 5,
"return-type": "json",
"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",
"alt": "${status:-inactive}",
"tooltip": "Gammastep is $status"
},
"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"
"format": "{icon}",
"format-icons": {
"activating": "󰁪 ",
"deactivating": "󰁪 ",
"inactive": "? ",
"active (Night)": " ",
"active (Nighttime)": " ",
"active (Transition (Night)": " ",
"active (Transition (Nighttime)": " ",
"active (Day)": " ",
"active (Daytime)": " ",
"active (Transition (Day)": " ",
"active (Transition (Daytime)": " "
},
"custom/media": {
"format": "{0} {1}",
"return-type": "json",
"max-length": 40,
"format-icons": {
"spotify": "",
"default": "🎜"
},
"escape": true
//"exec": "~/.config/waybar/mediaplayer.py" // Script in resources folder
// "exec": "~/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
},
"custom/gammastep": {
"interval": 5,
"return-type": "json",
"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",
"alt": "${status:-inactive}",
"tooltip": "Gammastep is $status"
},
"format": "{icon}",
"format-icons": {
"activating": "󰁪 ",
"deactivating": "󰁪 ",
"inactive": "? ",
"active (Night)": " ",
"active (Nighttime)": "",
"active (Transition (Night)": " ",
"active (Transition (Nighttime)": " ",
"active (Day)": " ",
"active (Daytime)": " ",
"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": {
"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": " {}",
"interval": 1,
"exec": "$HOME/.config/waybar/get_kbdlayout.sh"
},*/
"pulseaudio": {
"scroll-step": 3, // %, can be a float
"format": "{icon} {volume}% {format_source}",
"format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": " {icon} {format_source}",
"format-muted": " {format_source}",
//"format-source": "{volume}% ",
//"format-source-muted": "",
"format-source": "",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""]
},
"on-click": "pavucontrol",
"on-click-right": "amixer sset Master toggle"
"pulseaudio": {
"scroll-step": 3, // %, can be a float
"format": "{icon} {volume}% {format_source}",
"format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": " {icon} {format_source}",
"format-muted": " {format_source}",
//"format-source": "{volume}% ",
//"format-source-muted": "",
"format-source": "",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""]
},
"bluetooth": {
"format-on": "󰂯",
"format-off": "󰂲",
"format-disabled": "", // an empty format will hide the module
"format-connected": "󰂱 {num_connections}",
"tooltip-format-connected": "{device_enumerate}",
"tooltip-format-enumerate-connected": "{device_alias}\t{device_address}",
"on-click": "blueberry",
"max-length": 3,
"min-length": 3
}
"on-click": "pavucontrol",
"on-click-right": "amixer sset Master toggle"
},
"bluetooth": {
"format-on": "󰂯",
"format-off": "󰂲",
"format-disabled": "", // an empty format will hide the module
"format-connected": "󰂱 {num_connections}",
"tooltip-format-connected": "{device_enumerate}",
"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")
if [ -n "$pid" ]; then
killall hypridle > /dev/null 2>&1
notify-send "Caffeine enabled" "POWERRR!!!"
else
hyprctl dispatch exec hypridle > /dev/null 2>&1
notify-send "Caffeine disabled" "zzz..."
fi
exit 0
fi
sleep 0.3 # Allow hypridle to start
# sleep 0.2 # Allow hypridle to start
pid=$(pgrep -x "hypridle")
if [ -n "$pid" ]; then
output "inactive" "inactive"
notify-send "Caffeine disabled" "zzz..."
else
output "active" "active"
notify-send "Caffeine enabled" "POWERRR!!!"
fi