Bygget til alle. Delt gratis.

Giv dine øjne en pause.
Velkommen til Horizon.

Skærm-træthed er ægte. Horizon er et lille, gennemsigtigt PowerShell-script, der sikrer, at du får hvilet øjnene. Du bestemmer helt selv intervallet (f.eks. hvert 20. minut for at følge 20-20-20 reglen), og så dæmpes din skærm diskret, når det er tid til en pause. Ingen installation, ingen tracking - bare ren omtanke for dit syn.

Andre projekter

Bruger du Mac? Tag koden og opsætningen herunder, giv den til din AI-assistent, og bed den skrive et tilsvarende AppleScript eller Bash-script til din Mac.

Hvorfor bruge Horizon?

20-20-20 Reglen

Designet specifikt til at håndhæve reglen: Hvert 20. minut skal du kigge på noget 20 fod (ca. 6 meter) væk i 20 sekunder.

Forstyrrer ikke dit flow

Scriptet dæmper skærmen visuelt (80% sort), men stjæler ikke fokus fra dit arbejde. Du kan nemt lukke det ned med 'Escape', hvis det rammer et kritisk tidspunkt.

Ingen installation

Det er bare et simpelt PowerShell script. Ingen mærkelige .exe filer, ingen baggrunds-services der dræner dit batteri, og ingen installation påkrævet.

100% Gennemsigtigt

Koden er åben og ligger lige her på siden. Du kan læse præcis hvad den gør, før du kører den på din maskine. Fuld sikkerhed.

Fleksibel timer

Selvom standarden er 20 minutter, beder scriptet dig om dit ønskede interval, når du starter det. Skriv '0' for en hurtig 5-sekunders test.

Hurtig afbrydelse

Når scriptet venter i baggrunden, kan du altid trykke 'M' i konsol-vinduet for at afbryde den nuværende timer og vælge en ny.

Opsætning til autostart

Følg disse trin for at lade scriptet starte automatisk i baggrunden.

01

Opret filen

Gå til mappen Dokumenter, opret en ny Notesblok-fil og indsæt koden her fra siden. Tryk "Gem som", vælg "Alle filer", og gem den som Pause.ps1.

02

Kopier stien

Højreklik på filen Pause.ps1 i dine dokumenter og vælg "Kopier som sti" (Copy as path).

03

Opret genvej

Gå til dit skrivebord, højreklik på et tomt område og vælg Opret genvej.

04

Indsæt kommando

I feltet indsætter du: powershell.exe -ExecutionPolicy Bypass -File efterfulgt af et mellemrum og din kopierede sti.

05

Åbn autostart

Tryk på Windows-tast + R, skriv shell:startup i feltet og tryk Enter for at åbne din computers opstartsmappe.

06

Klar til brug

Kopier den nye genvej fra dit skrivebord og indsæt den i opstartsmappen. Scriptet starter nu automatisk, hver gang du tænder din PC.

Horizon script

Kopier koden herunder og følg guiden ovenfor.

Pause.ps1
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

function Show-DarkScreen {
    param($Seconds)
    
    $form = New-Object System.Windows.Forms.Form
    $form.BackColor = 'Black'
    $form.Opacity = 0.8
    $form.TopMost = $true
    $form.FormBorderStyle = 'None'
    $form.WindowState = 'Maximized'

    $labelTekst = New-Object System.Windows.Forms.Label
    $labelTekst.Text = "Take a break"
    $labelTekst.Font = New-Object System.Drawing.Font("Arial", 50)
    $labelTekst.ForeColor = 'White'
    $labelTekst.Dock = 'Top'
    $labelTekst.Height = 300
    $labelTekst.TextAlign = 'BottomCenter'

    $labelTimer = New-Object System.Windows.Forms.Label
    $labelTimer.Name = "MinTimer"
    $labelTimer.Text = $Seconds
    $labelTimer.Font = New-Object System.Drawing.Font("Arial", 150)
    $labelTimer.ForeColor = 'White'
    $labelTimer.Dock = 'Fill'
    $labelTimer.TextAlign = 'TopCenter'
    
    $form.Controls.Add($labelTimer)
    $form.Controls.Add($labelTekst)

    $timer = New-Object System.Windows.Forms.Timer
    $timer.Interval = 1000
    $script:timeLeft = $Seconds

    $timer.Add_Tick({
        $script:timeLeft--
        $form.Controls["MinTimer"].Text = $script:timeLeft
        if ($script:timeLeft -le 0) {
            $timer.Stop()
            $form.Close()
        }
    })

    $form.KeyPreview = $true
    $form.Add_KeyDown({
        if ($_.KeyCode -eq 'Escape') {
            $timer.Stop()
            $form.Close()
        }
    })

    $form.Add_Load({
        $timer.Start()
    })

    $form.Add_Shown({
        $form.Activate()
        $form.Focus()
    })

    $form.ShowDialog() | Out-Null
}

while ($true) {
    Clear-Host
    Write-Host "Enter work minutes (this also sets pause length in seconds)."
    Write-Host "Type '0' for a quick test:"
    $choice = Read-Host ">"

    $parsedValue = 0

    if ($choice -eq '0') { 
        $minutes = 0.166
        $seconds = 5 
    } elseif ([int]::TryParse($choice, [ref]$parsedValue) -and $parsedValue -gt 0) { 
        $minutes = $parsedValue
        $seconds = $parsedValue 
    } else { 
        Write-Host "Invalid input. Defaulting to 20."
        $minutes = 20
        $seconds = 20 
        Start-Sleep -Seconds 2
    }

    $returnToMenu = $false

    while (-not $returnToMenu) {
        $secondsToPause = [math]::Round($minutes * 60)
        
        while ($secondsToPause -gt 0) {
            Clear-Host
            $minRest = [math]::Floor($secondsToPause / 60)
            $secRest = $secondsToPause % 60
            Write-Host "Time until next pause: $minRest minutes and $secRest seconds"
            Write-Host ""
            Write-Host "Press 'M' to cancel and choose a new time."
            Write-Host "Press 'Escape' to close the dark screen early."
            Write-Host "Close this window to stop the program completely."
            
            $waitTime = 0
            while ($waitTime -lt 1000) {
                if ([console]::KeyAvailable) {
                    $key = [console]::ReadKey($true)
                    if ($key.Key -eq 'M') {
                        $returnToMenu = $true
                        break
                    }
                }
                Start-Sleep -Milliseconds 50
                $waitTime += 50
            }
            
            if ($returnToMenu) { break }
            $secondsToPause--
        }
        
        if ($returnToMenu) { break }
        Show-DarkScreen -Seconds $seconds
    }
}

Pas godt på dig selv.

Det er nemt at glemme tiden, når man koder eller arbejder dybt koncentreret. Jeg lavede Horizon for at tvinge mig selv til at huske pauserne. Jeg håber, scriptet kan gøre det samme for dig og skåne dine øjne på den lange bane :}