forked from Shinonome/dots-hyprland
Merge branch 'end-4:main' into parallax
This commit is contained in:
@@ -230,8 +230,8 @@ bindd = Ctrl+Shift+Alt+Super, Delete, Shutdown, exec, systemctl poweroff || logi
|
|||||||
|
|
||||||
##! Screen
|
##! Screen
|
||||||
# Zoom
|
# Zoom
|
||||||
binde = Super, Minus, exec, ~/.config/hypr/hyprland/scripts/zoom.sh decrease 0.3 # [hidden] Zoom out
|
binde = Super, Minus, exec, ~/.config/hypr/hyprland/scripts/zoom.sh decrease 0.3 # Zoom out
|
||||||
binde = Super, Equal, exec, ~/.config/hypr/hyprland/scripts/zoom.sh increase 0.3 # [hidden] Zoom in
|
binde = Super, Equal, exec, ~/.config/hypr/hyprland/scripts/zoom.sh increase 0.3 # Zoom in
|
||||||
# Zoom with keypad
|
# Zoom with keypad
|
||||||
binde = Super, code:82, exec, qs -c $qsConfig ipc call zoom zoomOut # [hidden] Zoom out
|
binde = Super, code:82, exec, qs -c $qsConfig ipc call zoom zoomOut # [hidden] Zoom out
|
||||||
binde = Super, code:86, exec, qs -c $qsConfig ipc call zoom zoomIn # [hidden] Zoom in
|
binde = Super, code:86, exec, qs -c $qsConfig ipc call zoom zoomIn # [hidden] Zoom in
|
||||||
|
|||||||
@@ -1,22 +1,38 @@
|
|||||||
/*
|
/*
|
||||||
* GTK Colors
|
* GTK colors generated with Matugen
|
||||||
* Generated with Matugen
|
* The source template is here: ~/.config/matugen/templates/gtk-3.0/gtk.css
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Accents */
|
||||||
@define-color accent_color {{colors.primary.default.hex}};
|
@define-color accent_color {{colors.primary.default.hex}};
|
||||||
@define-color accent_fg_color {{colors.on_primary.default.hex}};
|
@define-color accent_fg_color {{colors.on_primary.default.hex}};
|
||||||
@define-color accent_bg_color {{colors.primary.default.hex}};
|
@define-color accent_bg_color {{colors.primary.default.hex}};
|
||||||
|
@define-color destructive_bg_color {{colors.error_container.default.hex}};
|
||||||
|
@define-color destructive_fg_color {{colors.on_error_container.default.hex}};
|
||||||
|
@define-color destructive_color {{colors.error.default.hex}};
|
||||||
|
@define-color success_bg_color #374B3E;
|
||||||
|
@define-color success_fg_color #D1E9D6;
|
||||||
|
@define-color success_color #B5CCBA;
|
||||||
|
/* Base surfaces */
|
||||||
@define-color window_bg_color {{colors.background.default.hex}};
|
@define-color window_bg_color {{colors.background.default.hex}};
|
||||||
@define-color window_fg_color {{colors.on_background.default.hex}};
|
@define-color window_fg_color {{colors.on_background.default.hex}};
|
||||||
@define-color headerbar_bg_color {{colors.surface_dim.default.hex}};
|
@define-color headerbar_bg_color {{colors.surface_container.default.hex}};
|
||||||
|
@define-color headerbar_backdrop_color {{colors.surface_container.default.hex}};
|
||||||
@define-color headerbar_fg_color {{colors.on_surface.default.hex}};
|
@define-color headerbar_fg_color {{colors.on_surface.default.hex}};
|
||||||
@define-color popover_bg_color {{colors.surface_dim.default.hex}};
|
@define-color card_bg_color {{colors.surface_container.default.hex}};
|
||||||
@define-color popover_fg_color {{colors.on_surface.default.hex}};
|
|
||||||
@define-color view_bg_color {{colors.surface.default.hex}};
|
|
||||||
@define-color view_fg_color {{colors.on_surface.default.hex}};
|
|
||||||
@define-color card_bg_color {{colors.surface.default.hex}};
|
|
||||||
@define-color card_fg_color {{colors.on_surface.default.hex}};
|
@define-color card_fg_color {{colors.on_surface.default.hex}};
|
||||||
@define-color sidebar_bg_color @window_bg_color;
|
@define-color sidebar_bg_color {{colors.surface_container.default.hex}};
|
||||||
@define-color sidebar_fg_color @window_fg_color;
|
@define-color sidebar_fg_color {{colors.on_surface.default.hex}};
|
||||||
@define-color sidebar_border_color @window_bg_color;
|
@define-color secondary_sidebar_bg_color {{colors.surface_container_low.default.hex}};
|
||||||
@define-color sidebar_backdrop_color @window_bg_color;
|
@define-color secondary_sidebar_fg_color {{colors.on_surface.default.hex}};
|
||||||
|
@define-color sidebar_border_color @sidebar_bg_color;
|
||||||
|
@define-color sidebar_backdrop_color @sidebar_bg_color;
|
||||||
|
@define-color view_bg_color {{colors.surface_container_lowest.default.hex}};
|
||||||
|
@define-color view_fg_color {{colors.on_surface.default.hex}};
|
||||||
|
@define-color overview_bg_color {{colors.surface_container_lowest.default.hex}};
|
||||||
|
@define-color overview_fg_color {{colors.on_surface.default.hex}};
|
||||||
|
/* Popups */
|
||||||
|
@define-color popover_bg_color {{colors.surface_container_highest.default.hex}};
|
||||||
|
@define-color popover_fg_color {{colors.on_surface.default.hex}};
|
||||||
|
@define-color dialog_bg_color {{colors.surface_container_high.default.hex}};
|
||||||
|
@define-color dialog_fg_color {{colors.on_surface.default.hex}};
|
||||||
|
|||||||
@@ -1,44 +1,83 @@
|
|||||||
/*
|
/*
|
||||||
* GTK Colors
|
* GTK colors generated with Matugen
|
||||||
* Generated with Matugen
|
* The source template is here: ~/.config/matugen/templates/gtk-4.0/gtk.css
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@media (prefers-color-scheme: light) {
|
@media (prefers-color-scheme: light) {
|
||||||
|
/* Accents */
|
||||||
@define-color accent_color {{colors.primary.light.hex}};
|
@define-color accent_color {{colors.primary.light.hex}};
|
||||||
@define-color accent_fg_color {{colors.on_primary.light.hex}};
|
@define-color accent_fg_color {{colors.on_primary.light.hex}};
|
||||||
@define-color accent_bg_color {{colors.primary.light.hex}};
|
@define-color accent_bg_color {{colors.primary.light.hex}};
|
||||||
|
@define-color destructive_bg_color {{colors.error_container.light.hex}};
|
||||||
|
@define-color destructive_fg_color {{colors.on_error_container.light.hex}};
|
||||||
|
@define-color destructive_color {{colors.error.light.hex}};
|
||||||
|
@define-color success_bg_color #B5CCBA;
|
||||||
|
@define-color success_fg_color #213528;
|
||||||
|
@define-color success_color #374B3E;
|
||||||
|
/* Base surfaces */
|
||||||
@define-color window_bg_color {{colors.background.light.hex}};
|
@define-color window_bg_color {{colors.background.light.hex}};
|
||||||
@define-color window_fg_color {{colors.on_background.light.hex}};
|
@define-color window_fg_color {{colors.on_background.light.hex}};
|
||||||
@define-color headerbar_bg_color {{colors.surface_dim.light.hex}};
|
@define-color headerbar_bg_color {{colors.surface_container.light.hex}};
|
||||||
|
@define-color headerbar_backdrop_color {{colors.surface_container.light.hex}};
|
||||||
@define-color headerbar_fg_color {{colors.on_surface.light.hex}};
|
@define-color headerbar_fg_color {{colors.on_surface.light.hex}};
|
||||||
@define-color popover_bg_color {{colors.surface_dim.light.hex}};
|
@define-color card_bg_color {{colors.surface_container.light.hex}};
|
||||||
@define-color popover_fg_color {{colors.on_surface.light.hex}};
|
|
||||||
@define-color view_bg_color {{colors.surface.light.hex}};
|
|
||||||
@define-color view_fg_color {{colors.on_surface.light.hex}};
|
|
||||||
@define-color card_bg_color {{colors.surface.light.hex}};
|
|
||||||
@define-color card_fg_color {{colors.on_surface.light.hex}};
|
@define-color card_fg_color {{colors.on_surface.light.hex}};
|
||||||
@define-color sidebar_bg_color @window_bg_color;
|
@define-color sidebar_bg_color {{colors.surface_container.light.hex}};
|
||||||
@define-color sidebar_fg_color @window_fg_color;
|
@define-color sidebar_fg_color {{colors.on_surface.light.hex}};
|
||||||
@define-color sidebar_border_color @window_bg_color;
|
@define-color secondary_sidebar_bg_color {{colors.surface_container_low.light.hex}};
|
||||||
@define-color sidebar_backdrop_color @window_bg_color;
|
@define-color secondary_sidebar_backdrop_color {{colors.surface_container_low.light.hex}};
|
||||||
|
@define-color secondary_sidebar_fg_color {{colors.on_surface.light.hex}};
|
||||||
|
@define-color sidebar_border_color @sidebar_bg_color;
|
||||||
|
@define-color sidebar_backdrop_color @sidebar_bg_color;
|
||||||
|
@define-color view_bg_color {{colors.surface_container_lowest.light.hex}};
|
||||||
|
@define-color view_fg_color {{colors.on_surface.light.hex}};
|
||||||
|
@define-color overview_bg_color {{colors.surface_container_lowest.light.hex}};
|
||||||
|
@define-color overview_fg_color {{colors.on_surface.light.hex}};
|
||||||
|
/* Popups */
|
||||||
|
@define-color popover_bg_color {{colors.surface_container_highest.light.hex}};
|
||||||
|
@define-color popover_fg_color {{colors.on_surface.light.hex}};
|
||||||
|
@define-color dialog_bg_color {{colors.surface_container_high.light.hex}};
|
||||||
|
@define-color dialog_fg_color {{colors.on_surface.light.hex}};
|
||||||
|
@define-color thumbnail_bg_color {{colors.surface_container_high.light.hex}};
|
||||||
|
@define-color thumbnail_fg_color {{colors.on_surface.light.hex}};
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (prefers-color-scheme: dark) {
|
@media (prefers-color-scheme: dark) {
|
||||||
|
|
||||||
|
/* Accents */
|
||||||
@define-color accent_color {{colors.primary.dark.hex}};
|
@define-color accent_color {{colors.primary.dark.hex}};
|
||||||
@define-color accent_fg_color {{colors.on_primary.dark.hex}};
|
@define-color accent_fg_color {{colors.on_primary.dark.hex}};
|
||||||
@define-color accent_bg_color {{colors.primary.dark.hex}};
|
@define-color accent_bg_color {{colors.primary.dark.hex}};
|
||||||
|
@define-color destructive_bg_color {{colors.error_container.dark.hex}};
|
||||||
|
@define-color destructive_fg_color {{colors.on_error_container.dark.hex}};
|
||||||
|
@define-color destructive_color {{colors.error.dark.hex}};
|
||||||
|
@define-color success_bg_color #374B3E;
|
||||||
|
@define-color success_fg_color #D1E9D6;
|
||||||
|
@define-color success_color #B5CCBA;
|
||||||
|
/* Base surfaces */
|
||||||
@define-color window_bg_color {{colors.background.dark.hex}};
|
@define-color window_bg_color {{colors.background.dark.hex}};
|
||||||
@define-color window_fg_color {{colors.on_background.dark.hex}};
|
@define-color window_fg_color {{colors.on_background.dark.hex}};
|
||||||
@define-color headerbar_bg_color {{colors.surface_dim.dark.hex}};
|
@define-color headerbar_bg_color {{colors.surface_container.dark.hex}};
|
||||||
|
@define-color headerbar_backdrop_color {{colors.surface_container.dark.hex}};
|
||||||
@define-color headerbar_fg_color {{colors.on_surface.dark.hex}};
|
@define-color headerbar_fg_color {{colors.on_surface.dark.hex}};
|
||||||
@define-color popover_bg_color {{colors.surface_dim.dark.hex}};
|
@define-color card_bg_color {{colors.surface_container.dark.hex}};
|
||||||
@define-color popover_fg_color {{colors.on_surface.dark.hex}};
|
|
||||||
@define-color view_bg_color {{colors.surface.dark.hex}};
|
|
||||||
@define-color view_fg_color {{colors.on_surface.dark.hex}};
|
|
||||||
@define-color card_bg_color {{colors.surface.dark.hex}};
|
|
||||||
@define-color card_fg_color {{colors.on_surface.dark.hex}};
|
@define-color card_fg_color {{colors.on_surface.dark.hex}};
|
||||||
@define-color sidebar_bg_color @window_bg_color;
|
@define-color sidebar_bg_color {{colors.surface_container.dark.hex}};
|
||||||
@define-color sidebar_fg_color @window_fg_color;
|
@define-color sidebar_fg_color {{colors.on_surface.dark.hex}};
|
||||||
@define-color sidebar_border_color @window_bg_color;
|
@define-color secondary_sidebar_bg_color {{colors.surface_container_low.dark.hex}};
|
||||||
@define-color sidebar_backdrop_color @window_bg_color;
|
@define-color secondary_sidebar_backdrop_color {{colors.surface_container_low.dark.hex}};
|
||||||
|
@define-color secondary_sidebar_fg_color {{colors.on_surface.dark.hex}};
|
||||||
|
@define-color sidebar_border_color @sidebar_bg_color;
|
||||||
|
@define-color sidebar_backdrop_color @sidebar_bg_color;
|
||||||
|
@define-color view_bg_color {{colors.surface_container_lowest.dark.hex}};
|
||||||
|
@define-color view_fg_color {{colors.on_surface.dark.hex}};
|
||||||
|
@define-color overview_bg_color {{colors.surface_container_lowest.dark.hex}};
|
||||||
|
@define-color overview_fg_color {{colors.on_surface.dark.hex}};
|
||||||
|
/* Popups */
|
||||||
|
@define-color popover_bg_color {{colors.surface_container_highest.dark.hex}};
|
||||||
|
@define-color popover_fg_color {{colors.on_surface.dark.hex}};
|
||||||
|
@define-color dialog_bg_color {{colors.surface_container_high.dark.hex}};
|
||||||
|
@define-color dialog_fg_color {{colors.on_surface.dark.hex}};
|
||||||
|
@define-color thumbnail_bg_color {{colors.surface_container_high.dark.hex}};
|
||||||
|
@define-color thumbnail_fg_color {{colors.on_surface.dark.hex}};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,16 +66,9 @@ Item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Connections {
|
|
||||||
target: Config
|
|
||||||
function onReadyChanged() {
|
|
||||||
categoryFileView.path = Directories.generatedWallpaperCategoryPath
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
FileView {
|
FileView {
|
||||||
id: categoryFileView
|
id: categoryFileView
|
||||||
path: ""
|
path: Config.ready ? Directories.generatedWallpaperCategoryPath : ""
|
||||||
watchChanges: true
|
watchChanges: true
|
||||||
onFileChanged: reload()
|
onFileChanged: reload()
|
||||||
onLoaded: {
|
onLoaded: {
|
||||||
@@ -85,7 +78,7 @@ Item {
|
|||||||
|
|
||||||
property bool useSineCookie: Config.options.background.widgets.clock.cookie.useSineCookie
|
property bool useSineCookie: Config.options.background.widgets.clock.cookie.useSineCookie
|
||||||
StyledDropShadow {
|
StyledDropShadow {
|
||||||
target: useSineCookie ? sineCookieLoader : roundedPolygonCookieLoader
|
target: root.useSineCookie ? sineCookieLoader : roundedPolygonCookieLoader
|
||||||
|
|
||||||
RotationAnimation on rotation {
|
RotationAnimation on rotation {
|
||||||
running: Config.options.background.widgets.clock.cookie.constantlyRotate
|
running: Config.options.background.widgets.clock.cookie.constantlyRotate
|
||||||
@@ -100,7 +93,7 @@ Item {
|
|||||||
id: sineCookieLoader
|
id: sineCookieLoader
|
||||||
z: 0
|
z: 0
|
||||||
visible: false // The DropShadow already draws it
|
visible: false // The DropShadow already draws it
|
||||||
active: useSineCookie
|
active: root.useSineCookie
|
||||||
sourceComponent: SineCookie {
|
sourceComponent: SineCookie {
|
||||||
implicitSize: root.implicitSize
|
implicitSize: root.implicitSize
|
||||||
sides: Config.options.background.widgets.clock.cookie.sides
|
sides: Config.options.background.widgets.clock.cookie.sides
|
||||||
@@ -111,7 +104,7 @@ Item {
|
|||||||
id: roundedPolygonCookieLoader
|
id: roundedPolygonCookieLoader
|
||||||
z: 0
|
z: 0
|
||||||
visible: false // The DropShadow already draws it
|
visible: false // The DropShadow already draws it
|
||||||
active: !useSineCookie
|
active: !root.useSineCookie
|
||||||
sourceComponent: MaterialCookie {
|
sourceComponent: MaterialCookie {
|
||||||
implicitSize: root.implicitSize
|
implicitSize: root.implicitSize
|
||||||
sides: Config.options.background.widgets.clock.cookie.sides
|
sides: Config.options.background.widgets.clock.cookie.sides
|
||||||
|
|||||||
@@ -246,8 +246,8 @@ ContentPage {
|
|||||||
value: Config.options.background.widgets.clock.digital.font.size
|
value: Config.options.background.widgets.clock.digital.font.size
|
||||||
usePercentTooltip: false
|
usePercentTooltip: false
|
||||||
buttonIcon: "format_size"
|
buttonIcon: "format_size"
|
||||||
from: 70
|
from: 50
|
||||||
to: 150
|
to: 700
|
||||||
stopIndicatorValues: [90]
|
stopIndicatorValues: [90]
|
||||||
onValueChanged: {
|
onValueChanged: {
|
||||||
Config.options.background.widgets.clock.digital.font.size = value;
|
Config.options.background.widgets.clock.digital.font.size = value;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ fi
|
|||||||
|
|
||||||
# Variables
|
# Variables
|
||||||
SOURCE_IMG_PATH="$1"
|
SOURCE_IMG_PATH="$1"
|
||||||
MODEL="${2:-${GEMINI_WALLPAPER_MODEL:-gemini-2.0-flash}}" # We use the flash variant so it's fast
|
MODEL="${2:-${GEMINI_WALLPAPER_MODEL:-gemini-2.5-flash}}" # We use the flash variant so it's fast
|
||||||
WALLPAPER_NAME="$(basename "$SOURCE_IMG_PATH")"
|
WALLPAPER_NAME="$(basename "$SOURCE_IMG_PATH")"
|
||||||
PROMPT="${3:-${GEMINI_WALLPAPER_PROMPT:-Categorize the wallpaper. Its file name is $WALLPAPER_NAME}}"
|
PROMPT="${3:-${GEMINI_WALLPAPER_PROMPT:-Categorize the wallpaper. Its file name is $WALLPAPER_NAME}}"
|
||||||
RESIZED_IMG_PATH="/tmp/quickshell/ai/wallpaper.jpg"
|
RESIZED_IMG_PATH="/tmp/quickshell/ai/wallpaper.jpg"
|
||||||
|
|||||||
@@ -155,6 +155,12 @@ set_thumbnail_path() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
categorize_wallpaper() {
|
||||||
|
img_cat=$("$SCRIPT_DIR/../ai/gemini-categorize-wallpaper.sh" "$1")
|
||||||
|
# notify-send "Wallpaper category" "$img_cat"
|
||||||
|
echo "$img_cat" > "$STATE_DIR/user/generated/wallpaper/category.txt"
|
||||||
|
}
|
||||||
|
|
||||||
switch() {
|
switch() {
|
||||||
imgpath="$1"
|
imgpath="$1"
|
||||||
mode_flag="$2"
|
mode_flag="$2"
|
||||||
@@ -163,9 +169,9 @@ switch() {
|
|||||||
color="$5"
|
color="$5"
|
||||||
|
|
||||||
# Start Gemini auto-categorization if enabled
|
# Start Gemini auto-categorization if enabled
|
||||||
aiStylingEnabled=$(jq -r '.background.clock.cookie.aiStyling' "$SHELL_CONFIG_FILE")
|
aiStylingEnabled=$(jq -r '.background.widgets.clock.cookie.aiStyling' "$SHELL_CONFIG_FILE")
|
||||||
if [[ "$aiStylingEnabled" == "true" ]]; then
|
if [[ "$aiStylingEnabled" == "true" ]]; then
|
||||||
"$SCRIPT_DIR/../ai/gemini-categorize-wallpaper.sh" "$imgpath" > "$STATE_DIR/user/generated/wallpaper/category.txt" &
|
categorize_wallpaper "$imgpath" &
|
||||||
fi
|
fi
|
||||||
|
|
||||||
read scale screenx screeny screensizey < <(hyprctl monitors -j | jq '.[] | select(.focused) | .scale, .x, .y, .height' | xargs)
|
read scale screenx screeny screensizey < <(hyprctl monitors -j | jq '.[] | select(.focused) | .scale, .x, .y, .height' | xargs)
|
||||||
|
|||||||
@@ -25,22 +25,16 @@ Singleton {
|
|||||||
|
|
||||||
property var activeTrack;
|
property var activeTrack;
|
||||||
|
|
||||||
property bool hasPlasmaIntegration: false
|
readonly property bool hasActivePlasmaIntegration: Mpris.players.values.some(
|
||||||
Process {
|
p => p.dbusName?.startsWith('org.mpris.MediaPlayer2.plasma-browser-integration')
|
||||||
id: plasmaIntegrationAvailabilityCheckProc
|
)
|
||||||
running: true
|
|
||||||
command: ["bash", "-c", "command -v plasma-browser-integration-host"]
|
|
||||||
onExited: (exitCode, exitStatus) => {
|
|
||||||
root.hasPlasmaIntegration = (exitCode === 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function isRealPlayer(player) {
|
function isRealPlayer(player) {
|
||||||
if (!Config.options.media.filterDuplicatePlayers) {
|
if (!Config.options.media.filterDuplicatePlayers) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
// Remove unecessary native buses from browsers if there's plasma integration
|
// Remove native browser buses only if plasma-browser-integration is actually active on D-Bus
|
||||||
!(hasPlasmaIntegration && player.dbusName.startsWith('org.mpris.MediaPlayer2.firefox')) && !(hasPlasmaIntegration && player.dbusName.startsWith('org.mpris.MediaPlayer2.chromium')) &&
|
!(hasActivePlasmaIntegration && player.dbusName.startsWith('org.mpris.MediaPlayer2.firefox')) && !(hasActivePlasmaIntegration && player.dbusName.startsWith('org.mpris.MediaPlayer2.chromium')) &&
|
||||||
// playerctld just copies other buses and we don't need duplicates
|
// playerctld just copies other buses and we don't need duplicates
|
||||||
!player.dbusName?.startsWith('org.mpris.MediaPlayer2.playerctld') &&
|
!player.dbusName?.startsWith('org.mpris.MediaPlayer2.playerctld') &&
|
||||||
// Non-instance mpd bus
|
// Non-instance mpd bus
|
||||||
|
|||||||
@@ -119,8 +119,8 @@ function sudo_init_keepalive(){
|
|||||||
# Stop the sudo keepalive background process
|
# Stop the sudo keepalive background process
|
||||||
function sudo_stop_keepalive(){
|
function sudo_stop_keepalive(){
|
||||||
if [[ -n "$SUDO_KEEPALIVE_PID" ]] && kill -0 "$SUDO_KEEPALIVE_PID" 2>/dev/null; then
|
if [[ -n "$SUDO_KEEPALIVE_PID" ]] && kill -0 "$SUDO_KEEPALIVE_PID" 2>/dev/null; then
|
||||||
kill "$SUDO_KEEPALIVE_PID" 2>/dev/null
|
kill "$SUDO_KEEPALIVE_PID" 2>/dev/null || true
|
||||||
wait "$SUDO_KEEPALIVE_PID" 2>/dev/null
|
wait "$SUDO_KEEPALIVE_PID" 2>/dev/null || true
|
||||||
SUDO_KEEPALIVE_PID=""
|
SUDO_KEEPALIVE_PID=""
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user