Skip to content

Instantly share code, notes, and snippets.

@ajorpheus
Created September 26, 2025 11:37
Show Gist options
  • Select an option

  • Save ajorpheus/7611c71776e093e5de164d304762d30c to your computer and use it in GitHub Desktop.

Select an option

Save ajorpheus/7611c71776e093e5de164d304762d30c to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name pomodoro timer (Full-Screen Timer Watermark with Add Button)
// @namespace http://tampermonkey.net/
// @version 1.2
// @description Full-screen timer watermark with a button to add custom time in minutes
// @author iamnobody
// @license MIT
// @match *://*/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
let timer = 10 * 60; // default 10 minutes
let intervalId = null;
// Create full-screen watermark
const watermark = document.createElement('div');
watermark.id = 'timerWatermark';
watermark.style.position = 'fixed';
watermark.style.top = 0;
watermark.style.left = 0;
watermark.style.width = '100%';
watermark.style.height = '100%';
watermark.style.display = 'flex';
watermark.style.alignItems = 'center';
watermark.style.justifyContent = 'center';
watermark.style.pointerEvents = 'none'; // clicks pass through
watermark.style.zIndex = 999998;
watermark.style.color = 'rgba(255,0,0,0.15)';
watermark.style.fontSize = '100px';
watermark.style.fontWeight = 'bold';
watermark.style.fontFamily = 'Arial, sans-serif';
watermark.style.userSelect = 'none';
watermark.style.textAlign = 'center';
watermark.style.textShadow = '2px 2px 4px rgba(0,0,0,0.2)';
document.body.appendChild(watermark);
// Floating + button
const addButton = document.createElement('button');
addButton.textContent = '+';
addButton.style.position = 'fixed';
addButton.style.left = '10px';
addButton.style.top = '50%';
addButton.style.transform = 'translateY(-50%)';
addButton.style.zIndex = 999999;
addButton.style.width = '50px';
addButton.style.height = '50px';
addButton.style.borderRadius = '50%';
addButton.style.border = 'none';
addButton.style.background = 'rgba(0,0,0,0.5)';
addButton.style.color = '#fff';
addButton.style.fontSize = '30px';
addButton.style.cursor = 'pointer';
addButton.style.boxShadow = '0 0 10px rgba(0,0,0,0.3)';
addButton.style.userSelect = 'none';
addButton.title = 'Click to add timer (minutes)';
document.body.appendChild(addButton);
// Helper to format time
function formatTime(seconds) {
const m = Math.floor(seconds / 60).toString().padStart(2, '0');
const s = (seconds % 60).toString().padStart(2, '0');
return `${m}:${s}`;
}
// Update watermark
function updateWatermark() {
watermark.textContent = timer > 0 ? formatTime(timer) : 'TIME UP!';
}
// Timer tick
function tick() {
if(timer > 0){
timer--;
updateWatermark();
} else {
clearInterval(intervalId);
intervalId = null;
}
}
// Start timer
function startTimer() {
if(intervalId) clearInterval(intervalId);
intervalId = setInterval(tick, 1000);
}
updateWatermark();
startTimer();
// Click handler to add custom time
addButton.addEventListener('click', () => {
const custom = prompt('Enter additional time in minutes:', '5');
const val = parseInt(custom);
if(!isNaN(val) && val > 0){
timer += val * 60;
updateWatermark();
}
});
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment