Compare commits
16
Commits
8af7114fc0
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5a852998ea | ||
|
|
4ce511c902 | ||
|
|
9583419fd8 | ||
|
|
478cd154ab | ||
|
|
a25122508f | ||
|
|
78f4605e09 | ||
|
|
efe98deb44 | ||
|
|
0b05a4d13b | ||
|
|
f57dde1200 | ||
|
|
8f08f6c0b1 | ||
|
|
f5765d0845 | ||
|
|
080df5f2d7 | ||
|
|
0c4e5085c2 | ||
|
|
9eee45ed40 | ||
|
|
5881c1c810 | ||
|
|
fbf117f909 |
@@ -25,3 +25,5 @@ export SAL_USE_VCLPLUGIN=qt6
|
||||
export TERM=xterm
|
||||
|
||||
export PATH="$PATH:/home/adrien/.local/bin"
|
||||
|
||||
wal -i ~/Pictures/Wallpapers/pywallpaper.jpg -n --cols16 -e
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
window-decoration = none
|
||||
window-padding-x = 0
|
||||
window-padding-y = 0
|
||||
font-family = FiraCode Nerd Font Mono
|
||||
@@ -1,30 +0,0 @@
|
||||
foreground #c2c2c2
|
||||
background #0c0b0c
|
||||
background_opacity 1.0
|
||||
cursor #c2c2c2
|
||||
|
||||
active_tab_foreground #0c0b0c
|
||||
active_tab_background #c2c2c2
|
||||
inactive_tab_foreground #c2c2c2
|
||||
inactive_tab_background #0c0b0c
|
||||
|
||||
active_border_color #c2c2c2
|
||||
inactive_border_color #0c0b0c
|
||||
bell_border_color #4b3f3c
|
||||
|
||||
color0 #0c0b0c
|
||||
color8 #6a566a
|
||||
color1 #4b3f3c
|
||||
color9 #655451
|
||||
color2 #772d25
|
||||
color10 #9F3D32
|
||||
color3 #774942
|
||||
color11 #9F6259
|
||||
color4 #9f4e41
|
||||
color12 #D46857
|
||||
color5 #876d54
|
||||
color13 #B49271
|
||||
color6 #a5744e
|
||||
color14 #DC9B69
|
||||
color7 #968b8b
|
||||
color15 #c2c2c2
|
||||
@@ -1,53 +0,0 @@
|
||||
## name: Rosé Pine
|
||||
## author: mvllow
|
||||
## license: MIT
|
||||
## upstream: https://github.com/rose-pine/kitty/blob/main/dist/rose-pine.conf
|
||||
## blurb: All natural pine, faux fur and a bit of soho vibes for the classy minimalist
|
||||
|
||||
foreground #e0def4
|
||||
background #191724
|
||||
selection_foreground #e0def4
|
||||
selection_background #403d52
|
||||
|
||||
cursor #524f67
|
||||
cursor_text_color #e0def4
|
||||
|
||||
url_color #c4a7e7
|
||||
|
||||
active_tab_foreground #e0def4
|
||||
active_tab_background #26233a
|
||||
inactive_tab_foreground #6e6a86
|
||||
inactive_tab_background #191724
|
||||
|
||||
# black
|
||||
color0 #26233a
|
||||
color8 #6e6a86
|
||||
|
||||
# red
|
||||
color1 #eb6f92
|
||||
color9 #eb6f92
|
||||
|
||||
# green
|
||||
color2 #31748f
|
||||
color10 #31748f
|
||||
|
||||
# yellow
|
||||
color3 #f6c177
|
||||
color11 #f6c177
|
||||
|
||||
# blue
|
||||
color4 #9ccfd8
|
||||
color12 #9ccfd8
|
||||
|
||||
# magenta
|
||||
color5 #c4a7e7
|
||||
color13 #c4a7e7
|
||||
|
||||
# cyan
|
||||
color6 #ebbcba
|
||||
color14 #ebbcba
|
||||
|
||||
# white
|
||||
color7 #e0def4
|
||||
color15 #e0def4
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
# BEGIN_KITTY_FONTS
|
||||
font_family family='Hurmit Nerd Font' postscript_name=HurmitNF-Regular
|
||||
bold_font auto
|
||||
italic_font auto
|
||||
bold_italic_font auto
|
||||
# END_KITTY_FONTS
|
||||
window_padding_width 5
|
||||
tab_bar_style slant
|
||||
enable_audio_bell no
|
||||
notify_on_cmd_finish unfocused
|
||||
|
||||
confirm_os_window_close 0
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,53 +0,0 @@
|
||||
## name: Rosé Pine
|
||||
## author: mvllow
|
||||
## license: MIT
|
||||
## upstream: https://github.com/rose-pine/kitty/blob/main/dist/rose-pine.conf
|
||||
## blurb: All natural pine, faux fur and a bit of soho vibes for the classy minimalist
|
||||
|
||||
foreground #e0def4
|
||||
background #191724
|
||||
selection_foreground #e0def4
|
||||
selection_background #403d52
|
||||
|
||||
cursor #524f67
|
||||
cursor_text_color #e0def4
|
||||
|
||||
url_color #c4a7e7
|
||||
|
||||
active_tab_foreground #e0def4
|
||||
active_tab_background #26233a
|
||||
inactive_tab_foreground #6e6a86
|
||||
inactive_tab_background #191724
|
||||
|
||||
# black
|
||||
color0 #26233a
|
||||
color8 #6e6a86
|
||||
|
||||
# red
|
||||
color1 #eb6f92
|
||||
color9 #eb6f92
|
||||
|
||||
# green
|
||||
color2 #31748f
|
||||
color10 #31748f
|
||||
|
||||
# yellow
|
||||
color3 #f6c177
|
||||
color11 #f6c177
|
||||
|
||||
# blue
|
||||
color4 #9ccfd8
|
||||
color12 #9ccfd8
|
||||
|
||||
# magenta
|
||||
color5 #c4a7e7
|
||||
color13 #c4a7e7
|
||||
|
||||
# cyan
|
||||
color6 #ebbcba
|
||||
color14 #ebbcba
|
||||
|
||||
# white
|
||||
color7 #e0def4
|
||||
color15 #e0def4
|
||||
|
||||
+21
-5
@@ -1,4 +1,6 @@
|
||||
spawn-at-startup "waybar"
|
||||
spawn-at-startup "swww-daemon"
|
||||
spawn-at-startup "wal -i ~/Pictures/Wallpapers/pywallpaper.jpg -n --cols16"
|
||||
|
||||
layout {
|
||||
gaps 16
|
||||
@@ -8,20 +10,34 @@ layout {
|
||||
proportion 0.66667
|
||||
}
|
||||
default-column-width { proportion 0.33333; }
|
||||
|
||||
}
|
||||
|
||||
window-rule {
|
||||
match is-focused=false
|
||||
opacity 0.8
|
||||
}
|
||||
|
||||
window-rule {
|
||||
match is-focused=true
|
||||
draw-border-with-background false
|
||||
opacity 0.98
|
||||
|
||||
focus-ring {
|
||||
on
|
||||
width 4
|
||||
active-color "#7fc8ff"
|
||||
inactive-color "#505050"
|
||||
}
|
||||
border {
|
||||
off
|
||||
urgent-color "#9b0000"
|
||||
}
|
||||
}
|
||||
|
||||
binds {
|
||||
Mod+Shift+Slash { show-hotkey-overlay; }
|
||||
Mod+T hotkey-overlay-title="Open a Terminal: ghostty" { spawn "ghostty"; }
|
||||
Mod+D hotkey-overlay-title="Run an Application: wofi" { spawn "wofi --show drun"; }
|
||||
Mod+D hotkey-overlay-title="Run an Application: wofi" { spawn "~/.config/wofi/application.sh"; }
|
||||
Mod+W hotkey-overlay-title="Change Wallpaper: wofi" { spawn "~/.config/wofi/wallpaper.sh"; }
|
||||
Mod+P hotkey-overlay-title="Open Project: wofi" { spawn "~/.config/wofi/projects.sh"; }
|
||||
Super+Alt+L hotkey-overlay-title="Lock the Screen: swaylock" { spawn "swaylock"; }
|
||||
|
||||
XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"; }
|
||||
@@ -81,7 +97,7 @@ binds {
|
||||
Mod+Shift+Minus { set-window-height "-10%"; }
|
||||
Mod+Shift+Equal { set-window-height "+10%"; }
|
||||
|
||||
Mod+W { toggle-column-tabbed-display; }
|
||||
Mod+S { toggle-column-tabbed-display; }
|
||||
Mod+Space { switch-layout "next"; }
|
||||
Mod+Shift+Space { switch-layout "prev"; }
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 9.3 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 7.6 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 9.5 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 9.4 KiB |
+36
-124
@@ -1,132 +1,44 @@
|
||||
{
|
||||
"layer": "top",
|
||||
"position": "top",
|
||||
"reload_style_on_change": true,
|
||||
"modules-left": ["custom/notification","clock","custom/pacman","tray"],
|
||||
"modules-center": ["hyprland/workspaces"],
|
||||
"modules-right": ["group/expand","bluetooth","network","battery"],
|
||||
"height": 16,
|
||||
"spacing": 10,
|
||||
|
||||
"modules-left": ["clock"],
|
||||
"modules-center": ["niri/window"],
|
||||
"modules-right": ["cpu","memory","network"],
|
||||
|
||||
"hyprland/workspaces": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"active": "",
|
||||
"default": "",
|
||||
"empty": ""
|
||||
},
|
||||
"persistent-workspaces": {
|
||||
"*": [ 1,2,3,4,5 ]
|
||||
}
|
||||
},
|
||||
"custom/notification": {
|
||||
"tooltip": false,
|
||||
"format": "",
|
||||
"on-click": "swaync-client -t -sw",
|
||||
"escape": true
|
||||
},
|
||||
"clock": {
|
||||
"format": "{:%I:%M:%S %p} ",
|
||||
"interval": 1,
|
||||
"tooltip-format": "<tt>{calendar}</tt>",
|
||||
"calendar": {
|
||||
"format": {
|
||||
"today": "<span color='#fAfBfC'><b>{}</b></span>"
|
||||
}
|
||||
"format": "{:%d.%m.%Y | %H:%M}"
|
||||
},
|
||||
"actions": {
|
||||
"on-click-right": "shift_down",
|
||||
"on-click": "shift_up"
|
||||
}
|
||||
},
|
||||
"network": {
|
||||
"format-wifi": "",
|
||||
"format-ethernet":"",
|
||||
"format-disconnected": "",
|
||||
"tooltip-format-disconnected": "Error",
|
||||
"tooltip-format-wifi": "{essid} ({signalStrength}%) ",
|
||||
"tooltip-format-ethernet": "{ifname} 🖧 ",
|
||||
"on-click": "kitty nmtui"
|
||||
},
|
||||
"bluetooth": {
|
||||
"format-on": "",
|
||||
"format-off": "BT-off",
|
||||
"format-disabled": "",
|
||||
"format-connected-battery": "{device_battery_percentage}% ",
|
||||
"format-alt": "{device_alias} ",
|
||||
"tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected",
|
||||
"tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}",
|
||||
"tooltip-format-enumerate-connected": "{device_alias}\n{device_address}",
|
||||
"tooltip-format-enumerate-connected-battery": "{device_alias}\n{device_address}\n{device_battery_percentage}%",
|
||||
"on-click-right": "blueman-manager",
|
||||
},
|
||||
"battery": {
|
||||
"interval":30,
|
||||
"states": {
|
||||
"good": 95,
|
||||
"warning": 30,
|
||||
"critical": 20
|
||||
},
|
||||
"format": "{capacity}% {icon}",
|
||||
"format-charging": "{capacity}% ",
|
||||
"format-plugged": "{capacity}% ",
|
||||
"format-alt": "{time} {icon}",
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
},
|
||||
"custom/pacman": {
|
||||
"format": " {}",
|
||||
"interval": 30,
|
||||
"exec": "checkupdates | wc -l",
|
||||
"exec-if": "exit 0",
|
||||
"on-click": "kitty sh -c 'yay -Syu; echo Done - Press enter to exit; read'; pkill -SIGRTMIN+8 waybar",
|
||||
"signal": 8,
|
||||
"tooltip": false,
|
||||
},
|
||||
"custom/expand": {
|
||||
"format": "",
|
||||
"tooltip": false
|
||||
},
|
||||
"custom/endpoint":{
|
||||
"format": "|",
|
||||
"tooltip": false
|
||||
},
|
||||
"group/expand": {
|
||||
"orientation": "horizontal",
|
||||
"drawer": {
|
||||
"transition-duration": 600,
|
||||
"transition-to-left": true,
|
||||
"click-to-reveal": true
|
||||
},
|
||||
"modules": ["custom/expand", "custom/colorpicker","cpu","memory","temperature","custom/endpoint"],
|
||||
},
|
||||
"custom/colorpicker": {
|
||||
"format": "{}",
|
||||
"return-type": "json",
|
||||
"interval": "once",
|
||||
"exec": "~/.config/waybar/scripts/colorpicker.sh -j",
|
||||
"on-click": "~/.config/waybar/scripts/colorpicker.sh",
|
||||
"signal": 1
|
||||
},
|
||||
"cpu": {
|
||||
"format": "",
|
||||
"tooltip": true
|
||||
},
|
||||
"memory": {
|
||||
"format": ""
|
||||
},
|
||||
"temperature": {
|
||||
"critical-threshold": 80,
|
||||
"format": "",
|
||||
},
|
||||
"tray": {
|
||||
"icon-size": 14,
|
||||
"spacing": 10
|
||||
},
|
||||
}
|
||||
|
||||
"cpu": {
|
||||
"interval": 10,
|
||||
"format": "CPU: {}%",
|
||||
"max-length": 10
|
||||
},
|
||||
|
||||
"memory": {
|
||||
"interval": 30,
|
||||
"format": "\uf4bc {used:0.1f}G"
|
||||
},
|
||||
|
||||
"network": {
|
||||
"format": "",
|
||||
"format-ethernet": "\udb83\udc9d",
|
||||
"format-wifi": "{icon}",
|
||||
"format-disconnected": "\udb83\udc9c",
|
||||
"format-icons": ["\udb82\udd2f", "\udb82\udd1f", "\udb82\udd22", "\udb82\udd25", "\udb82\udd28"],
|
||||
"tooltip-format-wifi": "{essid} ({signalStrength}%)",
|
||||
"tooltip-format-ethernet": "{ifname}",
|
||||
"tooltip-format-disconnected": "Disconnected",
|
||||
},
|
||||
|
||||
"niri/window": {
|
||||
"format": "{}",
|
||||
"rewrite": {
|
||||
"(.*) - Mozilla Firefox": "🌎 $1",
|
||||
"(.*) - zsh": "> [$1]"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
check() {
|
||||
command -v "$1" 1>/dev/null
|
||||
}
|
||||
|
||||
|
||||
|
||||
loc="$HOME/.cache/colorpicker"
|
||||
[ -d "$loc" ] || mkdir -p "$loc"
|
||||
[ -f "$loc/colors" ] || touch "$loc/colors"
|
||||
|
||||
limit=10
|
||||
|
||||
[[ $# -eq 1 && $1 = "-l" ]] && {
|
||||
cat "$loc/colors"
|
||||
exit
|
||||
}
|
||||
|
||||
[[ $# -eq 1 && $1 = "-j" ]] && {
|
||||
text="$(head -n 1 "$loc/colors")"
|
||||
|
||||
mapfile -t allcolors < <(tail -n +2 "$loc/colors")
|
||||
# allcolors=($(tail -n +2 "$loc/colors"))
|
||||
tooltip="<b> COLORS</b>\n\n"
|
||||
|
||||
tooltip+="-> <b>$text</b> <span color='$text'></span> \n"
|
||||
for i in "${allcolors[@]}"; do
|
||||
tooltip+=" <b>$i</b> <span color='$i'></span> \n"
|
||||
done
|
||||
|
||||
cat <<EOF
|
||||
{ "text":"<span color='$text'></span>", "tooltip":"$tooltip"}
|
||||
EOF
|
||||
|
||||
exit
|
||||
}
|
||||
|
||||
check hyprpicker || {
|
||||
notify "hyprpicker is not installed"
|
||||
exit
|
||||
}
|
||||
killall -q hyprpicker
|
||||
color=$(hyprpicker)
|
||||
|
||||
check wl-copy && {
|
||||
echo "$color" | sed -z 's/\n//g' | wl-copy
|
||||
}
|
||||
|
||||
prevColors=$(head -n $((limit - 1)) "$loc/colors")
|
||||
echo "$color" >"$loc/colors"
|
||||
echo "$prevColors" >>"$loc/colors"
|
||||
sed -i '/^$/d' "$loc/colors"
|
||||
source ~/.cache/wal/colors.sh && notify-send "Color Picker" "This color has been selected: $color" -i $wallpaper
|
||||
pkill -RTMIN+1 waybar
|
||||
@@ -1,12 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Check if waybar is running
|
||||
if pgrep -x "waybar" > /dev/null; then
|
||||
# If running, kill the waybar process
|
||||
pkill -x "waybar"
|
||||
else
|
||||
# If not running, start waybar
|
||||
waybar &
|
||||
fi
|
||||
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
#!/bin/bash
|
||||
WAYBAR_DIR="$HOME/.config/waybar"
|
||||
STYLECSS="$WAYBAR_DIR/style.css"
|
||||
CONFIG="$WAYBAR_DIR/config"
|
||||
ASSETS="$WAYBAR_DIR/assets"
|
||||
THEMES="$WAYBAR_DIR/themes"
|
||||
menu() {
|
||||
find "${ASSETS}" -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" -o -iname "*.gif" \) | awk '{print "img:"$0}'
|
||||
}
|
||||
main() {
|
||||
choice=$(menu | wofi -c ~/.config/wofi/waybar -s ~/.config/wofi/style-waybar.css --show dmenu --prompt " Select Waybar (Scroll with Arrows)" -n)
|
||||
selected_wallpaper=$(echo "$choice" | sed 's/^img://')
|
||||
echo $selected_wallpaper
|
||||
if [[ "$selected_wallpaper" == "$ASSETS/experimental.png" ]]; then
|
||||
cat $THEMES/experimental/style-experimental.css > $STYLECSS
|
||||
cat $THEMES/experimental/config-experimental > $CONFIG
|
||||
pkill waybar && waybar
|
||||
elif [[ "$selected_wallpaper" == "$ASSETS/main.png" ]]; then
|
||||
cat $THEMES/default/style-default.css > $STYLECSS
|
||||
cat $THEMES/default/config-default > $CONFIG
|
||||
pkill waybar && waybar
|
||||
elif [[ "$selected_wallpaper" == "$ASSETS/line.png" ]]; then
|
||||
cat $THEMES/line/style-line.css > $STYLECSS
|
||||
cat $THEMES/line/config-line > $CONFIG
|
||||
pkill waybar && waybar
|
||||
elif [[ "$selected_wallpaper" == "$ASSETS/zen.png" ]]; then
|
||||
cat $THEMES/zen/style-zen.css > $STYLECSS
|
||||
cat $THEMES/zen/config-zen > $CONFIG
|
||||
pkill waybar && waybar
|
||||
fi
|
||||
|
||||
}
|
||||
main
|
||||
+19
-160
@@ -1,167 +1,26 @@
|
||||
@import url('../../.cache/wal/colors-waybar.css');
|
||||
@define-color foreground #eeeeee;
|
||||
@define-color foreground-inactive #aaaaaa;
|
||||
@define-color background #000000;
|
||||
|
||||
* {
|
||||
font-size:15px;
|
||||
font-family: "CodeNewRoman Nerd Font Propo";
|
||||
}
|
||||
window#waybar{
|
||||
all:unset;
|
||||
}
|
||||
.modules-left {
|
||||
padding:7px;
|
||||
margin:10 0 5 10;
|
||||
border-radius:10px;
|
||||
background: alpha(@background,.6);
|
||||
box-shadow: 0px 0px 2px rgba(0, 0, 0, .6);
|
||||
}
|
||||
.modules-center {
|
||||
padding:7px;
|
||||
margin:10 0 5 0;
|
||||
border-radius:10px;
|
||||
background: alpha(@background,.6);
|
||||
box-shadow: 0px 0px 2px rgba(0, 0, 0, .6);
|
||||
}
|
||||
.modules-right {
|
||||
padding:7px;
|
||||
margin: 10 10 5 0;
|
||||
border-radius:10px;
|
||||
background: alpha(@background,.6);
|
||||
box-shadow: 0px 0px 2px rgba(0, 0, 0, .6);
|
||||
}
|
||||
tooltip {
|
||||
background:@background;
|
||||
color: @color7;
|
||||
}
|
||||
#clock:hover, #custom-pacman:hover, #custom-notification:hover,#bluetooth:hover,#network:hover,#battery:hover, #cpu:hover,#memory:hover,#temperature:hover{
|
||||
transition: all .3s ease;
|
||||
color:@color9;
|
||||
}
|
||||
#custom-notification {
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
}
|
||||
#clock{
|
||||
padding: 0px 5px;
|
||||
color:@color7;
|
||||
transition: all .3s ease;
|
||||
}
|
||||
#custom-pacman{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
|
||||
}
|
||||
#workspaces {
|
||||
padding: 0px 5px;
|
||||
}
|
||||
#workspaces button {
|
||||
all:unset;
|
||||
padding: 0px 5px;
|
||||
color: alpha(@color9,.4);
|
||||
transition: all .2s ease;
|
||||
}
|
||||
#workspaces button:hover {
|
||||
color:rgba(0,0,0,0);
|
||||
border: none;
|
||||
text-shadow: 0px 0px 1.5px rgba(0, 0, 0, .5);
|
||||
transition: all 1s ease;
|
||||
}
|
||||
#workspaces button.active {
|
||||
color: @color9;
|
||||
border: none;
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, .5);
|
||||
}
|
||||
#workspaces button.empty {
|
||||
color: rgba(0,0,0,0);
|
||||
border: none;
|
||||
text-shadow: 0px 0px 1.5px rgba(0, 0, 0, .2);
|
||||
}
|
||||
#workspaces button.empty:hover {
|
||||
color: rgba(0,0,0,0);
|
||||
border: none;
|
||||
text-shadow: 0px 0px 1.5px rgba(0, 0, 0, .5);
|
||||
transition: all 1s ease;
|
||||
}
|
||||
#workspaces button.empty.active {
|
||||
color: @color9;
|
||||
border: none;
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, .5);
|
||||
}
|
||||
#bluetooth{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
|
||||
}
|
||||
#network{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
|
||||
}
|
||||
#battery{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
|
||||
|
||||
}
|
||||
#battery.charging {
|
||||
color: #26A65B;
|
||||
font-family: FiraCode Nerd Font Mono;
|
||||
font-size: 16px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#battery.warning:not(.charging) {
|
||||
color: #ffbe61;
|
||||
#waybar {
|
||||
color: @foreground;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#battery.critical:not(.charging) {
|
||||
color: #f53c3c;
|
||||
animation-name: blink;
|
||||
animation-duration: 0.5s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
#group-expand{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
}
|
||||
#custom-expand{
|
||||
padding: 0px 5px;
|
||||
color:alpha(@foreground,.2);
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, .7);
|
||||
transition: all .3s ease;
|
||||
}
|
||||
#custom-expand:hover{
|
||||
color:rgba(255,255,255,.2);
|
||||
text-shadow: 0px 0px 2px rgba(255, 255, 255, .5);
|
||||
}
|
||||
#custom-colorpicker{
|
||||
padding: 0px 5px;
|
||||
}
|
||||
#cpu,#memory,#temperature{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
|
||||
}
|
||||
#custom-endpoint{
|
||||
color:transparent;
|
||||
text-shadow: 0px 0px 1.5px rgba(0, 0, 0, 1);
|
||||
|
||||
}
|
||||
#tray{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
|
||||
}
|
||||
#tray menu * {
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
}
|
||||
|
||||
#tray menu separator {
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
#network,
|
||||
#cpu,
|
||||
#clock,
|
||||
#memory,
|
||||
#window {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
}
|
||||
|
||||
@@ -1,132 +0,0 @@
|
||||
{
|
||||
"layer": "top",
|
||||
"position": "top",
|
||||
"reload_style_on_change": true,
|
||||
"modules-left": ["custom/notification","clock","custom/pacman","tray"],
|
||||
"modules-center": ["hyprland/workspaces"],
|
||||
"modules-right": ["group/expand","bluetooth","network","battery"],
|
||||
|
||||
|
||||
"hyprland/workspaces": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"active": "",
|
||||
"default": "",
|
||||
"empty": ""
|
||||
},
|
||||
"persistent-workspaces": {
|
||||
"*": [ 1,2,3,4,5 ]
|
||||
}
|
||||
},
|
||||
"custom/notification": {
|
||||
"tooltip": false,
|
||||
"format": "",
|
||||
"on-click": "swaync-client -t -sw",
|
||||
"escape": true
|
||||
},
|
||||
"clock": {
|
||||
"format": "{:%I:%M:%S %p} ",
|
||||
"interval": 1,
|
||||
"tooltip-format": "<tt>{calendar}</tt>",
|
||||
"calendar": {
|
||||
"format": {
|
||||
"today": "<span color='#fAfBfC'><b>{}</b></span>"
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"on-click-right": "shift_down",
|
||||
"on-click": "shift_up"
|
||||
}
|
||||
},
|
||||
"network": {
|
||||
"format-wifi": "",
|
||||
"format-ethernet":"",
|
||||
"format-disconnected": "",
|
||||
"tooltip-format-disconnected": "Error",
|
||||
"tooltip-format-wifi": "{essid} ({signalStrength}%) ",
|
||||
"tooltip-format-ethernet": "{ifname} 🖧 ",
|
||||
"on-click": "kitty nmtui"
|
||||
},
|
||||
"bluetooth": {
|
||||
"format-on": "",
|
||||
"format-off": "BT-off",
|
||||
"format-disabled": "",
|
||||
"format-connected-battery": "{device_battery_percentage}% ",
|
||||
"format-alt": "{device_alias} ",
|
||||
"tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected",
|
||||
"tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}",
|
||||
"tooltip-format-enumerate-connected": "{device_alias}\n{device_address}",
|
||||
"tooltip-format-enumerate-connected-battery": "{device_alias}\n{device_address}\n{device_battery_percentage}%",
|
||||
"on-click-right": "blueman-manager",
|
||||
},
|
||||
"battery": {
|
||||
"interval":30,
|
||||
"states": {
|
||||
"good": 95,
|
||||
"warning": 30,
|
||||
"critical": 20
|
||||
},
|
||||
"format": "{capacity}% {icon}",
|
||||
"format-charging": "{capacity}% ",
|
||||
"format-plugged": "{capacity}% ",
|
||||
"format-alt": "{time} {icon}",
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
},
|
||||
"custom/pacman": {
|
||||
"format": " {}",
|
||||
"interval": 30,
|
||||
"exec": "checkupdates | wc -l",
|
||||
"exec-if": "exit 0",
|
||||
"on-click": "kitty sh -c 'yay -Syu; echo Done - Press enter to exit; read'; pkill -SIGRTMIN+8 waybar",
|
||||
"signal": 8,
|
||||
"tooltip": false,
|
||||
},
|
||||
"custom/expand": {
|
||||
"format": "",
|
||||
"tooltip": false
|
||||
},
|
||||
"custom/endpoint":{
|
||||
"format": "|",
|
||||
"tooltip": false
|
||||
},
|
||||
"group/expand": {
|
||||
"orientation": "horizontal",
|
||||
"drawer": {
|
||||
"transition-duration": 600,
|
||||
"transition-to-left": true,
|
||||
"click-to-reveal": true
|
||||
},
|
||||
"modules": ["custom/expand", "custom/colorpicker","cpu","memory","temperature","custom/endpoint"],
|
||||
},
|
||||
"custom/colorpicker": {
|
||||
"format": "{}",
|
||||
"return-type": "json",
|
||||
"interval": "once",
|
||||
"exec": "~/.config/waybar/scripts/colorpicker.sh -j",
|
||||
"on-click": "~/.config/waybar/scripts/colorpicker.sh",
|
||||
"signal": 1
|
||||
},
|
||||
"cpu": {
|
||||
"format": "",
|
||||
"tooltip": true
|
||||
},
|
||||
"memory": {
|
||||
"format": ""
|
||||
},
|
||||
"temperature": {
|
||||
"critical-threshold": 80,
|
||||
"format": "",
|
||||
},
|
||||
"tray": {
|
||||
"icon-size": 14,
|
||||
"spacing": 10
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,167 +0,0 @@
|
||||
@import url('../../.cache/wal/colors-waybar.css');
|
||||
|
||||
* {
|
||||
font-size:15px;
|
||||
font-family: "CodeNewRoman Nerd Font Propo";
|
||||
}
|
||||
window#waybar{
|
||||
all:unset;
|
||||
}
|
||||
.modules-left {
|
||||
padding:7px;
|
||||
margin:10 0 5 10;
|
||||
border-radius:10px;
|
||||
background: alpha(@background,.6);
|
||||
box-shadow: 0px 0px 2px rgba(0, 0, 0, .6);
|
||||
}
|
||||
.modules-center {
|
||||
padding:7px;
|
||||
margin:10 0 5 0;
|
||||
border-radius:10px;
|
||||
background: alpha(@background,.6);
|
||||
box-shadow: 0px 0px 2px rgba(0, 0, 0, .6);
|
||||
}
|
||||
.modules-right {
|
||||
padding:7px;
|
||||
margin: 10 10 5 0;
|
||||
border-radius:10px;
|
||||
background: alpha(@background,.6);
|
||||
box-shadow: 0px 0px 2px rgba(0, 0, 0, .6);
|
||||
}
|
||||
tooltip {
|
||||
background:@background;
|
||||
color: @color7;
|
||||
}
|
||||
#clock:hover, #custom-pacman:hover, #custom-notification:hover,#bluetooth:hover,#network:hover,#battery:hover, #cpu:hover,#memory:hover,#temperature:hover{
|
||||
transition: all .3s ease;
|
||||
color:@color9;
|
||||
}
|
||||
#custom-notification {
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
}
|
||||
#clock{
|
||||
padding: 0px 5px;
|
||||
color:@color7;
|
||||
transition: all .3s ease;
|
||||
}
|
||||
#custom-pacman{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
|
||||
}
|
||||
#workspaces {
|
||||
padding: 0px 5px;
|
||||
}
|
||||
#workspaces button {
|
||||
all:unset;
|
||||
padding: 0px 5px;
|
||||
color: alpha(@color9,.4);
|
||||
transition: all .2s ease;
|
||||
}
|
||||
#workspaces button:hover {
|
||||
color:rgba(0,0,0,0);
|
||||
border: none;
|
||||
text-shadow: 0px 0px 1.5px rgba(0, 0, 0, .5);
|
||||
transition: all 1s ease;
|
||||
}
|
||||
#workspaces button.active {
|
||||
color: @color9;
|
||||
border: none;
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, .5);
|
||||
}
|
||||
#workspaces button.empty {
|
||||
color: rgba(0,0,0,0);
|
||||
border: none;
|
||||
text-shadow: 0px 0px 1.5px rgba(0, 0, 0, .2);
|
||||
}
|
||||
#workspaces button.empty:hover {
|
||||
color: rgba(0,0,0,0);
|
||||
border: none;
|
||||
text-shadow: 0px 0px 1.5px rgba(0, 0, 0, .5);
|
||||
transition: all 1s ease;
|
||||
}
|
||||
#workspaces button.empty.active {
|
||||
color: @color9;
|
||||
border: none;
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, .5);
|
||||
}
|
||||
#bluetooth{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
|
||||
}
|
||||
#network{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
|
||||
}
|
||||
#battery{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
|
||||
|
||||
}
|
||||
#battery.charging {
|
||||
color: #26A65B;
|
||||
}
|
||||
|
||||
#battery.warning:not(.charging) {
|
||||
color: #ffbe61;
|
||||
}
|
||||
|
||||
#battery.critical:not(.charging) {
|
||||
color: #f53c3c;
|
||||
animation-name: blink;
|
||||
animation-duration: 0.5s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
#group-expand{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
}
|
||||
#custom-expand{
|
||||
padding: 0px 5px;
|
||||
color:alpha(@foreground,.2);
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, .7);
|
||||
transition: all .3s ease;
|
||||
}
|
||||
#custom-expand:hover{
|
||||
color:rgba(255,255,255,.2);
|
||||
text-shadow: 0px 0px 2px rgba(255, 255, 255, .5);
|
||||
}
|
||||
#custom-colorpicker{
|
||||
padding: 0px 5px;
|
||||
}
|
||||
#cpu,#memory,#temperature{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
|
||||
}
|
||||
#custom-endpoint{
|
||||
color:transparent;
|
||||
text-shadow: 0px 0px 1.5px rgba(0, 0, 0, 1);
|
||||
|
||||
}
|
||||
#tray{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
|
||||
}
|
||||
#tray menu * {
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
}
|
||||
|
||||
#tray menu separator {
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
}
|
||||
@@ -1,132 +0,0 @@
|
||||
{
|
||||
"layer": "top",
|
||||
"position": "top",
|
||||
"reload_style_on_change": true,
|
||||
"modules-left": ["custom/notification","clock","custom/pacman","tray"],
|
||||
"modules-center": ["hyprland/workspaces"],
|
||||
"modules-right": ["group/expand","bluetooth","network","battery"],
|
||||
|
||||
|
||||
"hyprland/workspaces": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"active": "",
|
||||
"default": "",
|
||||
"empty": ""
|
||||
},
|
||||
"persistent-workspaces": {
|
||||
"*": [ 1,2,3,4,5 ]
|
||||
}
|
||||
},
|
||||
"custom/notification": {
|
||||
"tooltip": false,
|
||||
"format": "",
|
||||
"on-click": "swaync-client -t -sw",
|
||||
"escape": true
|
||||
},
|
||||
"clock": {
|
||||
"format": "{:%I:%M:%S %p} ",
|
||||
"interval": 1,
|
||||
"tooltip-format": "<tt>{calendar}</tt>",
|
||||
"calendar": {
|
||||
"format": {
|
||||
"today": "<span color='#fAfBfC'><b>{}</b></span>"
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"on-click-right": "shift_down",
|
||||
"on-click": "shift_up"
|
||||
}
|
||||
},
|
||||
"network": {
|
||||
"format-wifi": "",
|
||||
"format-ethernet":"",
|
||||
"format-disconnected": "",
|
||||
"tooltip-format-disconnected": "Error",
|
||||
"tooltip-format-wifi": "{essid} ({signalStrength}%) ",
|
||||
"tooltip-format-ethernet": "{ifname} 🖧 ",
|
||||
"on-click": "kitty nmtui"
|
||||
},
|
||||
"bluetooth": {
|
||||
"format-on": "",
|
||||
"format-off": "BT-off",
|
||||
"format-disabled": "",
|
||||
"format-connected-battery": "{device_battery_percentage}% ",
|
||||
"format-alt": "{device_alias} ",
|
||||
"tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected",
|
||||
"tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}",
|
||||
"tooltip-format-enumerate-connected": "{device_alias}\n{device_address}",
|
||||
"tooltip-format-enumerate-connected-battery": "{device_alias}\n{device_address}\n{device_battery_percentage}%",
|
||||
"on-click-right": "blueman-manager",
|
||||
},
|
||||
"battery": {
|
||||
"interval":30,
|
||||
"states": {
|
||||
"good": 95,
|
||||
"warning": 30,
|
||||
"critical": 20
|
||||
},
|
||||
"format": "{capacity}% {icon}",
|
||||
"format-charging": "{capacity}% ",
|
||||
"format-plugged": "{capacity}% ",
|
||||
"format-alt": "{time} {icon}",
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
},
|
||||
"custom/pacman": {
|
||||
"format": " {}",
|
||||
"interval": 30,
|
||||
"exec": "checkupdates | wc -l",
|
||||
"exec-if": "exit 0",
|
||||
"on-click": "kitty sh -c 'yay -Syu; echo Done - Press enter to exit; read'; pkill -SIGRTMIN+8 waybar",
|
||||
"signal": 8,
|
||||
"tooltip": false,
|
||||
},
|
||||
"custom/expand": {
|
||||
"format": "",
|
||||
"tooltip": false
|
||||
},
|
||||
"custom/endpoint":{
|
||||
"format": "|",
|
||||
"tooltip": false
|
||||
},
|
||||
"group/expand": {
|
||||
"orientation": "horizontal",
|
||||
"drawer": {
|
||||
"transition-duration": 600,
|
||||
"transition-to-left": true,
|
||||
"click-to-reveal": true
|
||||
},
|
||||
"modules": ["custom/expand", "custom/colorpicker","cpu","memory","temperature","custom/endpoint"],
|
||||
},
|
||||
"custom/colorpicker": {
|
||||
"format": "{}",
|
||||
"return-type": "json",
|
||||
"interval": "once",
|
||||
"exec": "~/.config/waybar/scripts/colorpicker.sh -j",
|
||||
"on-click": "~/.config/waybar/scripts/colorpicker.sh",
|
||||
"signal": 1
|
||||
},
|
||||
"cpu": {
|
||||
"format": "",
|
||||
"tooltip": true
|
||||
},
|
||||
"memory": {
|
||||
"format": ""
|
||||
},
|
||||
"temperature": {
|
||||
"critical-threshold": 80,
|
||||
"format": "",
|
||||
},
|
||||
"tray": {
|
||||
"icon-size": 14,
|
||||
"spacing": 10
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,182 +0,0 @@
|
||||
@import url('../../.cache/wal/colors-waybar.css');
|
||||
* {
|
||||
font-size:15px;
|
||||
font-family: "CodeNewRoman Nerd Font Propo";
|
||||
}
|
||||
window#waybar{
|
||||
all:unset;
|
||||
}
|
||||
.modules-left {
|
||||
padding:7px;
|
||||
margin:10 0 5 10;
|
||||
border-radius:10px;
|
||||
background: alpha(@background,.6);
|
||||
box-shadow: 0px 0px 2px rgba(0, 0, 0, .6);
|
||||
}
|
||||
.modules-center {
|
||||
padding:7px;
|
||||
margin:10 0 5 0;
|
||||
border-radius:10px;
|
||||
background: alpha(@background,.6);
|
||||
box-shadow: 0px 0px 2px rgba(0, 0, 0, .6);
|
||||
min-width: 150.5px;
|
||||
}
|
||||
.modules-right {
|
||||
padding:7px;
|
||||
margin: 10 10 5 0;
|
||||
border-radius:10px;
|
||||
background: alpha(@background,.6);
|
||||
box-shadow: 0px 0px 2px rgba(0, 0, 0, .6);
|
||||
}
|
||||
tooltip {
|
||||
background:@background;
|
||||
color: @color7;
|
||||
}
|
||||
#clock:hover, #custom-pacman:hover, #custom-notification:hover,#bluetooth:hover,#network:hover,#battery:hover, #cpu:hover,#memory:hover,#temperature:hover{
|
||||
transition: all .3s ease;
|
||||
color:@color9;
|
||||
}
|
||||
#custom-notification {
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
}
|
||||
#clock{
|
||||
padding: 0px 5px;
|
||||
color:@color7;
|
||||
transition: all .3s ease;
|
||||
}
|
||||
#custom-pacman{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
padding: 0px 5px;
|
||||
text-shadow:none;
|
||||
}
|
||||
#workspaces button {
|
||||
all:unset;
|
||||
margin: 0px 3px;
|
||||
padding: 0px 2px;
|
||||
color:rgba(0,0,0,0);
|
||||
text-shadow:none;
|
||||
background: @color2;
|
||||
border-radius: 50%;
|
||||
transition: all .3s;
|
||||
min-width: 15px;
|
||||
}
|
||||
#workspaces button:hover {
|
||||
color:rgba(0,0,0,0);
|
||||
border: none;
|
||||
background: @color1;
|
||||
}
|
||||
#workspaces button.active {
|
||||
border: none;
|
||||
padding: 0px 2px;
|
||||
border-radius:10px;
|
||||
background: @color1;
|
||||
min-width: 30px;
|
||||
}
|
||||
#workspaces button.active:hover{
|
||||
background: @color2;
|
||||
}
|
||||
#workspaces button.empty {
|
||||
color: transparent;
|
||||
border: none;
|
||||
background: alpha(@background,.5) ;
|
||||
|
||||
}
|
||||
#workspaces button.empty:hover {
|
||||
color: rgba(0,0,0,0);
|
||||
border: none;
|
||||
text-shadow: 0px 0px 1.5px rgba(0, 0, 0, .5);
|
||||
}
|
||||
#workspaces button.empty.active {
|
||||
color: rgba(0,0,0,0);
|
||||
border: none;
|
||||
text-shadow: none;
|
||||
background: @color1;
|
||||
}
|
||||
#workspaces button.empty.active:hover{
|
||||
background: @color2;
|
||||
}
|
||||
#bluetooth{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
|
||||
}
|
||||
#network{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
|
||||
}
|
||||
#battery{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
|
||||
|
||||
}
|
||||
#battery.charging {
|
||||
color: #26A65B;
|
||||
}
|
||||
|
||||
#battery.warning:not(.charging) {
|
||||
color: #ffbe61;
|
||||
}
|
||||
|
||||
#battery.critical:not(.charging) {
|
||||
color: #f53c3c;
|
||||
animation-name: blink;
|
||||
animation-duration: 0.5s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
#group-expand{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
}
|
||||
#custom-expand{
|
||||
padding: 0px 5px;
|
||||
color:alpha(@foreground,.2);
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, .7);
|
||||
transition: all .3s ease;
|
||||
}
|
||||
#custom-expand:hover{
|
||||
color:rgba(255,255,255,.2);
|
||||
text-shadow: 0px 0px 2px rgba(255, 255, 255, .5);
|
||||
}
|
||||
#custom-colorpicker{
|
||||
padding: 0px 5px;
|
||||
}
|
||||
#cpu,#memory,#temperature{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
|
||||
}
|
||||
#custom-endpoint{
|
||||
color:transparent;
|
||||
text-shadow: 0px 0px 1.5px rgba(0, 0, 0, 1);
|
||||
|
||||
}
|
||||
#tray{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
|
||||
}
|
||||
#tray menu * {
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
}
|
||||
|
||||
#tray menu separator {
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
}
|
||||
@@ -1,136 +0,0 @@
|
||||
{
|
||||
"layer": "top",
|
||||
"position": "top",
|
||||
"margin-left": 10,
|
||||
"margin-right": 10,
|
||||
"margin-top": 7,
|
||||
"margin-bottom": 0,
|
||||
"reload_style_on_change": true,
|
||||
"modules-left": ["custom/notification","clock","custom/pacman","tray"],
|
||||
"modules-center": ["hyprland/workspaces"],
|
||||
"modules-right": ["group/expand","bluetooth","network","battery"],
|
||||
|
||||
|
||||
"hyprland/workspaces": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"active": "",
|
||||
"default": "",
|
||||
"empty": ""
|
||||
},
|
||||
"persistent-workspaces": {
|
||||
"*": [ 1,2,3,4,5 ]
|
||||
}
|
||||
},
|
||||
"custom/notification": {
|
||||
"tooltip": false,
|
||||
"format": "",
|
||||
"on-click": "swaync-client -t -sw",
|
||||
"escape": true
|
||||
},
|
||||
"clock": {
|
||||
"format": "{:%I:%M:%S %p} ",
|
||||
"interval": 1,
|
||||
"tooltip-format": "<tt>{calendar}</tt>",
|
||||
"calendar": {
|
||||
"format": {
|
||||
"today": "<span color='#fAfBfC'><b>{}</b></span>"
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"on-click-right": "shift_down",
|
||||
"on-click": "shift_up"
|
||||
}
|
||||
},
|
||||
"network": {
|
||||
"format-wifi": "",
|
||||
"format-ethernet":"",
|
||||
"format-disconnected": "",
|
||||
"tooltip-format-disconnected": "Error",
|
||||
"tooltip-format-wifi": "{essid} ({signalStrength}%) ",
|
||||
"tooltip-format-ethernet": "{ifname} 🖧 ",
|
||||
"on-click": "kitty nmtui"
|
||||
},
|
||||
"bluetooth": {
|
||||
"format-on": "",
|
||||
"format-off": "BT-off",
|
||||
"format-disabled": "",
|
||||
"format-connected-battery": "{device_battery_percentage}% ",
|
||||
"format-alt": "{device_alias} ",
|
||||
"tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected",
|
||||
"tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}",
|
||||
"tooltip-format-enumerate-connected": "{device_alias}\n{device_address}",
|
||||
"tooltip-format-enumerate-connected-battery": "{device_alias}\n{device_address}\n{device_battery_percentage}%",
|
||||
"on-click-right": "blueman-manager",
|
||||
},
|
||||
"battery": {
|
||||
"interval":30,
|
||||
"states": {
|
||||
"good": 95,
|
||||
"warning": 30,
|
||||
"critical": 20
|
||||
},
|
||||
"format": "{capacity}% {icon}",
|
||||
"format-charging": "{capacity}% ",
|
||||
"format-plugged": "{capacity}% ",
|
||||
"format-alt": "{time} {icon}",
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
},
|
||||
"custom/pacman": {
|
||||
"format": " {}",
|
||||
"interval": 30,
|
||||
"exec": "checkupdates | wc -l",
|
||||
"exec-if": "exit 0",
|
||||
"on-click": "kitty sh -c 'yay -Syu; echo Done - Press enter to exit; read'; pkill -SIGRTMIN+8 waybar",
|
||||
"signal": 8,
|
||||
"tooltip": false,
|
||||
},
|
||||
"custom/expand": {
|
||||
"format": "",
|
||||
"tooltip": false
|
||||
},
|
||||
"custom/endpoint":{
|
||||
"format": "|",
|
||||
"tooltip": false
|
||||
},
|
||||
"group/expand": {
|
||||
"orientation": "horizontal",
|
||||
"drawer": {
|
||||
"transition-duration": 600,
|
||||
"transition-to-left": true,
|
||||
"click-to-reveal": true
|
||||
},
|
||||
"modules": ["custom/expand", "custom/colorpicker","cpu","memory","temperature","custom/endpoint"],
|
||||
},
|
||||
"custom/colorpicker": {
|
||||
"format": "{}",
|
||||
"return-type": "json",
|
||||
"interval": "once",
|
||||
"exec": "~/.config/waybar/scripts/colorpicker.sh -j",
|
||||
"on-click": "~/.config/waybar/scripts/colorpicker.sh",
|
||||
"signal": 1
|
||||
},
|
||||
"cpu": {
|
||||
"format": "",
|
||||
"tooltip": true
|
||||
},
|
||||
"memory": {
|
||||
"format": ""
|
||||
},
|
||||
"temperature": {
|
||||
"critical-threshold": 80,
|
||||
"format": "",
|
||||
},
|
||||
"tray": {
|
||||
"icon-size": 14,
|
||||
"spacing": 10
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,149 +0,0 @@
|
||||
|
||||
@import url('../../.cache/wal/colors-waybar.css');
|
||||
|
||||
* {
|
||||
font-size:15px;
|
||||
font-family: "CodeNewRoman Nerd Font Propo";
|
||||
}
|
||||
window#waybar{
|
||||
border-radius:10px;
|
||||
background: alpha(@background,.6);
|
||||
box-shadow: 0px 0px 2px rgba(0, 0, 0, .6);
|
||||
}
|
||||
tooltip {
|
||||
background:@background;
|
||||
color: @color7;
|
||||
}
|
||||
#clock:hover, #custom-pacman:hover, #custom-notification:hover,#bluetooth:hover,#network:hover,#battery:hover, #cpu:hover,#memory:hover,#temperature:hover{
|
||||
transition: all .3s ease;
|
||||
color:@color9;
|
||||
}
|
||||
#custom-notification {
|
||||
padding: 0px 5px 0 10;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
}
|
||||
#clock{
|
||||
padding: 0px 5px;
|
||||
color:@color7;
|
||||
transition: all .3s ease;
|
||||
}
|
||||
#custom-pacman{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
|
||||
}
|
||||
#workspaces {
|
||||
padding: 7px 5px;
|
||||
}
|
||||
#workspaces button {
|
||||
all:unset;
|
||||
padding: 0px 5px;
|
||||
color: alpha(@color9,.4);
|
||||
transition: all .2s ease;
|
||||
}
|
||||
#workspaces button:hover {
|
||||
color:rgba(0,0,0,0);
|
||||
border: none;
|
||||
text-shadow: 0px 0px 1.5px rgba(0, 0, 0, .5);
|
||||
transition: all 1s ease;
|
||||
}
|
||||
#workspaces button.active {
|
||||
color: @color9;
|
||||
border: none;
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, .5);
|
||||
}
|
||||
#workspaces button.empty {
|
||||
color: rgba(0,0,0,0);
|
||||
border: none;
|
||||
text-shadow: 0px 0px 1.5px rgba(0, 0, 0, .2);
|
||||
}
|
||||
#workspaces button.empty:hover {
|
||||
color: rgba(0,0,0,0);
|
||||
border: none;
|
||||
text-shadow: 0px 0px 1.5px rgba(0, 0, 0, .5);
|
||||
transition: all 1s ease;
|
||||
}
|
||||
#workspaces button.empty.active {
|
||||
color: @color9;
|
||||
border: none;
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, .5);
|
||||
}
|
||||
#bluetooth{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
|
||||
}
|
||||
#network{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
|
||||
}
|
||||
#battery{
|
||||
padding: 0px 10px 0 5;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
|
||||
|
||||
}
|
||||
#battery.charging {
|
||||
color: #26A65B;
|
||||
}
|
||||
|
||||
#battery.warning:not(.charging) {
|
||||
color: #ffbe61;
|
||||
}
|
||||
|
||||
#battery.critical:not(.charging) {
|
||||
color: #f53c3c;
|
||||
animation-name: blink;
|
||||
animation-duration: 0.5s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
#group-expand{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
}
|
||||
#custom-expand{
|
||||
padding: 0px 5px;
|
||||
color:alpha(@foreground,.2);
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, .7);
|
||||
transition: all .3s ease;
|
||||
}
|
||||
#custom-expand:hover{
|
||||
color:rgba(255,255,255,.2);
|
||||
text-shadow: 0px 0px 2px rgba(255, 255, 255, .5);
|
||||
}
|
||||
#custom-colorpicker{
|
||||
padding: 0px 5px;
|
||||
}
|
||||
#cpu,#memory,#temperature{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
color:@color7;
|
||||
|
||||
}
|
||||
#custom-endpoint{
|
||||
color:transparent;
|
||||
text-shadow: 0px 0px 1.5px rgba(0, 0, 0, 1);
|
||||
|
||||
}
|
||||
#tray{
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
|
||||
}
|
||||
#tray menu * {
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
}
|
||||
|
||||
#tray menu separator {
|
||||
padding: 0px 5px;
|
||||
transition: all .3s ease;
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
{
|
||||
"layer": "top",
|
||||
"position": "top",
|
||||
"reload_style_on_change": true,
|
||||
"modules-center": ["hyprland/workspaces"],
|
||||
|
||||
|
||||
"hyprland/workspaces": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"active": "",
|
||||
"default": "",
|
||||
"empty": ""
|
||||
},
|
||||
"persistent-workspaces": {
|
||||
"*": [ 1,2,3,4,5 ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
@import url('../../.cache/wal/colors-waybar.css');
|
||||
|
||||
* {
|
||||
font-size:15px;
|
||||
font-family: "CodeNewRoman Nerd Font Propo";
|
||||
}
|
||||
window#waybar{
|
||||
all:unset;
|
||||
}
|
||||
.modules-center {
|
||||
padding:7px;
|
||||
margin:10 0 5 0;
|
||||
border-radius:10px;
|
||||
background: alpha(@background,.6);
|
||||
box-shadow: 0px 0px 2px rgba(0, 0, 0, .6);
|
||||
}
|
||||
#workspaces {
|
||||
padding: 0px 5px;
|
||||
}
|
||||
#workspaces button {
|
||||
all:unset;
|
||||
padding: 0px 5px;
|
||||
color: alpha(@color9,.4);
|
||||
transition: all .2s ease;
|
||||
}
|
||||
#workspaces button:hover {
|
||||
color:rgba(0,0,0,0);
|
||||
border: none;
|
||||
text-shadow: 0px 0px 1.5px rgba(0, 0, 0, .5);
|
||||
transition: all 1s ease;
|
||||
}
|
||||
#workspaces button.active {
|
||||
color: @color9;
|
||||
border: none;
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, .5);
|
||||
}
|
||||
#workspaces button.empty {
|
||||
color: rgba(0,0,0,0);
|
||||
border: none;
|
||||
text-shadow: 0px 0px 1.5px rgba(0, 0, 0, .2);
|
||||
}
|
||||
#workspaces button.empty:hover {
|
||||
color: rgba(0,0,0,0);
|
||||
border: none;
|
||||
text-shadow: 0px 0px 1.5px rgba(0, 0, 0, .5);
|
||||
transition: all 1s ease;
|
||||
}
|
||||
#workspaces button.empty.active {
|
||||
color: @color9;
|
||||
border: none;
|
||||
text-shadow: 0px 0px 2px rgba(0, 0, 0, .5);
|
||||
}
|
||||
Executable
+2
@@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
wofi -n
|
||||
Executable
+17
@@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
PROJECTS_DIR="$HOME/Projects"
|
||||
|
||||
menu() {
|
||||
find "$PROJECTS_DIR" -mindepth 1 -maxdepth 1 -type d | while read -r dir; do
|
||||
basename=$(basename "$dir")
|
||||
echo "$basename"
|
||||
done
|
||||
}
|
||||
|
||||
main() {
|
||||
choice=$(menu | wofi -c ~/.config/wofi/projects -s ~/.config/wofi/style-projects.css --show dmenu --prompt "Select Project:" -n)
|
||||
selected_dir=$(echo "$choice" | cut -d':' -f2-)
|
||||
[ -d "$PROJECTS_DIR/$selected_dir" ] && kitty -d "$PROJECTS_DIR/$selected_dir" nvim
|
||||
}
|
||||
main
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
window {
|
||||
all: unset;
|
||||
padding: 20px;
|
||||
border-radius: 0px;
|
||||
background-color: alpha(@background, 0.5);
|
||||
border-radius: 10px;
|
||||
background-color: rgba(50,50,50, 1);
|
||||
}
|
||||
#inner-box {
|
||||
margin: 2px;
|
||||
@@ -43,7 +43,6 @@ window {
|
||||
color: @text;
|
||||
box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.5);
|
||||
border-radius: 10;
|
||||
background-color: alpha(@background, 0.2);
|
||||
}
|
||||
#input image {
|
||||
border: none;
|
||||
@@ -78,7 +77,7 @@ window {
|
||||
#entry:selected {
|
||||
border: none;
|
||||
border-radius: 20px;
|
||||
background-color: rgba(0, 0, 0, 0.15);
|
||||
background-color: rgba(35, 35, 35, 1);
|
||||
}
|
||||
#entry:selected #text {
|
||||
color: @mauve;
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
window {
|
||||
all:unset;
|
||||
padding: 20px;
|
||||
border-radius: 0px;
|
||||
background-color: alpha(@background,.5);
|
||||
border-radius: 10px;
|
||||
background-color: rgba(50,50,50, 1);
|
||||
}
|
||||
#inner-box {
|
||||
margin: 2px;
|
||||
@@ -42,9 +42,8 @@ window {
|
||||
border: none;
|
||||
outline: none;
|
||||
color: @text;
|
||||
box-shadow: 1px 1px 5px rgba(0,0,0, .5);
|
||||
box-shadow: 1px 1px 5px rgba(0,0,0, 1);
|
||||
border-radius:10;
|
||||
background-color: alpha(@background,.2);
|
||||
}
|
||||
#input image {
|
||||
border: none;
|
||||
@@ -80,11 +79,11 @@ window {
|
||||
#entry:selected {
|
||||
border: none;
|
||||
border-radius: 20px;
|
||||
background-color: rgba(0, 0, 0, 0.15);
|
||||
background-color: rgba(35, 35, 35, 1);
|
||||
}
|
||||
#entry:selected #text {
|
||||
color: @mauve;
|
||||
}
|
||||
#entry:drop(active) {
|
||||
background-color: @lavender !important;
|
||||
background-color: @lavender;
|
||||
}
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
window {
|
||||
all:unset;
|
||||
padding: 20px;
|
||||
border-radius: 0px;
|
||||
background-color: alpha(@background,.5);
|
||||
border-radius: 10px;
|
||||
background-color: rgba(50,50,50, 1);
|
||||
}
|
||||
#inner-box {
|
||||
margin: 2px;
|
||||
@@ -50,8 +50,7 @@ window {
|
||||
outline: none;
|
||||
color: @text;
|
||||
box-shadow: 1px 1px 5px rgba(0,0,0, .5);
|
||||
border-radius:10;
|
||||
background-color: alpha(@background,.2);
|
||||
border-radius:10px;
|
||||
}
|
||||
#input image {
|
||||
border: none;
|
||||
@@ -95,11 +94,11 @@ window {
|
||||
box-shadow: 1px 1px 5px rgba(255,255,255, .03);
|
||||
border: none;
|
||||
border-radius: 20px;
|
||||
background-color:transparent;
|
||||
background-color: rgba(35, 35, 35, 1);
|
||||
}
|
||||
#entry:selected #text {
|
||||
color: @mauve;
|
||||
}
|
||||
#entry:drop(active) {
|
||||
background-color: @lavender !important;
|
||||
background-color: rgba(35, 35, 35, 1);
|
||||
}
|
||||
|
||||
Executable
+15
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
WALLPAPER_DIR="$HOME/Pictures/Wallpapers/walls"
|
||||
#I dont know what the fuck I am doing
|
||||
menu() {
|
||||
find "${WALLPAPER_DIR}" -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" -o -iname "*.gif" \) | awk '{print "img:"$0}'
|
||||
}
|
||||
main() {
|
||||
choice=$(menu | wofi -c ~/.config/wofi/wallpaper -s ~/.config/wofi/style-wallpaper.css --show dmenu --prompt "Select Wallpaper:" -n)
|
||||
selected_wallpaper=$(echo "$choice" | sed 's/^img://')
|
||||
swww img "$selected_wallpaper" --transition-type any --transition-fps 60 --transition-duration .5
|
||||
wal -i "$selected_wallpaper" -n --cols16 -e
|
||||
pywalfox update
|
||||
source ~/.cache/wal/colors.sh && cp -r $wallpaper ~/Pictures/Wallpapers/pywallpaper.jpg
|
||||
}
|
||||
main
|
||||
@@ -0,0 +1,201 @@
|
||||
Add swayidle to make the screen go dark
|
||||
And add adrien user to uinput
|
||||
|
||||
---
|
||||
|
||||
### Step 1: Install `swayidle`
|
||||
|
||||
Open your terminal and install `swayidle` from the official Arch repositories. It's good practice to also install a screen locker like `swaylock` at the same time, as you'll likely want to lock your screen before it turns off.
|
||||
|
||||
```bash
|
||||
sudo pacman -S swayidle swaylock
|
||||
```
|
||||
|
||||
### Step 2: Create the Idle Management Script
|
||||
|
||||
It's cleanest to manage this with a small shell script. Let's create one in niri's configuration directory.
|
||||
|
||||
1. Create the file:
|
||||
```bash
|
||||
mkdir -p ~/.config/niri
|
||||
nano ~/.config/niri/idle.sh
|
||||
```
|
||||
|
||||
2. Paste the following content into the file. This configuration will do two things:
|
||||
* **After 10 minutes (600s):** Lock the screen with `swaylock`.
|
||||
* **After 15 minutes (900s):** Turn the display off (DPMS off).
|
||||
* **On resume (mouse/keyboard activity):** Turn the display back on (DPMS on).
|
||||
|
||||
```sh
|
||||
#!/bin/sh
|
||||
|
||||
# This script is a simple wrapper for swayidle.
|
||||
# It locks the screen after 10 minutes of inactivity,
|
||||
# and turns off the display after 15 minutes.
|
||||
|
||||
swayidle -w \
|
||||
timeout 600 'swaylock -f' \
|
||||
timeout 900 'niri msg output "*" dpms off' \
|
||||
resume 'niri msg output "*" dpms on'
|
||||
```
|
||||
|
||||
* `swayidle -w`: Starts the daemon and waits (doesn't exit).
|
||||
* `timeout 600 'swaylock -f'`: After 600 seconds (10 minutes) of inactivity, run `swaylock -f` to lock the screen.
|
||||
* `timeout 900 'niri msg output "*" dpms off'`: After 900 seconds (15 minutes), run the command to turn off all outputs (`*`). The command `niri msg` is how you control niri from the command line.
|
||||
* `resume 'niri msg output "*" dpms on'`: When activity is detected again (mouse move, key press), run the command to turn all outputs back on.
|
||||
|
||||
3. Save the file and exit `nano` (Ctrl+O, Enter, Ctrl+X).
|
||||
|
||||
4. Make the script executable:
|
||||
```bash
|
||||
chmod +x ~/.config/niri/idle.sh
|
||||
```
|
||||
|
||||
### Step 3: Autostart the Script with Niri
|
||||
|
||||
Now, we need to tell niri to run this script every time it starts.
|
||||
|
||||
1. Open your niri configuration file. If it doesn't exist, niri uses its defaults, but you can create it.
|
||||
```bash
|
||||
nano ~/.config/niri/config.kdl
|
||||
```
|
||||
|
||||
2. Add the `startup-commands` block if it doesn't exist, and add an `exec-on-startup` command to run your script. Make sure to use the full path.
|
||||
|
||||
```kdl
|
||||
// Your other niri configurations might be here...
|
||||
|
||||
startup-commands {
|
||||
// Add this line to run your idle script
|
||||
exec-on-startup "~/.config/niri/idle.sh"
|
||||
|
||||
// You might have other startup commands here, for example:
|
||||
// exec-on-startup "waybar"
|
||||
// exec-on-startup "mako"
|
||||
}
|
||||
|
||||
// More of your niri config...
|
||||
```
|
||||
|
||||
**Note:** The `~` shortcut for your home directory works in the niri config.
|
||||
|
||||
3. Save and close the file.
|
||||
|
||||
### Step 4: Apply the Changes
|
||||
|
||||
Log out of your niri session and log back in. The `idle.sh` script will now be running in the background. Your screen will lock after 10 minutes and turn off after 15 minutes of inactivity. Moving your mouse or pressing a key will wake the screen up to the `swaylock` prompt.
|
||||
|
||||
---
|
||||
|
||||
### Customization
|
||||
|
||||
* **To only turn off the screen (no lock):**
|
||||
If you *only* want the screen to go black after 15 minutes and don't want to lock it, modify your `~/.config/niri/idle.sh` script to remove the `swaylock` timeout:
|
||||
|
||||
```sh
|
||||
#!/bin/sh
|
||||
|
||||
swayidle -w \
|
||||
timeout 900 'niri msg output "*" dpms off' \
|
||||
resume 'niri msg output "*" dpms on'
|
||||
```
|
||||
This directly addresses your original request.
|
||||
|
||||
* **Changing the time:**
|
||||
Simply change the number of seconds in the script. For example, for a 5-minute screen-off time, change `900` to `300`.
|
||||
|
||||
* **Customizing swaylock:**
|
||||
You can make `swaylock` look nicer. For example, to set a solid color:
|
||||
`swaylock -f -c 000000` (for black).
|
||||
You can edit this command directly in your `idle.sh` script. Check `man swaylock` for all options.
|
||||
|
||||
---
|
||||
|
||||
Of course! Let's break down what `uinput` is, why you're getting a "permission denied" error, and exactly how to fix it on your Arch Linux system.
|
||||
|
||||
### What is `uinput`? (The Simple Explanation)
|
||||
|
||||
Think of `uinput` (User Input) as a special module in the Linux kernel. Its job is to let a regular program **pretend to be a physical input device**.
|
||||
|
||||
When you move your real mouse, the hardware sends a signal to the kernel, and the kernel tells your desktop environment, "The mouse just moved to coordinates X, Y."
|
||||
|
||||
`uinput` allows a program, like Sunshine, to do the exact same thing, but in software. Sunshine can tell the `uinput` module, "Hey, pretend a mouse just moved to coordinates X, Y," and the kernel will treat it exactly as if a real mouse did it.
|
||||
|
||||
This is essential for applications like:
|
||||
* **Sunshine/Moonlight:** To inject mouse, keyboard, and gamepad inputs coming from your client device over the network.
|
||||
* **Steam:** For the Steam Input feature, which can make a controller look like a keyboard and mouse to a game.
|
||||
* **Input Remappers:** Tools that change what your keyboard keys or controller buttons do.
|
||||
|
||||
### The Permission Problem
|
||||
|
||||
For security reasons, you don't want just *any* application to be able to create fake keyboard presses or mouse movements. If any program could do this, it would be trivial to create a keylogger or malware that could take control of your computer.
|
||||
|
||||
Because this is a powerful and potentially dangerous feature, Linux protects it with file permissions. The `uinput` functionality is exposed through a special device file: `/dev/uinput`.
|
||||
|
||||
Let's look at the permissions on that file. If you run this command in your terminal:
|
||||
|
||||
```bash
|
||||
ls -l /dev/uinput
|
||||
```
|
||||
|
||||
You will likely see something like this:
|
||||
|
||||
```
|
||||
crw-rw---- 1 root uinput 10, 223 Dec 15 10:30 /dev/uinput
|
||||
```
|
||||
|
||||
Let's break that down:
|
||||
* `c`: It's a character device file.
|
||||
* `rw-`: The **owner** (`root`) has read and write permissions.
|
||||
* `rw-`: The **group** (`uinput`) has read and write permissions.
|
||||
* `---`: **Everyone else** has no permissions at all.
|
||||
|
||||
When you run Sunshine, it runs as *your* user account (e.g., `myuser`), not as `root`. By default, your user is not in the `uinput` group. Therefore, when Sunshine tries to access `/dev/uinput` to create a virtual mouse or keyboard, the kernel sees that your user is in the "everyone else" category and says **"Permission Denied"**.
|
||||
|
||||
### The Solution: The `uinput` Group
|
||||
|
||||
The forum's advice is exactly correct. The `uinput` group was created specifically for this purpose: to grant trusted users the ability to access the `uinput` device without giving them full `root` privileges.
|
||||
|
||||
By adding your user to the `uinput` group, you are telling the system, "I trust this user account to run programs (like Sunshine) that need to create virtual input devices."
|
||||
|
||||
---
|
||||
|
||||
### How to Fix It: Step-by-Step
|
||||
|
||||
Here are the commands to solve your problem on Arch Linux.
|
||||
|
||||
**1. Add Your User to the `uinput` Group**
|
||||
|
||||
Open a terminal and run the following command. Make sure to replace `your_username` with your actual username. If you're not sure, you can run the command `whoami` to see it.
|
||||
|
||||
```bash
|
||||
sudo gpasswd -a your_username uinput
|
||||
```
|
||||
* `sudo`: Run this command with administrator privileges.
|
||||
* `gpasswd`: A command to manage group memberships.
|
||||
* `-a your_username`: The action is to **a**dd the specified user.
|
||||
* `uinput`: The group you are adding the user to.
|
||||
|
||||
**2. Apply the Changes**
|
||||
|
||||
Group membership changes only take effect when you start a new login session. The current session you are in will not have the new permissions. You have two options:
|
||||
|
||||
* **Log Out and Log Back In:** This is the cleanest and most recommended way. Log out of your Niri session completely and then log back in.
|
||||
* **Reboot:** A full reboot will also work.
|
||||
|
||||
**3. Verify the Change (Optional)**
|
||||
|
||||
After you have logged back in, you can verify that you are now a member of the group by running:
|
||||
|
||||
```bash
|
||||
groups
|
||||
```
|
||||
|
||||
You should see `uinput` listed in the output, along with your other groups.
|
||||
|
||||
```
|
||||
# Example output
|
||||
wheel audio video input uinput myuser
|
||||
```
|
||||
|
||||
Once you've done this, Sunshine should have the necessary permissions to create virtual input devices, and your mouse, keyboard, and controller should start working correctly on your Niri desktop
|
||||
+18
-2
@@ -6,7 +6,11 @@ sudo pacman -S --noconfirm --needed \
|
||||
git \
|
||||
ghostty \
|
||||
lazygit \
|
||||
swww \
|
||||
wl-clipboard \
|
||||
ripgrep \
|
||||
wofi \
|
||||
go \
|
||||
swaybg \
|
||||
starship
|
||||
|
||||
@@ -17,9 +21,13 @@ git clone https://aur.archlinux.org/yay.git /tmp/yay
|
||||
rm -rf /tmp/yay
|
||||
|
||||
yay -S --noconfirm --needed \
|
||||
python-pywal16 \
|
||||
python-pywalfox \
|
||||
ttf-firacode-nerd \
|
||||
neovim \
|
||||
yazi \
|
||||
zig \
|
||||
raylib \
|
||||
firefox
|
||||
|
||||
mkdir -p "$HOME/tmp"
|
||||
@@ -27,11 +35,19 @@ git clone https://git.bouvais.lu/adrien/Dotfiles "/tmp/dotfiles" --depth 1
|
||||
|
||||
cp -r "/tmp/dotfiles/.config/"* "$HOME/.config/"
|
||||
cp "/tmp/dotfiles/.bashrc" "$HOME/.bashrc"
|
||||
mkdir -p "$HOME/wallpapers"
|
||||
cp -r "/tmp/dotfiles/wallpapers/"* "$HOME/wallpapers/"
|
||||
mkdir -p "$HOME/Pictures/Wallpapers"
|
||||
cp -r "/tmp/dotfiles/wallpapers/"* "$HOME/Pictures/Wallpapers/"
|
||||
|
||||
rm -rf /tmp/yay
|
||||
|
||||
git config --global user.name "adrien"
|
||||
git config --global user.email "git@bouvais.lu"
|
||||
ssh-keygen -t rsa -b 4096 -C "git@bouvais.com" -f "$HOME/.ssh/id_rsa" -N ""
|
||||
|
||||
pywalfox install
|
||||
wal -i "$HOME/Pictures/Wallpapers/pywallpaper.jpg" -n --cols16
|
||||
pywalfox update
|
||||
|
||||
echo "Dont forget to add Pywalfox extension to Firefox https://addons.mozilla.org/en-US/firefox/addon/pywalfox/"
|
||||
echo "Then run 'pywalfox update'"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user