Áp dụng cài đặt hiển thị cho tất cả tài khoản người dùng?


14

Tôi đã dành một chút thời gian để cài đặt chính xác cho nhiều màn hình và điều đó hoạt động tốt khi tôi đăng nhập, nhưng không đúng ở màn hình đăng nhập hoặc cho những người dùng khác.

Làm cách nào để đặt cài đặt hiển thị trên toàn cầu cho tất cả người dùng và màn hình đăng nhập?


Làm thế nào bạn thiết lập nó? từ GUI hoặc dòng lệnh, và cài đặt của bạn là gì?
Jacob Vlijm

Với GUI "Màn hình hiển thị" tôi nghĩ, các cài đặt sẽ hiển thị trong đó. Hai màn hình, một xoay.
mirams

Askubfox.com/questions/360886/ đá đặt đăng nhập giống như một người dùng, điều này rất hữu ích. Askubfox.com/questions/372729/ dường như giải quyết các cài đặt xorg cũ không còn được sử dụng trong 14.04 (tôi nghĩ vậy?). Không thể tìm thấy bất kỳ câu hỏi hoặc câu trả lời nào cho cách thực hiện việc này vào ngày 14.04 ...
mirams

Tôi đã thử câu trả lời đó, màn hình được xoay để đăng nhập chính xác và sau đó không được quay cho người dùng sau đó (ngay cả sau khi xóa màn hình cục bộ của họ)
mirams

Tôi hơi ngạc nhiên về tiền thưởng, nếu bạn thiết lập màn hình của mình, chạy sudo cp ~/.config/monitors.xml /var/lib/lightdm/.config/như được đề xuất trước đó, + giải pháp bên dưới, bạn có thiết lập cho tất cả người dùng (bao gồm cả người dùng mới) chính xác như bạn mô tả.
Jacob Vlijm

Câu trả lời:


14

Tùy thuộc vào cách bạn thiết lập hệ thống của mình, có thể dễ dàng như sao chép monitors.xmltệp từ người dùng được thiết lập chính xác cho tất cả người dùng:

Để kiểm tra điều này cho một người dùng:

cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /home/TestUser/.config/

sau đó đăng xuất TestUser nếu đã đăng nhập , đăng nhập lại và xem mọi thứ có đúng không.

Lệnh cho tất cả người dùng:

cp /home/CorrectUser/.config/monitors.xml /tmp/
for szUser in /home/* ; do sudo cp --preserve=timestamps /tmp/monitors.xml $szUser/.config/ ; done

Lệnh cho màn hình đăng nhập:

sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /var/lib/lightdm/.config/

Lệnh cho tất cả người dùng trong tương lai :

sudo mdkdir -p /etc/skel/.config
sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /etc/skel/.config/

Lưu ý¹: Tất cả người dùng bạn sẽ tạo trong tương lai


1
Tôi đã đề xuất nó trong các bình luận (và trong câu trả lời của tôi trước đó, nhưng đã quay lại), nhưng OP đã đề cập đến nó là không đủ. Điều này chỉ hoạt động cho màn hình đăng nhập :) Nó cũng không hoạt động cho người dùng mới trừ khi bạn sao chép lại chúng cho những người dùng đó.
Jacob Vlijm

@JacobVlijm: Đọc lại ... Của tôi là dành cho màn hình đăng nhập và tất cả người dùng ... : P (để lại trong đó như một bình luận bên dưới này bởi OP rằng nó không hoạt động sẽ cảnh báo những người đăng bài khác gõ tất cả những điều đó lần thứ ba) > :-)
Fabby

1
Tôi không khuyên bạn nên sao chép tệp cho tất cả người dùng, vì điều này: Tôi muốn một giải pháp áp dụng cài đặt cho tất cả tài khoản người dùng (và những người trong tương lai), và cũng làm cho màn hình đăng nhập trông đúng. thêm vào /etc/xdg dường như là thủ thuật duy nhất làm điều đó cho người dùng mới.
Jacob Vlijm

@JacobVlijm: ah, đã bỏ lỡ cái đó! (Đã thêm giải pháp cho điều đó) ;-)
Fabby

2
Đây là câu trả lời tốt nhất - thiết lập chính xác tất cả các màn hình và cũng hoạt động ngay lập tức cho người dùng khách. Như một phần thưởng - có cách nào để sao chép cài đặt "Vị trí trình khởi chạy" từ GUI Cài đặt hiển thị không? Trên người dùng của tôi, nó chỉ trên một màn hình, nhưng trên cả hai cho người dùng mới / khách.
mirams

3

Để đặt cấu hình màn hình cho mọi người dùng khi đăng nhập (điều này sẽ không thay đổi cấu hình trên màn hình đăng nhập), bạn có thể tạo một .desktoptệp trong/etc/xdg/autostart

Làm thế nào để làm điều đó

  1. tìm ra tên của màn hình mà bạn muốn được xoay bằng cách chạy xrandr. Nó sẽ xuất ra một số dòng, trong số đó có một vài dòng giống như:

    VGA-0 connected
    

    Điều này cung cấp cho bạn thông tin về tên của các màn hình được kết nối.

  2. Chọn một cái bạn muốn xoay, trong ví dụ của tôi dưới đây VGA-0
  3. Tạo một launcher với (ví dụ) gedit:

    sudo -i gedit /etc/xdg/autostart/set_screens.desktop
    

    Dán văn bản dưới đây vào tập tin:

    [Desktop Entry]
    Name=set_screens
    Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
    Type=Application
    

    thay thế trong dòng:

    Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
    

    Chuỗi: VGA-0theo tên màn hình (xoay) của bạn.

Ghi chú quan trọng

  • Trong dòng

    Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
    

    Tôi bao gồm một sleep 10. Đó là bởi vì đôi khi, xrandrcác lệnh bị hỏng nếu chúng chạy quá sớm, trước khi máy tính để bàn "tải xong". Có thể bạn cần tăng thời gian nghỉ, hoặc bạn có thể thử bỏ nó ra. Trong lệnh, như vậy, màn hình sẽ quay sau 10 giây sau khi đăng nhập của bất kỳ người dùng nào .

  • Lệnh:

    xrandr --output VGA-0 --rotate left
    

    xoay màn hình rời, không cần phải nói rằng, nếu bạn muốn một loại luân chuyển, bạn có thể chọn một trong hai left, right, normal, inverted(xem thêm tại đây) .

Giải trình

Bạn có thể chạy các lệnh khi khởi động (thực sự đăng nhập) bằng cách đặt một .desktoptệp (launcher) vào ~/.config/autostart. Điều này sẽ chỉ chạy launcher cho một người dùng. Nếu bạn làm tương tự, nhưng đặt trình khởi chạy vào /etc/xdg/autostart, lệnh sẽ chạy bất cứ khi nào bất kỳ người dùng nào đăng nhập, trừ khi một người dùng cụ thể vô hiệu hóa trình khởi chạy cho anh ta hoặc cô ta trong Dash> Ứng dụng khởi động

Ngoài ra , bạn có thể chỉ cần sao chép ~/.config/monitors.xmltệp cục bộ của mình /var/lib/lightdm/monitors.xmlđể cũng làm cho các cài đặt hoạt động trên màn hình đăng nhập.

Imo sự kết hợp của điều này và giải pháp ở trên (một trình khởi chạy trong /etc/xdg) là giải pháp dễ nhất để đạt được chính xác những gì bạn muốn cho cả màn hình đăng nhập và (bất kỳ) người dùng. Ngoài ra, giải pháp của trình khởi chạy /etc/xdglà (rất) dễ dàng đảo ngược hoặc thay đổi trong trường hợp bạn cần thực hiện một thiết lập khác, mà không cần chỉnh sửa nhiều tệp ở cấp độ của mỗi người dùng, vì cả cài đặt của người dùng và màn hình đăng nhập đều được quản lý tất cả người dùng cùng một lúc trong hai tập tin đơn giản.


Điều đó có thể hoạt động - thay đổi cài đặt 10 giây sau khi đăng nhập, nhưng tôi muốn biết nơi chúng được đặt để bắt đầu và thay đổi chúng cho mọi người (và màn hình đăng nhập, hiện đang nằm ngang).
mirams

Tại sao ai đó sẽ downvote này?
Fabby

2

Chỉ muốn thêm một bình luận cho bất cứ ai thấy điều này đang vật lộn với một vấn đề tương tự. Tôi bị kẹt với độ phân giải của màn hình cũ (1280x1024) mỗi lần tôi đăng nhập, nhưng màn hình đăng nhập và đăng nhập của người dùng khách sử dụng đúng 1680x1050.

Tôi đã đọc rất nhiều bài đăng trong bốn tháng qua để tìm câu trả lời, đọc trên xorg.conf, Monitor.xml, lightdmxrandr và các đề xuất khác - nhưng một số thay đổi cấu hình rất phức tạp và có nguy cơ phá vỡ màn hình hoàn toàn, vì vậy tôi đã kết thúc việc sử dụng gui để thay đổi cài đặt màn hình theo cách thủ công mỗi lần đăng nhập.

Hôm nay tôi đã thực hiện một grep cho độ phân giải cũ trong thư mục .config.

grep -HrnIF '1280' .config | less

Kết quả đầu tiên là tệp ~ / .config / autostart / xrandr.desktop chứa tệp này,

Exec=xrandr -s 1280x1024 -r 75

Vì vậy, tôi chỉ cần di chuyển các tập tin ra khỏi đó. Và chơi lô tô, tôi đăng nhập và nhận độ phân giải 1680x1050 mặc định.

Phải mất vài giờ tìm kiếm và tôi không thể tìm thấy câu trả lời đủ gần, vì vậy hãy đăng lên đây trong trường hợp nó hữu ích với ai đó.


Chào mừng bạn đến hỏi Ubuntu. Cảm ơn đã chia sẻ bốn tháng (thời gian trôi qua) của bạn về nghiên cứu.
WinEunuuchs2Unix

Đọc lại tôi nghĩ rằng tôi có thể đã tạo tệp xrandr.desktop hai năm trước để xoay quanh Ubuntu luôn mặc định các cài đặt màn hình cơ bản của 'Goldstar' và đó có lẽ là vấn đề tương thích với thẻ video của tôi.
MattB

0

Bạn có thể muốn thêm một cái gì đó vào /etc/lightdm/lightdm.conf. Ở đây chúng tôi tạo một tập lệnh sử dụng một xrandrlệnh để thiết lập (các) màn hình của bạn. Bạn có thể sử dụng một số công cụ RandR đồ họa để tạo lệnh cho bạn, chẳng hạn như arandr. Trong trường hợp của tôi, kịch bản sẽ như sau:

#!/bin/sh
xrandr --output DVI-I-1 --mode 1600x1200 --pos 0x0 --rotate left --output DVI-I-0 --off --output DP-3 --off --output DP-2 --off --output DP-1 --mode 1600x900 --pos 1200x700 --rotate normal --output DP-0 --off

Bạn có thể đặt tập lệnh này vào /usr/sharehoặc bất cứ nơi nào bạn muốn. Kịch bản của bạn có thể trông ít phức tạp hơn, vì đây là cho một thiết lập màn hình kép phức tạp. Sau đó nối một cái gì đó như:

session-setup-script=/usr/share/mycustomxrandr.sh

và:

display-setup-script=/usr/share/mycustomxrandr.sh

Hãy chắc chắn rằng tập tin có thể thực thi được, vì vậy:

chmod a+x mycustomxrandr.sh

Các session-setup-scriptsẽ thiết lập màn hình cho sau khi bạn đăng nhập thông qua LightDM, và display-setup-scriptsẽ thay đổi hiển thị cho màn hình đăng nhập.


Thật tuyệt nếu bạn có thể dùng thử, tôi rất muốn xem liệu cái này có hiệu quả với bạn không.
nixpower

0

Trên hệ thống của tôi (Ubuntu 16.04) cho màn hình đăng nhập chỉ đơn giản cplà root (sử dụng sudo) không hoạt động. Bạn cũng có thể cần đảm bảo rằng chủ sở hữu / nhóm màn hình là lightdm:lightdm.

sudo chown lightdm:lightdm /var/lib/lightdm/.config/monitors.xml
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.