$TAKO_SETTINGS.show_traceback = True $TAKO_SETTINGS.traceback_logfile = $HOME + '/tmp/tako.log' import datetime import re import os import os.path def source_many(directory, predicate): for filename in os.listdir(directory): if not predicate(filename): continue source @(os.path.join(directory, filename)) is_tako = (lambda re: lambda filename: re.match('^.*\.tako$', filename))(re) source_many('/etc/profile.d', is_tako) source_many($HOME + '/.config/tako/completers', is_tako) $TAKO_SETTINGS.auto_pushd = True $XDG_CONFIG_HOME = $HOME + '/.config' $EDITOR = 'emacs' $VISUAL = $EDITOR for path in [ $HOME + '/bin', $HOME + '/.local/bin', ]: if path not in $PATH: $PATH.insert(0, path) $LS_COLORS = $(dircolors @($HOME + '/.config/zsh/dircolors.256dark'))[len("LS_COLORS='"):-len("';\nexport LS_COLORS")] def _sympy(args, stdin=None): source @($HOME + '/.config/tako/sympy.tako') def _reminder(args, stdin=None): time, text = args command = 'notify-send {} {}'.format(time, repr(text)) filename = $(mktemp) with open(filename, 'w') as f: f.write(command) at -M @(time) -f @(filename) all> /dev/null atq rm @(filename) def _screenshot(args, stdin=None): if not args: timestamp = datetime.datetime.now().isoformat() fname = '{}/images/screenshots/{}.png'.format($HOME, timestamp) args = [fname] print('Saving to {}'.format(fname)) /usr/bin/import @(args) $TAKO_SETTINGS.aliases.update({ 'startx': 'ssh-agent startx ; vlock', 'ls': 'ls --color=auto', 'la': 'ls -A', 'll': 'ls -l', 'units': 'units --verbose', 'trr': 'transmission-remote', 'vol': 'pulseaudio-ctl set', 'octave': 'octave-cli', 'bc': 'bc -l', 'sympy': _sympy, 'reminder': _reminder, 'enscript': 'enscript -M Letter', 'screenshot': _screenshot, 'g': 'git', }) if 'TERM' in ${...}: if '256color' in $TERM: colors = { 'blue': 81, 'orange': 166, 'purple': 135, 'red': 196, 'green': 118, 'gray': 241, } def colorize(color, text): prefix = '{COLOR_' + str(colors[color]) + '}' suffix = '{NO_COLOR}' return prefix + text + suffix else: colors = { 'blue': 'BLUE', 'orange': 'YELLOW', 'purple': 'PURPLE', 'red': 'RED', 'green': 'GREEN', 'gray': 'WHITE', } def colorize(color, text): prefix = '{%s}' % colors[color] suffix = '{NO_COLOR}' return prefix + text + suffix def git_branch(): import re ref=$(git symbolic-ref HEAD err> /dev/null) if not ref: return None prefix = colorize('gray', ':') branch = colorize('orange', re.sub('^refs/heads/', '', ref.strip())) return prefix + branch $TAKO_SETTINGS.prompt_fields['git_branch'] = git_branch def make_prompt(): username = colorize('purple', '{user}') host = colorize('blue', '{hostname}') directory = colorize('green', '{cwd}') lbrkt = colorize('gray', '[') rbrkt = colorize('gray', ']') colon = colorize('gray', ':') return lbrkt + colon.join([ username, host, directory, ]) + '{git_branch}' + rbrkt + '\n{prompt_end} ' $TAKO_SETTINGS.prompt = make_prompt() $TAKO_SETTINGS.case_sensitive_completions = False completer bash enable out> /dev/null if not ?(which bload).returncode: bload