Merge pull request #89 from mtoohey31/display-server-fix
Check for Xorg running in tty
This commit is contained in:
		
						commit
						a99e6f38e5
					
				@ -353,11 +353,44 @@ fn get_display_server_of_session(session: &str) -> String {
 | 
				
			|||||||
    if let Ok(output) = std::process::Command::new("loginctl")
 | 
					    if let Ok(output) = std::process::Command::new("loginctl")
 | 
				
			||||||
        .args(vec!["show-session", "-p", "Type", session])
 | 
					        .args(vec!["show-session", "-p", "Type", session])
 | 
				
			||||||
        .output()
 | 
					        .output()
 | 
				
			||||||
 | 
					    // Check session type of the session
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        String::from_utf8_lossy(&output.stdout)
 | 
					        let display_server = String::from_utf8_lossy(&output.stdout)
 | 
				
			||||||
            .replace("Type=", "")
 | 
					            .replace("Type=", "")
 | 
				
			||||||
            .trim_end()
 | 
					            .trim_end()
 | 
				
			||||||
            .into()
 | 
					            .into();
 | 
				
			||||||
 | 
					        if display_server == "tty" {
 | 
				
			||||||
 | 
					            // If the type is tty...
 | 
				
			||||||
 | 
					            if let Ok(output) = std::process::Command::new("loginctl")
 | 
				
			||||||
 | 
					                .args(vec!["show-session", "-p", "TTY", session])
 | 
				
			||||||
 | 
					                .output()
 | 
				
			||||||
 | 
					            // Get the tty number
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                let tty: String = String::from_utf8_lossy(&output.stdout)
 | 
				
			||||||
 | 
					                    .replace("TTY=", "")
 | 
				
			||||||
 | 
					                    .trim_end()
 | 
				
			||||||
 | 
					                    .into();
 | 
				
			||||||
 | 
					                if let Ok(Some(xorg_results)) =
 | 
				
			||||||
 | 
					                    run_cmds(format!("ps -e | grep \"{}.\\\\+Xorg\"", tty))
 | 
				
			||||||
 | 
					                // And check if Xorg is running on that tty
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    if xorg_results.trim_end().to_string() != "" {
 | 
				
			||||||
 | 
					                        // If it is, manually return "x11", otherwise return tty
 | 
				
			||||||
 | 
					                        "x11".to_owned()
 | 
				
			||||||
 | 
					                    } else {
 | 
				
			||||||
 | 
					                        display_server
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    // If any of these commands fail just fall back to the display server
 | 
				
			||||||
 | 
					                    display_server
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                display_server
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            // If the session is not a tty, then just return the type as usual
 | 
				
			||||||
 | 
					            display_server
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        "".to_owned()
 | 
					        "".to_owned()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user