summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiayi Zhao <jeff.no.zhao@gmail.com>2019-01-07 21:38:53 -0500
committerJiayi Zhao <jeff.no.zhao@gmail.com>2019-01-07 21:38:53 -0500
commit2e4b9230a508e02154b3801a0770133b3e1acdd7 (patch)
treed8cca81f747bdcd3858d5588ffd92007933da643
parent77b0e3a20255fa1929bf8ae7953f63baa0e1e35b (diff)
add options to mimetype entries so joshuto doesn't get cluttered with program output or stops joshuto
-rw-r--r--config/mimetype.toml85
-rw-r--r--src/joshuto/config/mimetype.rs17
-rw-r--r--src/joshuto/unix.rs14
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<Vec<String>>,
- pub exec_type: Option<String>,
+ pub fork: Option<bool>,
+ pub silent: Option<bool>,
}
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<String>)
Err(e) => eprintln!("{}", e),
}
},
- Err(e) => {
- eprintln!("{:?}", e);
- },
+ Err(e) => eprintln!("{}", e),
}
}