Come posso bloccare lo schermo usando il nuovo lockscreen dalla riga di comando?


19

Ubuntu 14.04 introduce una nuova schermata di blocco simile alla schermata di accesso.

Nuova schermata di blocco

Sono ancora in grado di bloccare lo schermo usando il comando gnome-screensaver-command --lock(come ho sempre fatto prima), che in 14.04 blocca lo schermo, ma:

  • Se lo stai eseguendo dal desktop, blocca lo schermo usando il nuovo lockscreen.
  • Se lo stai eseguendo da una console virtuale o tramite SSH, blocca lo schermo usando il vecchio lockscreen .

Ho anche provato a usare xdg-screensaver lock, ma funziona allo stesso modo gnome-screensaver-command --lock(usa la nuova schermata di blocco solo quando viene eseguita dal desktop).

L'esecuzione light-locker-command --locknon ha funzionato, poiché light-lockernon è installata.

Immagino che debbano esserci alcune differenze tra l'esecuzione dello stesso comando dal desktop e l'esecuzione tramite SSH / console virtuale, ma non sono stato in grado di trovare alcuna differenza nelle variabili di ambiente.

Quindi, la mia domanda è: come posso bloccare lo schermo usando la nuova schermata di blocco Unity e non la vecchia schermata di blocco dalla riga di comando?

Questa domanda è probabilmente correlata in quanto richiede il nuovo comando che deve essere utilizzato, quindi ecco un'altra domanda: Perché l'esecuzione dello stesso comando di blocco produce risultati diversi?

Si noti che gnome-screensavernon viene più utilizzato in 14.04, in base a questa segnalazione di bug :

Non è proprio un bug di gnome-screensaver, quel componente ha smesso di essere usato in trust.


2
Vorrei sapere anche io. L'uso dm-tool locksi avvicina: blocca lo schermo, ma (a differenza della schermata di blocco Unity predefinita) consente anche di cambiare utente.
Aibara,

2
dm-tool locke dm-tool switch-to-greetersembra che stia facendo la stessa cosa: ti riporta alla schermata di accesso (greeter), che sembra molto simile alla schermata di blocco.
Léo Lam,

Risposte:


14

Non ho gnome-screensaverinstallato e l'unico comando che riesco a trovare funziona è questo:

dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock


5
qdbus org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
Aquarius Power il

Questo funzionava, ma sembra non funzionare più nel 15.10: /
Léo Lam

@ LéoLam Stai usando un'immagine live? Sto ancora usando 14.04, ma ho testato sia il mio comando che quello di Aquarius Power nel 15.10 e li ho fatti funzionare. Tuttavia, ho dovuto abilitare la schermata di blocco per farlo funzionare tramite questo comandogsettings set org.gnome.desktop.lockdown disable-lock-screen false
Aibara,

No, è su una vera installazione di Ubuntu. gsettings get org.gnome.desktop.lockdown disable-lock-screenritorna false. Ora non c'è alcun output quando si esegue dbus-send. Forse gnome-screensaver è necessario perché questo funzioni?
Léo Lam,

1
Vedi le mie risposte per favore, forse il 15.10 ha abbandonato usando l' org.gnome.ScreenSaverinterfaccia dbus, quindi probabilmente è meglio comunicare con l'interfaccia dbus di Unity
Sergiy Kolodyazhnyy

3

La risposta accettata ha l'idea giusta, tranne per il fatto che la schermata di blocco è correlata al pannello di unità, mentre org.gnome.ScreenSaverovviamente è un tipo di schema relativo a Gnome, quindi potrebbe funzionare o meno.

Esiste tuttavia un'interfaccia dbus per Unity e tutto ciò di cui abbiamo bisogno è chiamare questo metodo in questo com.canonical.Unity.Session.Lockmodo

qdbus com.canonical.Unity  /com/canonical/Unity/Session com.canonical.Unity.Session.Lock

Nota a margine :

La prova del fatto che è correlata al pannello unity è semplice, quando lo schermo è bloccato, il processo /usr/lib/unity/unity-panel-servicecambierà /usr/lib/unity/unity-panel-service --lock-modecome osservato da tty1.


questo funziona in una sessione grafica, ma fallisce in una sessione SSH anche quando si imposta $ DISPLAY manualmente. "Il servizio 'com.canonical.Unity' non esiste.".
Léo Lam

Questo non ha nulla a che fare con la DISPLAYvariabile, ma con dbus. Non so se su ssh Unity non ha una sessione dbus o no, quindi non posso aiutarti in quella parte. Chiederò in giro, ma finora è quanto posso dire.
Sergiy Kolodyazhnyy,

Prova a correre dbus-launch --exit-with-session gnome-terminalprima. serverfault.com/a/411326
Sergiy Kolodyazhnyy

Può anche connettersi a una sessione screen / tmux in esecuzione all'interno di X ed eseguire il comando da lì. È stata la mia soluzione alternativa per connettermi alla giusta sessione dbus da un Vterm.
Iiridayn

2

Recentemente ho scoperto che xdg-screensaver lock funziona bene ed è anche una soluzione abbastanza semplice!


Nel PO è menzionato che non funziona in tutti i casi. Solo quando lo stai eseguendo localmente in un terminale dalla GUI.
Léo Lam,

Ha lavorato per me in remoto in una sessione SSH in una macchina LTS 18.04.
Benjamin R

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.