dev: automated commit - 2025-09-29 14:44:33

This commit is contained in:
Mariano Z. 2025-09-29 14:44:33 -03:00
parent 188e601c2e
commit 76256d9db3
8 changed files with 127 additions and 122 deletions

55
local-bin/.local/bin/record.sh Executable file
View file

@ -0,0 +1,55 @@
#!/usr/bin/env bash
[[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs
OUTPUT_DIR="${OMARCHY_SCREENRECORD_DIR:-${XDG_VIDEOS_DIR:-$HOME/Videos}}"
if [[ ! -d "$OUTPUT_DIR" ]]; then
notify-send "Screen recording directory does not exist: $OUTPUT_DIR" -u critical -t 3000
exit 1
fi
# Selects region or output
SCOPE="$1"
# Selects audio inclusion or not
AUDIO=$([[ $2 == "audio" ]] && echo "--audio")
start_screenrecording() {
local filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4"
if lspci | grep -qi 'nvidia'; then
wf-recorder $AUDIO -f "$filename" -c libx264 -p crf=23 -p preset=medium -p movflags=+faststart "$@" &
else
wl-screenrec $AUDIO -f "$filename" --ffmpeg-encoder-options="-c:v libx264 -crf 23 -preset medium -movflags +faststart" "$@" &
fi
toggle_screenrecording_indicator
}
stop_screenrecording() {
pkill -x wl-screenrec
pkill -x wf-recorder
notify-send "Screen recording saved to $OUTPUT_DIR" -t 2000
sleep 0.2 # ensures the process is actually dead before we check
toggle_screenrecording_indicator
}
toggle_screenrecording_indicator() {
pkill -RTMIN+8 waybar
}
screenrecording_active() {
pgrep -x wl-screenrec >/dev/null || pgrep -x wf-recorder >/dev/null
}
if screenrecording_active; then
stop_screenrecording
elif [[ "$SCOPE" == "output" ]]; then
output=$(slurp -o) || exit 1
start_screenrecording -g "$output"
else
region=$(slurp) || exit 1
start_screenrecording -g "$region"
fi

View file

@ -1,11 +1,11 @@
#!/usr/bin/env bash
CONFIG_FILES="$HOME/.config/waybar/config.jsonc $HOME/.config/waybar/style.css"
CONFIG_FILES="$HOME/.config/waybar/config.jsonc $HOME/.config/waybar/common.jsonc $HOME/.config/waybar/style.css"
trap "killall waybar" EXIT
trap "killall .waybar-wrapped" EXIT
while true; do
waybar &
inotifywait -e create,modify $CONFIG_FILES
killall waybar
killall .waybar-wrapped
done

View file

@ -15,13 +15,13 @@ gaps outer 5
seat seat0 xcursor_theme Bibata-Original-Classic 24
# SwayFX Settings
# smart_corner_radius on
# corner_radius 10
#
# default_dim_inactive 0.05
# blur enable
# blur_passes 1
# blur_radius 1
# layer_effects "waybar" "blur enable"; shadows enable
# shadows on
# shadow_blur_radius 20
smart_corner_radius on
corner_radius 10
default_dim_inactive 0.05
blur enable
blur_passes 1
blur_radius 1
layer_effects "waybar" "blur enable"; shadows enable
shadows on
shadow_blur_radius 20

View file

@ -98,7 +98,7 @@ bindsym {
# Special Functions
bindsym {
F4 exec switch-windows
$mod+r exec --no-startup-id ~/.local/bin/wlrecord.sh
$mod+r exec --no-startup-id ~/.local/bin/record.sh
$mod+p exec --no-startup-id grim -g "$(slurp -d)" - | swappy -f -
$mod+shift+p exec --no-startup-id ~/.local/bin/screenshot-upload
$mod+F5 exec --no-startup-id ~/.local/bin/pause-notifications

View file

@ -4,8 +4,9 @@
"mod": "dock",
"exclusive": true,
"passthrough": false,
"border-radius": 10,
"gtk-layer-shell": true,
"height": 5,
"height": 36,
"margin": "5 10 0 10",
// Workspace and Window Management
"sway/workspaces": {
@ -52,10 +53,9 @@
},
// Date and Time
"clock": {
// DD-MM-YYYY
"format": " {0:%H:%M:%S %Z} 󰸘 {0:%d/%m/%Y}",
"format": "{:%H:%M %Z}",
"interval": 60,
"format-alt": "{:L%A, %B %d, %Y (%R)}  ",
"format-alt": "{:%d/%m/%Y}",
"tooltip-format": "<small><tt>{calendar}</tt></small>",
"timezones": [
"America/Montevideo",
@ -214,12 +214,11 @@
"Paused": "<span foreground='#928374'>󰒮 󰏥 󰒭</span>"
}
},
// Notifications and Utilities
"custom/wf-recorder": {
"format": "󰑀",
"tooltip": false,
"on-click": "wf-recorder -f ~/Videos/$(date +%Y%m%d_%H%M%S).mp4",
"on-click-right": "pkill -f wf-recorder"
"custom/screenrecording-indicator": {
"on-click": "~/.local/bin/record.sh",
"exec": "~/.config/waybar/indicators/screen-recording.sh",
"signal": 8,
"return-type": "json"
},
"custom/notification": {
"tooltip": false,

View file

@ -27,6 +27,7 @@
"custom/playerlabel"
],
"modules-right": [
"custom/screenrecording-indicator",
"custom/randwall",
"clock",
"group/tray-expander"
@ -47,6 +48,7 @@
"custom/playerlabel"
],
"modules-right": [
"custom/screenrecording-indicator",
"custom/randwall",
"pulseaudio",
"backlight",
@ -57,4 +59,4 @@
"eDP-1"
]
}
]
]

View file

@ -0,0 +1,7 @@
#!/usr/bin/env bash
if pgrep -x wl-screenrec >/dev/null || pgrep -x wf-recorder >/dev/null; then
echo '{"text": "󰻂", "tooltip": "Stop recording", "class": "active"}'
else
echo '{"text": "󰑊", "tooltip": "Start recording", "class": "inactive"}'
fi

View file

@ -1,3 +1,6 @@
@define-color foreground #e0def4;
@define-color background #191724;
* {
border: none;
border-radius: 0;
@ -6,89 +9,60 @@
min-height: 0;
}
/* Window Styles */
window#waybar {
background: rgba(0, 0, 0, 0.8);
border-bottom: 1px solid #282828;
background: rgba(25, 23, 36, 0.8);
border-bottom: 1px solid #26233a;
border-radius: 10px;
color: #f4d9e1;
color: @foreground;
}
tooltip {
background: #010409;
background: @background;
border-radius: 10px;
}
/* Workspace Styles */
#workspaces button {
color: #fff;
color: @foreground;
border-radius: 10px;
padding: 5px;
margin: 4px 4px;
}
#workspaces button.urgent {
background: #010409;
color: #FF7F7F;
background: @background;
color: #eb6f92;
}
#workspaces button:hover,
#workspaces button.focused {
background: #f4d9e1;
color: #282828;
background: #c4a7e7;
color: @background;
}
/* Common Module Styles */
#cpu,
#memory,
#window,
#clock,
#network,
#bluetooth,
#pulseaudio,
#battery,
#pulseaudio,
#network,
#bluetooth,
#temperature,
#workspaces,
#tray,
#custom-vpn,
#custom-notification,
#backlight {
padding: 0px 5;
}
#cpu {
padding-right: 0;
}
/* Individual Module Styles */
#window {
margin: 0 60px;
}
#cpu,
#memory,
#clock,
#network,
#bluetooth,
#pulseaudio,
#pulseaudio.microphone,
#battery {
color: #fff;
#custom-playerctl,
#custom-playerlabel,
#custom-screenrecording-indicator,
#custom-randwall {
color: @foreground;
padding: 0px 8px;
}
#temperature.critical {
color: #eba0ac;
color: #eb6f92;
}
/* Custom Module Styles */
#custom-playerctl,
#custom-playerlabel {
background: #282828;
background: #26233a;
border-radius: 16px;
font-style: normal;
font-weight: normal;
margin: 5px 0;
margin: 5px 8px;
}
#custom-playerctl {
@ -101,68 +75,36 @@ tooltip {
padding: 0 15px 0 10px;
}
#custom-notification {
border-radius: 0;
font-weight: bold;
}
#custom-randwall {
margin-right: 10px;
}
#custom-vpn.connected {
color: #a6e3a1;
}
#custom-vpn.disconnected {
color: #f4d9e1;
}
#custom-wf-recorder {
padding: 0 10px;
margin: 0 4px;
#custom-screenrecording-indicator {
border-radius: 4px;
transition: all 0.3s ease;
}
#custom-wf-recorder.idle {
background-color: #2c2c2c;
color: #ccc;
#custom-screenrecording-indicator.idle {
background-color: @background;
color: @foreground;
}
#custom-wf-recorder.recording {
background-color: #cc3436;
color: white;
#custom-screenrecording-indicator.active {
color: #cc3436;
animation: blink 1s infinite;
}
@keyframes blink {
0% {
opacity: 1;
}
50% {
opacity: 0.7;
}
100% {
opacity: 1;
}
0% { opacity: 1; }
50% { opacity: 0.7; }
100% { opacity: 1; }
}
#custom-microphone {
padding: 0 10px;
margin: 0 5px;
#custom-notification {
margin-right: 12px;
}
#custom-microphone.headset {
color: #a6e3a1;
#custom-randwall {
color: #f6c177;
}
#custom-microphone.internal {
color: #f9e2af;
#custom-expand-icon {
color: #9ccfd8;
}
#custom-microphone.unknown {
color: #f38ba8;
}