#!/bin/bash # Configuration WORKSPACE=$1 CORRECT_PIN="{{ .workspacePin }}" LOG_FILE="$HOME/.workspace_access_log" # Fuzzel colors - Nord theme BG_COLOR="242a36ee" TEXT_COLOR="eceff4ff" SELECTION_COLOR="88c0d0ff" SELECTION_TEXT_COLOR="2e3440ff" BORDER_COLOR="5e81acff" # Display an informational notification before showing PIN dialog notify-send --icon=dialog-password-symbolic \ --app-name="Workspace Security" \ "Workspace $WORKSPACE" "Protected workspace - PIN required" \ --urgency=low # Get PIN using fuzzel ENTERED_PIN=$(echo -e "\n" | fuzzel \ --dmenu \ --password \ --prompt="Enter PIN for workspace $WORKSPACE: " \ --width=35 \ --lines=0 \ --horizontal-pad=20 \ --vertical-pad=15 \ --inner-pad=10 \ --border-width=2 \ --border-radius=10 \ --font="JetBrains Mono:size=14" \ --background=${BG_COLOR} \ --text-color=${TEXT_COLOR} \ --match-color=${SELECTION_COLOR} \ --selection-color=${SELECTION_COLOR} \ --selection-text-color=${SELECTION_TEXT_COLOR} \ --border-color=${BORDER_COLOR} ) # Trim whitespace ENTERED_PIN=$(echo "$ENTERED_PIN" | xargs) # Check if PIN entry was cancelled (empty) if [ -z "$ENTERED_PIN" ]; then notify-send --icon=dialog-information \ --app-name="Workspace Security" \ "Access Cancelled" "PIN entry was cancelled" \ --urgency=low exit 0 fi # Verify PIN if [ "$ENTERED_PIN" == "$CORRECT_PIN" ]; then # Correct PIN - switch to workspace with nice visual feedback notify-send --icon=dialog-password \ --app-name="Workspace Security" \ "Access Granted" "Switching to workspace $WORKSPACE" \ --urgency=low # Optional: Log successful attempt echo "$(date): Successful PIN entry for workspace $WORKSPACE" >> "$LOG_FILE" # Small delay for notification visibility before switching sleep 0.2 hyprctl dispatch workspace "$WORKSPACE" else # Wrong PIN - show notification with error icon notify-send --icon=dialog-error \ --app-name="Workspace Security" \ "Access Denied" "Incorrect PIN for workspace $WORKSPACE" \ --urgency=normal # Log failed attempt echo "$(date): Failed PIN attempt for workspace $WORKSPACE" >> "$LOG_FILE" fi