From bcbea90bdf2f82d9fb32d1d4fbebe89937e033b2 Mon Sep 17 00:00:00 2001 From: FURK4NGG <105324908+FURK4NGG@users.noreply.github.com> Date: Thu, 29 Jan 2026 01:20:50 +0300 Subject: [PATCH] Add files via upload --- .config/blacklayer/blacklayer | Bin 0 -> 22936 bytes .config/blacklayer/blacklayer-worker.sh | 82 ++++++++++++++++++++++++ .config/blacklayer/blacklayer.conf | 31 +++++++++ 3 files changed, 113 insertions(+) create mode 100644 .config/blacklayer/blacklayer create mode 100644 .config/blacklayer/blacklayer-worker.sh create mode 100644 .config/blacklayer/blacklayer.conf diff --git a/.config/blacklayer/blacklayer b/.config/blacklayer/blacklayer new file mode 100644 index 0000000000000000000000000000000000000000..e69879f9e67c4a9f6669223ee41ade2475fc85af GIT binary patch literal 22936 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 YaW?C;D_E?xi|e0lwk4)ZM>YEY1(A7Z*8l(j literal 0 HcmV?d00001 diff --git a/.config/blacklayer/blacklayer-worker.sh b/.config/blacklayer/blacklayer-worker.sh new file mode 100644 index 0000000..e8d912d --- /dev/null +++ b/.config/blacklayer/blacklayer-worker.sh @@ -0,0 +1,82 @@ +#!/usr/bin/env bash + +BASE_DIR="$HOME/.config/blacklayer" +CONF_FILE="$BASE_DIR/blacklayer.conf" +[ -f "$CONF_FILE" ] && source "$CONF_FILE" + +# ------------------------- +# .conf dan gelen degerler/Default değerler +# ------------------------- +LOOP_INTERVAL="${LOOP_INTERVAL:-60}" +COUNT_THRESHOLD="${COUNT_THRESHOLD:-5}" +WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-wayland-1}" +EVENT_POLL_INTERVAL="${EVENT_POLL_INTERVAL:-3}" +EVENT_DRIVEN="${EVENT_DRIVEN:-$HOME/.config/blacklayer/event-driven.sh}" + +BLACKLAYER_BIN="$BASE_DIR/blacklayer" +COUNT_FILE="$BASE_DIR/.blacklayer_count" +STATE_DIR="$BASE_DIR/.blacklayer_state" +WAYBAR_BIN="/usr/bin/waybar" +WAYBAR_CONFIG_DIR="$HOME/.config/waybar" + + +# ------------------------- +# Sonsuz döngü +# ------------------------- +while true; do + export XDG_RUNTIME_DIR="/run/user/$(id -u)" + [ -z "$HYPRLAND_INSTANCE_SIGNATURE" ] && \ + export HYPRLAND_INSTANCE_SIGNATURE="$(ls "$XDG_RUNTIME_DIR/hypr/" 2>/dev/null | head -n1)" + export WAYLAND_DISPLAY + + + mkdir -p "$STATE_DIR" + [ ! -f "$COUNT_FILE" ] && echo "0" > "$COUNT_FILE" + chmod 600 "$STATE_DIR"/* 2>/dev/null || true + + JSON="$(hyprctl -j monitors 2>/dev/null)" + echo "$JSON" | jq empty >/dev/null 2>&1 || { sleep "$LOOP_INTERVAL"; continue; } + + # ------------------------- + # Focused kontrol ve state update + # ------------------------- + echo "$JSON" | jq -r '.[] | .name + " " + (.focused|tostring)' | while read -r MONITOR_NAME FOCUSED; do + STATE_FILE="$STATE_DIR/$MONITOR_NAME" + [ ! -f "$STATE_FILE" ] && echo "false" > "$STATE_FILE" + ISWORKING=$(<"$STATE_FILE") + [ "$FOCUSED" = "true" ] && echo "true" > "$STATE_FILE" + done + + # ------------------------- + # Count artır + # ------------------------- + COUNT=$(<"$COUNT_FILE") + COUNT=$((COUNT + 1)) + echo "$COUNT" > "$COUNT_FILE" + + # ------------------------- + # 5. çağrıda blacklayer açma + # ------------------------- + if [ "$COUNT" -ge "$COUNT_THRESHOLD" ]; then + echo "$JSON" | jq -r '.[] | .name' | while read -r MONITOR_NAME; do + STATE_FILE="$STATE_DIR/$MONITOR_NAME" + ISWORKING=$(<"$STATE_FILE") + + if [ "$ISWORKING" = "false" ] && ! pgrep -f "$BLACKLAYER_BIN $MONITOR_NAME" >/dev/null 2>&1; then + pkill -f "waybar.*$MONITOR_NAME" 2>/dev/null + + "$BLACKLAYER_BIN" "$MONITOR_NAME" & + nohup bash -c "$EVENT_DRIVEN $MONITOR_NAME $EVENT_POLL_INTERVAL" >/dev/null 2>&1 & + echo "true" > "$STATE_FILE" + fi + done + + # 5. okumadan sonra tüm state ve count sıfırlama + echo "0" > "$COUNT_FILE" + for STATE in "$STATE_DIR"/*; do + echo "false" > "$STATE" + done + fi + + sleep "$LOOP_INTERVAL" +done diff --git a/.config/blacklayer/blacklayer.conf b/.config/blacklayer/blacklayer.conf new file mode 100644 index 0000000..114fa93 --- /dev/null +++ b/.config/blacklayer/blacklayer.conf @@ -0,0 +1,31 @@ +# Blacklayer configuration + + + +# RUN BLACKLAYER == true --> RUN BLACKLAYER +run_blacklayer=true + +# RUN-LOCK=true --> RUNS HYPRIDLE FOR LOCK SCREEN WHEN NO MOVEMENT +# RUN-SLEEP=true --> RUNS HYPRIDLE FOR CLOSE SCREENS WHEN NO MOVEMENT +run_lock=false +run_sleep=false + + + +# Call-blacklayer script loop interval (seconds) +LOOP_INTERVAL=60 + +# Event-driven script poll interval (seconds) +EVENT_POLL_INTERVAL=3 + +# 5. tetiklemede blacklayer aç (count threshold) +COUNT_THRESHOLD=5 + +#Resource(png,jpg,gif) +resource=/home/bob/Resimler/wallpapers/loop.gif + +# Wayland display +WAYLAND_DISPLAY=wayland-1 + +# Hyprland instance signature (opsiyonel, default conf yerine runtime) +# HYPRLAND_INSTANCE_SIGNATURE=