Mettere in pausa le applicazioni

16 September 2010, sezione Linux

Immagine a solo scopo illustrativo

Ed eccoci qui a mostrare lo script di cui vi parlavo. Fake multitasking su Linux? farebbe più danni che cose buone. Fino a che interrompiamo il caricamento di un video su youtube per scrivere su OpenOffice va bene ma cosa succederebbe a cambiare applicazioni mentre si sta masterizzando un disco ad esempio1?

I vantaggi

I vantaggi di cui parlavo sono quelli di bloccare determinate applicazioni che sfruttano il processore in modo intensivo, ma che per un motivo o per un’altro non possiamo chiudere. Insomma sarebbe bello poter mettere in pausa tutto quello che in certi momenti non serve.

Ecco cosa fa il mio script: si preme una combinazione di tasti (da associare tramite compiz o metacity) e il processo della finestra in primo piano si blocca istantaneamente, insomma il contrario di quello che la gente “comune” vorrebbe. I processi vittima rimangono in attesa di un segnale di sblocco2 e fino a quando questo non gli viene dato (premendo di nuovo la stessa combinazione di tasti) semplicemente vengono ignorati dal sistema operativo che non gli permette di accedere al processore.

Installazione

  1. scaricate lo script da qui
  2. per assicurarvi di avere installato tutte le dipendenze date da terminale:
    sudo apt-get install wmctrl zenity awk
  3. decomprimete l’archivio e posizione il file “script” dove più vi aggrada
  4. dategli i permessi di esecuzione con tasto destro→proprietà→permessi→permetti esecuzione
  5. trascinate lo script sulla barra delle applicazioni o create un launcher con l’indirizzo dello script (metodo consigliato, funziona anche su kde) o in alternativa potete creare un’associazione di tasti da associare allo script tramite compiz o metacity (soluzione che ha qualche problema*).

Come va?

Ho assegnato allo script la combinazione Win+Tab. Il blocco scatta immediatamente e l’utilizzo del processore mostra una rapida discesa. Tutto nella finestra bloccata si ferma e in una decina di secondi diventa grigia, tutte le azioni sulla finestra non producono risposte ma vengono elaborate allo sblocco. Del tipo che se cliccate 100 volte su un pulsante quello rimane li, grigio, immobile, ma appena sbloccata l’applicazione segna 100 click.

In ogni caso lo sblocco è indolore, nei miei test non non ho riscontrato perdite di dati o crash.

Possibili applicazioni

  1. Imbrogliare su Facebook
  2. Mettere in pausa player e giochi senza dover capire “come si mette pausa
  3. Risparmiare energia e ridurre il riscaldamento prodotto dal processore bloccando le applicazioni che non ci servono…

Confessioni

Si tratta di davvero poche righe di codice, d’altronde è solo un test per sperimentare la fattibilità e l’effettiva utilità di un’utility3 di freeze sulla via di xkill. E infatti ci sono diverse cose che non funzionano bene.

Per il momento lo script non blocca i processi figli4 del processo attivo. Ciò vuol dire che se lo usate su Chrome mentre state provando un giochino flash potreste trovarvi davanti alla paradossale situazione di avere il browser bloccato e il giochino flash in esecuzione. Questo perché Chrome gestisce i plugin come un processo separato. (sistemato)

*Al contrario solo usando le combinazioni di tasti a volte usando lo script su un programma se ne bloccano anche altri che apparentemente non hanno nulla a che fare con quello che volevamo bloccare. Esempio blocchiamo Gimp ed insieme si bloccano nautilus e gedit. Il problema si verifica solo quando si attiva lo script tramite combinazione di tasti, ma il motivo preciso non mi è ancora chiaro.

Magari in futuro gli darò una sistematina. E ovviamente sentitevi liberi di modificare/suggerire/criticare ;)

  1. buttate il disco []
  2. lo script non fa altro che inviare tramite kill i segnali SIGSTOP e SIGCONT []
  3. scusate la cacofonia []
  4. in realtà blocca solo i figli diretti ma non i discendenti di questi []

  • roby

    su kde come si puo fare?

  • http://www.ginlemonblog.com/chi-sono/ GinLemon

    Non posso testare perché non ho kde ma dovrebbe funzionare allo stesso modo. L’unica cosa che dovrebbe cambiare è il programma per settare la combinazione di tasti.

    Se lo provi fammi sapere come va.

  • roby

    ho trovato una soluzione per kde

    bisogna creare un collegamento ad applicazione e nel percorso specificare quello dove è salvato lo script

    poi bisogna cambiare i permessi (di default sono di root) senno chiede la pass ogni volta,anche se ignorandola funziona lo stesso

    i programmi pero non diventano grigi rimangono con l’ultima schermata

    io poi il collegamento lo messo su cairo-dock, ma si può aggiungere su qualsiasi panello o sul desktop

  • http://www.ginlemonblog.com/chi-sono/ GinLemon

    Bella soluzione.
    Funziona anche su Gnome e tra l’altro anche meglio perchè sembra non risentire del secondo problema di cui parlavo, il blocco di altre applicazioni oltre a quella attiva.

    Aggiorno subito l’articolo, grazie per il contributo ;)

  • roby

    grazie a te per lo script :-)