Merge branch 'master' of git.epichack.com:barak/dotfiles
This commit is contained in:
commit
750300d11d
24 changed files with 1140 additions and 39 deletions
|
|
@ -10,30 +10,30 @@
|
||||||
#alias dir='ls --color=auto --format=vertical'
|
#alias dir='ls --color=auto --format=vertical'
|
||||||
#alias vdir='ls --color=auto --format=long'
|
#alias vdir='ls --color=auto --format=long'
|
||||||
|
|
||||||
case `uname` in
|
#case `uname` in
|
||||||
Linux)
|
#Linux)
|
||||||
if [ "$TERM" != "dumb" ]; then
|
#if [ "$TERM" != "dumb" ]; then
|
||||||
eval "`dircolors -b`"
|
#eval "`dircolors -b`"
|
||||||
fi
|
#fi
|
||||||
alias ls='ls -F --color=auto'
|
#alias ls='ls -F --color=auto'
|
||||||
alias open='xdg-open'
|
#alias open='xdg-open'
|
||||||
;;
|
#;;
|
||||||
Darwin)
|
#Darwin)
|
||||||
alias ls='ls -FG'
|
#alias ls='ls -FG'
|
||||||
;;
|
#;;
|
||||||
FreeBSD)
|
#FreeBSD)
|
||||||
alias ls='ls -FG'
|
#alias ls='ls -FG'
|
||||||
;;
|
#;;
|
||||||
SunOS)
|
#SunOS)
|
||||||
alias ls='ls -F'
|
#alias ls='ls -F'
|
||||||
;;
|
#;;
|
||||||
*)
|
#*)
|
||||||
if [ "$TERM" != "dumb" ]; then
|
#if [ "$TERM" != "dumb" ]; then
|
||||||
eval "`dircolors -b`"
|
#eval "`dircolors -b`"
|
||||||
fi
|
#fi
|
||||||
alias ls='ls --color=auto'
|
#alias ls='ls --color=auto'
|
||||||
;;
|
#;;
|
||||||
esac
|
#esac
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -45,6 +45,7 @@ alias la='ls -alF'
|
||||||
#alias l='ls -CF'
|
#alias l='ls -CF'
|
||||||
|
|
||||||
alias :e='vim'
|
alias :e='vim'
|
||||||
|
alias t='task'
|
||||||
alias vi='vim'
|
alias vi='vim'
|
||||||
alias em='emacs'
|
alias em='emacs'
|
||||||
alias grep="grep --color=auto"
|
alias grep="grep --color=auto"
|
||||||
|
|
@ -52,7 +53,7 @@ alias grep="grep --color=auto"
|
||||||
alias dvtm="dvtm -m \"^w\""
|
alias dvtm="dvtm -m \"^w\""
|
||||||
alias tm="tmux -2 attach"
|
alias tm="tmux -2 attach"
|
||||||
alias ppjson="python -mjson.tool"
|
alias ppjson="python -mjson.tool"
|
||||||
alias tmux-pwn='tmux list-clients | sed "s|^\(/dev/ttys[0-9]\+\).*\[\([0-9]\+x[0-9]\+\).*$|\2 \1|" | sort -r -n | tail -n +2 | cut -d " " -f 2 | xargs -n 1 tmux detach-client -t'
|
#alias tmux-pwn='tmux list-clients | sed "s|^\(/dev/ttys[0-9]\+\).*\[\([0-9]\+x[0-9]\+\).*$|\2 \1|" | sort -r -n | tail -n +2 | cut -d " " -f 2 | xargs -n 1 tmux detach-client -t'
|
||||||
|
|
||||||
#Cosmetic/useful
|
#Cosmetic/useful
|
||||||
#alias naim="naim --noscreen"
|
#alias naim="naim --noscreen"
|
||||||
|
|
|
||||||
7
.bashrc
7
.bashrc
|
|
@ -99,6 +99,13 @@ if [ -f ~/.bash_aliases ]; then
|
||||||
. ~/.bash_aliases
|
. ~/.bash_aliases
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
fasd_cache="$HOME/.fasd-init-bash"
|
||||||
|
if [ "$(command -v fasd)" -nt "$fasd_cache" -o ! -s "$fasd_cache" ]; then
|
||||||
|
fasd --init posix-alias bash-hook bash-ccomp bash-ccomp-install >| "$fasd_cache"
|
||||||
|
fi
|
||||||
|
source "$fasd_cache"
|
||||||
|
unset fasd_cache
|
||||||
|
|
||||||
# enable color support of ls and also add handy aliases
|
# enable color support of ls and also add handy aliases
|
||||||
#if [ "$TERM" != "dumb" ]; then
|
#if [ "$TERM" != "dumb" ]; then
|
||||||
# eval "`dircolors -b`"
|
# eval "`dircolors -b`"
|
||||||
|
|
|
||||||
|
|
@ -156,7 +156,6 @@ function (widget, args)
|
||||||
return args[2]
|
return args[2]
|
||||||
end , 120, "BAT0")
|
end , 120, "BAT0")
|
||||||
|
|
||||||
|
|
||||||
-- Register CPU widget
|
-- Register CPU widget
|
||||||
vicious.register(cpuwidget, vicious.widgets.cpu,
|
vicious.register(cpuwidget, vicious.widgets.cpu,
|
||||||
function (widget, args)
|
function (widget, args)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
set PATH ~/bin /bin /sbin /usr/local/bin /usr/local/sbin /usr/bin /usr/sbin ~/.cabal/bin /usr/lib/go/bin ~/.gem/ruby/1.9.1/bin $PATH
|
set PATH ~/bin /bin /sbin /usr/local/bin /usr/local/sbin /usr/bin /usr/sbin ~/.cabal/bin /usr/lib/go/bin ~/.gem/ruby/1.9.1/bin $PATH
|
||||||
|
|
||||||
set fish_greeting ""
|
set fish_greeting ""
|
||||||
|
|
||||||
. ~/.bash_aliases
|
. ~/.bash_aliases
|
||||||
|
|
|
||||||
9
.gitmodules
vendored
9
.gitmodules
vendored
|
|
@ -10,9 +10,6 @@
|
||||||
[submodule ".vim/bundle/NrrwRgn"]
|
[submodule ".vim/bundle/NrrwRgn"]
|
||||||
path = .vim/bundle/NrrwRgn
|
path = .vim/bundle/NrrwRgn
|
||||||
url = git://github.com/chrisbra/NrrwRgn.git
|
url = git://github.com/chrisbra/NrrwRgn.git
|
||||||
[submodule ".vim/bundle/sparkup"]
|
|
||||||
path = .vim/bundle/sparkup
|
|
||||||
url = git://github.com/rstacruz/sparkup.git
|
|
||||||
[submodule ".vim/bundle/ack.vim"]
|
[submodule ".vim/bundle/ack.vim"]
|
||||||
path = .vim/bundle/ack.vim
|
path = .vim/bundle/ack.vim
|
||||||
url = git://github.com/mileszs/ack.vim.git
|
url = git://github.com/mileszs/ack.vim.git
|
||||||
|
|
@ -64,3 +61,9 @@
|
||||||
[submodule ".vim/bundle/vim-angry"]
|
[submodule ".vim/bundle/vim-angry"]
|
||||||
path = .vim/bundle/vim-angry
|
path = .vim/bundle/vim-angry
|
||||||
url = https://github.com/b4winckler/vim-angry.git
|
url = https://github.com/b4winckler/vim-angry.git
|
||||||
|
[submodule ".vim/bundle/YouCompleteMe"]
|
||||||
|
path = .vim/bundle/YouCompleteMe
|
||||||
|
url = https://github.com/Valloric/YouCompleteMe.git
|
||||||
|
[submodule ".vim/bundle/vim-sparkup"]
|
||||||
|
path = .vim/bundle/vim-sparkup
|
||||||
|
url = git://github.com/tristen/vim-sparkup.git
|
||||||
|
|
|
||||||
29
.taskrc
Normal file
29
.taskrc
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
# [Created by task 2.2.0 5/9/2013 17:01:23]
|
||||||
|
# Taskwarrior program configuration file.
|
||||||
|
# For more documentation, see http://taskwarrior.org or try 'man task', 'man task-faq',
|
||||||
|
# 'man task-tutorial', 'man task-color', 'man task-sync' or 'man taskrc'
|
||||||
|
|
||||||
|
# Here is an example of entries that use the default, override and blank values
|
||||||
|
# variable=foo -- By specifying a value, this overrides the default
|
||||||
|
# variable= -- By specifying no value, this means no default
|
||||||
|
# #variable=foo -- By commenting out the line, or deleting it, this uses the default
|
||||||
|
|
||||||
|
# Use the command 'task show' to see all defaults and overrides
|
||||||
|
|
||||||
|
# Files
|
||||||
|
data.location=~/.task
|
||||||
|
pull.default.uri=barak@miranda.barakmich.com:/fs/home/barak/.task
|
||||||
|
push.default.uri=barak@miranda.barakmich.com:/fs/home/barak/.task
|
||||||
|
|
||||||
|
# Color theme (uncomment one to use)
|
||||||
|
#include /usr/share/doc/task/rc/light-16.theme
|
||||||
|
#include /usr/share/doc/task/rc/light-256.theme
|
||||||
|
#include /usr/share/doc/task/rc/dark-16.theme
|
||||||
|
#include /usr/share/doc/task/rc/dark-256.theme
|
||||||
|
#include /usr/share/doc/task/rc/dark-red-256.theme
|
||||||
|
#include /usr/share/doc/task/rc/dark-green-256.theme
|
||||||
|
#include /usr/share/doc/task/rc/dark-blue-256.theme
|
||||||
|
#include /usr/share/doc/task/rc/dark-violets-256.theme
|
||||||
|
#include /usr/share/doc/task/rc/dark-yellow-green.theme
|
||||||
|
#include /usr/share/doc/task/rc/dark-gray-256.theme
|
||||||
|
|
||||||
1
.vim/bundle/YouCompleteMe
Submodule
1
.vim/bundle/YouCompleteMe
Submodule
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 0c19ee4fa78f69b4591fe107c104b07174cd661c
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 34883e28bbc021eae07d85f259150c4d5797457e
|
Subproject commit 195fbd1d31d0bab944b0b92fb7ffa83fb50c4524
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit eaf19734e73dbaa5b30f10591079043b0eba0aab
|
Subproject commit 448ad6f1bce0308329ccb020b51710227108b578
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 5041a10515c98f69dd510b0486983eee1fa1697e
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 6f214cbb6d42256031aaa9670cf9ea7358e18431
|
Subproject commit 7f0412e91dd6e2b48cbe8ae54bddcfeca0c127c1
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 4c7e649efba289df0e7e8bb9abfa37f95b28f8ed
|
Subproject commit 54ead5abcbfdd776e1160b5510a129884c39f29c
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 935184bd1806e37c1e3319c7f7f3ae94ef5a5313
|
Subproject commit ff031d022f2123353bc93a3aa97290287c10a287
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 00219a9f6f55394664abaeaad89de05fd5eaa7bc
|
Subproject commit 679469ed357e141b8b028e1a0c0a12752704fd7a
|
||||||
1
.vim/bundle/vim-sparkup
Submodule
1
.vim/bundle/vim-sparkup
Submodule
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit b5e9269136ae8dc7d6fbd5ed8777cbcd8cc22fbf
|
||||||
10
.vimrc
10
.vimrc
|
|
@ -162,7 +162,12 @@ let g:ConqueTerm_CWInsert = 1
|
||||||
let g:ConqueTerm_InsertOnEnter = 0
|
let g:ConqueTerm_InsertOnEnter = 0
|
||||||
let g:ConqueTerm_SendVisKey = '<Leader>ss'
|
let g:ConqueTerm_SendVisKey = '<Leader>ss'
|
||||||
|
|
||||||
" * MiniBufExplorer
|
" * YouCompleteMe
|
||||||
|
let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'
|
||||||
|
let g:ycm_confirm_extra_conf = 0
|
||||||
|
"let g:ycm_add_preview_to_completeopt = 1
|
||||||
|
|
||||||
|
" * MinBufExplorer
|
||||||
"let g:miniBufExplMapWindowNavVim = 1
|
"let g:miniBufExplMapWindowNavVim = 1
|
||||||
"let g:miniBufExplMapWindowNavArrows = 1
|
"let g:miniBufExplMapWindowNavArrows = 1
|
||||||
"let g:miniBufExplMapCTabSwitchBufs = 1
|
"let g:miniBufExplMapCTabSwitchBufs = 1
|
||||||
|
|
@ -180,7 +185,8 @@ let g:CommandTMaxDepth = 7
|
||||||
" let g:org_todo_setup='TODO | DONE'
|
" let g:org_todo_setup='TODO | DONE'
|
||||||
" while g:org_tag_setup is itself a string
|
" while g:org_tag_setup is itself a string
|
||||||
"let g:org_tag_setup='{@home(h) @work(w) @tennisclub(t)} \n {easy(e) hard(d)} \n {computer(c) phone(p)}'
|
"let g:org_tag_setup='{@home(h) @work(w) @tennisclub(t)} \n {easy(e) hard(d)} \n {computer(c) phone(p)}'
|
||||||
|
au! BufRead,BufWrite,BufWritePost,BufNewFile *.org
|
||||||
|
au BufEnter *.org call org#SetOrgFileType()
|
||||||
|
|
||||||
|
|
||||||
" ** STATUSLINE **
|
" ** STATUSLINE **
|
||||||
|
|
|
||||||
120
.ycm_extra_conf.py
Normal file
120
.ycm_extra_conf.py
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
import os
|
||||||
|
import ycm_core
|
||||||
|
from clang_helpers import PrepareClangFlags
|
||||||
|
|
||||||
|
# These are the compilation flags that will be used in case there's no
|
||||||
|
# compilation database set (by default, one is not set).
|
||||||
|
# CHANGE THIS LIST OF FLAGS. YES, THIS IS THE DROID YOU HAVE BEEN LOOKING FOR.
|
||||||
|
flags = [
|
||||||
|
'-Wall',
|
||||||
|
'-Wextra',
|
||||||
|
'-Werror',
|
||||||
|
'-Wc++98-compat',
|
||||||
|
'-Wno-long-long',
|
||||||
|
'-Wno-variadic-macros',
|
||||||
|
'-fexceptions',
|
||||||
|
'-DNDEBUG',
|
||||||
|
'-DUSE_CLANG_COMPLETER',
|
||||||
|
# THIS IS IMPORTANT! Without a "-std=<something>" flag, clang won't know which
|
||||||
|
# language to use when compiling headers. So it will guess. Badly. So C++
|
||||||
|
# headers will be compiled as C headers. You don't want that so ALWAYS specify
|
||||||
|
# a "-std=<something>".
|
||||||
|
# For a C project, you would set this to something like 'c99' instead of
|
||||||
|
# 'c++11'.
|
||||||
|
'-std=c++11',
|
||||||
|
# ...and the same thing goes for the magic -x option which specifies the
|
||||||
|
# language that the files to be compiled are written in. This is mostly
|
||||||
|
# relevant for c++ headers.
|
||||||
|
# For a C project, you would set this to 'c' instead of 'c++'.
|
||||||
|
'-x',
|
||||||
|
'c++',
|
||||||
|
'-isystem',
|
||||||
|
'../BoostParts',
|
||||||
|
'-isystem',
|
||||||
|
# This path will only work on OS X, but extra paths that don't exist are not
|
||||||
|
# harmful
|
||||||
|
'/System/Library/Frameworks/Python.framework/Headers',
|
||||||
|
'-isystem',
|
||||||
|
'../llvm/include',
|
||||||
|
'-isystem',
|
||||||
|
'../llvm/tools/clang/include',
|
||||||
|
'-I',
|
||||||
|
'.',
|
||||||
|
'-I',
|
||||||
|
'./ClangCompleter',
|
||||||
|
'-isystem',
|
||||||
|
'./tests/gmock/gtest',
|
||||||
|
'-isystem',
|
||||||
|
'./tests/gmock/gtest/include',
|
||||||
|
'-isystem',
|
||||||
|
'./tests/gmock',
|
||||||
|
'-isystem',
|
||||||
|
'./tests/gmock/include'
|
||||||
|
]
|
||||||
|
|
||||||
|
# Set this to the absolute path to the folder (NOT the file!) containing the
|
||||||
|
# compile_commands.json file to use that instead of 'flags'. See here for
|
||||||
|
# more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html
|
||||||
|
#
|
||||||
|
# Most projects will NOT need to set this to anything; you can just change the
|
||||||
|
# 'flags' list of compilation flags. Notice that YCM itself uses that approach.
|
||||||
|
compilation_database_folder = ''
|
||||||
|
|
||||||
|
if compilation_database_folder:
|
||||||
|
database = ycm_core.CompilationDatabase( compilation_database_folder )
|
||||||
|
else:
|
||||||
|
database = None
|
||||||
|
|
||||||
|
|
||||||
|
def DirectoryOfThisScript():
|
||||||
|
return os.path.dirname( os.path.abspath( __file__ ) )
|
||||||
|
|
||||||
|
|
||||||
|
def MakeRelativePathsInFlagsAbsolute( flags, working_directory ):
|
||||||
|
if not working_directory:
|
||||||
|
return flags
|
||||||
|
new_flags = []
|
||||||
|
make_next_absolute = False
|
||||||
|
path_flags = [ '-isystem', '-I', '-iquote', '--sysroot=' ]
|
||||||
|
for flag in flags:
|
||||||
|
new_flag = flag
|
||||||
|
|
||||||
|
if make_next_absolute:
|
||||||
|
make_next_absolute = False
|
||||||
|
if not flag.startswith( '/' ):
|
||||||
|
new_flag = os.path.join( working_directory, flag )
|
||||||
|
|
||||||
|
for path_flag in path_flags:
|
||||||
|
if flag == path_flag:
|
||||||
|
make_next_absolute = True
|
||||||
|
break
|
||||||
|
|
||||||
|
if flag.startswith( path_flag ):
|
||||||
|
path = flag[ len( path_flag ): ]
|
||||||
|
new_flag = path_flag + os.path.join( working_directory, path )
|
||||||
|
break
|
||||||
|
|
||||||
|
if new_flag:
|
||||||
|
new_flags.append( new_flag )
|
||||||
|
return new_flags
|
||||||
|
|
||||||
|
|
||||||
|
def FlagsForFile( filename ):
|
||||||
|
if database:
|
||||||
|
# Bear in mind that compilation_info.compiler_flags_ does NOT return a
|
||||||
|
# python list, but a "list-like" StringVec object
|
||||||
|
compilation_info = database.GetCompilationInfoForFile( filename )
|
||||||
|
final_flags = PrepareClangFlags(
|
||||||
|
MakeRelativePathsInFlagsAbsolute(
|
||||||
|
compilation_info.compiler_flags_,
|
||||||
|
compilation_info.compiler_working_dir_ ),
|
||||||
|
filename )
|
||||||
|
|
||||||
|
else:
|
||||||
|
relative_to = DirectoryOfThisScript()
|
||||||
|
final_flags = MakeRelativePathsInFlagsAbsolute( flags, relative_to )
|
||||||
|
|
||||||
|
return {
|
||||||
|
'flags': final_flags,
|
||||||
|
'do_cache': True
|
||||||
|
}
|
||||||
4
.zshenv
4
.zshenv
|
|
@ -10,8 +10,10 @@ bindkey '\e[6~' end-of-history # Page down key
|
||||||
bindkey '\e[2~' redisplay # Insert key
|
bindkey '\e[2~' redisplay # Insert key
|
||||||
bindkey '\e[5~' insert-last-word # Page up key
|
bindkey '\e[5~' insert-last-word # Page up key
|
||||||
|
|
||||||
|
export GOPATH="$HOME/.go/"
|
||||||
|
|
||||||
# remove /usr/games and /usr/X11R6/bin if you want
|
# remove /usr/games and /usr/X11R6/bin if you want
|
||||||
PATH=$HOME/bin:/bin:/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/usr/games:/usr/X11R6/bin:/$HOME/.gem/ruby/1.9.1/bin:$HOME/.cabal/bin:/usr/lib/go/bin:$PATH; export PATH
|
PATH=$HOME/bin:/bin:/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/usr/games:/usr/X11R6/bin:/$HOME/.gem/ruby/1.9.1/bin:$HOME/.cabal/bin:$HOME/.go/bin:/usr/lib/go/bin:$PATH; export PATH
|
||||||
#PATH=$HOME/bin:/bin:/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/usr/games:/usr/X11R6/bin:/$HOME/.gem/ruby/1.9/bin; export PATH
|
#PATH=$HOME/bin:/bin:/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/usr/games:/usr/X11R6/bin:/$HOME/.gem/ruby/1.9/bin; export PATH
|
||||||
case `uname` in
|
case `uname` in
|
||||||
SunOS)
|
SunOS)
|
||||||
|
|
|
||||||
9
.zshrc
9
.zshrc
|
|
@ -82,6 +82,15 @@ source ~/.zprofile
|
||||||
if [ -f ~/.bash_aliases ]; then
|
if [ -f ~/.bash_aliases ]; then
|
||||||
source ~/.bash_aliases
|
source ~/.bash_aliases
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
fasd_cache="$HOME/.fasd-init-zsh"
|
||||||
|
if [ "$(command -v fasd)" -nt "$fasd_cache" -o ! -s "$fasd_cache" ]; then
|
||||||
|
fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install zsh-wcomp zsh-wcompinstall >| "$fasd_cache"
|
||||||
|
fi
|
||||||
|
source "$fasd_cache"
|
||||||
|
unset fasd_cache
|
||||||
|
|
||||||
|
|
||||||
source ~/.zshenv
|
source ~/.zshenv
|
||||||
|
|
||||||
##############################################################
|
##############################################################
|
||||||
|
|
|
||||||
108
bin/long-running.bash
Normal file
108
bin/long-running.bash
Normal file
|
|
@ -0,0 +1,108 @@
|
||||||
|
# Copyright (c) 2008-2012 undistract-me developers. See LICENSE for details.
|
||||||
|
#
|
||||||
|
# Source this, and then run notify_when_long_running_commands_finish_install
|
||||||
|
#
|
||||||
|
# Relies on http://www.twistedmatrix.com/users/glyph/preexec.bash.txt
|
||||||
|
|
||||||
|
# Generate a notification for any command that takes longer than this amount
|
||||||
|
# of seconds to return to the shell. e.g. if LONG_RUNNING_COMMAND_TIMEOUT=10,
|
||||||
|
# then 'sleep 11' will always generate a notification.
|
||||||
|
|
||||||
|
# Default timeout is 10 seconds.
|
||||||
|
if [ -z "$LONG_RUNNING_COMMAND_TIMEOUT" ]; then
|
||||||
|
LONG_RUNNING_COMMAND_TIMEOUT=10
|
||||||
|
fi
|
||||||
|
|
||||||
|
# The pre-exec hook functionality is in a separate branch.
|
||||||
|
if [ -z "$LONG_RUNNING_PREEXEC_LOCATION" ]; then
|
||||||
|
LONG_RUNNING_PREEXEC_LOCATION=$HOME/bin/preexec.bash
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "$LONG_RUNNING_PREEXEC_LOCATION" ]; then
|
||||||
|
. $LONG_RUNNING_PREEXEC_LOCATION
|
||||||
|
else
|
||||||
|
echo "Could not find preexec.bash"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
function notify_when_long_running_commands_finish_install() {
|
||||||
|
|
||||||
|
function active_window_id () {
|
||||||
|
if [[ -n $DISPLAY ]] ; then
|
||||||
|
set - $(xprop -root _NET_ACTIVE_WINDOW)
|
||||||
|
echo $5
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
echo nowindowid
|
||||||
|
}
|
||||||
|
|
||||||
|
function sec_to_human () {
|
||||||
|
local H=''
|
||||||
|
local M=''
|
||||||
|
local S=''
|
||||||
|
|
||||||
|
local h=$(($1 / 3600))
|
||||||
|
[ $h -gt 0 ] && H="${h} hour" && [ $h -gt 1 ] && H="${H}s"
|
||||||
|
|
||||||
|
local m=$((($1 / 60) % 60))
|
||||||
|
[ $m -gt 0 ] && M=" ${m} min" && [ $m -gt 1 ] && M="${M}s"
|
||||||
|
|
||||||
|
local s=$(($1 % 60))
|
||||||
|
[ $s -gt 0 ] && S=" ${s} sec" && [ $s -gt 1 ] && S="${S}s"
|
||||||
|
|
||||||
|
echo $H$M$S
|
||||||
|
}
|
||||||
|
|
||||||
|
function precmd () {
|
||||||
|
|
||||||
|
if [[ -n "$__udm_last_command_started" ]]; then
|
||||||
|
local now current_window
|
||||||
|
|
||||||
|
printf -v now "%(%s)T" -1
|
||||||
|
current_window=$(active_window_id)
|
||||||
|
if [[ $current_window != $__udm_last_window ]] ||
|
||||||
|
[[ $current_window == "nowindowid" ]] ; then
|
||||||
|
local time_taken=$(( $now - $__udm_last_command_started ))
|
||||||
|
local time_taken_human=$(sec_to_human $time_taken)
|
||||||
|
local appname=$(basename "${__udm_last_command%% *}")
|
||||||
|
if [[ $time_taken -gt $LONG_RUNNING_COMMAND_TIMEOUT ]] &&
|
||||||
|
[[ -n $DISPLAY ]] &&
|
||||||
|
[[ ! " $LONG_RUNNING_IGNORE_LIST " == *" $appname "* ]] ; then
|
||||||
|
local icon=dialog-information
|
||||||
|
local urgency=low
|
||||||
|
if [[ $__preexec_exit_status != 0 ]]; then
|
||||||
|
icon=dialog-error
|
||||||
|
urgency=normal
|
||||||
|
fi
|
||||||
|
notify=$(command -v notify-send)
|
||||||
|
if [ -x "$notify" ]; then
|
||||||
|
$notify \
|
||||||
|
-i $icon \
|
||||||
|
-u $urgency \
|
||||||
|
"Long command completed" \
|
||||||
|
"\"$__udm_last_command\" took $time_taken_human"
|
||||||
|
else
|
||||||
|
echo -ne "\a"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [[ -n $LONG_RUNNING_COMMAND_CUSTOM_TIMEOUT ]] &&
|
||||||
|
[[ -n $LONG_RUNNING_COMMAND_CUSTOM ]] &&
|
||||||
|
[[ $time_taken -gt $LONG_RUNNING_COMMAND_CUSTOM_TIMEOUT ]] ; then
|
||||||
|
# put in brackets to make it quiet
|
||||||
|
export __preexec_exit_status
|
||||||
|
( $LONG_RUNNING_COMMAND_CUSTOM \
|
||||||
|
"\"$__udm_last_command\" took $time_taken_human" & )
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function preexec () {
|
||||||
|
# use __udm to avoid global name conflicts
|
||||||
|
__udm_last_command_started=$(printf "%(%s)T\n" -1)
|
||||||
|
__udm_last_command=$(echo "$1")
|
||||||
|
__udm_last_window=$(active_window_id)
|
||||||
|
}
|
||||||
|
|
||||||
|
preexec_install
|
||||||
|
}
|
||||||
180
bin/preexec.bash
Normal file
180
bin/preexec.bash
Normal file
|
|
@ -0,0 +1,180 @@
|
||||||
|
# Copyright (c) 2008-2012 undistract-me developers. See LICENSE for details.
|
||||||
|
#
|
||||||
|
# preexec.bash -- Bash support for ZSH-like 'preexec' and 'precmd' functions.
|
||||||
|
|
||||||
|
# The 'preexec' function is executed before each interactive command is
|
||||||
|
# executed, with the interactive command as its argument. The 'precmd'
|
||||||
|
# function is executed before each prompt is displayed.
|
||||||
|
|
||||||
|
# To use, in order:
|
||||||
|
|
||||||
|
# 1. source this file
|
||||||
|
# 2. define 'preexec' and/or 'precmd' functions (AFTER sourcing this file),
|
||||||
|
# 3. as near as possible to the end of your shell setup, run 'preexec_install'
|
||||||
|
# to kick everything off.
|
||||||
|
|
||||||
|
# Note: this module requires 2 bash features which you must not otherwise be
|
||||||
|
# using: the "DEBUG" trap, and the "PROMPT_COMMAND" variable. preexec_install
|
||||||
|
# will override these and if you override one or the other this _will_ break.
|
||||||
|
|
||||||
|
# This is known to support bash3, as well as *mostly* support bash2.05b. It
|
||||||
|
# has been tested with the default shells on MacOS X 10.4 "Tiger", Ubuntu 5.10
|
||||||
|
# "Breezy Badger", Ubuntu 6.06 "Dapper Drake", and Ubuntu 6.10 "Edgy Eft".
|
||||||
|
|
||||||
|
|
||||||
|
# Copy screen-run variables from the remote host, if they're available.
|
||||||
|
|
||||||
|
if [[ "$SCREEN_RUN_HOST" == "" ]]
|
||||||
|
then
|
||||||
|
SCREEN_RUN_HOST="$LC_SCREEN_RUN_HOST"
|
||||||
|
SCREEN_RUN_USER="$LC_SCREEN_RUN_USER"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Default do-nothing implementation of preexec.
|
||||||
|
function preexec () {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
# Default do-nothing implementation of precmd.
|
||||||
|
function precmd () {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
# This function is installed as the PROMPT_COMMAND; it is invoked before each
|
||||||
|
# interactive prompt display. It sets a variable to indicate that the prompt
|
||||||
|
# was just displayed, to allow the DEBUG trap, below, to know that the next
|
||||||
|
# command is likely interactive.
|
||||||
|
function preexec_invoke_cmd () {
|
||||||
|
precmd
|
||||||
|
trap 'preexec_invoke_exec' DEBUG
|
||||||
|
}
|
||||||
|
|
||||||
|
# This function is installed as the DEBUG trap. It is invoked before each
|
||||||
|
# interactive prompt display. Its purpose is to inspect the current
|
||||||
|
# environment to attempt to detect if the current command is being invoked
|
||||||
|
# interactively, and invoke 'preexec' if so.
|
||||||
|
function preexec_invoke_exec () {
|
||||||
|
if [[ -n "$COMP_LINE" ]]
|
||||||
|
then
|
||||||
|
# We're in the middle of a completer. This obviously can't be
|
||||||
|
# an interactively issued command.
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
trap '' DEBUG
|
||||||
|
|
||||||
|
if [[ "preexec_invoke_cmd" == "$BASH_COMMAND" ]]
|
||||||
|
then
|
||||||
|
# Sadly, there's no cleaner way to detect two prompts being displayed
|
||||||
|
# one after another. This makes it important that PROMPT_COMMAND
|
||||||
|
# remain set _exactly_ as below in preexec_install. Let's switch back
|
||||||
|
# out of interactive mode and not trace any of the commands run in
|
||||||
|
# precmd.
|
||||||
|
|
||||||
|
# Given their buggy interaction between BASH_COMMAND and debug traps,
|
||||||
|
# versions of bash prior to 3.1 can't detect this at all.
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# In more recent versions of bash, this could be set via the "BASH_COMMAND"
|
||||||
|
# variable, but using history here is better in some ways: for example, "ps
|
||||||
|
# auxf | less" will show up with both sides of the pipe if we use history,
|
||||||
|
# but only as "ps auxf" if not.
|
||||||
|
local this_command=`HISTTIMEFORMAT= history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//g"`;
|
||||||
|
|
||||||
|
# If none of the previous checks have earlied out of this function, then
|
||||||
|
# the command is in fact interactive and we should invoke the user's
|
||||||
|
# preexec hook with the running command as an argument.
|
||||||
|
preexec "$this_command"
|
||||||
|
}
|
||||||
|
|
||||||
|
function preexec_set_exit () {
|
||||||
|
__preexec_exit_status=$?
|
||||||
|
}
|
||||||
|
|
||||||
|
# Execute this to set up preexec and precmd execution.
|
||||||
|
function preexec_install () {
|
||||||
|
|
||||||
|
# *BOTH* of these options need to be set for the DEBUG trap to be invoked
|
||||||
|
# in ( ) subshells. This smells like a bug in bash to me. The null stderr
|
||||||
|
# redirections are to quiet errors on bash2.05 (i.e. OSX's default shell)
|
||||||
|
# where the options can't be set, and it's impossible to inherit the trap
|
||||||
|
# into subshells.
|
||||||
|
|
||||||
|
set -o functrace > /dev/null 2>&1
|
||||||
|
shopt -s extdebug > /dev/null 2>&1
|
||||||
|
|
||||||
|
# Finally, install the actual traps.
|
||||||
|
if [ -n "$PROMPT_COMMAND" ]; then
|
||||||
|
PROMPT_COMMAND="preexec_set_exit;${PROMPT_COMMAND};preexec_invoke_cmd";
|
||||||
|
else
|
||||||
|
PROMPT_COMMAND="preexec_set_exit;preexec_invoke_cmd";
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Since this is the reason that 99% of everybody is going to bother with a
|
||||||
|
# pre-exec hook anyway, we'll include it in this module.
|
||||||
|
|
||||||
|
# Change the title of the xterm.
|
||||||
|
function preexec_xterm_title () {
|
||||||
|
local title="$1"
|
||||||
|
echo -ne "\033]0;$title\007" > /dev/stderr
|
||||||
|
}
|
||||||
|
|
||||||
|
function preexec_screen_title () {
|
||||||
|
local title="$1"
|
||||||
|
echo -ne "\033k$1\033\\" > /dev/stderr
|
||||||
|
}
|
||||||
|
|
||||||
|
# Abbreviate the "user@host" string as much as possible to preserve space in
|
||||||
|
# screen titles. Elide the host if the host is the same, elide the user if the
|
||||||
|
# user is the same.
|
||||||
|
function preexec_screen_user_at_host () {
|
||||||
|
local RESULT=""
|
||||||
|
if [[ "$SCREEN_RUN_HOST" == "$SCREEN_HOST" ]]
|
||||||
|
then
|
||||||
|
return
|
||||||
|
else
|
||||||
|
if [[ "$SCREEN_RUN_USER" == "$USER" ]]
|
||||||
|
then
|
||||||
|
echo -n "@${SCREEN_HOST}"
|
||||||
|
else
|
||||||
|
echo -n "${USER}@${SCREEN_HOST}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function preexec_xterm_title_install () {
|
||||||
|
# These functions are defined here because they only make sense with the
|
||||||
|
# preexec_install below.
|
||||||
|
function precmd () {
|
||||||
|
preexec_xterm_title "${TERM} - ${USER}@${SCREEN_HOST} `dirs -0` $PROMPTCHAR"
|
||||||
|
if [[ "${TERM}" == screen ]]
|
||||||
|
then
|
||||||
|
preexec_screen_title "`preexec_screen_user_at_host`${PROMPTCHAR}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function preexec () {
|
||||||
|
preexec_xterm_title "${TERM} - $1 {`dirs -0`} (${USER}@${SCREEN_HOST})"
|
||||||
|
if [[ "${TERM}" == screen ]]
|
||||||
|
then
|
||||||
|
local cutit="$1"
|
||||||
|
local cmdtitle=`echo "$cutit" | cut -d " " -f 1`
|
||||||
|
if [[ "$cmdtitle" == "exec" ]]
|
||||||
|
then
|
||||||
|
local cmdtitle=`echo "$cutit" | cut -d " " -f 2`
|
||||||
|
fi
|
||||||
|
if [[ "$cmdtitle" == "screen" ]]
|
||||||
|
then
|
||||||
|
# Since stacked screens are quite common, it would be nice to
|
||||||
|
# just display them as '$$'.
|
||||||
|
local cmdtitle="${PROMPTCHAR}"
|
||||||
|
else
|
||||||
|
local cmdtitle=":$cmdtitle"
|
||||||
|
fi
|
||||||
|
preexec_screen_title "`preexec_screen_user_at_host`${PROMPTCHAR}$cmdtitle"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
preexec_install
|
||||||
|
}
|
||||||
4
bin/tmux-pwn
Executable file
4
bin/tmux-pwn
Executable file
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
|
||||||
|
tmux list-clients | sed "s|^\(/dev/ttys[0-9]\+\).*\[\([0-9]\+x[0-9]\+\).*$|\2 \1|" | sort -r -n | tail -n +2 | cut -d " " -f 2 | xargs -n 1 tmux detach-client -t
|
||||||
7
bin/undistract-me.sh
Executable file
7
bin/undistract-me.sh
Executable file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Copyright (c) 2008-2012 undistract-me developers. See LICENSE for details.
|
||||||
|
#
|
||||||
|
# Check for interactive bash and that we haven't already been sourced.
|
||||||
|
[ -z "$BASH_VERSION" -o -z "$PS1" -o -n "$last_command_started_cache" ] && return
|
||||||
|
|
||||||
|
. $HOME/bin/long-running.bash
|
||||||
|
notify_when_long_running_commands_finish_install
|
||||||
Loading…
Add table
Add a link
Reference in a new issue