From 2e4b9230a508e02154b3801a0770133b3e1acdd7 Mon Sep 17 00:00:00 2001 From: Jiayi Zhao Date: Mon, 7 Jan 2019 21:38:53 -0500 Subject: add options to mimetype entries so joshuto doesn't get cluttered with program output or stops joshuto --- config/mimetype.toml | 85 ++++++++++++++++++++++++++++++++++++------ src/joshuto/config/mimetype.rs | 17 ++------- src/joshuto/unix.rs | 14 +++---- 3 files changed, 83 insertions(+), 33 deletions(-) diff --git a/config/mimetype.toml b/config/mimetype.toml index 7a96a5f..9475032 100644 --- a/config/mimetype.toml +++ b/config/mimetype.toml @@ -3,25 +3,33 @@ [[mimetypes.pdf]] program = "evince" -exec_type = "forking" +fork = true +silent = true [[mimetypes.7z]] program = "file-roller" -exec_type = "forking" +fork = true +silent = true [[mimetypes.jpg]] program = "qimgv" -exec_type = "forking" +fork = true +silent = true + [[mimetypes.jpg]] program = "krita" -exec_type = "forking" +fork = true +silent = true [[mimetypes.png]] program = "qimgv" -exec_type = "forking" +fork = true +silent = true + [[mimetypes.png]] program = "krita" -exec_type = "forking" +fork = true +silent = true # Audio [[mimetypes.flac]] @@ -33,47 +41,100 @@ program = "mpv" # Videos [[mimetypes.mkv]] program = "mpv" -exec_type = "forking" +fork = true +silent = true [[mimetypes.mp4]] program = "mpv" -exec_type = "forking" +fork = true +silent = true [[mimetypes.webm]] program = "mpv" -exec_type = "forking" +fork = true +silent = true [[mimetypes.wmv]] program = "mpv" -exec_type = "forking" +fork = true +silent = true # text [[mimetypes.c]] program = "nano" +[[mimetypes.c]] +program = "gedit" +fork = true +silent = true + [[mimetypes.cpp]] program = "nano" +[[mimetypes.cpp]] +program = "gedit" +fork = true +silent = true + [[mimetypes.py]] program = "nano" +[[mimetypes.py]] +program = "gedit" +fork = true +silent = true + [[mimetypes.conf]] program = "nano" + [[mimetypes.java]] program = "nano" +[[mimetypes.java]] +program = "gedit" +fork = true +silent = true + [[mimetypes.html]] program = "nano" +[[mimetypes.html]] +program = "gedit" +fork = true +silent = true + [[mimetypes.md]] program = "nano" +[[mimetypes.md]] +program = "gedit" +fork = true +silent = true + [[mimetypes.rs]] program = "nano" +[[mimetypes.rs]] +program = "gedit" +fork = true +silent = true + [[mimetypes.toml]] program = "nano" +[[mimetypes.toml]] +program = "gedit" +fork = true +silent = true + [[mimetypes.xml]] program = "nano" +[[mimetypes.xml]] +program = "gedit" +fork = true +silent = true [[mimetypes.txt]] program = "nano" - +[[mimetypes.txt]] +program = "gedit" +fork = true +silent = true [[mimetypes.odt]] program = "libreoffice" -exec_type = "forking" +fork = true +silent = true diff --git a/src/joshuto/config/mimetype.rs b/src/joshuto/config/mimetype.rs index 7550b7f..991103e 100644 --- a/src/joshuto/config/mimetype.rs +++ b/src/joshuto/config/mimetype.rs @@ -6,17 +6,12 @@ use std::fs; use std::collections::HashMap; use std::process; -#[allow(non_camel_case_types)] -#[derive(Debug, Deserialize)] -pub enum ExecType { - forking -} - #[derive(Debug, Deserialize)] pub struct JoshutoMimetypeEntry { pub program: String, pub args: Option>, - pub exec_type: Option, + pub fork: Option, + pub silent: Option, } impl std::fmt::Display for JoshutoMimetypeEntry { @@ -26,17 +21,11 @@ impl std::fmt::Display for JoshutoMimetypeEntry { match self.args.as_ref() { Some(s) => { for arg in s { - fmt_result = write!(f, "{} ", arg); + fmt_result = write!(f, " {}", arg); } }, None => {}, } - match self.exec_type.as_ref() { - Some(s) => { - fmt_result = write!(f, "\t({})", s); - }, - None => {}, - } fmt_result } } diff --git a/src/joshuto/unix.rs b/src/joshuto/unix.rs index d593624..e6dc17d 100644 --- a/src/joshuto/unix.rs +++ b/src/joshuto/unix.rs @@ -109,10 +109,14 @@ pub fn open_with_entry(path: &path::Path, entry: &mimetype::JoshutoMimetypeEntry } } command.arg(path.as_os_str()); + if let Some(true) = entry.silent { + command.stdout(process::Stdio::null()); + command.stderr(process::Stdio::null()); + } match command.spawn() { Ok(mut handle) => { - if let Some(_) = entry.exec_type { + if let Some(true) = entry.fork { } else { match handle.wait() { Ok(_) => {}, @@ -120,9 +124,7 @@ pub fn open_with_entry(path: &path::Path, entry: &mimetype::JoshutoMimetypeEntry } } }, - Err(e) => { - eprintln!("{:?}", e); - }, + Err(e) => eprintln!("{}", e), } } @@ -144,8 +146,6 @@ pub fn open_with_args(path: &path::Path, args: &Vec) Err(e) => eprintln!("{}", e), } }, - Err(e) => { - eprintln!("{:?}", e); - }, + Err(e) => eprintln!("{}", e), } } -- cgit v1.2.3