From e3ec07ca47926d2df333051ac38f412c7848ce7b Mon Sep 17 00:00:00 2001 From: Joey Pollack Date: Wed, 17 Apr 2024 18:03:18 -0400 Subject: [PATCH] Test interface with command runner --- assets/Music Note.png | Bin 131 -> 263352 bytes src/main.rs | 31 ++++++++++++++++--------------- src/player_interface.rs | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 15 deletions(-) create mode 100644 src/player_interface.rs diff --git a/assets/Music Note.png b/assets/Music Note.png index 318e8b6fc72d81c8b9ad600637ae817dabcde9dc..cd4b48137e913a1d07a93e15154d1551eefea68c 100644 GIT binary patch literal 263352 zcmeI*3vdN30O505=KrsQ9-r)n2HIP17kol2KX>eT1a7l%HZ zTk!a|$6wxU-l?aRu3NQZ$CgRk*1dYw`0VjRI)0N?b$jLLTj!qqO8E)rOsfBA^?m#Q zynpAve_r(T+q#RWG^E1a~abJmwz^Ixsqc-g?Y*KBH-cJ~JxUf=(6 zuPu9*9+-A(;q>`ggXZ43;FH;x)Q`A$?Tw!--2cFa=X&(sxNGC&c30PaHTTmO-k7@Z zq1+QMzToC5qo-}WZqkZ(U#rerId9R)S9B^pb?oB1&-nC(_0u0(IbrDw9}oQc#Nz3< z4EW1!6K35%xl{WdXAHfxb6&3vLm$2U;ZslPebJohUuEal%$s=rntlzN&YN?>m|>5c z{>@3h+P}TeWg}LXE$Y(v#iaL7-%wO}+Ascg^MM2JzL@uu_`$BLw@&zWc=z9a-DBaZ+{`ueMr$6%7>{#*I z2`^>k=FXgZ=Jm^_*T1}S?bL(Ye|lj5F;D)!dd<7NKmS5Erro6S(h_yh{8zX3kMs3s z+E)&{YMN4~buy2v%?0}g>rZCiT6Xy**}ISJ)TvLmy`#SUSgDvQD;YB8&MXy+H`VAp zSP(z}0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I`WT0&l!CcRT9Jj^x=0tkF3utRS)?tE`k<9DC(cFXes&=-A7 zmoQR4D)i%A{a`@=fz}1gjsFe$v0R5ionCvkcoqOH7k*sN{94au&xsL;zJLjXTJz9h zuqWN+rab^!p618(M5m^EvYZbA!2%`-Ds%`ePp3gz13+K=ef8wb1W!-rBsmuX2qXkn z=q(cjX?ZsAqr_=lZs?1@LZ6~RKe+fc0t*5j30$Gi+tBh7JNY4|v_I>^Htq#T%d>%& zAb2wQnXxAV2)Gn5FAs|Jvw}u9=W!hXT>NhMITis|0{REM>g(pEfvcAT`rD`d(!REMQ+#H;HO8#nnJg@)VAaX1M?gYB%>o9BIXUz?%oF?UG0Q#qY zTo1@iKB=g43~Up)L1j>AA7 zK2kq;CUCeTA0ZF~foofSSSLM~R0AOC0oV}%1Trd6IG#PA0>?2q55EpvcJ? z90fqjzXb5~--$5$B9K{uzD|a76af0fF()TyUjz`yxWHg1BRUNLN9p2ZBJ7I*0+|16dG2AR+=z10W)0Qw9PN7id3Y>HH+`1xQH5;!QOqLV|-01mp=20P=cH#Rwz> z2!I3y8wkh~AOPg`oQe@h2oL}X3N{dsCqMwm>p2x8kPsjM5)^D8AWwh*kk@l6j;KKF zgBp0tA4thEpyAb^!vwuE90}!UPBaVGXBT1ndF?fL()a1cV6? z0Kythxd_+=2mreV+Xx5~AOM6loN}Wl&~ILIXE*l(SR#ahCBYg2fdT}8z@}3&0+s*) zU`en>K%f8tAh79_jDRIT09X>N5fCUq00?Y4B_m)75CE10YXk%e5C8(3PRY>_=reKS zjC9-!U}+ErmIP}A1PTxU0-H|B2v`CHfF;2i0f7PpfWW3xG6I$W0boh6MnIqd0U)sH zl#GBSKmb@0tPv0>aIC zoA60<&wn>-Qf#xEH_n70lNSJVAo(90bv3JfUt&BE&_G|0>G}pHUh!~2moOXr`%8pJo(^PUweKp zfF(j0SQ4xe5GcSe3W;db_wD;KkiYiEOYZ#quFCw6JS@oz5CF+r1%6NSTWuEBJ*}Qu zwo2{Y`(@zg>(vC!|Ia_=+ACH6e&=~LL}bp(OMr;9a?RTH>e4H&Rtpy`5q*- zgmByZl6#ic1JkcFaZP-0>}OA^X!b@3y>H+7H_H{5fU71ARteG0Fc*nDn=k7Kma5t*g!y@00AJc z=TwY9LVy5BP_Ti3JOKhgUeBo*frJ17kf2}#0eJ!hfV`elai9d&#!t-i?_K~q1z}*< zU>gBp0tA4thEpyAb^!vwuE90}!UPBaVGXBT1ndF?fL()a1cV6?0Kythxd_+=2mreV z+Xx5~AOM6loN|LAF#PdLKMcmb0G0@0U`en>K%f8tAh79_jDRIT09X>N5fCUq00?Y4 zB_m)75CE10YXk%e5C8(3PRR&Z0tA31!5RU90tA4-rc<(?0&kSPae1)r1+X*-151K6 z0s;jH0D(=XWCSb$0>F}BjetM_0zhEXDH#DvfB>*0SR)`%fB+EKbV^3R5+DF93DyV* z6d(WuHl33F5O`q5`vt+g7a*Y#i#OGf2nh~05RfN80Lbe(6(f)kAOI2+Y#<;{fB=x! zb1Ft4AwU2mDA+(io&W(Lujf>ZKtg~3NKmkWfII;LKwi(OI8y>uYsz~D{9XV%1z}*< zU>gBp0tA4thEpyAb^!vwuE90}!UPBaVGXBT1ndF?fL()a1cV6?0Kythxd_+=2mreV z+Xx5~AOL)5cwuk-FU2g;66TC#~n?WC*wsAOPIxIXHGezw^~|ix;S~d+}1h0UNt|EO4yH=MTi`&C_mk z0d~*tstSAQ-{6+vC0~!5->plAM`bt!+7^g(0GJDZ=3P~)f4}qEmS7JA1PVkp0LG0j z*B5`K%E{>pZL&YN#mcUd12h|j1*;wS=<3xHuIgO5@wpOz?K z?!n+DtfO~6a_NAV2_w zph-*-0j~rI0Iy^@F9IPDAOJ$pB&HZVfh9w7o{Pf00Crizz^=hI0>T6c0AUTMTm5GFtX2x~ayx)Yec za_LJ^yBEL`Aq*@D)(8j`AOHk5osto-1PB02f;9pH1qc9vO{Zi8ECB+*l35^IJYqW`5Y!_3JV}sEZM!5Y8X%+~qP0Z*9`Y zwD!d#zm|JSev$s1c?5o0qc0GX*ca(PTA7{QF7WeBW`gFM@R!y1s1>W~li59x`$TnUx~j8# z^$g3@56#oOab|vUnm{ve`i1Rj|Ix5bFQ!zCSB1R_RAKL)DkrDI(RTIa^X8&&Zr*js z+`QKkCik81ZA$vOPI^bvg)jzyFW)^38X1AQ^=I@5^SuC0!a&91O*N5xQy?gq90pKw(r$->j0t7&i zyTjZN@K}HV@EDlWhfd(5S5DNolEze7$&fLjo4lI|69#VdI2M7B3lIPyZy?i0z>NR_ z;6{&Q5eT^e0TA*AGJOQx2oL~n^f(rQkP8q1A#WhlN5G8$0pLcDV-X0s009v41~UD$ z37oZ{@(hvp0$75CfhEBj0f7PpfWW3xG6I$W0boh6MnIqd0U)sHl#GBSKmb@0tPv0> zKmZ7AIwd1u2@n951ZxBY3J?GSn@-7x3G_YdRQ>nn1pZ!t!xZ!fgu#&_e2jn~0Rli! zvndsUBLxV6BSrWa0YL%;fS_hmDgs9e5CBJt@G$~{1PA~@&8AcYjuapOjuhcz1Oy2X z0D_uLsfP(%xn}h9+zVhQiN%|0NCdkG+Xx5~a2fy&!h9$ffk+ED4S+q7)}S~9!Y}Z) zlM);Sz|QwJH99#t`yzlq#szjb8PQPyw48XIlL6Ql0R%EC(BNdWR03eRlL6Ql0R%EC z;OP1!05aMe21CG8fw%R`^c_w{a2xT)s41vwB92hU=UVvJs=8nUlWdO$m zIh`2$BY=P-fe-Z$>N-b9=$%sv06kEHK9*+$PPN$|0q+Fjshm2c0B9MgQm?;AWl)Ym z0D-g$tV`vmznMYG0nqZkfC&K>1Q75~!2A%dNOkyQQa#Wdx9_v&#@ti#^`Bu>echag zV-Y|gWq~sN!?-ckqg@4n8B~YBazY?gevU)HmB4lS;$QCO46Xyf3{D8RX#vL~kdlD8 z`0G+S(soc<0>GTFB?PkcW|8@r1%coQ{C(of?IL+EfO-9IUIMs!7GU+sT)b&r@(TJF z=@ZuJ$LadPf&c>P6EOb_U!gDlJ?T1S+5^Cvm=1!t-mcV-ldR9NMgW171U}S9nG3%m zrK4Lp$g==2W9ks-s8=KP!vw*(`oV$#0?7-QpZK+2T=>=$JPiPA5VO`{5Yww7{pj2B zi0L&i6Ep$~0$Sj0{n(=)4f@e&*6Dnzug}MV00IagfB*srAbs z?*)i(&nOK61Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmdW(1O}e;rz@1o qx}dCN$e7ml<7;*S{XYpEJXrqNi>GzV+cn92q3n_oB}<1^{Q7?;UJ5k; literal 131 zcmWN?K@!3s3;@7;U%>|~CX@jE4FMv|sC0z(;OliSdzH^<{jKVp$Jn)gw0V2VSpV0P z*VJEn93|-smfo@&HKL_GkQge__ziueC Result<(), eframe::Error> @@ -22,8 +23,8 @@ fn main() -> Result<(), eframe::Error> struct JpmmvApp { - name: String, - age: u32, + command: String, + result: String, } impl Default for JpmmvApp @@ -31,8 +32,8 @@ impl Default for JpmmvApp fn default() -> Self { Self { - name: "Arthur".to_owned(), - age: 42, + command: "command".to_string(), + result: "N/A".to_string() } } } @@ -43,21 +44,21 @@ impl eframe::App for JpmmvApp { egui::CentralPanel::default().show(ctx, |ui| { - ui.heading("My egui Application"); - ui.horizontal(|ui| { - let name_label = ui.label("Your name: "); - ui.text_edit_singleline(&mut self.name) - .labelled_by(name_label.id); - }); - ui.add(egui::Slider::new(&mut self.age, 0..=120).text("age")); - if ui.button("Increment").clicked() { - self.age += 1; + ui.heading("Media Meta Viewer"); + ui.text_edit_singleline(&mut self.command); + + if ui.button("Run Command").clicked() + { + self.result = run_command(&format!("playerctl --player=strawberry {}", self.command)) } - ui.label(format!("Hello '{}', age {}", self.name, self.age)); + + ui.label(format!("Command result: {}", self.result)); ui.image(egui::include_image!( "../assets/Music Note.png" )); }); } -} \ No newline at end of file +} + + diff --git a/src/player_interface.rs b/src/player_interface.rs new file mode 100644 index 0000000..b3f8df3 --- /dev/null +++ b/src/player_interface.rs @@ -0,0 +1,37 @@ + +pub struct SongMetadata +{ + pub name: String, + pub artist: String, + pub album: String, +} +impl SongMetadata +{ + fn new() -> SongMetadata + { + SongMetadata { + name: "NONE".to_string(), + artist: "NONE".to_string(), + album: "NONE".to_string(), + } + } +} + + +pub fn get_song_metadata() -> SongMetadata +{ + const COM_START: String = "playerctl --player=strawberry "; + +} + + +fn run_command(command: &str) -> String +{ + let output = Command::new("sh") + .arg("-c") + .arg(command) + .output() + .expect("Failed to run the command"); + str::from_utf8(&output.stdout).expect("Failed to convert command result to utf8 string").to_string() + +} \ No newline at end of file