Commit Diff
Commit:
4d9326de341c1021e1d9c22f65cb09b5a2cdd586
From:
Omar Polo <omar.polo@europecom.net>
Date:
Sat Dec 1 15:43:21 2018 UTC
Message:
Added a couple of scripts
commit - 1f6422bc41370b210fced26dc753ca2ccae325a9
commit + 4d9326de341c1021e1d9c22f65cb09b5a2cdd586
blob - /dev/null
blob + c0d31f526f257f46a5722215b4497d708b486f34 (mode 644)
--- /dev/null
+++ scripts/mpd.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+fmt="%position% %artist - %title%"
+ps1="Song: "
+
+if song=$(mpc playlist -f "$fmt" | mymenu -A -p "$ps1" -d " "); then
+ mpc play $(echo $song | sed "s/ .*$//")
+fi
blob - /dev/null
blob + 3eeef074bca532de2a20f703172e0d9a33dafe40 (mode 755)
--- /dev/null
+++ scripts/mru.pl
@@ -0,0 +1,64 @@
+#!/usr/bin/env perl
+
+use v5.10;
+use warnings;
+use IPC::Open3;
+
+my $cachedir = $ENV{HOME}. "/.cache";
+my $cachefile = $cachedir."/mymenu";
+my %progs;
+
+$SIG{CHLD} = "IGNORE";
+
+if (! -d $cachedir) {
+ mkdir $cachedir or die "Cannot create cache dir ". $cachedir;
+}
+
+if (-e $cachefile) {
+ open my $f, "<", $cachefile;
+ while (<$f>) {
+ my ($c, $p) = split / /, $_;
+ chomp $p;
+ $progs{$p} = $c + 0;
+ }
+ close $f;
+}
+
+foreach my $p (split /:/, $ENV{PATH}) {
+ opendir my $d, $p or next;
+ foreach (readdir $d) {
+ if (-x "$p/$_" and ! (-d "$p/$_")) {
+ if (! exists $progs{$_}) {
+ $progs{$_} = 0;
+ }
+ }
+ }
+ closedir $d;
+}
+
+my $args = join ' ', @ARGV;
+my $pid = open3(my $c_in, my $c_out, my $c_err, "mymenu $args") or die("Failed open3(): $!");
+foreach (sort {$progs{$b} <=> $progs{$a} or lc($a) cmp lc($b)} keys %progs) {
+ print $c_in $_."\n";
+}
+close($c_in);
+
+while (my $p = <$c_out>) {
+ chomp $p;
+ $progs{$p} += 1;
+ say "gonna exec $p";
+
+ if (!fork()) {
+ # i'm the child
+ exec $p;
+ }
+}
+
+say "Updating cache...";
+open my $f, ">", $cachefile;
+foreach (keys %progs) {
+ print $f $progs{$_} ." ". $_ ."\n" if $progs{$_} != 0;
+}
+close($f);
+
+waitpid(-1, 0);
Omar Polo