Bagaimana cara memulai kembali layar beku di Ubuntu tanpa kehilangan jendela yang terbuka?

12

Saya memiliki perangkat yang menjalankan Ubuntu 12.04 LTS memiliki pembekuan layarnya. Secara umum saya hanya melompat ke tty yang tersedia, yaitu Ctrl- Alt- F1dan menjalankan perintah /etc/init.d/lightdm restartatau service lightdm restart. Namun ini membunuh semua yang saya buka. Bagaimana saya menghindari ini?

Kacang Kacang Tanah
sumber
1
Anda tidak dapat mencapai ini. Ini adalah lightdm yang menampilkan / mengelola windows dalam sistem x.
Apple II
Ini juga akan membunuh apa pun yang Anda buka, tetapi sekali waktu ctrl-alt-backspace akan memulai ulang X. Itu lebih mudah daripada beralih ke TTY, masuk, dan meminta X untuk memulai ulang sendiri. Saya tidak yakin apakah itu masih berfungsi.
@Douglas B. Staple - Tidak berfungsi dengan Ubuntu 12.04 LTS. Tidak yakin apakah masih berfungsi dengan distribusi lain atau apakah ini khusus untuk Unity.
PeanutsMonkey
Mungkin ada beberapa cara untuk mengganti window manager saat berjalan. (Setidaknya dimungkinkan dengan GNOME-Shell, atau dengan pengelola jendela i3 sehingga mungkin ada beberapa cara).
FSMaxB
@ FSMaxB - Bisakah Anda jelaskan bagaimana hal ini dapat dicapai menggunakan Gnome-Shell atau i3 Window Manager?
PeanutsMonkey

Jawaban:

12

PENOLAKAN: Menurut komentar Brenden, ini mungkin sudah usang dan tidak berfungsi lagi dengan versi Ubuntu yang lebih baru. Harap juga bersiap-siap bahwa Anda mungkin kehilangan jendela terbuka.

Sekarang saya mendapatkannya untuk Unity (Saya baru saja mengganti shell GNOME saya dengan unity tanpa keluar atau menutup windows):

  1. Pergi ke tty1 [Ctrl] + [Alt] + [F1]
  2. Ketik DISPLAY=:0agar program tahu di port apa untuk menemukan X-Server
  3. export DISPLAY
  4. unity --replaceatau gnome-shell --replace(Anda juga dapat mengganti GNOME-Shell dengan kesatuan atau Unity oleh GNOME-Shell)

Ini hanya berfungsi jika X-Server atau GNOME tidak dibekukan tetapi hanya Unity atau GNOME-Shell.

Cara kerjanya: Komunikasi antara program dan X-Server untuk menampilkan UI mereka berfungsi melalui soket jaringan. Ini biasanya di "localhost: 0" pendek ": 0". Dengan mengatur variabel DISPLAY, program tahu di mana menemukan X-Server untuk berkomunikasi dengannya, sehingga program ditampilkan pada X-Server pada tty7 bahkan jika program berjalan pada tty1.

Konten windows dikelola oleh X-Server sedangkan posisi dan perbatasan windows dikelola oleh window manager yang terintegrasi dalam kesatuan atau GNOM-shell sehingga ada cara untuk mengganti hanya mereka tanpa me-restart aplikasi pada X- Server.

PS: Saya hanya menjelaskan apa yang saya pahami, jadi tolong edit dan koreksi saya jika saya salah dalam beberapa hal.

EDIT: Untuk GNOME-Shell, ada cara lain untuk memulai kembali. Setelah berubah menjadi tty cukup ketik pkill -HUP gnome-shell, saya tidak tahu apakah ada sesuatu yang serupa untuk Unity.

FSMaxB
sumber
Itu bekerja seperti keajaiban. Bahkan itu menyelamatkan saya hari ini. Terima kasih banyak. Saya akan sangat berterima kasih jika Anda bisa menguraikan apa yang dilakukan masing-masing langkah dari langkah 1. Saya tidak begitu mengerti apa yang terjadi di bawah tenda.
PeanutsMonkey
Terima kasih atas jawabannya! Catatan unity --help mengatakan: "--replace Run unity /! \ Ini untuk kompatibilitas dengan antarmuka desktop lain dan bertindak sama seperti menjalankan unity tanpa --replace"
Tom
Saya juga menemukan saya harus menjalankan unity melalui sudo untuk menyelamatkan windows saya.
Tom
2
--replace sudah usang dan tidak melakukan apa-apa dan solusi ini akan memulai kembali sesi Anda yang berarti Anda kehilangan semua jendela Anda :(
Brenden
Masih berfungsi di 2018
user000001