aboutsummaryrefslogtreecommitdiffstats
path: root/sway/main.c
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2017-04-12 10:04:28 -0400
committerLibravatar Drew DeVault <sir@cmpwn.com>2017-04-12 10:04:44 -0400
commitb3541d9dc5e3037889026d3d918b174d9ecc9567 (patch)
treeda7b2dbe82457d3f446cf094cc02e809bcd72a19 /sway/main.c
parentDowngrade nvidia proprietary driver warning (diff)
downloadsway-b3541d9dc5e3037889026d3d918b174d9ecc9567.tar.gz
sway-b3541d9dc5e3037889026d3d918b174d9ecc9567.tar.zst
sway-b3541d9dc5e3037889026d3d918b174d9ecc9567.zip
Implement more thourough nvidia config check
Diffstat (limited to 'sway/main.c')
-rw-r--r--sway/main.c39
1 files changed, 35 insertions, 4 deletions
diff --git a/sway/main.c b/sway/main.c
index ab6ecc1f..39bf225e 100644
--- a/sway/main.c
+++ b/sway/main.c
@@ -57,24 +57,55 @@ void detect_proprietary() {
57 if (!f) { 57 if (!f) {
58 return; 58 return;
59 } 59 }
60 bool nvidia = false, nvidia_modeset = false, nvidia_uvm = false, nvidia_drm = false;
60 while (!feof(f)) { 61 while (!feof(f)) {
61 char *line; 62 char *line;
62 if (!(line = read_line(f))) { 63 if (!(line = read_line(f))) {
63 break; 64 break;
64 } 65 }
65 if (strstr(line, "nvidia")) { 66 if (strstr(line, "nvidia")) {
66 fprintf(stderr, "\x1B[1;31mWarning: Proprietary nvidia driver support is considered experimental.\x1B[0m\n"); 67 nvidia = true;
67 free(line); 68 }
68 break; 69 if (strstr(line, "nvidia_modeset")) {
70 nvidia_modeset = true;
71 }
72 if (strstr(line, "nvidia_uvm")) {
73 nvidia_uvm = true;
74 }
75 if (strstr(line, "nvidia_drm")) {
76 nvidia_drm = true;
69 } 77 }
70 if (strstr(line, "fglrx")) { 78 if (strstr(line, "fglrx")) {
71 fprintf(stderr, "\x1B[1;31mWarning: Proprietary AMD drivers do NOT support Wayland. Use radeon.\x1B[0m\n"); 79 fprintf(stderr, "\x1B[1;31mWarning: Proprietary AMD drivers do "
80 "NOT support Wayland. Use radeon.\x1B[0m\n");
72 free(line); 81 free(line);
73 break; 82 break;
74 } 83 }
75 free(line); 84 free(line);
76 } 85 }
77 fclose(f); 86 fclose(f);
87 if (nvidia) {
88 fprintf(stderr, "\x1B[1;31mWarning: Proprietary nvidia driver support "
89 "is considered experimental. Nouveau is strongly recommended."
90 "\x1B[0m\n");
91 if (!nvidia_modeset || !nvidia_uvm || !nvidia_drm) {
92 fprintf(stderr, "\x1B[1;31mWarning: You do not have all of the "
93 "necessary kernel modules loaded for nvidia support. "
94 "You need nvidia, nvidia_modeset, nvidia_uvm, and nvidia_drm."
95 "\x1B[0m\n");
96 }
97 f = fopen("/proc/cmdline", "r");
98 if (f) {
99 char *line = read_line(f);
100 if (line && !strstr(line, "nvidia-drm.modeset=1")) {
101 fprintf(stderr, "\x1B[1;31mWarning: You must add "
102 "nvidia-drm.modeset=1 to your kernel command line to use "
103 "the proprietary driver.\x1B[0m\n");
104 }
105 fclose(f);
106 free(line);
107 }
108 }
78} 109}
79 110
80void run_as_ipc_client(char *command, char *socket_path) { 111void run_as_ipc_client(char *command, char *socket_path) {