I thought of the check for whether or not it exists when I was working on it, but I wasn't sure what all to check for. I only use it to run executable files so for my case it's easy, but I wasn't sure what all might get put in there. When I asked in the irc channel there was some mention of things other than files that would show up in the list, so I decided not to worry about the check and let the user prune bogus history items some other way. I think someone put together an example to do the pruning that was basically a one line bash script which could be run separately from dmenu itself.
On Mon, Mar 11, 2013 at 4:37 PM, Peter Hartman <[email protected]>wrote: > 2013/3/11 Chris Johnson <[email protected]>: > > I created a patch to have sorted (first by number of previous runs, then > by > > most recent) and unlimited history. It is similar to the patch from > Peter > > John Hartman, but modified in the following ways: > > Hi Chris, > > That's neat. I moved to using a shell script wrapper to dmenu to do > history --- I believe those scripts are on the website --- but it > won't do the neat trick of moving things to the top based on how often > they are used. I'd advocate something like this get moved into dmenu > tip. > > It'd also be nice (more generally, even without the history patch, but > especially with it) to have a check to verify that the file still > exists. For instance, I use the history feature on dmenu when I open > pdf files on my system, e.g. [1] where .dmenu_cache_pdfs is generated > via a cron script. But, of course, sometimes I will move or rename > pdf files around, and then the history file will be all dumb. It'd be > a one-line fix. > > [1] pdf-opener > > #!/bin/bash > HISTFILE=~/.dmenu_cache_pdfs.hist > CACHEFILE=~/.dmenu_cache_pdfs > exe=$(tac $HISTFILE $CACHEFILE | sed 's|^/home/peterjh/||'| dmenu -p > "*" -i -l 10) > > echo "$exe" > case "$exe" in > o*) opt="okular" > exe=$(echo "$exe" | sed 's/^o //') > ;; > *) opt="mailcap" > ;; > esac > > if [ ! -f "/home/peterjh/$exe" ] ; then > exit > fi > > if [ $? -eq 0 ]; then > exe="/home/peterjh/$exe" > sed -i "\|$exe|d" $HISTFILE > echo "$exe" >> $HISTFILE > case "$opt" in > okular) > okular "$exe" & > ;; > mailcap) > run-mailcap "$exe" & > ;; > esac > fi > > > > > -- > sic dicit magister P > Université du Québec à Montréal / Loyola University Chicago > http://individual.utoronto.ca/peterjh > gpg 1024D/ED6EF59B (7D1A 522F D08E 30F6 FA42 B269 B860 352B ED6E F59B) > gpg --keyserver pgp.mit.edu --recv-keys ED6EF59B > >
