Làm cách nào để khóa màn hình bằng màn hình khóa mới từ dòng lệnh?


19

Ubuntu 14.04 giới thiệu một màn hình khóa mới trông tương tự như màn hình đăng nhập.

Màn hình khóa mới

Tôi vẫn có thể khóa màn hình bằng lệnh gnome-screensaver-command --lock(như tôi vẫn thường làm trước đây), mà dưới 14.04 không khóa màn hình, nhưng:

  • Nếu bạn đang chạy nó từ máy tính để bàn, nó sẽ khóa màn hình bằng màn hình khóa mới.
  • Nếu bạn đang chạy nó từ bảng điều khiển ảo hoặc thông qua SSH, nó sẽ khóa màn hình bằng màn hình khóa cũ .

Tôi cũng đã thử sử dụng xdg-screensaver lock, nhưng nó hoạt động theo cách tương tự gnome-screensaver-command --lock(chỉ sử dụng màn hình khóa mới khi nó chạy từ máy tính để bàn).

Chạy light-locker-command --lockkhông hoạt động, như light-lockerkhông được cài đặt.

Tôi đoán phải có một số khác biệt giữa việc chạy cùng một lệnh từ máy tính để bàn và chạy nó thông qua SSH / bảng điều khiển ảo, nhưng tôi không thể tìm thấy bất kỳ sự khác biệt nào trong các biến môi trường.

Vì vậy, câu hỏi của tôi là: Làm cách nào tôi có thể khóa màn hình bằng màn hình khóa Unity mới chứ không phải màn hình khóa cũ từ dòng lệnh?

Câu hỏi này có lẽ liên quan vì nó yêu cầu lệnh mới cần được sử dụng, vì vậy đây là một câu hỏi khác: Tại sao chạy cùng một lệnh khóa lại cho kết quả khác nhau?

Lưu ý rằng gnome-screensaverkhông được sử dụng nữa trong 14.04, theo báo cáo lỗi này :

Đó thực sự không phải là một lỗi bảo vệ màn hình gnome, thành phần đó đã ngừng được sử dụng một cách đáng tin cậy.


2
Tôi muốn biết là tốt. Sử dụng dm-tool lockđến gần: nó khóa màn hình, nhưng (không giống như màn hình khóa Unity mặc định) cũng cho phép bạn chuyển người dùng.
Aibara

2
dm-tool lockdm-tool switch-to-greeterdường như đang làm điều tương tự: đưa bạn trở lại màn hình đăng nhập (lời chào), trông rất giống với màn hình khóa.
Léo Lam

Câu trả lời:


14

Tôi chưa gnome-screensavercài đặt và lệnh duy nhất tôi có thể tìm thấy hoạt động là:

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
Sức mạnh Bảo Bình

Điều này đã từng làm việc, nhưng dường như nó không còn hoạt động nữa vào ngày 15.10: /
Léo Lam

@ LéoLam Bạn đang sử dụng hình ảnh livecd? Tôi vẫn đang sử dụng 14.04, nhưng tôi đã kiểm tra cả mệnh lệnh của mình và Sức mạnh của Bảo Bình trong 15.10 và khiến chúng hoạt động. Tuy nhiên, tôi đã phải kích hoạt màn hình khóa để khiến nó hoạt động thông qua lệnh nàygsettings set org.gnome.desktop.lockdown disable-lock-screen false
Aibara

Không, đó là trên một cài đặt Ubuntu thực sự. gsettings get org.gnome.desktop.lockdown disable-lock-screentrả lại false. Bây giờ không có đầu ra nào khi chạy dbus-send. Có lẽ gnome-Screensaver là cần thiết để làm việc này?
Léo Lam

1
Xin vui lòng xem câu trả lời của tôi, có lẽ 15.10 đã bỏ qua sử dụng org.gnome.ScreenSavergiao diện dbus, vì vậy có lẽ nên giao tiếp với giao diện dbus của Unity
Sergiy Kolodyazhnyy

3

Câu trả lời được chấp nhận có ý tưởng đúng, ngoại trừ việc màn hình khóa có liên quan đến bảng thống nhất, trong khi org.gnome.ScreenSaverrõ ràng là một loại lược đồ liên quan đến Gnome, vì vậy nó có thể hoặc không hoạt động.

Tuy nhiên, tồn tại một giao diện dbus cho Unity và tất cả những gì chúng ta cần là gọi phương thức này com.canonical.Unity.Session.Locknhư vậy

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

Lưu ý bên :

Bằng chứng về thực tế là nó liên quan đến bảng thống nhất rất đơn giản, khi bạn khóa màn hình, quy trình /usr/lib/unity/unity-panel-servicesẽ thay đổi thành /usr/lib/unity/unity-panel-service --lock-modenhư được quan sát từ tty1.


điều này không hoạt động trong phiên đồ họa, nhưng không thành công trong phiên SSH ngay cả khi đặt $ HIỂN THỊ theo cách thủ công. "Dịch vụ 'com.canonical.Unity' không tồn tại.".
Léo Lam

Điều này không có gì để làm với DISPLAYbiến, nhưng với dbus. Tôi không biết liệu trên ssh Unity không có phiên dbus hay không, vì vậy tôi không thể giúp bạn trong phần đó. Tôi sẽ hỏi xung quanh nhưng cho đến nay điều đó nhiều như tôi có thể nói.
Sergiy Kolodyazhnyy

Hãy thử chạy dbus-launch --exit-with-session gnome-terminaltrước đó. serverfault.com/a/411326
Sergiy Kolodyazhnyy

Cũng có thể kết nối với phiên màn hình / tmux chạy bên trong X và chạy lệnh từ đó. Là cách giải quyết cuối cùng của tôi để kết nối với phiên dbus đúng từ một vterm.
Iiridayn

2

Gần đây tôi phát hiện ra rằng nó xdg-screensaver lock hoạt động tốt và cũng là một giải pháp khá đơn giản!


Nó được đề cập trong OP rằng nó không hoạt động trong mọi trường hợp. Chỉ khi bạn chạy nó cục bộ trong một thiết bị đầu cuối từ GUI.
Léo Lam

Làm việc cho tôi từ xa trong một phiên SSH vào máy 18.04 LTS.
Benjamin R

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.