Compare commits

...
16 Commits
Author SHA1 Message Date
adrien 5a852998ea Added go abd swaybg + use a .sh for basic wofi 2025-11-07 15:17:56 +01:00
adrien 4ce511c902 Update TODO.md 2025-11-03 12:46:04 +00:00
adrien 9583419fd8 Add TODO.md 2025-11-03 08:37:30 +00:00
adrien 478cd154ab Update .config/niri/config.kdl 2025-10-10 22:31:13 +00:00
adrien a25122508f Update install.sh 2025-10-10 22:24:16 +00:00
adrien 78f4605e09 Update waybar font 2025-10-08 21:43:35 +00:00
adrien efe98deb44 Added minimal waybar 2025-10-08 21:42:19 +00:00
adrien 0b05a4d13b Removed waybar and new terminal use theme 2025-10-08 20:47:43 +00:00
adrien f57dde1200 Added swww at startup and install 2025-10-08 20:20:39 +00:00
adrien 8f08f6c0b1 Added window rule to get transparency and nice focus 2025-10-08 20:11:32 +00:00
adrien f5765d0845 Added zig and raylib in install.sh 2025-10-08 20:11:11 +00:00
adrien 080df5f2d7 Added browser bind 2025-10-08 19:11:27 +00:00
adrien 0c4e5085c2 Added pywal and binds for wofi 2025-10-08 19:09:11 +00:00
adrien 9eee45ed40 Update wallpapers path 2025-10-08 18:28:43 +00:00
adrien 5881c1c810 Added ripgrep to install.sh 2025-10-08 18:27:35 +00:00
adrien fbf117f909 Added ghostty and remove kitty config 2025-10-08 18:27:25 +00:00
33 changed files with 353 additions and 4184 deletions
+2
View File
@@ -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
+4
View File
@@ -0,0 +1,4 @@
window-decoration = none
window-padding-x = 0
window-padding-y = 0
font-family = FiraCode Nerd Font Mono
-30
View File
@@ -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
-53
View File
@@ -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
-12
View File
@@ -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
View File
@@ -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

+40 -128
View File
@@ -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"],
"layer": "top",
"position": "top",
"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>"
}
},
"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
},
"clock": {
"format": "{:%d.%m.%Y | %H:%M}"
},
"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]"
}
}
}
-54
View File
@@ -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
-12
View File
@@ -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
-33
View File
@@ -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
View File
@@ -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;
}
-136
View File
@@ -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
},
}
-149
View File
@@ -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;
}
-20
View File
@@ -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 ]
}
}
}
-52
View File
@@ -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);
}
+2
View File
@@ -0,0 +1,2 @@
#!/bin/bash
wofi -n
+17
View File
@@ -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
+3 -4
View File
@@ -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;
+5 -6
View File
@@ -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;
}
+5 -6
View File
@@ -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);
}
+15
View File
@@ -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
+201
View File
@@ -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
View File
@@ -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'"