Applicazione desktop per bloccare app e webapp distraenti durante le sessioni di studio o lavoro. Sviluppata con Python e design Material 3.
Caratteristiche
- π― Blocco app native - Termina automaticamente processi di applicazioni specifiche
- π Blocco webapp - Blocca webapp browser (Chrome, Firefox, ecc.) tramite URL o ID
- π¨ Design Material 3 - Interfaccia moderna e pulita con Material Design
- π Toggle on/off - Attiva/disattiva il blocco senza chiudere l'app
- πΎ Persistenza dati - Salva automaticamente la lista di app/webapp bloccate
- π±οΈ System tray - Icona nella barra di sistema con menu rapido
- β‘ Leggero - Consuma risorse minime in background
- π§ Linux native - Ottimizzato per KDE Plasma e altre DE Linux
- Python 3.9+
- Linux (testato su Arch Linux con KDE Plasma)
- pip o pip3
git clone https://github.com/gorlix/focus-mode-app-linux
cd Mode_Studypip install -r requirements.txtOppure manualmente:
pip install ttkbootstrap psutil pystray pillowpython main.pyO rendi il file eseguibile:
chmod +x main.py
./main.py-
Avvia l'applicazione
python main.py
-
Aggiungi app/webapp da bloccare
- Seleziona il tipo: π± App Nativa o π Webapp
- Inserisci il nome (es:
firefox,telegram) o URL (es:web.whatsapp.com) - Clicca β Aggiungi
-
Attiva la modalitΓ blocco
- Clicca sul grande bottone verde "
βΆοΈ ATTIVA MODALITΓ STUDIO" - Il bottone diventerΓ rosso: "βΈοΈ DISATTIVA MODALITΓ STUDIO"
- Clicca sul grande bottone verde "
-
Verifica il blocco
- Prova ad aprire un'app bloccata
- Dovrebbe chiudersi automaticamente entro 2 secondi
Per bloccare Firefox:
- Tipo: π± App Nativa
- Nome:
firefox
Per bloccare Telegram:
- Tipo: π± App Nativa
- Nome:
telegram
Per bloccare WhatsApp Web:
- Tipo: π Webapp
- URL:
web.whatsapp.com
Per bloccare webapp Instagram:
- Tipo: π Webapp
- URL:
instagram.com
L'app crea un'icona nella system tray con queste opzioni:
βΆοΈ Avvia Blocco / βΈοΈ Ferma Blocco - Toggle rapido- ποΈ Mostra GUI - Apre la finestra principale
- πͺ Esci - Chiude l'applicazione
- Quando la finestra Γ¨ aperta, premere X la nasconde (non la chiude)
- Per chiudere definitivamente, usa πͺ Esci dalla GUI o dal tray menu
Modifica config.py per personalizzare:
# Intervallo di controllo processi (secondi)
BLOCKING_INTERVAL = 2
# Stato iniziale del blocco all'avvio
BLOCKING_ACTIVE_ON_STARTUP = False # True per attivare di default
# Dimensioni finestra
WINDOW_WIDTH = 540
WINDOW_HEIGHT = 620
# Tema GUI (opzioni: flatly, cosmo, darkly, cyborg, ecc.)
GUI_THEME = "flatly"La lista delle app/webapp bloccate Γ¨ salvata in:
data/blocked_apps.json
Formato:
[
{
"name": "firefox",
"type": "app"
},
{
"name": "web.whatsapp.com",
"type": "webapp"
}
]Mode_Study/
βββ main.py # Entry point
βββ config.py # Configurazioni globali
βββ requirements.txt # Dipendenze Python
βββ README.md # Questo file
β
βββ data/
β βββ blocked_apps.json # Dati salvati
β
βββ core/
β βββ __init__.py
β βββ blocker.py # Logica blocco processi
β βββ storage.py # Gestione dati JSON
β
βββ gui/
β βββ __init__.py
β βββ main_window.py # Finestra principale
β βββ material_theme.py # Stili Material 3
β
βββ utils/
β βββ __init__.py
β βββ tray_icon.py # System tray icon
β
βββ assets/
βββ screenshot.png # Screenshot app
Problema: Hai attivato la modalitΓ blocco?
Soluzione:
- Clicca il bottone "
βΆοΈ ATTIVA MODALITΓ STUDIO" - Verifica che diventi rosso con scritto "βΈοΈ DISATTIVA"
Oppure attiva di default modificando config.py:
BLOCKING_ACTIVE_ON_STARTUP = TrueProblema: Il nome inserito non corrisponde al processo.
Soluzione: Verifica il nome esatto del processo:
ps aux | grep nome_appUsa il nome della colonna COMMAND (es: per Firefox usa firefox, non Firefox).
Problema: La stringa URL non Γ¨ presente nella command line.
Soluzione: Verifica la command line del processo:
ps aux | grep chromeUsa una parte dell'URL che compare (es: whatsapp.com invece di https://web.whatsapp.com/).
Problema: Dipendenze non installate.
Soluzione:
pip install -r requirements.txtProblema: Alcune DE su Wayland hanno limitazioni.
Soluzione: Usa l'app dalla finestra principale o passa a X11.
# Clona repo
git clone https://github.com/gorlix/focus-mode-app-linux
cd Mode_Study
# Crea virtual environment (opzionale)
python -m venv venv
source venv/bin/activate # Linux/Mac
# Installa dipendenze
pip install -r requirements.txt# Test manuale
python main.py
# Verifica stato blocco
python -c "from core.blocker import is_blocking_active; print(is_blocking_active())"- Fork il progetto
- Crea un branch per la feature (
git checkout -b feature/AmazingFeature) - Commit le modifiche (
git commit -m 'Add some AmazingFeature') - Push al branch (
git push origin feature/AmazingFeature) - Apri una Pull Request
- Scheduler - Attiva/disattiva automaticamente in orari specifici
- Statistiche - Traccia tempo studio e app bloccate
- Whitelist - Lista di app sempre consentite
- Notifiche - Alert quando un'app viene bloccata
- ModalitΓ Focus - Blocco temporaneo con timer (es: Pomodoro)
- Profili - Diversi set di app per scenari diversi (studio, lavoro, relax)
- Autostart - Avvio automatico con il sistema
- Password protection - Richiede password per disattivare il blocco
- CLI - Interfaccia command line per controllo remoto
- Cross-platform - Supporto Windows e macOS
- Autore: Gorlix
- Design: Material 3 by Google
- Framework GUI: ttkbootstrap
- Gestione processi: psutil
- System tray: [pystray](https://github.com/moses