File tree Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change
1
+ ---
2
+ title : Get Desktop Enviroment
3
+ description : Get the Desktop Enviroment that the user is currently using.
4
+ author : sponkurtus2
5
+ tags : linux,file
6
+ ---
7
+
8
+ ``` rust
9
+ fn get_desktop_env () -> String {
10
+ // Return empty string if no X display is available
11
+ if env :: var (" DISPLAY" ). is_err () {
12
+ return String :: new ();
13
+ }
14
+
15
+ // Check common desktop environment variables.
16
+ for env_var in & [
17
+ " XDG_SESSION_DESKTOP" ,
18
+ " XDG_CURRENT_DESKTOP" ,
19
+ " DESKTOP_SESSION" ,
20
+ ] {
21
+ if let Ok (de ) = env :: var (env_var ) {
22
+ return de ;
23
+ }
24
+ }
25
+
26
+ // As fallback, try to get desktop name from last word of last line in .xinitrc
27
+ let path = format! (" {}/.xinitrc" , env :: var (" HOME" ). unwrap_or_default ());
28
+ if let Ok (mut file ) = File :: open (& path ) {
29
+ let mut buf = String :: new ();
30
+ if file . read_to_string (& mut buf ). is_ok () {
31
+ if let Some (last_line ) = buf . lines (). last () {
32
+ let last_word = last_line . split (' ' ). last (). unwrap_or ("" );
33
+ return last_word . to_string ();
34
+ }
35
+ }
36
+ }
37
+
38
+ // Return "N/A" if no desktop environment could be detected
39
+ String :: from (" N/A" )
40
+ }
41
+
42
+ // Usage:
43
+ get_desktop_env (); // Returns: the desktop enviroment that the user actually has e.g. i3.
44
+ ```
You can’t perform that action at this time.
0 commit comments