Mercurial > hg > config
comparison python/dmenu.py @ 290:03d62a2cbe62
update demnu to almost a real program
| author | Jeff Hammel <jhammel@mozilla.com> |
|---|---|
| date | Fri, 10 May 2013 19:43:47 -0700 |
| parents | e1a861bbb559 |
| children | 8f92aa15406f |
comparison
equal
deleted
inserted
replaced
| 289:e1a861bbb559 | 290:03d62a2cbe62 |
|---|---|
| 3 import optparse | 3 import optparse |
| 4 import os | 4 import os |
| 5 import subprocess | 5 import subprocess |
| 6 import sys | 6 import sys |
| 7 | 7 |
| 8 def choose_file(directory, dmenu='dmenu'): | 8 def choose_file(directory, dmenu='dmenu', |
| 9 args=('-i', '-nb', 'black', '-nf', 'white')): | |
| 9 """choose a file in the directory with dmenu""" | 10 """choose a file in the directory with dmenu""" |
| 10 directory = os.path.abspath(directory) | 11 directory = os.path.abspath(directory) |
| 11 files = os.listdir(directory) | 12 files = os.listdir(directory) |
| 12 string = '\n'.join(files) | 13 string = '\n'.join(files) |
| 13 | 14 |
| 15 if isinstance(dmenu, basestring): | |
| 16 dmenu = [dmenu] | |
| 17 dmenu = list(dmenu) | |
| 18 dmenu.extend(args) | |
| 14 | 19 |
| 15 process = subprocess.Popen([dmenu, '-i'], stdin=subprocess.PIPE, stdout=subprocess.PIPE) | 20 process = subprocess.Popen(dmenu, stdin=subprocess.PIPE, stdout=subprocess.PIPE) |
| 16 stdout, _ = process.communicate(input=string) | 21 stdout, _ = process.communicate(input=string) |
| 17 if process.returncode: | 22 if process.returncode: |
| 18 return | 23 return |
| 19 chosen = os.path.join(directory, stdout) | 24 chosen = os.path.join(directory, stdout) |
| 20 if os.path.isdir(chosen): | 25 if os.path.isdir(chosen): |
| 21 return choose_file(chosen) | 26 return choose_file(chosen) |
| 22 return chosen | 27 return chosen |
| 23 | 28 |
| 24 def main(args=sys.argv[1:]): | 29 def main(args=sys.argv[1:]): |
| 25 parser = optparse.OptionParser() | 30 parser = optparse.OptionParser() |
| 26 print choose_file(os.getcwd()) | 31 parser.add_option('-d', '--directory', dest='directory', |
| 32 default=os.getcwd(), | |
| 33 help="call on this directory [Default: current directory]") | |
| 34 parser.add_option('-e', '--exec', dest='executable', | |
| 35 help="call this proram with the result") | |
| 36 options, args = parser.parse_args(args) | |
| 37 chosen = choose_file(options.directory) | |
| 38 if chosen: | |
| 39 if options.executable: | |
| 40 pass | |
| 41 print chosen | |
| 42 else: | |
| 43 sys.exit(1) | |
| 27 | 44 |
| 28 if __name__ == '__main__': | 45 if __name__ == '__main__': |
| 29 main() | 46 main() |
