commit 4d9326de341c1021e1d9c22f65cb09b5a2cdd586 from: Omar Polo date: Sat Dec 01 15:43:21 2018 UTC 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);