Hallo taker,
es sieht ganz so aus, als ob dein Arbeiten mit "sudo nvidia-settings" die Berechtigungen an den Konfigurationsdateien geändert hat, so dass sie zwar weiterhin lesbar, aber nicht überschreibbar sind.
Lass mich mal ein wenig etwas Grundsätzliches zu diesem Thema erklären.
1. X-Server allgemein
Die grafische Oberfläche auf Unix/Linux Systemen wird durch eine sogenannte X-Server Technologie umgesetzt. Dieser X-Server läuft auf deinem lokalen System und ihm ist es egal, welche Grafikkarte, Monitor und Maus du an deinem Computer angeschlossen hast.
Bei bestimmten Grafikkarten werden Treiber für die passenden X-Server zur Verfügung gestellt. Also kannst du dir einen X-Server als Äquivalent zu deiner Windows10 Oberfläche vorstellen und die Konfiguration deiner Grafikkarte so wie die Treiberinstalltion unter Windows.
Dieses X-Server System bringt eine globale Konfigurationsdatei mit, die Grundwerte für das gesamte System beinhaltet (also quasi so eine Art Vorlage für alle Benutzer, die sich an deinem Linuxsystem anmelden. Diese Datei liegt im Standard hier:
/etc/X11/xorg.conf
Auf diese Datei hat im Standard nur der Superuser root (den du mit sudo aufrufst) volle Zugriffsrechte. Alle anderen Benutzer haben ausschließlich Leserechte, was völlig ausreicht.
Mit dem folgenden Befehl kannst du überprüfen, wie die Berechtigungen auf dieser Datei aussehen:
ls -lisa /etc/X11/xorg.conf
Die Ausgabe auf der Konsole sollte dabei wie folgt aussehen:
-rw-r--r-- 1 root root 1333 Nov 30 2016 /etc/X11/xorg.conf
die "RW" Kombinationen ganz am Anfang zeigen an, welche Zugriffsrechte dort bestehen.
r = lesen
w = schreiben
x = ausführen
die ersten drei Zeichen beziehen sich auf den Besitzer dieser Datei (in diesem Fall root)
die zweiten drei Zeichen beziehen sich auf alle Personen, die in der angegebenen Gruppe sind (in diesem Fall auch root)
die dritten drei Zeichen beziehen sich auf alle weiteren Personen, die auf dieses System zugreifen können.
In diesem Fall darf der Besitzer root also lesen und schreiben, alle Personen der Gruppe root nur lesen und alle anderen auch nur lesen.
2. Nvidia X-Server im Besonderen
Durch die Installation des nvidia X-Servers auf deinem System wird auch die globale Vorgabedatei /etc/X11/xorg.conf um den notwendigen Treiber und deine erkannte Grafikkarte erweitert.
Durch den Aufruf der nvidia-settings (ein Programm, welches mit dem nvidia X-Server mitgeliefert wird) wird im Wurzelverzeichnis des Anwenders eine lokale Konfigurationsdatei angelegt, dessen Eintragungen die Werte der globalen Datei übersteuern.
du kannst dir die Berechtigungen der Datei ganz einfach auf der Konsole ansehen:
ls -lisa .nvidia-settings-rc
Die Ausgabe sollte ungefähr so aussehen (ich habe die Gruppe und den Usernamen verallgemeinert:
10227806 12 -rw-rw-r-- 1 user1 gruppe1 909 Jun 20 12:26 .nvidia-settings-rc
Auch hier sehen die Berechtigungen ähnlich wie bei der globalen Konfigurationsdatei aus, nur das hier der Benutzer "user1" ist und die Gruppe "gruppe1!
Wenn diese Datei statt dem Benutzer "user1" dem Benutzer root gehört, hast du die Konfiguration mit sudo gestartet und die Datei dann in das lokale Benutzerverzeichnis gespeichert.
Wirf bitte mal einen kurzen Blick in diese
nvidia Settings Webseite und zwar speziel auf das Kapitel Problemlösungen.
Ich würde dir raten, dein System von ggf. fehlerhaften Konfigurationsdateien zu befreien, neu zu starten und danach die nvidia-settings als ganz normaler Benutzer ohne Root berechtigung (also ohne sudo) zu öffen und nach den vorgenommenen gewünschten Einstellungen zu speichern.
überprüfe bitte die Berechtigungen auf den folgenden Dateien .nvidia-settings-rc und monitors.xml durch die Befehle:
ls -lisa ~/.nvidia-settings-rc
ls -lisa ~/.config/monitors.xml
in jedem Fall sollte dein lokaler Benutzer der Besitzer dieser Dateien sein (und nicht etwa root)
wenn die 2. Datei nicht vorhanden ist, ist das kein Fehler!
Folgende Dateien müssten dabei gelöscht werden (du kannst sie auch gerne ubenennen, wenn du magst)
rm ~/.nvidia-settings-rc
rm ~/.config/monitors.xml
sollten die Dateien wie oben geprüft root Berechtigungen haben, kannst du für die rm (remove) Befehle ein sudo mit folgendem Leerzeichen voranstellen, also etwa so:
sudo rm ~/.nvidia-settings-rc
nachdem dein System neu gestartet wurde, sind die Vorgabeeinstellungen deines X-Servers (also die in /etc/X11/xorg.conf) gültig.
durch Aufruf von nvidia-settings als Benutzer ohne Root berechtigungen erzeugst du die gerade gelöschte .nvidia-settings-rc Datei neu
Eigentlich ist ein kompletter Neustart des Systems gar nicht notwendig, es reicht ein Durchstarten des X Servers, aber bevor ich das erklärt habe, ist der Neustart schon durch
Viel Erfolg bei der Bereinigung
Cheers, Bogi
----- @dd it -----
so, ... ich habe bei mir auf dem Laptop mal alles durchgetestet und kann schon mal sagen, dass du mit deinen Konfigurationen nichts falsch gemacht hast. Die Änderungen in der Auflösung werden, damit sie Gültigkeit bekommen in die globale Datei /etc/X11/xorg.conf geschrieben. Dafür ist eine Legitimation als root notwendig
Die drei ausschlaggebenden Bereiche in der xorg.conf sind:
- Monitor
hier sind die angegebenen horizontal und vertikal Refresh Frequenzen wichtig
- Device
hier wird der zu ladende Treiber (X-Server) angegeben. Das Device muss hardwaremäßig den Monitor in der gewünschten Weise ansprechen können
- Screen
hier werden die vorherigen beiden Punkte miteinander verknüpft. Die Option mit den Metamodes sollte eigentlich die korrekte Wiederholfrequenz aktivieren
Somit ist die von dir oben angegebene xorg.conf völlig korrekt. Wenn nach einem Systemneustart in dieser Datei die gleichen Werte weiterhin vorhanden sind, ist eigentlich alles korrekt
Bei meinen Versuchen auf meinem System startet ein erneuter Aufruf der nvidia X-Server settings die ursprünglich gespeicherten Einstellungen
============================== Lösung =================================
also gut, ... manche Konfigurationen werden tatsächlich vom jeweiligen Serverprogramm nur zur Laufzeit ausgelesen und aktiviert (merkwürdigerweise scheint es hier mit der Bildwiederholrate der Fall zu sein)
Die Problembeschreibung und auch die dazugehörige Lösung findet sich hier:
Ubuntu Wiki: RandR
Das für dich relevante Kapitel beginnt mit "Hilfe zur Selbsthilfe"
Du müsstest jetzt 3 Dinge tun:
- die von dir benötigten Werte herausfinden
- die Befehle auf der Konsole ausführen und kontrollieren, ob der gewünschte Effekt auftritt (Aktivierung der 144 Hz)
- wenn das alles funktioniert hat, im Verzeichnis ~/.config/autostart eine neue Textdatei erstellen, die die auszuführenden Befehle enthält.
Also zum Punkt 1:
der folgende Konsolenbefehl gibt dir die aktuelle Hardwarekonfiguration aus:
xrandr --query
Ausgabebeispiel:
Screen 0: minimum 8 x 8, current 1920 x 1200, maximum 8192 x 8192
LVDS-0 connected primary 1920x1200+0+0 (normal left inverted right x axis y axis) 367mm x 230mm
1920x1200 59.95*+
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
Erklärung: das bedeutet, dass
bei mir auf dem Ausgabegerät LVDS-0 die aktuelle Auflösung 1920x1200 mit 59,95 Hz eingestellt ist. Wichtig ist auch, dass bei dir die Ausgabe ggf. auf DP-0, oder DP-1 erfolgt. Das wäre dann anders als bei mir dargestellt. Auch die Auflösung wird vermutlich eine Andere sein (die mit dem * gekennzeichnete ist die Aktive)
Der folgende Part bezieht sich auf das Kapitel Auflösung:
Du möchtest eine Einstellung haben, in der die folgende Auflösung genutzt wird: 1920x1080 in 144 Hz. Dafür muss auf der Konsole der folgende Befehl eingegeben werden:
cvt 1920 1080 144
Ausgabebeispiel (
das spuckt meine Konfiguration aus, bitte nutze unbedingt und ausschließlich deine eigenen zurückgegebenen Werte):
# 1920x1080 143.88 Hz (CVT) hsync: 169.35 kHz; pclk: 452.50 MHz
Modeline "1920x1080_144.00" 452.50 1920 2088 2296 2672 1080 1083 1088 1177 -hsync +vsync
Erklärung:
die Werte in der Zeile, die mit "Modline" beginnt enthält die Werte, die du benötigst
Jetzt weiter zum Punkt 2:
in der Konsole müssen jetzt die folgenden drei Befehle
mit deinen eigenen Werten ausgeführt werden:
xrandr --newmode "1920x1080_144.00" 452.50 1920 2088 2296 2672 1080 1083 1088 1177 -hsync +vsync
xrandr --addmode DP-0
xrandr --output DP-0 --mode "1920x1080_144.00"
Erklärung: der neue Modus wird dem Server bekanntgegeben, danach auf der Ausgabe des Displayports DP-0 hinzugefügt und danach aktiviert
Ganz wichtig: nimm bei der newmode Zeile
ausschließlich deine oben selbst herausgefunden Werte und nicht die Werte aus diesem Beispiel
Ganz wichtig: in den Zeilen addmode und output wähle bitte den Port, der dir oben bei xrandr --query angegeben wurde (bei mir wäre das LVDS-0, bei dir vermutlich DP-0)
jetzt kontrolliere die Bildwiederholfrequenz deines Monitors (z.B. mit xrandr --query)
hat alles gut funktioniert kommt jetzt der Schritt 3
- wechsel in das Verzeichnis ~/.config/autostart
cd ~/.config/autostart
- erzeuge eine leere Datei namens 144hz und öffne sie zum Bearbeiten mit dem folgenden Konsolenbefehl:
xedit 144hz
- füge die folgenden Werte in die Datei ein (durch eigene Werte ersetzen)
#!/bin/sh
xrandr --newmode "1920x1080_144.00" 452.50 1920 2088 2296 2672 1080 1083 1088 1177 -hsync +vsync
xrandr --addmode DP-0
xrandr --output DP-0 --mode "1920x1080_144.00"
- Klicke erst auf Save und dann auf Quit um die Datei zu sichern
- mach die neue Datei ausführbar
chmod 700 144hz
Fertig
ab jetzt solltest du nach jeder Neuanmeldung deinen Monitor in der passenden Refreshrate eingestellt haben.