Add files via upload

This commit is contained in:
FURK4NGG
2026-01-18 16:13:51 +03:00
committed by GitHub
parent 28b43450db
commit e8e2785900
5 changed files with 163 additions and 0 deletions
BIN
View File
Binary file not shown.
+78
View File
@@ -0,0 +1,78 @@
#!/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"
# -------------------------
# 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
"$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
+16
View File
@@ -0,0 +1,16 @@
# Blacklayer configuration
# 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
# Wayland display
WAYLAND_DISPLAY=wayland-1
# Hyprland instance signature (opsiyonel, default conf yerine runtime)
# HYPRLAND_INSTANCE_SIGNATURE=
+45
View File
@@ -0,0 +1,45 @@
#!/usr/bin/env bash
# -------------------------
# Base paths (EN BAŞTA)
# -------------------------
BASE_DIR="$HOME/.config/blacklayer"
PID_FILE="$BASE_DIR/blacklayer_worker.pid"
STATE_DIR="$BASE_DIR/blacklayer_state"
COUNT_FILE="$BASE_DIR/blacklayer_count"
WORKER="$BASE_DIR/blacklayer-worker.sh"
BLACKLAYER_BIN="$BASE_DIR/blacklayer"
# Dizini garanti altına al
mkdir -p "$STATE_DIR"
# -------------------------
# Worker çalışıyorsa → KAPAT
# -------------------------
if [ -f "$PID_FILE" ] && kill -0 "$(cat "$PID_FILE")" 2>/dev/null; then
notify-send "Blacklayer" "blacklayer is stopping"
echo "[blacklayer] stopping..."
# Worker'ı kapat
kill "$(cat "$PID_FILE")" 2>/dev/null
rm -f "$PID_FILE"
# Tüm blacklayer processlerini kapat
pkill -f "$BLACKLAYER_BIN" 2>/dev/null
# State & count temizliği
rm -rf "$STATE_DIR"
rm -f "$COUNT_FILE"
exit 0
fi
# -------------------------
# Çalışmıyorsa → BAŞLAT
# -------------------------
notify-send "Blacklayer" "blacklayer is starting"
echo "[blacklayer] starting..."
nohup bash "$WORKER" >/dev/null 2>&1 &
echo $! > "$PID_FILE"
+24
View File
@@ -0,0 +1,24 @@
#!/usr/bin/env bash
# Kullanım: event-driven.sh <MONITOR_NAME> <POLL_INTERVAL>
MONITOR="$1"
POLL_INTERVAL="${2:-3}" # default 3s
[ -z "$MONITOR" ] && { echo "Monitor arg missing"; exit 1; }
BASE_DIR="$HOME/.config/blacklayer"
BLACKLAYER_BIN="$BASE_DIR/blacklayer"
STATE_DIR="$BASE_DIR/.blacklayer_state"
STATE_FILE="$STATE_DIR/$MONITOR"
while true; do
sleep "$POLL_INTERVAL"
JSON="$(hyprctl -j monitors 2>/dev/null)"
echo "$JSON" | jq empty >/dev/null 2>&1 || continue
FOCUSED=$(echo "$JSON" | jq -r ".[] | select(.name==\"$MONITOR\") | .focused")
if [ "$FOCUSED" = "true" ]; then
pkill -f "$BLACKLAYER_BIN $MONITOR" >/dev/null 2>&1
echo "false" > "$STATE_FILE"
exit 0
fi
done