1616
1717from gi .repository import Adw , Gtk
1818
19+ import subprocess
20+
21+
1922@Gtk .Template (resource_path = "/org/vanillaos/Installer/gtk/default-nvidia.ui" )
2023class VanillaDefaultNvidia (Adw .Bin ):
2124 __gtype_name__ = "VanillaDefaultNvidia"
@@ -27,6 +30,8 @@ class VanillaDefaultNvidia(Adw.Bin):
2730 info_popover = Gtk .Template .Child ()
2831
2932 use_proprietary = None
33+ use_open = None
34+ suggested_drivers = None
3035
3136 def __init__ (self , window , distro_info , key , step , ** kwargs ):
3237 super ().__init__ (** kwargs )
@@ -36,24 +41,49 @@ def __init__(self, window, distro_info, key, step, **kwargs):
3641 self .__step = step
3742 self .delta = False
3843
39- self .btn_yes .connect ("clicked" , self .use_proprietary_drivers )
40- self .btn_no .connect ("clicked" , self .use_open_drivers )
44+ self .suggested_drivers = self .get_suggested_drivers ()
45+
46+ if self .suggested_drivers == "open" :
47+ self .info_popover .set_visible (False )
48+
49+ self .btn_yes .connect ("clicked" , self .use_drivers )
50+ self .btn_no .connect ("clicked" , self .no_drivers )
4151 self .btn_info .connect ("clicked" , self .show_info_popover )
4252
4353 def get_finals (self ):
4454 return {
4555 "nvidia" : {
4656 "use-proprietary" : self .use_proprietary ,
57+ "use-open" : self .use_open ,
4758 }
4859 }
4960
50- def use_open_drivers (self , _ ):
51- self .use_proprietary = False
61+ def use_drivers (self , _ ):
62+ self .use_open = self .suggested_drivers == "open"
63+ self .use_proprietary = self .suggested_drivers == "proprietary"
64+
5265 self .__window .next ()
5366
54- def use_proprietary_drivers (self , _ ):
55- self .use_proprietary = True
67+ def no_drivers (self , _ ):
68+ self .use_proprietary = False
69+ self .use_open = False
5670 self .__window .next ()
5771
5872 def show_info_popover (self , _ ):
5973 self .info_popover .popup ()
74+
75+ def get_suggested_drivers (self ):
76+ """
77+ lspci | grep -E 'NVIDIA.*(GeForce [4-8][0-9]{2}|GeForce GTX [6-9]..)' && exit 0 || exit 1
78+ 0 is legacy, 1 is non-legacy
79+ """
80+ res = subprocess .run (
81+ "lspci | grep -E 'NVIDIA.*(GeForce [4-8][0-9]{2}|GeForce GTX [6-9]..)' && exit 0 || exit 1" ,
82+ shell = True ,
83+ stdout = subprocess .PIPE ,
84+ stderr = subprocess .PIPE ,
85+ )
86+ if res .returncode == 0 :
87+ return "proprietary"
88+
89+ return "open"
0 commit comments