PrimoDev/ apps

HoleDeep

Pomodoro pro Mac em que um buraco negro engole sua tela na pausa

  • macOS
  • Grátis
  • Open source
  • v0.1.0

O que é o HoleDeep?

O HoleDeep é um timer pomodoro pro macOS em que a pausa é garantida por um buraco negro. Quando o foco acaba, um buraco negro de Schwarzschild aparece sobre a sua área de trabalho ao vivo e distorce tudo pela lente gravitacional até a pausa terminar.

É open source com licença MIT. A versão v0.1.0 tem .dmg pra Mac com Apple Silicon e com Intel; pelo código, é npm install e npm run tauri dev.

O que ele faz

  1. 01Timer de foco e pausa de verdade, com ícone na barra de menus
  2. 02Padrão de 25 minutos de foco e 5 de pausa, ajustável
  3. 03Na pausa, um buraco negro com anel de fótons, disco de acreção e aberração cromática cobre cada monitor
  4. 04A área de trabalho continua ao vivo por baixo, capturada com ScreenCaptureKit
  5. 05A lente gravitacional sai de um shader WebGL2 que calcula a física do buraco negro pixel a pixel
  6. 06Bloqueio opcional de sites (como reddit.com, youtube.com e x.com) e de apps durante o foco
  7. 07A tela nunca fica travada: segure Esc por 2,5 s pra pular a pausa

Perguntas frequentes

O HoleDeep é grátis?
Sim. É open source, com licença MIT. O shader do buraco negro é um port do blackhole.glsl, de s13k, que também é MIT.
Funciona no Windows ou no Linux?
Por enquanto não. O timer, o overlay e o shader são multiplataforma, mas a captura da tela ao vivo usa ScreenCaptureKit e só existe no macOS. As versões publicadas são só pra Mac (Apple Silicon e Intel).
Por que ele pede permissão de Gravação de Tela?
Pra mostrar sua área de trabalho ao vivo sendo engolida pelo buraco negro. Sem essa permissão ele funciona, mas o buraco negro aparece sobre o espaço em vez da sua tela. A captura serve só pra desenhar o overlay na sua máquina.
Dá pra pular uma pausa?
Dá. A tela nunca é travada de verdade: segure Esc por 2,5 segundos e a pausa acaba. Também dá pra pular a fase pelo menu do ícone na barra de menus.
Como funciona o bloqueio de sites?
É opcional e vale só durante o foco. O HoleDeep adiciona os domínios bloqueados ao /etc/hosts, então o macOS pede sua senha de administrador. Os apps da lista são fechados enquanto o foco estiver rolando.
Posso mudar o tempo de foco e de pausa?
Pode. O padrão é 25 minutos de foco e 5 de pausa, e você pode configurar de 1 a 180 minutos de foco e de 1 a 60 de pausa.

Documentação

README do repositório lucianodiisouza/holedeep, atualizado a cada deploy. O texto original é em inglês.

focus, or be devoured.

A pomodoro timer for macOS where break time is enforced by a black hole. When your focus session ends, a Schwarzschild black hole spawns over your live desktop and gravitationally lenses your work into oblivion — photon ring, accretion disk, chromatic aberration and all — until the break is over and it evaporates.

Built with Tauri 2 + React + WebGL2.

holedeep devouring an editor mid-break

How it works

  1. The Rust side runs a real work/break timer (tray icon included).
  2. At break start it screenshots every monitor (xcap) for an instant first frame, opens a borderless always-on-top overlay window per monitor, then starts a ScreenCaptureKit stream (scap) per display — excluding the overlays themselves so the hole doesn't capture itself. The overlay polls ~15 fps, so the desktop stays live while being devoured.
  3. The overlay renders the desktop through a WebGL2 fragment shader that integrates null geodesics through the Schwarzschild metric per pixel — the shadow, lensing, and photon ring emerge from the physics, they are not painted on.
  4. Break ends → the hole collapses → overlays close → back to work.

The screen is never actually locked: hold Esc for 2.5 s to skip a break.

Development

npm install
npm run tauri dev

The overlay has a browser demo mode with a synthetic desktop: run npm run dev and open http://localhost:1420/overlay.html — useful for shader work without triggering real breaks.

On first break, macOS will ask for the Screen Recording permission (System Settings → Privacy & Security). Without it the black hole renders over deep space instead of your desktop.

Credits

The shader is a WebGL2 port of blackhole.glsl by s13k (MIT), itself after Eric Bruneton's Real-time High-Quality Rendering of Non-Rotating Black Holes. The original terminal shader had no state, so it faked its pomodoro with wall-clock arithmetic; here the timer is real and the shader just gets told how hungry to be. The pristine original lives in shaders/reference/.