diff --git a/hammerspoon/.hammerspoon/config.lua b/hammerspoon/.hammerspoon/config.lua deleted file mode 100644 index 1cd5692..0000000 --- a/hammerspoon/.hammerspoon/config.lua +++ /dev/null @@ -1,37 +0,0 @@ -local accentColor = { - red = 0.25, - green = 0.65, - blue = 1.0, - alpha = 0.95, -} - -return { - windowHighlight = { - borderWidth = 5, - padding = 4, - radius = 10, - color = accentColor, - - hideOnFullscreen = false, - framePollingFps = 60, - }, - - appNameToast = { - enabled = true, - duration = 0.7, - showOnFocus = true, - showOnOption = true, - - style = { - fillColor = { white = 0.08, alpha = 0.88 }, - strokeColor = accentColor, - strokeWidth = 2, - textColor = { white = 1, alpha = 1 }, - textSize = 20, - padding = 10, - radius = 10, - fadeInDuration = 0.08, - fadeOutDuration = 0.12, - }, - }, -} diff --git a/hammerspoon/.hammerspoon/init.lua b/hammerspoon/.hammerspoon/init.lua deleted file mode 100644 index ae953ab..0000000 --- a/hammerspoon/.hammerspoon/init.lua +++ /dev/null @@ -1,14 +0,0 @@ --- Reload: Hammerspoon menu -> Reload Config - -local config = require("config") -local WindowHighlight = require("modules.window_highlight") - -local windowHighlight = WindowHighlight.new(config.windowHighlight) -windowHighlight:start() - --- Keep module state and watchers alive until the next reload. -_G.hammerspoonModules = { - windowHighlight = windowHighlight, -} - -hs.alert.show("Hammerspoon config loaded") diff --git a/hammerspoon/.hammerspoon/modules/app_name_toast.lua b/hammerspoon/.hammerspoon/modules/app_name_toast.lua deleted file mode 100644 index f34df3c..0000000 --- a/hammerspoon/.hammerspoon/modules/app_name_toast.lua +++ /dev/null @@ -1,71 +0,0 @@ -local AppNameToast = {} -AppNameToast.__index = AppNameToast - -function AppNameToast.new(config) - return setmetatable({ - config = config, - alertId = nil, - optionKeyDown = false, - optionKeyWatcher = nil, - shouldShow = nil, - focusedAppPid = nil, - }, AppNameToast) -end - -function AppNameToast:setShouldShow(predicate) - self.shouldShow = predicate -end - -function AppNameToast:_show(skipIfAppUnchanged) - if not self.config.enabled then return end - if self.shouldShow and not self.shouldShow() then return end - - local win = hs.window.focusedWindow() - local app = win and win:application() or nil - if not app then return end - - local appPid = app:pid() - if skipIfAppUnchanged and appPid == self.focusedAppPid then return end - self.focusedAppPid = appPid - - if self.alertId then - hs.alert.closeSpecific(self.alertId, 0) - end - - self.alertId = hs.alert.show( - app:name(), - self.config.style, - win:screen(), - self.config.duration - ) -end - -function AppNameToast:show() - self:_show(false) -end - -function AppNameToast:showOnFocus() - self:_show(true) -end - -function AppNameToast:start() - if not self.config.showOnOption then return self end - - self.optionKeyWatcher = hs.eventtap.new({ - hs.eventtap.event.types.flagsChanged, - }, function(event) - local isOptionDown = event:getFlags().alt == true - - if isOptionDown and not self.optionKeyDown then - self:show() - end - - self.optionKeyDown = isOptionDown - return false - end) - self.optionKeyWatcher:start() - - return self -end - -return AppNameToast diff --git a/hammerspoon/.hammerspoon/modules/window_highlight.lua b/hammerspoon/.hammerspoon/modules/window_highlight.lua deleted file mode 100644 index cfa8b16..0000000 --- a/hammerspoon/.hammerspoon/modules/window_highlight.lua +++ /dev/null @@ -1,314 +0,0 @@ -local WindowHighlight = {} -WindowHighlight.__index = WindowHighlight - -local function sameFrame(a, b) - if not a or not b then return false end - - return math.abs(a.x - b.x) < 0.1 - and math.abs(a.y - b.y) < 0.1 - and math.abs(a.w - b.w) < 0.1 - and math.abs(a.h - b.h) < 0.1 -end - -function WindowHighlight.new(config, callbacks) - local border = hs.drawing.rectangle(hs.geometry.rect(0, 0, 1, 1)) - border.canvas[1] = { - type = "segments", - action = "stroke", - closed = true, - clipToPath = true, - coordinates = { - { x = 0, y = 0 }, - { x = 1, y = 0 }, - { x = 1, y = 1 }, - { x = 0, y = 1 }, - }, - } - border:setFill(false) - border:setStroke(true) - border:setStrokeWidth(config.borderWidth) - border:setStrokeColor(config.color) - border:setLevel(hs.drawing.windowLevels.screenSaver) - border:setBehaviorByLabels({ - "canJoinAllSpaces", - "stationary", - "ignoresCycle", - "fullScreenAuxiliary", - }) - - return setmetatable({ - config = config, - callbacks = callbacks or {}, - border = border, - borderRadius = config.radius + config.padding, - missionControlActive = false, - dockElement = nil, - liveWindowWatcher = nil, - watchedWindowId = nil, - lastPolledWindowId = nil, - lastPolledFrame = nil, - watchers = {}, - }, WindowHighlight) -end - -function WindowHighlight:isMissionControlActive() - return self.missionControlActive -end - -function WindowHighlight:rectForWindow(win) - local frame = win:frame() - local screen = win:screen() - local screenFrame = screen:fullFrame() - local visibleFrame = screen:frame() - local pad = self.config.padding - local left = frame.x - pad - local top = frame.y - pad - local right = frame.x + frame.w + pad - local bottom = frame.y + frame.h + pad - local touchesScreen = left <= screenFrame.x - or top <= visibleFrame.y - or right >= screenFrame.x + screenFrame.w - or bottom >= screenFrame.y + screenFrame.h - - if touchesScreen then return frame, self.config.radius end - - return { - x = left, - y = top, - w = right - left, - h = bottom - top, - }, self.config.radius + pad -end - -function WindowHighlight:isValidWindow(win) - if not win then return false end - if not win:isStandard() then return false end - if self.config.hideOnFullscreen and win:isFullScreen() then return false end - - return win:application() ~= nil -end - -function WindowHighlight:hide() - self.border:hide() -end - -function WindowHighlight:isMissionControlOpen() - if not (self.dockElement and self.dockElement:isValid()) then - local dockApps = hs.application.applicationsForBundleID("com.apple.dock") - local dockApp = dockApps and dockApps[1] - - if not dockApp then return false end - self.dockElement = hs.axuielement.applicationElement(dockApp) - end - - for _, element in ipairs(self.dockElement) do - if element.AXIdentifier == "mc" then return true end - end - - return false -end - -function WindowHighlight:setFrame(frame) - self.border:setFrame(frame) - self:updateBorderPath(frame) - self.border:show() -end - -function WindowHighlight:updateBorderPath(frame) - local width = frame.w - local height = frame.h - local radius = math.min(self.borderRadius, width / 2, height / 2) - local bezier = 0.5522847498 - - self.border.canvas[1].coordinates = { - { x = radius, y = 0 }, - { x = width - radius, y = 0 }, - { - x = width, - y = radius, - c1x = width - radius + bezier * radius, - c1y = 0, - c2x = width, - c2y = radius - bezier * radius, - }, - { x = width, y = height - radius }, - { - x = width - radius, - y = height, - c1x = width, - c1y = height - radius + bezier * radius, - c2x = width - radius + bezier * radius, - c2y = height, - }, - { x = radius, y = height }, - { - x = 0, - y = height - radius, - c1x = radius - bezier * radius, - c1y = height, - c2x = 0, - c2y = height - radius + bezier * radius, - }, - { x = 0, y = radius }, - { - x = radius, - y = 0, - c1x = 0, - c1y = radius - bezier * radius, - c2x = radius - bezier * radius, - c2y = 0, - }, - } -end - -function WindowHighlight:update() - if self.missionControlActive then - self:hide() - return - end - - local win = hs.window.focusedWindow() - if not self:isValidWindow(win) then - self:hide() - return - end - - local targetFrame, targetRadius = self:rectForWindow(win) - self.borderRadius = targetRadius - self:setFrame(targetFrame) -end - -function WindowHighlight:watchFocusedWindowLive() - local win = hs.window.focusedWindow() - local windowId = win and win:id() or nil - - if self.liveWindowWatcher and self.watchedWindowId == windowId then return end - - if self.liveWindowWatcher then - self.liveWindowWatcher:stop() - self.liveWindowWatcher = nil - end - - self.watchedWindowId = windowId - if not win then return end - - self.liveWindowWatcher = win:newWatcher(function(_, event) - if event == hs.uielement.watcher.elementDestroyed then - if self.liveWindowWatcher then - self.liveWindowWatcher:stop() - self.liveWindowWatcher = nil - end - - self.watchedWindowId = nil - self:hide() - - hs.timer.doAfter(0.05, function() - self:watchFocusedWindowLive() - self:update() - end) - elseif event == hs.uielement.watcher.windowMoved - or event == hs.uielement.watcher.windowResized then - self:update() - end - end) - - self.liveWindowWatcher:start({ - hs.uielement.watcher.windowMoved, - hs.uielement.watcher.windowResized, - hs.uielement.watcher.elementDestroyed, - }) -end - -function WindowHighlight:start() - local windowFilter = hs.window.filter.new(nil) - windowFilter:subscribe({ - hs.window.filter.windowFocused, - hs.window.filter.windowMoved, - hs.window.filter.windowTitleChanged, - hs.window.filter.windowUnfocused, - }, function() - self:update() - end) - - windowFilter:subscribe(hs.window.filter.windowFocused, function() - self:watchFocusedWindowLive() - if self.callbacks.onWindowFocused then - self.callbacks.onWindowFocused() - end - end) - - local applicationWatcher = hs.application.watcher.new(function() - hs.timer.doAfter(0.05, function() - self:watchFocusedWindowLive() - self:update() - end) - end) - applicationWatcher:start() - - local spacesWatcher = hs.spaces.watcher.new(function() - hs.timer.doAfter(0.15, function() - self:update() - end) - end) - spacesWatcher:start() - - local missionControlWatcher = hs.timer.doEvery(0.1, function() - local ok, isOpen = pcall(function() - return self:isMissionControlOpen() - end) - if not ok or isOpen == self.missionControlActive then return end - - self.missionControlActive = isOpen - - if self.missionControlActive then - self:hide() - else - hs.timer.doAfter(0.15, function() - self:update() - end) - end - end) - - local framePollingWatcher = hs.timer.doEvery( - 1 / self.config.framePollingFps, - function() - if self.missionControlActive then return end - - local win = hs.window.focusedWindow() - local windowId = win and win:id() or nil - - if windowId ~= self.lastPolledWindowId then - self.lastPolledWindowId = windowId - self.lastPolledFrame = win and win:frame() or nil - self:watchFocusedWindowLive() - self:update() - return - end - - if not win then return end - - local frame = win:frame() - if sameFrame(frame, self.lastPolledFrame) then return end - - self.lastPolledFrame = frame - self:update() - end - ) - - self.watchers = { - windowFilter = windowFilter, - application = applicationWatcher, - spaces = spacesWatcher, - missionControl = missionControlWatcher, - framePolling = framePollingWatcher, - } - - hs.timer.doAfter(0.5, function() - self:update() - self:watchFocusedWindowLive() - end) - - return self -end - -return WindowHighlight diff --git a/swiftbar/.config/swiftbar/brew.1d.zsh b/swiftbar/.config/swiftbar/brew.1d.zsh deleted file mode 100755 index 19e6863..0000000 --- a/swiftbar/.config/swiftbar/brew.1d.zsh +++ /dev/null @@ -1,429 +0,0 @@ -#!/usr/bin/env zsh - -# Homebrew Updates -# v1.0.0 -# trivk -# Checks Homebrew daily and offers manual or automatic upgrades. -# zsh,brew -# true -# true - -set -u -zmodload zsh/datetime - -PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" -export HOMEBREW_NO_UPGRADE_AUTO_UPDATES_CASKS=1 -PLUGIN_PATH="${0:A}" - -BREW_BIN="${BREW_BIN:-$(command -v brew 2>/dev/null || true)}" -CACHE_DIR="${HOME}/Library/Caches/SwiftBarBrewUpdates" -STATE_DIR="${HOME}/Library/Application Support/SwiftBarBrewUpdates" -FORMULAE_FILE="${CACHE_DIR}/outdated-formulae" -CASKS_FILE="${CACHE_DIR}/outdated-casks" -CHECKED_AT_FILE="${CACHE_DIR}/checked-at" -ERROR_FILE="${CACHE_DIR}/last-error" -MANUAL_CHECK_FILE="${CACHE_DIR}/manual-check-running" -AUTO_FILE="${STATE_DIR}/auto-upgrade-enabled" -LOG_FILE="${STATE_DIR}/upgrade.log" -LOCK_DIR="${CACHE_DIR}/check.lock" -UPGRADE_LOCK_DIR="${CACHE_DIR}/upgrade.lock" -UPGRADE_PID_FILE="${UPGRADE_LOCK_DIR}/pid" -CHECK_INTERVAL_SECONDS=86400 -SF_SIZE=15 - -mkdir -p "${CACHE_DIR}" "${STATE_DIR}" - -escape_swiftbar() { - local value="$1" - printf '%s' "${value//\|/\\|}" -} - -escape_attribute() { - local value="$1" - local backslash='\' - local quote='"' - local pipe='|' - - value="${value//${backslash}/${backslash}${backslash}}" - value="${value//${quote}/${backslash}${quote}}" - printf '%s' "${value//${pipe}/${backslash}${pipe}}" -} - -is_auto_enabled() { - [[ -f "${AUTO_FILE}" ]] -} - -is_manual_check_running() { - [[ -f "${MANUAL_CHECK_FILE}" ]] -} - -is_upgrade_running() { - [[ -d "${UPGRADE_LOCK_DIR}" ]] || return 1 - - local upgrade_pid - upgrade_pid="$(<"${UPGRADE_PID_FILE}" 2>/dev/null || true)" - case "${upgrade_pid}" in - *[!0-9]*|'') return 0 ;; - esac - - if kill -0 "${upgrade_pid}" 2>/dev/null; then - return 0 - fi - - rm -f -- "${UPGRADE_PID_FILE:?}" # noka: ZC1059 - rmdir "${UPGRADE_LOCK_DIR}" 2>/dev/null || true - return 1 -} - -is_brew_busy() { - is_manual_check_running || is_upgrade_running -} - -acquire_upgrade_lock() { - local allow_during_check="${1:-false}" - - if [[ "${allow_during_check}" != "true" ]] && { is_manual_check_running || [[ -d "${LOCK_DIR}" ]]; }; then - return 1 - fi - - if ! mkdir "${UPGRADE_LOCK_DIR}" 2>/dev/null; then # noka: ZC1147 - is_upgrade_running && return 1 - mkdir "${UPGRADE_LOCK_DIR}" 2>/dev/null || return 1 # noka: ZC1147 - fi - - printf '%s\n' "$$" > "${UPGRADE_PID_FILE}" -} - -release_upgrade_lock() { - local upgrade_pid - upgrade_pid="$(<"${UPGRADE_PID_FILE}" 2>/dev/null || true)" - [[ "${upgrade_pid}" = "$$" ]] || return 0 - - rm -f -- "${UPGRADE_PID_FILE:?}" # noka: ZC1059 - rmdir "${UPGRADE_LOCK_DIR}" 2>/dev/null || true -} - -log_busy_upgrade() { - printf '\n[%s] Skipped %s: another Homebrew operation is already running\n' \ - "$(date '+%Y-%m-%d %H:%M:%S')" "$1" >> "${LOG_FILE}" -} - -refresh_plugin() { - local plugin_name="${PLUGIN_PATH:t}" - /usr/bin/open -g "swiftbar://refreshplugin?name=${plugin_name}" >/dev/null 2>&1 || true -} - -start_manual_check() { - is_manual_check_running && return 0 - - : >| "${MANUAL_CHECK_FILE}" - "${PLUGIN_PATH}" --check-now-worker >/dev/null 2>&1 &! -} - -run_manual_check_worker() { - rm -f -- "${CHECKED_AT_FILE:?}" # noka: ZC1059 - perform_daily_check - local check_status=$? - rm -f -- "${MANUAL_CHECK_FILE:?}" # noka: ZC1059 - refresh_plugin - return "${check_status}" -} - -write_error() { - printf '%s\n' "$1" > "${ERROR_FILE}" -} - -clear_error() { - rm -f -- "${ERROR_FILE:?}" # noka: ZC1059 -} - -record_check_time() { - date +%s > "${CHECKED_AT_FILE}" -} - -collect_outdated() { - if ! "${BREW_BIN}" outdated --formula --quiet > "${FORMULAE_FILE}.tmp" 2> "${ERROR_FILE}.tmp"; then - write_error "$(tail -n 1 "${ERROR_FILE}.tmp")" - rm -f "${FORMULAE_FILE}.tmp" "${ERROR_FILE}.tmp" - return 1 - fi - - if ! "${BREW_BIN}" outdated --cask --quiet > "${CASKS_FILE}.tmp" 2> "${ERROR_FILE}.tmp"; then - write_error "$(tail -n 1 "${ERROR_FILE}.tmp")" - rm -f "${FORMULAE_FILE}.tmp" "${CASKS_FILE}.tmp" "${ERROR_FILE}.tmp" - return 1 - fi - - mv "${FORMULAE_FILE}.tmp" "${FORMULAE_FILE}" # noka: ZC1244 - mv "${CASKS_FILE}.tmp" "${CASKS_FILE}" # noka: ZC1244 - rm -f "${ERROR_FILE}.tmp" - clear_error -} - -run_upgrade_all() { - local upgrade_mode="${1:-manual}" - local allow_during_check - - if [[ "${upgrade_mode}" = "auto" ]]; then - allow_during_check=true - else - allow_during_check=false - fi - - if ! acquire_upgrade_lock "${allow_during_check}"; then - log_busy_upgrade "Homebrew upgrade" - return 75 - fi - refresh_plugin - - { - printf '\n[%s] Starting Homebrew upgrade\n' "$(date '+%Y-%m-%d %H:%M:%S')" - if [[ "${upgrade_mode}" = "auto" ]]; then - "${BREW_BIN}" upgrade --yes - else - "${BREW_BIN}" update && "${BREW_BIN}" upgrade --yes - fi - } >> "${LOG_FILE}" 2>&1 - local upgrade_status=$? - - collect_outdated || true - record_check_time - release_upgrade_lock - refresh_plugin - return "${upgrade_status}" -} - -run_upgrade_one() { - local package_name="$1" - local package_type="$2" - local type_flag - - case "${package_name}" in - *[!A-Za-z0-9@+._/-]*|'') - printf 'Invalid Homebrew package name: %s\n' "${package_name}" >&2 - return 2 - ;; - esac - - case "${package_type}" in - formula) type_flag="--formula" ;; - cask) type_flag="--cask" ;; - *) - printf 'Invalid package type: %s\n' "${package_type}" >&2 - return 2 - ;; - esac - - if ! acquire_upgrade_lock; then - log_busy_upgrade "upgrade of ${package_name}" - return 75 - fi - refresh_plugin - - { - printf '\n[%s] Upgrading %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "${package_name}" - "${BREW_BIN}" upgrade --yes "${type_flag}" "${package_name}" - } >> "${LOG_FILE}" 2>&1 - local upgrade_status=$? - - collect_outdated || true - record_check_time - release_upgrade_lock - refresh_plugin - return "${upgrade_status}" -} - -perform_daily_check() { - if ! mkdir "${LOCK_DIR}" 2>/dev/null; then # noka: ZC1147 - return 0 - fi - trap 'rmdir "${LOCK_DIR}" 2>/dev/null || true' EXIT - - local update_output update_status - update_output="$("${BREW_BIN}" update 2>&1)" - update_status=$? - if (( update_status != 0 )); then - write_error "$(printf '%s\n' "${update_output}" | tail -n 1)" - record_check_time - return 1 - fi - - collect_outdated || { - record_check_time - return 1 - } - record_check_time - - if is_auto_enabled && (( $(outdated_count) > 0 )); then - run_upgrade_all auto - fi -} - -check_is_due() { - [[ ! -f "${CHECKED_AT_FILE}" ]] && return 0 - - local checked_at - checked_at="$(<"${CHECKED_AT_FILE}" 2>/dev/null || printf '0')" - case "${checked_at}" in - *[!0-9]*|'') return 0 ;; - esac - - local now - now="$(date +%s)" - (( now - checked_at >= CHECK_INTERVAL_SECONDS )) -} - -file_line_count() { - if [[ -s "$1" ]]; then - local count - count="$(wc -l < "$1")" - printf '%s' "${count// /}" - else - printf '0' - fi -} - -outdated_count() { - local formula_count cask_count - formula_count="$(file_line_count "${FORMULAE_FILE}")" - cask_count="$(file_line_count "${CASKS_FILE}")" - printf '%s' $((formula_count + cask_count)) -} - -format_checked_at() { - if [[ ! -f "${CHECKED_AT_FILE}" ]]; then - printf 'Never' - return - fi - - local checked_at - checked_at="$(<"${CHECKED_AT_FILE}")" - strftime '%Y-%m-%d %H:%M' "${checked_at}" 2>/dev/null || printf 'Unknown' -} - -render_package_menu() { - local package_file="$1" - local package_type="$2" - local heading="$3" - - [[ -s "${package_file}" ]] || return 0 - - local script_path - script_path="$(escape_attribute "${PLUGIN_PATH}")" - if [[ "${package_type}" = "formula" ]]; then - local heading_symbol="shippingbox" - local package_symbol="cube.box" - else - local heading_symbol="macwindow" - local package_symbol="app" - fi - - printf ':%s: %s | sfsize=%s\n' "${heading_symbol}" "${heading}" "${SF_SIZE}" - local package_name safe_name - while IFS= read -r package_name; do - [[ -n "${package_name}" ]] || continue - safe_name="$(escape_swiftbar "${package_name}")" - if is_brew_busy; then - printf -- '--:%s: %s | sfsize=%s disabled=true\n' "${package_symbol}" "${safe_name}" "${SF_SIZE}" - else - printf -- '--:%s: %s | sfsize=%s bash="%s" param1=--upgrade-one param2=%s param3=%s terminal=false refresh=true\n' \ - "${package_symbol}" "${safe_name}" "${SF_SIZE}" "${script_path}" "${safe_name}" "${package_type}" - fi - done < "${package_file}" -} - -render_menu() { - local count checked_at script_path - count="$(outdated_count)" - checked_at="$(format_checked_at)" - script_path="$(escape_attribute "${PLUGIN_PATH}")" - - if is_brew_busy; then - printf ':arrow.triangle.2.circlepath: … | sfsize=%s tooltip="Homebrew operation in progress…"\n' "${SF_SIZE}" - elif (( count == 0 )); then - printf ':shippingbox.fill: 0 | sfsize=%s tooltip="Homebrew is up to date"\n' "${SF_SIZE}" - else - printf ':shippingbox.fill: %s | sfsize=%s tooltip="%s Homebrew package(s) outdated"\n' "${count}" "${SF_SIZE}" "${count}" - fi - - printf -- '---\n' - printf ':shippingbox.fill: Homebrew Updates | sfsize=%s size=14\n' "${SF_SIZE}" - printf -- '--:number.circle: Outdated: %s | sfsize=%s\n' "${count}" "${SF_SIZE}" - printf -- '--:clock: Last check: %s | sfsize=%s\n' "${checked_at}" "${SF_SIZE}" - - if [[ -s "${ERROR_FILE}" ]]; then - local error_message - error_message="$(escape_swiftbar "$(tail -n 1 "${ERROR_FILE}")")" - printf -- '--:exclamationmark.triangle.fill: Last check failed: %s | sfsize=%s color=#FF3B30\n' "${error_message}" "${SF_SIZE}" - fi - - printf -- '---\n' - if is_auto_enabled; then - printf ':checkmark.circle.fill: Auto upgrade | sfsize=%s bash="%s" param1=--disable-auto terminal=false refresh=true\n' "${SF_SIZE}" "${script_path}" - else - printf ':circle: Auto upgrade | sfsize=%s bash="%s" param1=--enable-auto terminal=false refresh=true\n' "${SF_SIZE}" "${script_path}" - fi - - if is_brew_busy; then - printf ':arrow.clockwise: Check for updates now | sfsize=%s disabled=true\n' "${SF_SIZE}" - else - printf ':arrow.clockwise: Check for updates now | sfsize=%s bash="%s" param1=--check-now terminal=false refresh=true\n' "${SF_SIZE}" "${script_path}" - fi - - if (( count > 0 )); then - if is_brew_busy; then - printf ':arrow.up: Upgrade all in background | sfsize=%s disabled=true\n' "${SF_SIZE}" - else - printf ':arrow.up: Upgrade all in background | sfsize=%s bash="%s" param1=--upgrade-all terminal=false refresh=true\n' "${SF_SIZE}" "${script_path}" - fi - printf -- '---\n' - render_package_menu "${FORMULAE_FILE}" formula 'Formulae' - render_package_menu "${CASKS_FILE}" cask 'Casks' - fi - - if [[ -f "${LOG_FILE}" ]]; then - local log_path - log_path="$(escape_attribute "${LOG_FILE}")" - printf -- '---\n' - printf ':doc.text: Open upgrade log | sfsize=%s bash=/usr/bin/open param1="%s" terminal=false\n' "${SF_SIZE}" "${log_path}" - fi -} - -if [[ -z "${BREW_BIN}" ]]; then - printf ':exclamationmark.triangle.fill: ! | sfsize=%s color=#FF3B30\n' "${SF_SIZE}" - printf -- '---\nHomebrew was not found in /opt/homebrew or /usr/local.\n' - exit 0 -fi - -case "${1:-}" in - --enable-auto) - : >| "${AUTO_FILE}" - exit 0 - ;; - --disable-auto) - rm -f -- "${AUTO_FILE:?}" # noka: ZC1059 - exit 0 - ;; - --check-now) - start_manual_check - exit $? - ;; - --check-now-worker) - run_manual_check_worker - exit $? - ;; - --upgrade-all) - run_upgrade_all - exit $? - ;; - --upgrade-one) - run_upgrade_one "${2:-}" "${3:-}" - exit $? - ;; -esac - -if check_is_due; then - perform_daily_check || true -fi - -render_menu diff --git a/zsh/.config/zsh/config/default.zsh b/zsh/.config/zsh/config/default.zsh index 5f45b3e..e44ee2d 100644 --- a/zsh/.config/zsh/config/default.zsh +++ b/zsh/.config/zsh/config/default.zsh @@ -8,14 +8,12 @@ export VISUAL="micro" export SUDO_EDITOR="micro" export STARSHIP_CONFIG="$XDG_CONFIG_HOME"/starship/starship.toml -export OPENCODE_EXPERIMENTAL_BACKGROUND_SUBAGENTS=true export HOMEBREW_NO_UPGRADE_AUTO_UPDATES_CASKS=1 export PNPM_HOME="$HOME/.local/share/pnpm" typeset -U path path=( - "$HOME/.opencode/bin" "$PNPM_HOME/bin" $path )