Skip to content

Commit d2d1113

Browse files
committed
Spawn off a terminal emulator to install packages if needed
Signed-off-by: Davide Cavalca <davide@cavalca.name>
1 parent edb9808 commit d2d1113

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use libc::{sysconf, _SC_PAGESIZE};
55
use std::env;
66
use std::ffi::{OsStr, OsString};
77
use std::fs::{canonicalize, read_link};
8+
use std::io::{stdin, IsTerminal};
89
use std::os::raw::c_long;
910
use std::os::unix::process::CommandExt;
1011
use std::path::{Path, PathBuf};
@@ -89,7 +90,18 @@ fn main() {
8990
"Will attempt to install missing requirements for {}",
9091
interpreter_name
9192
);
92-
let mut dnf_command = Command::new("pkexec");
93+
94+
let mut dnf_command;
95+
if stdin().is_terminal() {
96+
trace!("Running in a terminal");
97+
dnf_command = Command::new("pkexec");
98+
} else {
99+
trace!("Not running in a terminal");
100+
dnf_command = Command::new("xdg-terminal-exec");
101+
dnf_command.arg("--");
102+
dnf_command.arg("pkexec");
103+
}
104+
93105
dnf_command.arg("/usr/bin/dnf");
94106
dnf_command.arg("install");
95107
dnf_command.args(&interpreter_missing_paths);

0 commit comments

Comments
 (0)