From e405894cc2a2e34002fb4deb44331aa5c85faabd Mon Sep 17 00:00:00 2001 From: k4rli Date: Wed, 31 Dec 2025 14:53:07 +0200 Subject: [PATCH] improve structure; move stuff to relevant folders --- swap.md => docs/swap.md | 0 home_dotfiles/.config/sway/config | 28 +- home_dotfiles/.config/sway/i3status-rust.toml | 20 +- .../display-profile-status.sh | 2 +- .../display-profile-toggle.sh | 2 +- .../display-profile}/display-profile.conf | 5 +- .../i3status/bluetooth.sh} | 0 .../i3status}/get-focused-window.sh | 0 .../i3status/set-random-bg.sh} | 0 .../i3status/wttrin-weather.sh} | 0 .../{ => scripts/osrs}/osrs-mode-status.sh | 0 .../{ => scripts/osrs}/osrs-mode-toggle.sh | 0 .../sway/volume-notify.sh} | 2 +- home_dotfiles/.zshrc | 2 + .../install-arch-dotfiles-requirements.sh | 2 +- install-arch-sway-requirements.sh | 2 +- install-arch-sway.sh | 93 +- .../git/git-commit-sign-prepare-gpg.sh | 0 .../gpu/amd-gpu-performance.service | 7 - .../gpu/gpu-benchmark-fix.sh | 0 .../gpu/gpu-performance-mode.sh | 0 .../legacy-sway/add-144hz-mode.sh | 0 .../legacy-x11/add-144hz-mode-xorg.sh | 0 .../legacy-x11/set-displays-order-xorg.sh | 0 .../osrs/autoclicker-stop.sh | 0 autoclicker.sh => scripts/osrs/autoclicker.sh | 0 .../osrs/autoclicker/autoclicker-enhanced.sh | 0 .../osrs/autoclicker/click-visualizer.html | 0 .../osrs/autoclicker/click_server.py | 0 .../osrs/autoclicker/visualize-clicks.sh | 0 .../osrs/mouse-toggle.sh | 0 osrs-click.sh => scripts/osrs/osrs-click.sh | 0 osrs-drop.sh => scripts/osrs/osrs-drop.sh | 0 testing/wttrin-json-output-Tallinn?format=j1 | 1367 +++++++++++++++++ 34 files changed, 1452 insertions(+), 80 deletions(-) rename swap.md => docs/swap.md (100%) rename home_dotfiles/.config/sway/{ => scripts/display-profile}/display-profile-status.sh (83%) rename home_dotfiles/.config/sway/{ => scripts/display-profile}/display-profile-toggle.sh (95%) rename home_dotfiles/.config/sway/{ => scripts/display-profile}/display-profile.conf (66%) rename home_dotfiles/.config/sway/{bluetooth-sway.sh => scripts/i3status/bluetooth.sh} (100%) rename home_dotfiles/.config/sway/{ => scripts/i3status}/get-focused-window.sh (100%) rename home_dotfiles/.config/sway/{set_random_bg.sh => scripts/i3status/set-random-bg.sh} (100%) rename home_dotfiles/.config/sway/{weather-sway.sh => scripts/i3status/wttrin-weather.sh} (100%) rename home_dotfiles/.config/sway/{ => scripts/osrs}/osrs-mode-status.sh (100%) rename home_dotfiles/.config/sway/{ => scripts/osrs}/osrs-mode-toggle.sh (100%) rename home_dotfiles/.config/sway/{volume-notify-sway.sh => scripts/sway/volume-notify.sh} (99%) rename git-commit-sign-prepare-gpg.sh => scripts/git/git-commit-sign-prepare-gpg.sh (100%) rename amd-gpu-performance.service => scripts/gpu/amd-gpu-performance.service (98%) rename gpu-benchmark-fix.sh => scripts/gpu/gpu-benchmark-fix.sh (100%) rename gpu-performance-mode.sh => scripts/gpu/gpu-performance-mode.sh (100%) rename add-144hz-mode.sh => scripts/legacy-sway/add-144hz-mode.sh (100%) rename add-144hz-mode-xorg.sh => scripts/legacy-x11/add-144hz-mode-xorg.sh (100%) rename set-displays-order-xorg.sh => scripts/legacy-x11/set-displays-order-xorg.sh (100%) rename autoclicker-stop.sh => scripts/osrs/autoclicker-stop.sh (100%) rename autoclicker.sh => scripts/osrs/autoclicker.sh (100%) rename autoclicker-enhanced.sh => scripts/osrs/autoclicker/autoclicker-enhanced.sh (100%) rename click-visualizer.html => scripts/osrs/autoclicker/click-visualizer.html (100%) rename click_server.py => scripts/osrs/autoclicker/click_server.py (100%) rename visualize-clicks.sh => scripts/osrs/autoclicker/visualize-clicks.sh (100%) rename mouse-toggle.sh => scripts/osrs/mouse-toggle.sh (100%) rename osrs-click.sh => scripts/osrs/osrs-click.sh (100%) rename osrs-drop.sh => scripts/osrs/osrs-drop.sh (100%) create mode 100644 testing/wttrin-json-output-Tallinn?format=j1 diff --git a/swap.md b/docs/swap.md similarity index 100% rename from swap.md rename to docs/swap.md diff --git a/home_dotfiles/.config/sway/config b/home_dotfiles/.config/sway/config index 34e012d..bef87f1 100644 --- a/home_dotfiles/.config/sway/config +++ b/home_dotfiles/.config/sway/config @@ -72,9 +72,8 @@ set $dp2_x 3840 set $dp2_bar_height 24 set $dp2_bar_font pango: FontAwesome, monospace 10 -# Display/bar profile overrides (written by a toggle script). -# If this file doesn't exist, sway will just use the defaults below. -include /home/raga/.config/sway/display-profile.conf +# Display/bar profile overrides for 330Hz gamemode +include /home/raga/.config/sway/scripts/display-profile/display-profile.conf ############################################################################### # Output configuration @@ -82,12 +81,15 @@ include /home/raga/.config/sway/display-profile.conf # Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/) # output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill -output * bg /home/raga/.config/sway/wallpaper.jpg fill +# output * bg /home/raga/.config/sway/wallpaper.jpg fill # Multi-monitor setup # You can get your output names by running: swaymsg -t get_outputs # DP-2 is the primary monitor on the left, and DP-1 is on the right. output DP-1 { + adaptive_sync on + render_bit_depth 10 + position 0 0 # ECO @@ -111,15 +113,9 @@ output DP-2 { # Idle configuration ############################################################################### -# Lock screen after 900 seconds of inactivity, then turn off displays -#exec swayidle -w \ -# timeout 900 'swaylock -f -c 000000' \ -# timeout 1800 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \ -# before-sleep 'swaylock -f -c 000000' - -# Lock screen after 900 seconds of inactivity exec swayidle -w \ timeout 900 'swaylock -f -c 000000' \ +# timeout 1800 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \ before-sleep 'swaylock -f -c 000000' ############################################################################### @@ -237,7 +233,7 @@ bindsym $mod+Shift+s exec systemctl suspend # Custom scripts (OSRS mode) ############################################################################### -set $osrs_scripts /home/raga/repos/linux/sway-new-config +set $osrs_scripts /home/raga/repos/linux/sway-new-config/scripts/osrs set $osrs_mode OSRS #bindsym f12 mode "$osrs_mode" @@ -498,9 +494,9 @@ bindsym $mod+r mode "Resize Mode" ############################################################################### # Volume control (works with both PulseAudio and PipeWire) -bindsym --locked XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle && ~/.config/sway/volume-notify-sway.sh -bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% && ~/.config/sway/volume-notify-sway.sh -bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% && ~/.config/sway/volume-notify-sway.sh +bindsym --locked XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle && ~/.config/sway/scripts/sway/volume-notify.sh +bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% && ~/.config/sway/scripts/sway/volume-notify.sh +bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% && ~/.config/sway/scripts/sway/volume-notify.sh bindsym --locked XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle # Brightness control @@ -588,7 +584,7 @@ exec lxqt-policykit-agent # Authentication agent (comment out if not needed) exec --no-startup-id blueman-applet exec --no-startup-id nm-applet -exec --no-startup-id home_dotfiles/.config/sway/set_random_bg.sh +exec --no-startup-id home_dotfiles/.config/sway/scripts/i3status/set-random-bg.sh # Include additional config files if they exist include /etc/sway/config.d/* diff --git a/home_dotfiles/.config/sway/i3status-rust.toml b/home_dotfiles/.config/sway/i3status-rust.toml index 5a7739d..05f6692 100644 --- a/home_dotfiles/.config/sway/i3status-rust.toml +++ b/home_dotfiles/.config/sway/i3status-rust.toml @@ -3,20 +3,20 @@ [[block]] block = "custom" -command = "~/.config/sway/osrs-mode-status.sh" +command = "~/.config/sway/scripts/osrs/osrs-mode-status.sh" format = " $text " interval = 1 click = [ - {button = "left", cmd = "~/.config/sway/osrs-mode-toggle.sh", update = true} + {button = "left", cmd = "~/.config/sway/scripts/osrs/osrs-mode-toggle.sh", update = true} ] [[block]] block = "custom" -command = "~/.config/sway/display-profile-status.sh" +command = "~/.config/sway/scripts/display-profile/display-profile-status.sh" format = " $text " interval = 1 click = [ - {button = "left", cmd = "~/.config/sway/display-profile-toggle.sh", update = true} + {button = "left", cmd = "~/.config/sway/scripts/display-profile/display-profile-toggle.sh", update = true} ] [[block]] @@ -25,12 +25,12 @@ command = "echo '๏กผ'" format = " $text " interval = 1 click = [ - {button = "left", cmd = "~/.config/sway/set_random_bg.sh", update = false}, + {button = "left", cmd = "~/.config/sway/scripts/i3status/set-random-bg.sh", update = false}, ] #[[block]] #block = "custom" -#command = "~/.config/sway/get-focused-window.sh" +#command = "~/.config/sway/scripts/i3status/get-focused-window.sh" #format = " $text " #interval = 5 @@ -76,7 +76,7 @@ disconnected_format = "" # Custom Bluetooth connected devices block [[block]] block = "custom" -command = "~/.config/sway/bluetooth-sway.sh" +command = "~/.config/sway/scripts/i3status/bluetooth.sh" format = " $text " interval = 10 click = [ @@ -87,7 +87,7 @@ click = [ # Custom weather block using your wttr.in script # [[block]] # block = "custom" -# command = "~/.config/sway/weather-sway.sh" +# command = "~/.config/sway/scripts/i3status/wttrin-weather.sh" # format = " ๐ŸŒค $text " # interval = 1800 # click = [ @@ -99,7 +99,7 @@ click = [ # Uncomment and modify this block if you want weather for a different city [[block]] block = "custom" -command = "~/.config/sway/weather-sway.sh" +command = "~/.config/sway/scripts/i3status/wttrin-weather.sh" format = "$text" interval = 1800 @@ -108,7 +108,7 @@ interval = 1800 # 1 = current conditions, 2 = current + today, 3 = current + today + tomorrow, 4 = current + 3 days # [[block]] # block = "custom" -# command = "weather_format='2' ~/.config/sway/weather-sway.sh" +# command = "weather_format='2' ~/.config/sway/scripts/i3status/wttrin-weather.sh" # format = " ๐Ÿ“… $text " # interval = 1800 diff --git a/home_dotfiles/.config/sway/display-profile-status.sh b/home_dotfiles/.config/sway/scripts/display-profile/display-profile-status.sh similarity index 83% rename from home_dotfiles/.config/sway/display-profile-status.sh rename to home_dotfiles/.config/sway/scripts/display-profile/display-profile-status.sh index 58ffa6c..6fa03db 100644 --- a/home_dotfiles/.config/sway/display-profile-status.sh +++ b/home_dotfiles/.config/sway/scripts/display-profile/display-profile-status.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -euo pipefail -PROFILE_FILE="/home/raga/.config/sway/display-profile.conf" +PROFILE_FILE="/home/raga/.config/sway/scripts/display-profile/display-profile.conf" mode_str="" if [[ -f "$PROFILE_FILE" ]]; then diff --git a/home_dotfiles/.config/sway/display-profile-toggle.sh b/home_dotfiles/.config/sway/scripts/display-profile/display-profile-toggle.sh similarity index 95% rename from home_dotfiles/.config/sway/display-profile-toggle.sh rename to home_dotfiles/.config/sway/scripts/display-profile/display-profile-toggle.sh index 0ae1d97..0dd03ca 100644 --- a/home_dotfiles/.config/sway/display-profile-toggle.sh +++ b/home_dotfiles/.config/sway/scripts/display-profile/display-profile-toggle.sh @@ -4,7 +4,7 @@ set -euo pipefail # Toggle DP-1 between 4K@165 and 1080p@330 and keep DP-2 positioned flush so # you don't get a "dead gap" for the mouse. -PROFILE_FILE="/home/raga/.config/sway/display-profile.conf" +PROFILE_FILE="/home/raga/.config/sway/scripts/display-profile/display-profile.conf" MODE_4K="3840x2160@165Hz" MODE_GAME="1920x1080@330Hz" diff --git a/home_dotfiles/.config/sway/display-profile.conf b/home_dotfiles/.config/sway/scripts/display-profile/display-profile.conf similarity index 66% rename from home_dotfiles/.config/sway/display-profile.conf rename to home_dotfiles/.config/sway/scripts/display-profile/display-profile.conf index 2557d19..7e98965 100644 --- a/home_dotfiles/.config/sway/display-profile.conf +++ b/home_dotfiles/.config/sway/scripts/display-profile/display-profile.conf @@ -1,5 +1,5 @@ -# This file is intended to be rewritten by scripts (see display-profile-toggle.sh). -# Keep it small so the toggle is fast. +# Default display profile +# Rewritten and toggled in `display-profile-toggle.sh` # DP-1 (4K / gaming output) set $dp1_mode 3840x2160@165Hz @@ -10,4 +10,3 @@ set $dp1_bar_font pango: FontAwesome, monospace 14 set $dp2_x 3840 set $dp2_bar_height 24 set $dp2_bar_font pango: FontAwesome, monospace 10 - diff --git a/home_dotfiles/.config/sway/bluetooth-sway.sh b/home_dotfiles/.config/sway/scripts/i3status/bluetooth.sh similarity index 100% rename from home_dotfiles/.config/sway/bluetooth-sway.sh rename to home_dotfiles/.config/sway/scripts/i3status/bluetooth.sh diff --git a/home_dotfiles/.config/sway/get-focused-window.sh b/home_dotfiles/.config/sway/scripts/i3status/get-focused-window.sh similarity index 100% rename from home_dotfiles/.config/sway/get-focused-window.sh rename to home_dotfiles/.config/sway/scripts/i3status/get-focused-window.sh diff --git a/home_dotfiles/.config/sway/set_random_bg.sh b/home_dotfiles/.config/sway/scripts/i3status/set-random-bg.sh similarity index 100% rename from home_dotfiles/.config/sway/set_random_bg.sh rename to home_dotfiles/.config/sway/scripts/i3status/set-random-bg.sh diff --git a/home_dotfiles/.config/sway/weather-sway.sh b/home_dotfiles/.config/sway/scripts/i3status/wttrin-weather.sh similarity index 100% rename from home_dotfiles/.config/sway/weather-sway.sh rename to home_dotfiles/.config/sway/scripts/i3status/wttrin-weather.sh diff --git a/home_dotfiles/.config/sway/osrs-mode-status.sh b/home_dotfiles/.config/sway/scripts/osrs/osrs-mode-status.sh similarity index 100% rename from home_dotfiles/.config/sway/osrs-mode-status.sh rename to home_dotfiles/.config/sway/scripts/osrs/osrs-mode-status.sh diff --git a/home_dotfiles/.config/sway/osrs-mode-toggle.sh b/home_dotfiles/.config/sway/scripts/osrs/osrs-mode-toggle.sh similarity index 100% rename from home_dotfiles/.config/sway/osrs-mode-toggle.sh rename to home_dotfiles/.config/sway/scripts/osrs/osrs-mode-toggle.sh diff --git a/home_dotfiles/.config/sway/volume-notify-sway.sh b/home_dotfiles/.config/sway/scripts/sway/volume-notify.sh similarity index 99% rename from home_dotfiles/.config/sway/volume-notify-sway.sh rename to home_dotfiles/.config/sway/scripts/sway/volume-notify.sh index 01b4312..d23a697 100755 --- a/home_dotfiles/.config/sway/volume-notify-sway.sh +++ b/home_dotfiles/.config/sway/scripts/sway/volume-notify.sh @@ -11,4 +11,4 @@ if [ "$muted" = "yes" ]; then notify-send -t 1000 "Volume" "Muted" else notify-send -t 1000 "Volume" "$volume" -fi \ No newline at end of file +fi diff --git a/home_dotfiles/.zshrc b/home_dotfiles/.zshrc index 861f8dd..3bf37be 100644 --- a/home_dotfiles/.zshrc +++ b/home_dotfiles/.zshrc @@ -149,3 +149,5 @@ alias info="pacman -Si " source /usr/share/nvm/init-nvm.sh source ~/.aliases + +export JAVA_HOME=/usr/lib/jvm/java-21-temurin diff --git a/home_dotfiles/install-arch-dotfiles-requirements.sh b/home_dotfiles/install-arch-dotfiles-requirements.sh index f904699..0a9a3bb 100755 --- a/home_dotfiles/install-arch-dotfiles-requirements.sh +++ b/home_dotfiles/install-arch-dotfiles-requirements.sh @@ -9,7 +9,7 @@ echo "Installing Oh My Zsh and related requirements..." # Install base packages echo "Installing base packages..." -sudo pacman -S \ +sudo pacman -S --needed \ zsh \ git \ curl \ diff --git a/install-arch-sway-requirements.sh b/install-arch-sway-requirements.sh index 3a03382..5b4adb9 100755 --- a/install-arch-sway-requirements.sh +++ b/install-arch-sway-requirements.sh @@ -159,7 +159,7 @@ echo " - Default location: Pรคrnu (wttr.in, no API key needed)" echo " - Shows weather + sunrise/sunset times" echo " - Left click: detailed weather notification" echo " - Right click: open wttr.in website" -echo " - Change location: edit ~/.config/sway/weather-sway.sh" +echo " - Change location: edit ~/.config/sway/scripts/i3status/wttrin-weather.sh" echo "" echo "3. Key applications configured:" echo " - Terminal: foot" diff --git a/install-arch-sway.sh b/install-arch-sway.sh index 9452f97..1836747 100755 --- a/install-arch-sway.sh +++ b/install-arch-sway.sh @@ -47,53 +47,65 @@ echo "Installing i3status-rust config..." cp $SCRIPT_DIR/home_dotfiles/.config/sway/i3status-rust.toml ~/.config/sway/i3status-rust.toml echo "โœ“ i3status-rust config installed to ~/.config/sway/i3status-rust.toml" +# === DISPLAY PROFILE TOGGLE (MODE / BAR HEIGHT / OUTPUT POSITION) === +echo "" +echo "Installing display profile toggle scripts/config..." +mkdir -p ~/.config/sway/scripts/display-profile +for file in display-profile.conf display-profile-toggle.sh display-profile-status.sh; do + if [ -f "$SCRIPT_DIR/home_dotfiles/.config/sway/scripts/display-profile/$file" ]; then + cp "$SCRIPT_DIR/home_dotfiles/.config/sway/scripts/display-profile/$file" ~/.config/sway/scripts/display-profile/$file + case "$file" in + *.sh) + chmod +x ~/.config/sway/scripts/display-profile/$file + ;; + esac + echo "โœ“ Installed ~/.config/sway/scripts/display-profile/$file" + else + echo "โš  $file not found, skipping..." + fi +done + # === OSRS MODE SCRIPTS === echo "" echo "Installing OSRS mode helper scripts..." -for script in osrs-mode-status.sh osrs-mode-toggle.sh get-focused-window.sh; do - if [ -f "$SCRIPT_DIR/home_dotfiles/.config/sway/$script" ]; then - cp "$SCRIPT_DIR/home_dotfiles/.config/sway/$script" ~/.config/sway/$script - chmod +x ~/.config/sway/$script - echo "โœ“ Installed ~/.config/sway/$script" +mkdir -p ~/.config/sway/scripts/osrs +for script in osrs-mode-status.sh osrs-mode-toggle.sh; do + if [ -f "$SCRIPT_DIR/home_dotfiles/.config/sway/scripts/osrs/$script" ]; then + cp "$SCRIPT_DIR/home_dotfiles/.config/sway/scripts/osrs/$script" ~/.config/sway/scripts/osrs/$script + chmod +x ~/.config/sway/scripts/osrs/$script + echo "โœ“ Installed ~/.config/sway/scripts/osrs/$script" else echo "โš  $script not found, skipping..." fi done -# === CHANGE WALLPAPER SCRIPT === +# === i3status BAR SCRIPTS === echo "" -echo "Installing change wallpaper script..." -cp $SCRIPT_DIR/home_dotfiles/.config/sway/set_random_bg.sh ~/.config/sway/set_random_bg.sh -chmod +x ~/.config/sway/set_random_bg.sh -echo "โœ“ Change wallpaper script installed to ~/.config/sway/set_random_bg.sh" +echo "Installing i3status bar scripts..." +mkdir -p ~/.config/sway/scripts/i3status +for script in bluetooth.sh wttrin-weather.sh set-random-bg.sh get-focused-window.sh; do + if [ -f "$SCRIPT_DIR/home_dotfiles/.config/sway/scripts/i3status/$script" ]; then + cp "$SCRIPT_DIR/home_dotfiles/.config/sway/scripts/i3status/$script" ~/.config/sway/scripts/i3status/$script + chmod +x ~/.config/sway/scripts/i3status/$script + echo "โœ“ Installed ~/.config/sway/scripts/i3status/$script" + else + echo "โš  $script not found, skipping..." + fi +done -# === WEATHER SCRIPT === -# Comment out this section if you don't want the weather script +# === SWAY CONFIG SCRIPTS === echo "" -echo "Installing weather script..." -cp $SCRIPT_DIR/home_dotfiles/.config/sway/weather-sway.sh ~/.config/sway/weather-sway.sh -chmod +x ~/.config/sway/weather-sway.sh -echo "โœ“ Weather script installed to ~/.config/sway/weather-sway.sh" - -# === BLUETOOTH SCRIPT === -echo "" -echo "Installing bluetooth script..." -cp $SCRIPT_DIR/home_dotfiles/.config/sway/bluetooth-sway.sh ~/.config/sway/bluetooth-sway.sh -chmod +x ~/.config/sway/bluetooth-sway.sh -echo "โœ“ Bluetooth script installed to ~/.config/sway/bluetooth-sway.sh" - -# === VOLUME NOTIFY SCRIPT === -# Comment out this section if you don't want volume notifications -if [ -f $SCRIPT_DIR/home_dotfiles/.config/sway/volume-notify-sway.sh ]; then - echo "" - echo "Installing volume notify script..." - cp $SCRIPT_DIR/home_dotfiles/.config/sway/volume-notify-sway.sh ~/.config/sway/volume-notify-sway.sh - chmod +x ~/.config/sway/volume-notify-sway.sh - echo "โœ“ Volume notify script installed to ~/.config/sway/volume-notify-sway.sh" -else - echo "" - echo "โš  volume-notify-sway.sh not found, skipping..." -fi +echo "Installing sway config scripts..." +mkdir -p ~/.config/sway/scripts/sway +for script in volume-notify.sh; do + if [ -f "$SCRIPT_DIR/home_dotfiles/.config/sway/scripts/sway/$script" ]; then + cp "$SCRIPT_DIR/home_dotfiles/.config/sway/scripts/sway/$script" ~/.config/sway/scripts/sway/$script + chmod +x ~/.config/sway/scripts/sway/$script + echo "โœ“ Installed ~/.config/sway/scripts/sway/$script" + else + echo "โš  $script not found, skipping..." + fi +done # === SET THUNAR AS DEFAULT FILE MANAGER === echo "" @@ -132,11 +144,14 @@ echo "- ~/.config/mako/config (notification styling)" echo "- ~/.config/sway/config (main Sway config)" echo "- ~/.config/swayimg/swayimgrc (image viewer config)" echo "- ~/.config/sway/i3status-rust.toml (status bar config)" -echo "- ~/.config/sway/weather-sway.sh (weather script)" +echo "- ~/.config/sway/scripts/display-profile/display-profile.conf (display profile state/overrides)" +echo "- ~/.config/sway/scripts/display-profile/display-profile-toggle.sh (click-to-toggle display profile)" +echo "- ~/.config/sway/scripts/display-profile/display-profile-status.sh (status bar label for display profile)" +echo "- ~/.config/sway/scripts/i3status/wttrin-weather.sh (weather script)" echo "- thunar set as default file manager" echo "- swayimg set as default image viewer" -if [ -f ~/.config/sway/volume-notify-sway.sh ]; then - echo "- ~/.config/sway/volume-notify-sway.sh (volume notifications)" +if [ -f ~/.config/sway/scripts/sway/volume-notify.sh ]; then + echo "- ~/.config/sway/scripts/sway/volume-notify.sh (volume notifications)" fi makoctl reload diff --git a/git-commit-sign-prepare-gpg.sh b/scripts/git/git-commit-sign-prepare-gpg.sh similarity index 100% rename from git-commit-sign-prepare-gpg.sh rename to scripts/git/git-commit-sign-prepare-gpg.sh diff --git a/amd-gpu-performance.service b/scripts/gpu/amd-gpu-performance.service similarity index 98% rename from amd-gpu-performance.service rename to scripts/gpu/amd-gpu-performance.service index 62306c5..6e4cb93 100644 --- a/amd-gpu-performance.service +++ b/scripts/gpu/amd-gpu-performance.service @@ -11,10 +11,3 @@ RemainAfterExit=yes [Install] WantedBy=multi-user.target - - - - - - - diff --git a/gpu-benchmark-fix.sh b/scripts/gpu/gpu-benchmark-fix.sh similarity index 100% rename from gpu-benchmark-fix.sh rename to scripts/gpu/gpu-benchmark-fix.sh diff --git a/gpu-performance-mode.sh b/scripts/gpu/gpu-performance-mode.sh similarity index 100% rename from gpu-performance-mode.sh rename to scripts/gpu/gpu-performance-mode.sh diff --git a/add-144hz-mode.sh b/scripts/legacy-sway/add-144hz-mode.sh similarity index 100% rename from add-144hz-mode.sh rename to scripts/legacy-sway/add-144hz-mode.sh diff --git a/add-144hz-mode-xorg.sh b/scripts/legacy-x11/add-144hz-mode-xorg.sh similarity index 100% rename from add-144hz-mode-xorg.sh rename to scripts/legacy-x11/add-144hz-mode-xorg.sh diff --git a/set-displays-order-xorg.sh b/scripts/legacy-x11/set-displays-order-xorg.sh similarity index 100% rename from set-displays-order-xorg.sh rename to scripts/legacy-x11/set-displays-order-xorg.sh diff --git a/autoclicker-stop.sh b/scripts/osrs/autoclicker-stop.sh similarity index 100% rename from autoclicker-stop.sh rename to scripts/osrs/autoclicker-stop.sh diff --git a/autoclicker.sh b/scripts/osrs/autoclicker.sh similarity index 100% rename from autoclicker.sh rename to scripts/osrs/autoclicker.sh diff --git a/autoclicker-enhanced.sh b/scripts/osrs/autoclicker/autoclicker-enhanced.sh similarity index 100% rename from autoclicker-enhanced.sh rename to scripts/osrs/autoclicker/autoclicker-enhanced.sh diff --git a/click-visualizer.html b/scripts/osrs/autoclicker/click-visualizer.html similarity index 100% rename from click-visualizer.html rename to scripts/osrs/autoclicker/click-visualizer.html diff --git a/click_server.py b/scripts/osrs/autoclicker/click_server.py similarity index 100% rename from click_server.py rename to scripts/osrs/autoclicker/click_server.py diff --git a/visualize-clicks.sh b/scripts/osrs/autoclicker/visualize-clicks.sh similarity index 100% rename from visualize-clicks.sh rename to scripts/osrs/autoclicker/visualize-clicks.sh diff --git a/mouse-toggle.sh b/scripts/osrs/mouse-toggle.sh similarity index 100% rename from mouse-toggle.sh rename to scripts/osrs/mouse-toggle.sh diff --git a/osrs-click.sh b/scripts/osrs/osrs-click.sh similarity index 100% rename from osrs-click.sh rename to scripts/osrs/osrs-click.sh diff --git a/osrs-drop.sh b/scripts/osrs/osrs-drop.sh similarity index 100% rename from osrs-drop.sh rename to scripts/osrs/osrs-drop.sh diff --git a/testing/wttrin-json-output-Tallinn?format=j1 b/testing/wttrin-json-output-Tallinn?format=j1 new file mode 100644 index 0000000..e227e21 --- /dev/null +++ b/testing/wttrin-json-output-Tallinn?format=j1 @@ -0,0 +1,1367 @@ +{ + "current_condition": [ + { + "FeelsLikeC": "-7", + "FeelsLikeF": "19", + "cloudcover": "0", + "humidity": "69", + "localObsDateTime": "2025-12-12 08:28 PM", + "observation_time": "06:28 PM", + "precipInches": "0.0", + "precipMM": "0.0", + "pressure": "1026", + "pressureInches": "30", + "temp_C": "-2", + "temp_F": "29", + "uvIndex": "0", + "visibility": "10", + "visibilityMiles": "6", + "weatherCode": "116", + "weatherDesc": [ + { + "value": "Partly cloudy" + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "NE", + "winddirDegree": "34", + "windspeedKmph": "18", + "windspeedMiles": "11" + } + ], + "nearest_area": [ + { + "areaName": [ + { + "value": "Tallinn" + } + ], + "country": [ + { + "value": "Estonia" + } + ], + "latitude": "59.434", + "longitude": "24.728", + "population": "394023", + "region": [ + { + "value": "Harjumaa" + } + ], + "weatherUrl": [ + { + "value": "" + } + ] + } + ], + "request": [ + { + "query": "Lat 59.44 and Lon 24.75", + "type": "LatLon" + } + ], + "weather": [ + { + "astronomy": [ + { + "moon_illumination": "49", + "moon_phase": "Waning Crescent", + "moonrise": "12:03 AM", + "moonset": "12:42 PM", + "sunrise": "09:10 AM", + "sunset": "03:20 PM" + } + ], + "avgtempC": "0", + "avgtempF": "33", + "date": "2025-12-12", + "hourly": [ + { + "DewPointC": "2", + "DewPointF": "36", + "FeelsLikeC": "1", + "FeelsLikeF": "34", + "HeatIndexC": "4", + "HeatIndexF": "40", + "WindChillC": "1", + "WindChillF": "34", + "WindGustKmph": "18", + "WindGustMiles": "11", + "chanceoffog": "0", + "chanceoffrost": "0", + "chanceofhightemp": "0", + "chanceofovercast": "84", + "chanceofrain": "0", + "chanceofremdry": "86", + "chanceofsnow": "0", + "chanceofsunshine": "13", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "79", + "diffRad": "0.0", + "humidity": "86", + "precipInches": "0.0", + "precipMM": "0.0", + "pressure": "1007", + "pressureInches": "30", + "shortRad": "0.0", + "tempC": "4", + "tempF": "40", + "time": "0", + "uvIndex": "0", + "visibility": "10", + "visibilityMiles": "6", + "weatherCode": "119", + "weatherDesc": [ + { + "value": "Cloudy " + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "NNE", + "winddirDegree": "32", + "windspeedKmph": "13", + "windspeedMiles": "8" + }, + { + "DewPointC": "1", + "DewPointF": "34", + "FeelsLikeC": "-1", + "FeelsLikeF": "30", + "HeatIndexC": "3", + "HeatIndexF": "38", + "WindChillC": "-1", + "WindChillF": "30", + "WindGustKmph": "23", + "WindGustMiles": "14", + "chanceoffog": "0", + "chanceoffrost": "0", + "chanceofhightemp": "0", + "chanceofovercast": "89", + "chanceofrain": "83", + "chanceofremdry": "0", + "chanceofsnow": "0", + "chanceofsunshine": "0", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "100", + "diffRad": "0.0", + "humidity": "86", + "precipInches": "0.0", + "precipMM": "0.0", + "pressure": "1010", + "pressureInches": "30", + "shortRad": "0.0", + "tempC": "3", + "tempF": "38", + "time": "300", + "uvIndex": "0", + "visibility": "10", + "visibilityMiles": "6", + "weatherCode": "326", + "weatherDesc": [ + { + "value": "Light snow" + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "NNE", + "winddirDegree": "18", + "windspeedKmph": "17", + "windspeedMiles": "11" + }, + { + "DewPointC": "-0", + "DewPointF": "32", + "FeelsLikeC": "-3", + "FeelsLikeF": "27", + "HeatIndexC": "2", + "HeatIndexF": "36", + "WindChillC": "-3", + "WindChillF": "27", + "WindGustKmph": "32", + "WindGustMiles": "20", + "chanceoffog": "0", + "chanceoffrost": "0", + "chanceofhightemp": "0", + "chanceofovercast": "80", + "chanceofrain": "100", + "chanceofremdry": "0", + "chanceofsnow": "0", + "chanceofsunshine": "0", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "100", + "diffRad": "0.0", + "humidity": "84", + "precipInches": "0.0", + "precipMM": "0.1", + "pressure": "1012", + "pressureInches": "30", + "shortRad": "0.0", + "tempC": "2", + "tempF": "36", + "time": "600", + "uvIndex": "0", + "visibility": "10", + "visibilityMiles": "6", + "weatherCode": "368", + "weatherDesc": [ + { + "value": "Light snow showers" + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "NNE", + "winddirDegree": "26", + "windspeedKmph": "23", + "windspeedMiles": "15" + }, + { + "DewPointC": "-3", + "DewPointF": "26", + "FeelsLikeC": "-5", + "FeelsLikeF": "23", + "HeatIndexC": "0", + "HeatIndexF": "33", + "WindChillC": "-5", + "WindChillF": "23", + "WindGustKmph": "33", + "WindGustMiles": "21", + "chanceoffog": "0", + "chanceoffrost": "15", + "chanceofhightemp": "0", + "chanceofovercast": "81", + "chanceofrain": "0", + "chanceofremdry": "0", + "chanceofsnow": "86", + "chanceofsunshine": "0", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "100", + "diffRad": "0.0", + "humidity": "76", + "precipInches": "0.0", + "precipMM": "0.0", + "pressure": "1016", + "pressureInches": "30", + "shortRad": "0.0", + "tempC": "0", + "tempF": "33", + "time": "900", + "uvIndex": "0", + "visibility": "10", + "visibilityMiles": "6", + "weatherCode": "326", + "weatherDesc": [ + { + "value": "Light snow" + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "NE", + "winddirDegree": "35", + "windspeedKmph": "25", + "windspeedMiles": "15" + }, + { + "DewPointC": "-8", + "DewPointF": "18", + "FeelsLikeC": "-7", + "FeelsLikeF": "20", + "HeatIndexC": "-0", + "HeatIndexF": "31", + "WindChillC": "-7", + "WindChillF": "20", + "WindGustKmph": "33", + "WindGustMiles": "20", + "chanceoffog": "0", + "chanceoffrost": "92", + "chanceofhightemp": "0", + "chanceofovercast": "0", + "chanceofrain": "0", + "chanceofremdry": "82", + "chanceofsnow": "0", + "chanceofsunshine": "90", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "2", + "diffRad": "9.8", + "humidity": "58", + "precipInches": "0.0", + "precipMM": "0.0", + "pressure": "1020", + "pressureInches": "30", + "shortRad": "25.2", + "tempC": "-0", + "tempF": "31", + "time": "1200", + "uvIndex": "0", + "visibility": "10", + "visibilityMiles": "6", + "weatherCode": "113", + "weatherDesc": [ + { + "value": "Sunny" + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "NNE", + "winddirDegree": "33", + "windspeedKmph": "25", + "windspeedMiles": "15" + }, + { + "DewPointC": "-9", + "DewPointF": "15", + "FeelsLikeC": "-7", + "FeelsLikeF": "19", + "HeatIndexC": "-1", + "HeatIndexF": "30", + "WindChillC": "-7", + "WindChillF": "19", + "WindGustKmph": "33", + "WindGustMiles": "20", + "chanceoffog": "0", + "chanceoffrost": "94", + "chanceofhightemp": "0", + "chanceofovercast": "0", + "chanceofrain": "0", + "chanceofremdry": "80", + "chanceofsnow": "0", + "chanceofsunshine": "93", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "16", + "diffRad": "11.2", + "humidity": "53", + "precipInches": "0.0", + "precipMM": "0.0", + "pressure": "1023", + "pressureInches": "30", + "shortRad": "27.8", + "tempC": "-1", + "tempF": "30", + "time": "1500", + "uvIndex": "0", + "visibility": "10", + "visibilityMiles": "6", + "weatherCode": "113", + "weatherDesc": [ + { + "value": "Sunny" + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "NNE", + "winddirDegree": "30", + "windspeedKmph": "23", + "windspeedMiles": "15" + }, + { + "DewPointC": "-9", + "DewPointF": "15", + "FeelsLikeC": "-7", + "FeelsLikeF": "19", + "HeatIndexC": "-1", + "HeatIndexF": "30", + "WindChillC": "-7", + "WindChillF": "19", + "WindGustKmph": "30", + "WindGustMiles": "19", + "chanceoffog": "0", + "chanceoffrost": "95", + "chanceofhightemp": "0", + "chanceofovercast": "0", + "chanceofrain": "0", + "chanceofremdry": "91", + "chanceofsnow": "0", + "chanceofsunshine": "94", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "3", + "diffRad": "2.8", + "humidity": "53", + "precipInches": "0.0", + "precipMM": "0.0", + "pressure": "1025", + "pressureInches": "30", + "shortRad": "7.1", + "tempC": "-1", + "tempF": "30", + "time": "1800", + "uvIndex": "0", + "visibility": "10", + "visibilityMiles": "6", + "weatherCode": "113", + "weatherDesc": [ + { + "value": "Clear " + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "NE", + "winddirDegree": "37", + "windspeedKmph": "22", + "windspeedMiles": "13" + }, + { + "DewPointC": "-9", + "DewPointF": "15", + "FeelsLikeC": "-7", + "FeelsLikeF": "20", + "HeatIndexC": "-1", + "HeatIndexF": "30", + "WindChillC": "-7", + "WindChillF": "20", + "WindGustKmph": "25", + "WindGustMiles": "15", + "chanceoffog": "0", + "chanceoffrost": "93", + "chanceofhightemp": "0", + "chanceofovercast": "0", + "chanceofrain": "0", + "chanceofremdry": "94", + "chanceofsnow": "0", + "chanceofsunshine": "87", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "18", + "diffRad": "0.0", + "humidity": "55", + "precipInches": "0.0", + "precipMM": "0.0", + "pressure": "1027", + "pressureInches": "30", + "shortRad": "0.0", + "tempC": "-1", + "tempF": "30", + "time": "2100", + "uvIndex": "0", + "visibility": "10", + "visibilityMiles": "6", + "weatherCode": "113", + "weatherDesc": [ + { + "value": "Clear " + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "NE", + "winddirDegree": "41", + "windspeedKmph": "18", + "windspeedMiles": "11" + } + ], + "maxtempC": "2", + "maxtempF": "36", + "mintempC": "-2", + "mintempF": "29", + "sunHour": "5.8", + "totalSnow_cm": "0.2", + "uvIndex": "0" + }, + { + "astronomy": [ + { + "moon_illumination": "39", + "moon_phase": "Waning Crescent", + "moonrise": "01:27 AM", + "moonset": "12:42 PM", + "sunrise": "09:11 AM", + "sunset": "03:20 PM" + } + ], + "avgtempC": "-2", + "avgtempF": "29", + "date": "2025-12-13", + "hourly": [ + { + "DewPointC": "-9", + "DewPointF": "15", + "FeelsLikeC": "-6", + "FeelsLikeF": "22", + "HeatIndexC": "-2", + "HeatIndexF": "29", + "WindChillC": "-6", + "WindChillF": "22", + "WindGustKmph": "16", + "WindGustMiles": "10", + "chanceoffog": "0", + "chanceoffrost": "92", + "chanceofhightemp": "0", + "chanceofovercast": "0", + "chanceofrain": "0", + "chanceofremdry": "90", + "chanceofsnow": "0", + "chanceofsunshine": "90", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "18", + "diffRad": "0.0", + "humidity": "55", + "precipInches": "0.0", + "precipMM": "0.0", + "pressure": "1029", + "pressureInches": "30", + "shortRad": "0.0", + "tempC": "-2", + "tempF": "29", + "time": "0", + "uvIndex": "0", + "visibility": "10", + "visibilityMiles": "6", + "weatherCode": "113", + "weatherDesc": [ + { + "value": "Clear " + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "NE", + "winddirDegree": "53", + "windspeedKmph": "11", + "windspeedMiles": "7" + }, + { + "DewPointC": "-10", + "DewPointF": "14", + "FeelsLikeC": "-5", + "FeelsLikeF": "24", + "HeatIndexC": "-2", + "HeatIndexF": "29", + "WindChillC": "-5", + "WindChillF": "24", + "WindGustKmph": "11", + "WindGustMiles": "7", + "chanceoffog": "0", + "chanceoffrost": "91", + "chanceofhightemp": "0", + "chanceofovercast": "84", + "chanceofrain": "0", + "chanceofremdry": "81", + "chanceofsnow": "0", + "chanceofsunshine": "6", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "96", + "diffRad": "0.0", + "humidity": "54", + "precipInches": "0.0", + "precipMM": "0.0", + "pressure": "1029", + "pressureInches": "30", + "shortRad": "0.0", + "tempC": "-2", + "tempF": "29", + "time": "300", + "uvIndex": "0", + "visibility": "10", + "visibilityMiles": "6", + "weatherCode": "122", + "weatherDesc": [ + { + "value": "Overcast " + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "ENE", + "winddirDegree": "67", + "windspeedKmph": "7", + "windspeedMiles": "4" + }, + { + "DewPointC": "-10", + "DewPointF": "14", + "FeelsLikeC": "-3", + "FeelsLikeF": "27", + "HeatIndexC": "-2", + "HeatIndexF": "28", + "WindChillC": "-3", + "WindChillF": "27", + "WindGustKmph": "5", + "WindGustMiles": "3", + "chanceoffog": "0", + "chanceoffrost": "90", + "chanceofhightemp": "0", + "chanceofovercast": "38", + "chanceofrain": "0", + "chanceofremdry": "82", + "chanceofsnow": "0", + "chanceofsunshine": "79", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "34", + "diffRad": "0.0", + "humidity": "54", + "precipInches": "0.0", + "precipMM": "0.0", + "pressure": "1029", + "pressureInches": "30", + "shortRad": "0.0", + "tempC": "-2", + "tempF": "28", + "time": "600", + "uvIndex": "0", + "visibility": "10", + "visibilityMiles": "6", + "weatherCode": "116", + "weatherDesc": [ + { + "value": "Partly Cloudy " + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "SSE", + "winddirDegree": "154", + "windspeedKmph": "3", + "windspeedMiles": "2" + }, + { + "DewPointC": "-10", + "DewPointF": "15", + "FeelsLikeC": "-5", + "FeelsLikeF": "23", + "HeatIndexC": "-2", + "HeatIndexF": "28", + "WindChillC": "-5", + "WindChillF": "23", + "WindGustKmph": "11", + "WindGustMiles": "7", + "chanceoffog": "0", + "chanceoffrost": "90", + "chanceofhightemp": "0", + "chanceofovercast": "43", + "chanceofrain": "0", + "chanceofremdry": "89", + "chanceofsnow": "0", + "chanceofsunshine": "87", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "49", + "diffRad": "0.0", + "humidity": "57", + "precipInches": "0.0", + "precipMM": "0.0", + "pressure": "1028", + "pressureInches": "30", + "shortRad": "0.0", + "tempC": "-2", + "tempF": "28", + "time": "900", + "uvIndex": "0", + "visibility": "10", + "visibilityMiles": "6", + "weatherCode": "116", + "weatherDesc": [ + { + "value": "Partly Cloudy " + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "S", + "winddirDegree": "174", + "windspeedKmph": "8", + "windspeedMiles": "5" + }, + { + "DewPointC": "-10", + "DewPointF": "13", + "FeelsLikeC": "-6", + "FeelsLikeF": "21", + "HeatIndexC": "-2", + "HeatIndexF": "29", + "WindChillC": "-6", + "WindChillF": "21", + "WindGustKmph": "16", + "WindGustMiles": "10", + "chanceoffog": "0", + "chanceoffrost": "88", + "chanceofhightemp": "0", + "chanceofovercast": "87", + "chanceofrain": "0", + "chanceofremdry": "88", + "chanceofsnow": "0", + "chanceofsunshine": "11", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "100", + "diffRad": "10.1", + "humidity": "52", + "precipInches": "0.0", + "precipMM": "0.0", + "pressure": "1027", + "pressureInches": "30", + "shortRad": "21.1", + "tempC": "-2", + "tempF": "29", + "time": "1200", + "uvIndex": "0", + "visibility": "10", + "visibilityMiles": "6", + "weatherCode": "122", + "weatherDesc": [ + { + "value": "Overcast " + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "SSE", + "winddirDegree": "160", + "windspeedKmph": "12", + "windspeedMiles": "7" + }, + { + "DewPointC": "-10", + "DewPointF": "13", + "FeelsLikeC": "-7", + "FeelsLikeF": "20", + "HeatIndexC": "-2", + "HeatIndexF": "29", + "WindChillC": "-7", + "WindChillF": "20", + "WindGustKmph": "21", + "WindGustMiles": "13", + "chanceoffog": "0", + "chanceoffrost": "87", + "chanceofhightemp": "0", + "chanceofovercast": "83", + "chanceofrain": "0", + "chanceofremdry": "83", + "chanceofsnow": "0", + "chanceofsunshine": "18", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "100", + "diffRad": "7.8", + "humidity": "52", + "precipInches": "0.0", + "precipMM": "0.0", + "pressure": "1025", + "pressureInches": "30", + "shortRad": "17.2", + "tempC": "-2", + "tempF": "29", + "time": "1500", + "uvIndex": "0", + "visibility": "10", + "visibilityMiles": "6", + "weatherCode": "122", + "weatherDesc": [ + { + "value": "Overcast " + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "SSE", + "winddirDegree": "156", + "windspeedKmph": "15", + "windspeedMiles": "9" + }, + { + "DewPointC": "-10", + "DewPointF": "15", + "FeelsLikeC": "-7", + "FeelsLikeF": "19", + "HeatIndexC": "-2", + "HeatIndexF": "29", + "WindChillC": "-7", + "WindChillF": "19", + "WindGustKmph": "23", + "WindGustMiles": "15", + "chanceoffog": "0", + "chanceoffrost": "86", + "chanceofhightemp": "0", + "chanceofovercast": "94", + "chanceofrain": "0", + "chanceofremdry": "84", + "chanceofsnow": "0", + "chanceofsunshine": "11", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "100", + "diffRad": "2.0", + "humidity": "55", + "precipInches": "0.0", + "precipMM": "0.0", + "pressure": "1022", + "pressureInches": "30", + "shortRad": "4.4", + "tempC": "-2", + "tempF": "29", + "time": "1800", + "uvIndex": "0", + "visibility": "10", + "visibilityMiles": "6", + "weatherCode": "122", + "weatherDesc": [ + { + "value": "Overcast " + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "SSE", + "winddirDegree": "155", + "windspeedKmph": "17", + "windspeedMiles": "11" + }, + { + "DewPointC": "-9", + "DewPointF": "16", + "FeelsLikeC": "-7", + "FeelsLikeF": "20", + "HeatIndexC": "-2", + "HeatIndexF": "29", + "WindChillC": "-7", + "WindChillF": "20", + "WindGustKmph": "24", + "WindGustMiles": "15", + "chanceoffog": "0", + "chanceoffrost": "85", + "chanceofhightemp": "0", + "chanceofovercast": "86", + "chanceofrain": "0", + "chanceofremdry": "86", + "chanceofsnow": "0", + "chanceofsunshine": "15", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "100", + "diffRad": "0.0", + "humidity": "57", + "precipInches": "0.0", + "precipMM": "0.0", + "pressure": "1019", + "pressureInches": "30", + "shortRad": "0.0", + "tempC": "-2", + "tempF": "29", + "time": "2100", + "uvIndex": "0", + "visibility": "10", + "visibilityMiles": "6", + "weatherCode": "122", + "weatherDesc": [ + { + "value": "Overcast " + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "SSE", + "winddirDegree": "161", + "windspeedKmph": "17", + "windspeedMiles": "11" + } + ], + "maxtempC": "-2", + "maxtempF": "29", + "mintempC": "-2", + "mintempF": "28", + "sunHour": "4.5", + "totalSnow_cm": "0.1", + "uvIndex": "0" + }, + { + "astronomy": [ + { + "moon_illumination": "30", + "moon_phase": "Waning Crescent", + "moonrise": "02:50 AM", + "moonset": "12:42 PM", + "sunrise": "09:12 AM", + "sunset": "03:20 PM" + } + ], + "avgtempC": "-2", + "avgtempF": "29", + "date": "2025-12-14", + "hourly": [ + { + "DewPointC": "-9", + "DewPointF": "16", + "FeelsLikeC": "-7", + "FeelsLikeF": "19", + "HeatIndexC": "-1", + "HeatIndexF": "29", + "WindChillC": "-7", + "WindChillF": "19", + "WindGustKmph": "28", + "WindGustMiles": "17", + "chanceoffog": "0", + "chanceoffrost": "84", + "chanceofhightemp": "0", + "chanceofovercast": "92", + "chanceofrain": "0", + "chanceofremdry": "90", + "chanceofsnow": "0", + "chanceofsunshine": "10", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "100", + "diffRad": "0.0", + "humidity": "57", + "precipInches": "0.0", + "precipMM": "0.0", + "pressure": "1018", + "pressureInches": "30", + "shortRad": "0.0", + "tempC": "-1", + "tempF": "29", + "time": "0", + "uvIndex": "0", + "visibility": "10", + "visibilityMiles": "6", + "weatherCode": "122", + "weatherDesc": [ + { + "value": "Overcast " + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "SSE", + "winddirDegree": "152", + "windspeedKmph": "20", + "windspeedMiles": "12" + }, + { + "DewPointC": "-10", + "DewPointF": "15", + "FeelsLikeC": "-7", + "FeelsLikeF": "19", + "HeatIndexC": "-2", + "HeatIndexF": "29", + "WindChillC": "-7", + "WindChillF": "19", + "WindGustKmph": "27", + "WindGustMiles": "17", + "chanceoffog": "0", + "chanceoffrost": "83", + "chanceofhightemp": "0", + "chanceofovercast": "88", + "chanceofrain": "0", + "chanceofremdry": "0", + "chanceofsnow": "60", + "chanceofsunshine": "0", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "87", + "diffRad": "0.0", + "humidity": "55", + "precipInches": "0.0", + "precipMM": "0.0", + "pressure": "1016", + "pressureInches": "30", + "shortRad": "0.0", + "tempC": "-2", + "tempF": "29", + "time": "300", + "uvIndex": "0", + "visibility": "10", + "visibilityMiles": "6", + "weatherCode": "311", + "weatherDesc": [ + { + "value": "Light freezing rain" + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "SSE", + "winddirDegree": "162", + "windspeedKmph": "20", + "windspeedMiles": "13" + }, + { + "DewPointC": "-7", + "DewPointF": "19", + "FeelsLikeC": "-8", + "FeelsLikeF": "17", + "HeatIndexC": "-2", + "HeatIndexF": "28", + "WindChillC": "-8", + "WindChillF": "17", + "WindGustKmph": "27", + "WindGustMiles": "17", + "chanceoffog": "0", + "chanceoffrost": "86", + "chanceofhightemp": "0", + "chanceofovercast": "81", + "chanceofrain": "0", + "chanceofremdry": "85", + "chanceofsnow": "0", + "chanceofsunshine": "13", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "100", + "diffRad": "0.0", + "humidity": "70", + "precipInches": "0.0", + "precipMM": "0.0", + "pressure": "1014", + "pressureInches": "30", + "shortRad": "0.0", + "tempC": "-2", + "tempF": "28", + "time": "600", + "uvIndex": "0", + "visibility": "10", + "visibilityMiles": "6", + "weatherCode": "122", + "weatherDesc": [ + { + "value": "Overcast " + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "SSE", + "winddirDegree": "158", + "windspeedKmph": "19", + "windspeedMiles": "12" + }, + { + "DewPointC": "-7", + "DewPointF": "20", + "FeelsLikeC": "-8", + "FeelsLikeF": "18", + "HeatIndexC": "-2", + "HeatIndexF": "28", + "WindChillC": "-8", + "WindChillF": "18", + "WindGustKmph": "27", + "WindGustMiles": "17", + "chanceoffog": "0", + "chanceoffrost": "85", + "chanceofhightemp": "0", + "chanceofovercast": "93", + "chanceofrain": "0", + "chanceofremdry": "0", + "chanceofsnow": "68", + "chanceofsunshine": "0", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "100", + "diffRad": "0.0", + "humidity": "71", + "precipInches": "0.0", + "precipMM": "0.0", + "pressure": "1013", + "pressureInches": "30", + "shortRad": "0.0", + "tempC": "-2", + "tempF": "28", + "time": "900", + "uvIndex": "0", + "visibility": "10", + "visibilityMiles": "6", + "weatherCode": "311", + "weatherDesc": [ + { + "value": "Light freezing rain" + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "SSE", + "winddirDegree": "155", + "windspeedKmph": "20", + "windspeedMiles": "12" + }, + { + "DewPointC": "-4", + "DewPointF": "25", + "FeelsLikeC": "-8", + "FeelsLikeF": "18", + "HeatIndexC": "-2", + "HeatIndexF": "28", + "WindChillC": "-8", + "WindChillF": "18", + "WindGustKmph": "26", + "WindGustMiles": "16", + "chanceoffog": "0", + "chanceoffrost": "85", + "chanceofhightemp": "0", + "chanceofovercast": "86", + "chanceofrain": "100", + "chanceofremdry": "0", + "chanceofsnow": "100", + "chanceofsunshine": "0", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "100", + "diffRad": "9.0", + "humidity": "90", + "precipInches": "0.0", + "precipMM": "0.2", + "pressure": "1012", + "pressureInches": "30", + "shortRad": "17.8", + "tempC": "-2", + "tempF": "28", + "time": "1200", + "uvIndex": "0", + "visibility": "5", + "visibilityMiles": "3", + "weatherCode": "332", + "weatherDesc": [ + { + "value": "Moderate snow" + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "SSE", + "winddirDegree": "152", + "windspeedKmph": "19", + "windspeedMiles": "12" + }, + { + "DewPointC": "-3", + "DewPointF": "27", + "FeelsLikeC": "-7", + "FeelsLikeF": "19", + "HeatIndexC": "-2", + "HeatIndexF": "29", + "WindChillC": "-7", + "WindChillF": "19", + "WindGustKmph": "28", + "WindGustMiles": "18", + "chanceoffog": "0", + "chanceoffrost": "79", + "chanceofhightemp": "0", + "chanceofovercast": "86", + "chanceofrain": "100", + "chanceofremdry": "0", + "chanceofsnow": "73", + "chanceofsunshine": "0", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "100", + "diffRad": "3.3", + "humidity": "93", + "precipInches": "0.0", + "precipMM": "0.1", + "pressure": "1010", + "pressureInches": "30", + "shortRad": "6.1", + "tempC": "-2", + "tempF": "29", + "time": "1500", + "uvIndex": "0", + "visibility": "5", + "visibilityMiles": "3", + "weatherCode": "332", + "weatherDesc": [ + { + "value": "Moderate snow" + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "SSE", + "winddirDegree": "153", + "windspeedKmph": "20", + "windspeedMiles": "13" + }, + { + "DewPointC": "-2", + "DewPointF": "29", + "FeelsLikeC": "-6", + "FeelsLikeF": "22", + "HeatIndexC": "-1", + "HeatIndexF": "30", + "WindChillC": "-6", + "WindChillF": "22", + "WindGustKmph": "24", + "WindGustMiles": "15", + "chanceoffog": "0", + "chanceoffrost": "78", + "chanceofhightemp": "0", + "chanceofovercast": "80", + "chanceofrain": "100", + "chanceofremdry": "0", + "chanceofsnow": "76", + "chanceofsunshine": "0", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "100", + "diffRad": "0.8", + "humidity": "93", + "precipInches": "0.0", + "precipMM": "0.2", + "pressure": "1009", + "pressureInches": "30", + "shortRad": "1.5", + "tempC": "-1", + "tempF": "30", + "time": "1800", + "uvIndex": "0", + "visibility": "1", + "visibilityMiles": "0", + "weatherCode": "284", + "weatherDesc": [ + { + "value": "Heavy freezing drizzle" + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "SSE", + "winddirDegree": "161", + "windspeedKmph": "16", + "windspeedMiles": "10" + }, + { + "DewPointC": "-1", + "DewPointF": "30", + "FeelsLikeC": "-4", + "FeelsLikeF": "25", + "HeatIndexC": "-0", + "HeatIndexF": "32", + "WindChillC": "-4", + "WindChillF": "25", + "WindGustKmph": "19", + "WindGustMiles": "12", + "chanceoffog": "0", + "chanceoffrost": "77", + "chanceofhightemp": "0", + "chanceofovercast": "83", + "chanceofrain": "100", + "chanceofremdry": "0", + "chanceofsnow": "73", + "chanceofsunshine": "0", + "chanceofthunder": "0", + "chanceofwindy": "0", + "cloudcover": "100", + "diffRad": "0.0", + "humidity": "95", + "precipInches": "0.0", + "precipMM": "0.6", + "pressure": "1008", + "pressureInches": "30", + "shortRad": "0.0", + "tempC": "-0", + "tempF": "32", + "time": "2100", + "uvIndex": "0", + "visibility": "1", + "visibilityMiles": "0", + "weatherCode": "284", + "weatherDesc": [ + { + "value": "Heavy freezing drizzle" + } + ], + "weatherIconUrl": [ + { + "value": "" + } + ], + "winddir16Point": "SSE", + "winddirDegree": "160", + "windspeedKmph": "12", + "windspeedMiles": "7" + } + ], + "maxtempC": "-1", + "maxtempF": "30", + "mintempC": "-3", + "mintempF": "27", + "sunHour": "4.5", + "totalSnow_cm": "0.7", + "uvIndex": "0" + } + ] +}