1- use std:: process:: Command ;
1+ use std:: { process:: Command , thread } ;
22
33use arboard:: Clipboard ;
44use objc2_app_kit:: NSWorkspace ;
@@ -20,9 +20,12 @@ impl Function {
2020 pub fn execute ( & self , config : & Config , query : & str ) {
2121 match self {
2222 Function :: OpenApp ( path) => {
23- NSWorkspace :: new ( ) . openURL ( & NSURL :: fileURLWithPath (
24- & objc2_foundation:: NSString :: from_str ( path) ,
25- ) ) ;
23+ let path = path. to_owned ( ) ;
24+ thread:: spawn ( move || {
25+ NSWorkspace :: new ( ) . openURL ( & NSURL :: fileURLWithPath (
26+ & objc2_foundation:: NSString :: from_str ( & path) ,
27+ ) ) ;
28+ } ) ;
2629 }
2730 Function :: RunShellCommand => {
2831 Command :: new ( "sh" ) . arg ( "-c" ) . arg ( query) . status ( ) . ok ( ) ;
@@ -37,24 +40,27 @@ impl Function {
3740 Function :: GoogleSearch ( query_string) => {
3841 let query_args = query_string. replace ( " " , "+" ) ;
3942 let query = config. search_url . replace ( "%s" , & query_args) ;
40- let query = query. strip_suffix ( "?" ) . unwrap_or ( & query) ;
41- NSWorkspace :: new ( ) . openURL (
42- & NSURL :: URLWithString_relativeToURL (
43- & objc2_foundation:: NSString :: from_str ( query) ,
44- None ,
45- )
46- . unwrap ( ) ,
47- ) ;
43+ let query = query. strip_suffix ( "?" ) . unwrap_or ( & query) . to_string ( ) ;
44+ thread:: spawn ( move || {
45+ NSWorkspace :: new ( ) . openURL (
46+ & NSURL :: URLWithString_relativeToURL (
47+ & objc2_foundation:: NSString :: from_str ( & query) ,
48+ None ,
49+ )
50+ . unwrap ( ) ,
51+ ) ;
52+ } ) ;
4853 }
4954
5055 Function :: OpenPrefPane => {
51- Command :: new ( "open" )
52- . arg (
53- std:: env:: var ( "HOME" ) . unwrap_or ( "" . to_string ( ) )
54- + "/.config/rustcast/config.toml" ,
55- )
56- . spawn ( )
57- . ok ( ) ;
56+ thread:: spawn ( move || {
57+ NSWorkspace :: new ( ) . openURL ( & NSURL :: fileURLWithPath (
58+ & objc2_foundation:: NSString :: from_str (
59+ & ( std:: env:: var ( "HOME" ) . unwrap_or ( "" . to_string ( ) )
60+ + "/.config/rustcast/config.toml" ) ,
61+ ) ,
62+ ) ) ;
63+ } ) ;
5864 }
5965 Function :: Quit => std:: process:: exit ( 0 ) ,
6066 }
0 commit comments