diff --git a/.config/river/boyfriends-ships.png b/.config/river/boyfriends-ships.png new file mode 100644 index 0000000..896caf4 Binary files /dev/null and b/.config/river/boyfriends-ships.png differ diff --git a/.config/river/boyfriends-ships2.png b/.config/river/boyfriends-ships2.png new file mode 100644 index 0000000..c98152b Binary files /dev/null and b/.config/river/boyfriends-ships2.png differ diff --git a/.config/river/init b/.config/river/init new file mode 100755 index 0000000..5b0b061 --- /dev/null +++ b/.config/river/init @@ -0,0 +1,33 @@ +#!/bin/sh + +dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=river +riverctl spawn "pgrep -x pipewire >/dev/null || pipewire" +riverctl spawn "/usr/libexec/xdg-desktop-portal-wlr" + +~/.config/river/load-colors + +brillo -I +riverctl spawn "pgrep -x foot >/dev/null || foot --server" +if test -f ~/.config/river/coordenadas; then + riverctl spawn "pgrep -x wlsunset >/dev/null || wlsunset $(cat ~/.config/river/coordenadas)" +else + echo "¡Falta ~/.config/river/coordenadas!" +fi +riverctl spawn "pgrep -x syncthing >/dev/null || syncthing -no-browser" +# yambar spawned by load-colors +riverctl spawn "pgrep -x kanshi >/dev/null || kanshi" + +riverctl set-repeat 30 290 + +riverctl xcursor-theme Adwaita + +riverctl focus-follows-cursor normal + +riverctl float-filter-add title Picture-in-Picture +riverctl float-filter-add title "Firefox — Sharing Indicator" +riverctl float-filter-add app-id fzf + +~/.config/river/keys + +riverctl spawn "pgrep -x stacktile >/dev/null || stacktile --per-tag-config --drop-empty-configs --primary-sublayout=stack --inner-padding=0 --outer-padding=0" +riverctl default-layout stacktile diff --git a/.config/river/keys b/.config/river/keys new file mode 100755 index 0000000..6382969 --- /dev/null +++ b/.config/river/keys @@ -0,0 +1,120 @@ +#!/bin/sh + +mod="Mod4" # Super + +riverctl map normal $mod Q close + +riverctl map normal $mod+Shift E exit + +riverctl map normal $mod J focus-view next +riverctl map normal $mod K focus-view previous + +riverctl map normal $mod+Shift J swap next +riverctl map normal $mod+Shift K swap previous + +riverctl map normal None Super_L spawn "killall -SIGUSR1 river-tag-overlay" + +# Mod+Period and Mod+Comma to focus the next/previous output +#riverctl map normal $mod Period focus-output next +#riverctl map normal $mod Comma focus-output previous + +# Mod+Shift+{Period,Comma} to send the focused view to the next/previous output +#riverctl map normal $mod+Shift Period send-to-output next +#riverctl map normal $mod+Shift Comma send-to-output previous + +riverctl map normal $mod Return zoom + +riverctl map normal $mod H send-layout-cmd stacktile "primary_ratio -0.05" +riverctl map normal $mod L send-layout-cmd stacktile "primary_ratio +0.05" +riverctl map normal $mod+Shift H send-layout-cmd stacktile "primary_count +1" +riverctl map normal $mod+Shift L send-layout-cmd stacktile "primary_count -1" + +riverctl declare-mode move-resize +riverctl map normal $mod R enter-mode move-resize + +riverctl map move-resize $mod R enter-mode normal +riverctl map move-resize None Escape enter-mode normal +riverctl map move-resize None Return enter-mode normal + +riverctl map move-resize None H move left 100 +riverctl map move-resize None J move down 100 +riverctl map move-resize None K move up 100 +riverctl map move-resize None L move right 100 + +riverctl map move-resize Control H snap left +riverctl map move-resize Control J snap down +riverctl map move-resize Control K snap up +riverctl map move-resize Control L snap right + +riverctl map move-resize Shift H resize horizontal -100 +riverctl map move-resize Shift J resize vertical 100 +riverctl map move-resize Shift K resize vertical -100 +riverctl map move-resize Shift L resize horizontal 100 + +riverctl map-pointer normal $mod BTN_LEFT move-view +riverctl map-pointer normal $mod BTN_RIGHT resize-view + +define_tag() { + riverctl map normal $mod $2 set-focused-tags $1 + riverctl map normal $mod+Shift $2 set-view-tags $1 + riverctl map normal $mod+Alt $2 toggle-focused-tags $1 + riverctl map normal $mod+Shift+Alt $2 toggle-view-tags $1 +} + +define_tag $((1 << 0)) Z +define_tag $((1 << 1)) X +define_tag $((1 << 2)) C +define_tag $((1 << 3)) B +define_tag $((1 << 4)) N +define_tag $((1 << 5)) M +define_tag $((1 << 6)) less +define_tag $((1 << 7)) greater +define_tag $((1 << 8)) question + +all_tags=$(((1 << 32) - 1)) +riverctl map normal $mod 0 set-focused-tags $all_tags +riverctl map normal $mod+Shift 0 set-view-tags $all_tags + +riverctl map normal $mod Space toggle-float +riverctl map normal $mod G toggle-fullscreen + +riverctl map normal $mod Up send-layout-cmd stacktile "primary_position top" +riverctl map normal $mod Right send-layout-cmd stacktile "primary_position right" +riverctl map normal $mod Down send-layout-cmd stacktile "primary_position bottom" +riverctl map normal $mod Left send-layout-cmd stacktile "primary_position left" +riverctl map normal $mod H send-layout-cmd stacktile "all_primary toggle" + +riverctl declare-mode passthrough +riverctl map normal $mod F11 enter-mode passthrough + +riverctl map passthrough $mod F11 enter-mode normal + +riverctl map normal $mod grave spawn 'pamixer --default-source --toggle-mute' + +riverctl map normal $mod A spawn 'fnottctl actions' +riverctl map normal $mod S spawn 'fnottctl dismiss' + +for mode in normal locked +do + # https://github.com/cdemoulins/pamixer + riverctl map $mode None XF86AudioRaiseVolume spawn 'pamixer -i 5' + riverctl map $mode None XF86AudioLowerVolume spawn 'pamixer -d 5' + riverctl map $mode None XF86AudioMute spawn 'pamixer --toggle-mute' + riverctl map $mode None XF86AudioMicMute spawn 'pamixer --default-source --toggle-mute' + + # https://github.com/altdesktop/playerctl + riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause' + riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause' + riverctl map $mode None XF86AudioPrev spawn 'playerctl previous' + riverctl map $mode None XF86AudioNext spawn 'playerctl next' + + riverctl map $mode None XF86MonBrightnessUp spawn 'brillo -A 5; brillo -O' + riverctl map $mode None XF86MonBrightnessDown spawn 'brillo -U 5; brillo -O' +done + +riverctl map normal $mod+Shift N spawn lock +riverctl map normal $mod+Shift M spawn 'lock && doas pm-suspend' +riverctl map normal $mod I spawn footclient +riverctl map normal $mod U spawn fuzzel-run +riverctl map normal $mod backslash spawn buscar-archivos +riverctl map normal None Print spawn 'grimshot copy area' diff --git a/.config/river/load-colors b/.config/river/load-colors new file mode 100755 index 0000000..0598c7e --- /dev/null +++ b/.config/river/load-colors @@ -0,0 +1,14 @@ +#!/bin/sh +. ~/.config/river/colors + +riverctl background-color 0x$background +riverctl border-color-focused 0x$border_focused +riverctl border-color-unfocused 0x$border_unfocused +riverctl border-width 5 +riverctl spawn 'killall yambar ; yambar' + +riverctl spawn "killall fnott >/dev/null ; fnott" + +if test -n "$bg"; then + riverctl spawn "killall swaybg ; swaybg --image '$bg'" +fi diff --git a/.config/themer/river-colors.sh b/.config/themer/river-colors.sh new file mode 100755 index 0000000..426067d --- /dev/null +++ b/.config/themer/river-colors.sh @@ -0,0 +1,58 @@ +#!/bin/sh +set -e + +echo "#!/bin/sh +# Autogenerated by ~/.config/themer/river-colors.sh +" > ~/.config/river/colors + +rose_pine () { + if $dark; then + border_focused=$iris + border_unfocused=$inactive + else + border_focused=$subtle + border_unfocused=$overlay + fi + echo " + export background=$base + export foreground=$text + export border_focused=$border_focused + export border_unfocused=$border_unfocused + export dark=$dark + " >> ~/.config/river/colors +} +mono () { + test ! "$dark" = true && bg="export bg=~/.config/river/wallpapers/'Abyss Reflections - Cat ears.png'" + echo " + export background=$background + export foreground=$foreground + export border_focused=$accent + export border_unfocused=$backgroundish + export dark=$dark + $bg + " >> ~/.config/river/colors +} + +if test "$1" = rose-pine; then + . ~/.config/themer/themes/rose-pine.sh + rose_pine +elif test "$1" = rose-pine-dawn; then + . ~/.config/themer/themes/rose-pine-dawn.sh + rose_pine +elif test "$1" = rose-pine-moon; then + . ~/.config/themer/themes/rose-pine-moon.sh + rose_pine +elif test "$1" = mono; then + . ~/.config/themer/themes/mono.sh + mono +elif test "$1" = mono-light; then + . ~/.config/themer/themes/mono-light.sh + mono +else + if test -n "$1"; then + echo "I don't know that theme" + else + echo "No theme specified" + fi + exit 1 +fi diff --git a/.config/themer/waylock.sh b/.config/themer/waylock.sh new file mode 100755 index 0000000..dac9930 --- /dev/null +++ b/.config/themer/waylock.sh @@ -0,0 +1,43 @@ +#!/bin/sh +set -e + +rose_pine () { + echo "# Autogenerated by ~/.config/themer/waylock.sh +[colors] +init_color = 0x$base +input_color = 0x$pine +fail_color = 0x$love +" > ~/.config/waylock/waylock.toml +} +mono () { + echo "# Autogenerated by ~/.config/themer/waylock.sh +[colors] +init_color = 0x$background +input_color = 0x$foreground +fail_color = 0x$foregroundish +" > ~/.config/waylock/waylock.toml +} + +if test "$1" = rose-pine; then + . ~/.config/themer/themes/rose-pine.sh + rose_pine +elif test "$1" = rose-pine-dawn; then + . ~/.config/themer/themes/rose-pine-dawn.sh + rose_pine +elif test "$1" = rose-pine-moon; then + . ~/.config/themer/themes/rose-pine-moon.sh + rose_pine +elif test "$1" = mono; then + . ~/.config/themer/themes/mono.sh + mono +elif test "$1" = mono-light; then + . ~/.config/themer/themes/mono-light.sh + mono +else + if test -n "$1"; then + echo "I don't know that theme" + else + echo "No theme specified" + fi + exit 1 +fi diff --git a/.config/themer/yambar.sh b/.config/themer/yambar.sh new file mode 100755 index 0000000..4f6e591 --- /dev/null +++ b/.config/themer/yambar.sh @@ -0,0 +1,44 @@ +#!/bin/sh +set -e + +rose_pine () { + echo "# Autogenerated by ~/.config/themer/yambar.sh +background: &bg ${base}ff +foreground: &fg ${text}ff +accent: &accent ${iris}ff +" > ~/.config/yambar/config.yml +} +mono () { + echo "# Autogenerated by ~/.config/themer/yambar.sh +background: &bg ${background}ff +backgroundish: &bgish ${backgroundish}ff +foreground: &fg ${foreground}ff +accent: &accent ${accent}ff +" > ~/.config/yambar/config.yml +} + +if test "$1" = rose-pine; then + . ~/.config/themer/themes/rose-pine.sh + rose_pine +elif test "$1" = rose-pine-dawn; then + . ~/.config/themer/themes/rose-pine-dawn.sh + rose_pine +elif test "$1" = rose-pine-moon; then + . ~/.config/themer/themes/rose-pine-moon.sh + rose_pine +elif test "$1" = mono; then + . ~/.config/themer/themes/mono.sh + mono +elif test "$1" = mono-light; then + . ~/.config/themer/themes/mono-light.sh + mono +else + if test -n "$1"; then + echo "I don't know that theme" + else + echo "No theme specified" + fi + exit 1 +fi + +cat ~/.config/yambar/real-config.yml >> ~/.config/yambar/config.yml diff --git a/.config/yambar/real-config.yml b/.config/yambar/real-config.yml new file mode 100644 index 0000000..68caeb7 --- /dev/null +++ b/.config/yambar/real-config.yml @@ -0,0 +1,142 @@ +bar: + height: 16 + location: top + layer: top + spacing: 8 + right-margin: 8 + background: *bg + foreground: *fg + + font: sans-serif:size=12 + + left: + - river: + anchors: + base: &river_base + margin: 8 + tag: id + default: &river_default + default: {string: {text: "{id}"}} + values: &river_values + 1: {string: {text: "I"}} + 2: {string: {text: "II"}} + 3: {string: {text: "III"}} + 4: {string: {text: "IV"}} + 5: {string: {text: "V"}} + 6: {string: {text: "VI"}} + 7: {string: {text: "VII"}} + 8: {string: {text: "VIII"}} + 9: {string: {text: "IX"}} + 10: {empty: {}} + 11: {empty: {}} + 12: {empty: {}} + 13: {empty: {}} + 14: {empty: {}} + 15: {empty: {}} + 16: {empty: {}} + 17: {empty: {}} + 18: {empty: {}} + 19: {empty: {}} + 20: {empty: {}} + 21: {empty: {}} + 22: {empty: {}} + 23: {empty: {}} + 24: {empty: {}} + 25: {empty: {}} + 26: {empty: {}} + 27: {empty: {}} + 28: {empty: {}} + 29: {empty: {}} + 30: {empty: {}} + 31: {empty: {}} + 32: {empty: {}} + content: + map: + tag: state + values: + focused: + map: + <<: *river_base + deco: {background: {color: *accent}} + values: + <<: *river_values + 1: {string: {text: "I", foreground: *bg}} + 2: {string: {text: "II", foreground: *bg}} + 3: {string: {text: "III", foreground: *bg}} + 4: {string: {text: "IV", foreground: *bg}} + 5: {string: {text: "V", foreground: *bg}} + 6: {string: {text: "VI", foreground: *bg}} + 7: {string: {text: "VII", foreground: *bg}} + 8: {string: {text: "VIII", foreground: *bg}} + 9: {string: {text: "IX", foreground: *bg}} + unfocused: + map: + <<: *river_base + values: + <<: *river_values + invisible: + map: + tag: occupied + values: + true: + map: + deco: {background: {color: *bgish}} + <<: *river_base + values: + <<: *river_values + false: + map: + <<: *river_base + values: + <<: *river_values + right: + - network: + name: eth0 + content: + map: + tag: carrier + default: {empty: {}} + values: + true: + map: + tag: state + values: + down: {string: {text: Ethernet down, foreground: *accent}} + up: + map: + tag: ipv4 + default: {string: {text: Ethernet}} + values: + "": {string: {text: Ethernet sin IPv4, foreground: *accent}} + - network: + name: wlan0 + content: + map: + tag: state + values: + down: {string: {text: WiFi down, foreground: *accent}} + up: + map: + tag: ipv4 + default: {string: {text: WiFi}} + values: + "": {string: {text: WiFi sin IPv4, foreground: *accent}} + + - battery: + name: BAT0 + poll-interval: 30 + content: + map: + tag: state + values: + discharging: {string: {text: "{capacity}%"}} + unknown: {string: {text: "{capacity}% limite"}} + not charging: {string: {text: "{capacity}% limite"}} + charging: {string: {text: "{capacity}% cargando"}} + full: {string: {text: "{capacity}% full"}} + + - clock: + date-format: "%A %d of %B" + content: + - string: {text: " {date}", right-margin: 12} + - string: {text: " {time}"}