diff --git a/ansible/roles/poudriere/files/poudriere.d/currentznver4-default-framework-pkglist b/ansible/roles/poudriere/files/poudriere.d/currentznver4-default-framework-pkglist index 84ceaa7..bc18504 100644 --- a/ansible/roles/poudriere/files/poudriere.d/currentznver4-default-framework-pkglist +++ b/ansible/roles/poudriere/files/poudriere.d/currentznver4-default-framework-pkglist @@ -94,7 +94,6 @@ sysutils/lsof sysutils/moreutils sysutils/ncdu sysutils/nvme-cli -sysutils/powermon sysutils/pstree sysutils/pv sysutils/radeontop diff --git a/ansible/roles/power_management/files/power_off_no_driver_loader.conf b/ansible/roles/power_management/files/power_off_no_driver_loader.conf new file mode 100644 index 0000000..611c80a --- /dev/null +++ b/ansible/roles/power_management/files/power_off_no_driver_loader.conf @@ -0,0 +1,2 @@ +# Do not power devices that have no driver attached. +hw.pci.do_power_nodriver=3 diff --git a/ansible/roles/power_management/tasks/freebsd.yaml b/ansible/roles/power_management/tasks/freebsd.yaml index b417174..f075d71 100644 --- a/ansible/roles/power_management/tasks/freebsd.yaml +++ b/ansible/roles/power_management/tasks/freebsd.yaml @@ -3,3 +3,13 @@ # name: # - foo # state: present + +- name: Install loader.conf + copy: + src: "files/{{ item }}_loader.conf" + dest: "/boot/loader.conf.d/{{ item }}.conf" + mode: 0644 + owner: root + group: wheel + loop: + - power_off_no_driver diff --git a/ansible/roles/waybar/files/style.css b/ansible/roles/waybar/files/style.css index a74af00..3a414c9 100644 --- a/ansible/roles/waybar/files/style.css +++ b/ansible/roles/waybar/files/style.css @@ -1,15 +1,15 @@ /* Work-around for regressions introduced in 0.9.15 */ * { - all: unset; + all: unset; } /* Reset all styles */ * { - border: none; - border-radius: 0; - min-height: 0; - margin: 0; - padding: 0; + border: none; + border-radius: 0; + min-height: 0; + margin: 0; + padding: 0; } /* ----------------------------------------------------------------------------- @@ -17,43 +17,43 @@ * -------------------------------------------------------------------------- */ @keyframes blink-warning { - 70% { - color: white; - } + 70% { + color: white; + } - to { - color: white; - background-color: orange; - } + to { + color: white; + background-color: orange; + } } @keyframes blink-critical { - 70% { - color: white; - } + 70% { + color: white; + } - to { - color: white; - background-color: red; - } + to { + color: white; + background-color: red; + } } - /* ----------------------------------------------------------------------------- * Base styles * -------------------------------------------------------------------------- */ - /* The whole bar */ #waybar { - background: #323232; - color: white; - font-family: Cascadia Mono, monospace; - font-size: 10px; + background: #323232; + color: white; + font-family: + Cascadia Mono, + monospace; + font-size: 10px; } tooltip { - background-color: #323232; + background-color: #323232; } /* Each module */ @@ -65,7 +65,6 @@ tooltip { #custom-clock, #custom-sound, #custom-temperature, -#custom-recording_indicator, #idle_inhibitor, #memory, #mode, @@ -73,46 +72,45 @@ tooltip { #pulseaudio, #temperature, #tray { - padding-left: 10px; - padding-right: 10px; - border: 1px solid white; + padding-left: 10px; + padding-right: 10px; + border: 1px solid white; } - /* ----------------------------------------------------------------------------- * Module styles * -------------------------------------------------------------------------- */ #battery { - animation-timing-function: linear; - animation-iteration-count: infinite; - animation-direction: alternate; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; } #custom-battery.warning { - color: orange; + color: orange; } #custom-battery.critical { - color: red; + color: red; } #battery.warning.discharging { - animation-name: blink-warning; - animation-duration: 3s; + animation-name: blink-warning; + animation-duration: 3s; } #battery.critical.discharging { - animation-name: blink-critical; - animation-duration: 2s; + animation-name: blink-critical; + animation-duration: 2s; } #clock { - font-weight: bold; + font-weight: bold; } #custom-clock { - font-weight: bold; + font-weight: bold; } #cpu { @@ -120,92 +118,88 @@ tooltip { } #cpu.warning { - color: orange; + color: orange; } #cpu.critical { - color: red; + color: red; } #memory { - animation-timing-function: linear; - animation-iteration-count: infinite; - animation-direction: alternate; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; } #memory.warning { - color: orange; + color: orange; } #memory.critical { - color: red; - animation-name: blink-critical; - animation-duration: 2s; + color: red; + animation-name: blink-critical; + animation-duration: 2s; } #mode { - background: #64727D; - border-top: 2px solid white; - /* To compensate for the top border and still have vertical centering */ - padding-bottom: 2px; + background: #64727d; + border-top: 2px solid white; + /* To compensate for the top border and still have vertical centering */ + padding-bottom: 2px; } #network { - /* No styles */ + /* No styles */ } #network.disconnected { - color: orange; + color: orange; } #pulseaudio { - /* No styles */ + /* No styles */ } #pulseaudio.muted { - /* No styles */ + /* No styles */ } #custom-spotify { - color: rgb(102, 220, 105); + color: rgb(102, 220, 105); } #temperature { - /* No styles */ + /* No styles */ } #temperature.critical { - color: red; + color: red; } #tray { - /* No styles */ + /* No styles */ } #window { - font-weight: bold; + font-weight: bold; } #workspaces button { - border-top: 2px solid transparent; - /* To compensate for the top border and still have vertical centering */ - padding-bottom: 2px; - padding-left: 10px; - padding-right: 10px; - color: #888888; + border-top: 2px solid transparent; + /* To compensate for the top border and still have vertical centering */ + padding-bottom: 2px; + padding-left: 10px; + padding-right: 10px; + color: #888888; } #workspaces button.focused { - border-color: #4c7899; - color: white; - background-color: #285577; + border-color: #4c7899; + color: white; + background-color: #285577; } #workspaces button.urgent { - border-color: #c9545d; - color: #c9545d; -} - -#custom-recording_indicator { - color: red; + border-color: #c9545d; + color: #c9545d; } diff --git a/ansible/roles/waybar/files/waybar_config.json b/ansible/roles/waybar/files/waybar_config.json index 853a3db..5f2e162 100644 --- a/ansible/roles/waybar/files/waybar_config.json +++ b/ansible/roles/waybar/files/waybar_config.json @@ -1,6 +1,6 @@ { // "height": 10, // Waybar height (to be removed for auto height) - "modules-left": ["sway/workspaces", "sway/mode", "custom/recording_indicator"], + "modules-left": ["sway/workspaces", "sway/mode"], "modules-right": ["custom/temperature", "custom/sound", "custom/available_memory", "custom/battery", "idle_inhibitor", "custom/clock", "tray"], "sway/workspaces": { "disable-scroll": true @@ -43,10 +43,5 @@ "exec": "waybar_custom_temperature", "return-type": "json", "restart-interval": 30 - }, - "custom/recording_indicator": { - "exec": "waybar_custom_recording_indicator", - "return-type": "json", - "restart-interval": 30 } } diff --git a/ansible/roles/waybar/files/waybar_scripts/waybar_custom_clock.py b/ansible/roles/waybar/files/waybar_scripts/waybar_custom_clock.py index d42ca54..f6eb54c 100644 --- a/ansible/roles/waybar/files/waybar_scripts/waybar_custom_clock.py +++ b/ansible/roles/waybar/files/waybar_scripts/waybar_custom_clock.py @@ -10,7 +10,6 @@ from functools import lru_cache from typing import Final, List, Optional from zoneinfo import ZoneInfo -INTERVAL: Final[int] = 10 LOCAL_TIMEZONE = datetime.datetime.now(datetime.timezone.utc).astimezone().tzinfo @@ -87,10 +86,10 @@ def main(): time_before_next_update = next_update - time.time() if time_before_next_update > 0: time.sleep(time_before_next_update) - next_update = time.time() + INTERVAL + next_update = 60 * (1 + int(time.time()) // 60) now = datetime.datetime.now(tz=tz) - text = now.strftime("%Y-%m-%d %H:%M") + text = now.strftime("%Y-%m-%d %H:%M:%S") tooltip = make_calendar(now.date(), tz) out = Update( diff --git a/ansible/roles/waybar/files/waybar_scripts/waybar_recording_indicator_freebsd.bash b/ansible/roles/waybar/files/waybar_scripts/waybar_recording_indicator_freebsd.bash deleted file mode 100644 index 78c7fad..0000000 --- a/ansible/roles/waybar/files/waybar_scripts/waybar_recording_indicator_freebsd.bash +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env bash -# -# Report screen recording status in FreeBSD -set -euo pipefail -IFS=$'\n\t' -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - -SLEEP_INTERVAL=${SLEEP_INTERVAL:-10} -DELAY_ACTION=${DELAY_ACTION:-2} - -function main { - local previous_reported="-1" - local now=$(date +%s) - local check_again_at=$((now + SLEEP_INTERVAL)) - local next_sleep_interval=$SLEEP_INTERVAL - - stream_key_binding_activations | while true; do - if read -t "$next_sleep_interval" event; then - now=$(date +%s) - latest_allowed_check=$((now + DELAY_ACTION)) - if [ "$latest_allowed_check" -lt "$check_again_at" ]; then - # Scheduling a debounced action - check_again_at=$latest_allowed_check - next_sleep_interval=$DELAY_ACTION - else - # New debounced event would trigger after a check is already scheduled - next_sleep_interval=$((check_again_at - now)) - fi - if [ "$now" -lt "$check_again_at" ]; then - continue - fi - fi - - if pgrep -q wl-screenrec; then - local is_running=1 - else - local is_running=0 - fi - if [ "$is_running" -ne "$previous_reported" ]; then - previous_reported="$is_running" - report "$is_running" - fi - - now=$(date +%s) - check_again_at=$((now + SLEEP_INTERVAL)) - next_sleep_interval=$SLEEP_INTERVAL - done -} - -function stream_key_binding_activations { - echo "{}" - swaymsg --raw --monitor --type subscribe '[ "binding" ]' -} - -function report { - is_running="$1" - if [ "$is_running" -eq 0 ]; then - jq --unbuffered --compact-output <