Skip to content

🎯 Modalità Studio - Blocca automaticamente app e webapp distraenti durante le sessioni di studio o lavoro. Design Material 3, ottimizzato per KDE Plasma.

Notifications You must be signed in to change notification settings

gorlix/focus-mode-app-linux

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

22 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“š ModalitΓ  Studio

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

πŸ“‹ Prerequisiti

  • Python 3.9+
  • Linux (testato su Arch Linux con KDE Plasma)
  • pip o pip3

πŸš€ Installazione

1. Clona il repository

git clone https://github.com/gorlix/focus-mode-app-linux
cd Mode_Study

2. Installa le dipendenze

pip install -r requirements.txt

Oppure manualmente:

pip install ttkbootstrap psutil pystray pillow

3. Avvia l'applicazione

python main.py

O rendi il file eseguibile:

chmod +x main.py
./main.py

πŸ“– Guida Utilizzo

Prima configurazione

  1. Avvia l'applicazione

    python main.py
  2. 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
  3. Attiva la modalitΓ  blocco

    • Clicca sul grande bottone verde "▢️ ATTIVA MODALITΓ€ STUDIO"
    • Il bottone diventerΓ  rosso: "⏸️ DISATTIVA MODALITΓ€ STUDIO"
  4. Verifica il blocco

    • Prova ad aprire un'app bloccata
    • Dovrebbe chiudersi automaticamente entro 2 secondi

Esempi di utilizzo

Bloccare app native

Per bloccare Firefox:

  • Tipo: πŸ“± App Nativa
  • Nome: firefox

Per bloccare Telegram:

  • Tipo: πŸ“± App Nativa
  • Nome: telegram

Bloccare webapp

Per bloccare WhatsApp Web:

  • Tipo: 🌐 Webapp
  • URL: web.whatsapp.com

Per bloccare webapp Instagram:

  • Tipo: 🌐 Webapp
  • URL: instagram.com

System Tray

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

Comandi da tastiera

  • Quando la finestra Γ¨ aperta, premere X la nasconde (non la chiude)
  • Per chiudere definitivamente, usa πŸšͺ Esci dalla GUI o dal tray menu

βš™οΈ Configurazione Avanzata

File di configurazione

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"

File dati

La lista delle app/webapp bloccate Γ¨ salvata in:

data/blocked_apps.json

Formato:

[
    {
        "name": "firefox",
        "type": "app"
    },
    {
        "name": "web.whatsapp.com",
        "type": "webapp"
    }
]

πŸ—οΈ Struttura Progetto

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

πŸ› Troubleshooting

L'app non killa i processi

Problema: Hai attivato la modalitΓ  blocco?

Soluzione:

  1. Clicca il bottone "▢️ ATTIVA MODALITΓ€ STUDIO"
  2. Verifica che diventi rosso con scritto "⏸️ DISATTIVA"

Oppure attiva di default modificando config.py:

BLOCKING_ACTIVE_ON_STARTUP = True

Nome app non funziona

Problema: Il nome inserito non corrisponde al processo.

Soluzione: Verifica il nome esatto del processo:

ps aux | grep nome_app

Usa il nome della colonna COMMAND (es: per Firefox usa firefox, non Firefox).

Webapp non viene bloccata

Problema: La stringa URL non Γ¨ presente nella command line.

Soluzione: Verifica la command line del processo:

ps aux | grep chrome

Usa una parte dell'URL che compare (es: whatsapp.com invece di https://web.whatsapp.com/).

Errore "ModuleNotFoundError"

Problema: Dipendenze non installate.

Soluzione:

pip install -r requirements.txt

System tray non appare (Wayland)

Problema: Alcune DE su Wayland hanno limitazioni.

Soluzione: Usa l'app dalla finestra principale o passa a X11.


πŸ”§ Sviluppo

Setup ambiente sviluppo

# 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

# Test manuale
python main.py

# Verifica stato blocco
python -c "from core.blocker import is_blocking_active; print(is_blocking_active())"

Contribuire

  1. Fork il progetto
  2. Crea un branch per la feature (git checkout -b feature/AmazingFeature)
  3. Commit le modifiche (git commit -m 'Add some AmazingFeature')
  4. Push al branch (git push origin feature/AmazingFeature)
  5. Apri una Pull Request

πŸ“ TODO / Roadmap

  • 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

🀝 Crediti

About

🎯 Modalità Studio - Blocca automaticamente app e webapp distraenti durante le sessioni di studio o lavoro. Design Material 3, ottimizzato per KDE Plasma.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages