瀏覽代碼

Merge branch 'master' of github.com:10sr/dotfiles

pull/1/head
10sr 11 年之前
父節點
當前提交
10b01698b0
共有 12 個檔案被更改,包括 411 行新增308 行删除
  1. +9
    -10
      README.txt
  2. +15
    -24
      _keysnail.js
  3. +0
    -0
      conf/20-keyboard.conf
  4. +0
    -0
      conf/conkyrc
  5. +0
    -0
      conf/conkyrc.2
  6. +0
    -0
      conf/fonts.conf
  7. +121
    -46
      emacs.el
  8. +0
    -42
      profile
  9. +4
    -3
      setup.sh
  10. +259
    -181
      shrc
  11. +1
    -0
      xinitrc
  12. +2
    -2
      xprograms

+ 9
- 10
README.txt 查看文件

@@ -2,6 +2,7 @@ Dotfiles
========



First Principle
---------------

@@ -10,29 +11,28 @@ __Do not go out of ways how the default environments work__.


There are many cases when I must work on foreign environments, and it is always
VERY irritating when things will not work as I expect, yet setting up my own
environment will be troublesome. So I avoid changing behaviors of tools,
except for emacs.
VERY irritating when things do not work as I expected, yet setting up my own
environment is troublesome. So I avoid changing behaviors of tools, except
for emacs.

Emacs is the editor I usually use for coding. I decided to change the behavior
of emacs as I want without thinking about other environments. When I cannot use
my emacs.el I'll use vi or vim instead.

Other tools like bash and vim basically work in the same ways even when using my
rc files. The main changes are related to showing informations, typically the
rc files. The main changes are related to showing informations, typically in the
bash prompt.



Sourcing flow
-------------

~/.bash_profile <= console login
$HOME/.profile <= console login (maybe sourced from .{ba,z}sh_profile)
|
|--~/.dotfiles/profile
|
`--~/.bashrc
`--$HOME/.{ba,z}shrc
|
`--~/.dotfiles/bashrc
`--$HOME/.dotfiles/shrc

~/.xinitrc <= startx
|
@@ -41,4 +41,3 @@ Sourcing flow
|--~/.dotfiles/xprofile
|
`--~/.dotfiles/xprograms


+ 15
- 24
_keysnail.js 查看文件

@@ -409,6 +409,8 @@ ext.add('my-setpref', function(){
"gecko.handlerService.schemes.mailto.1.name":"Gmail",
"general.warnOnAboutConfig":false,
"keyword.URL":"http://www.bing.com/search?q=",
"browser.search.defaultenginename":"Bing",
"browser.search.defaulturl":"http://www.bing.com/search?q=",
"network.dns.disableIPv6":true,
"refcontrol.actions":
"@DEFAULT=@FORGE www.heartrails.com=@NORMAL www.pixiv.net=@NORMAL",
@@ -763,8 +765,7 @@ hook.setHook('Unload', function () {
}
const ks = win.KeySnail;
share.pluginUpdater = ks.getPluginUpdater(
share.pluginUpdater.pluginsWithUpdate
);
share.pluginUpdater.pluginsWithUpdate);
ks.setUpPluginUpdaterDelegator();
return true;
});
@@ -846,7 +847,7 @@ key.setViewKey(['t', 'p'], function (ev, arg) {
ext.exec("twitter-client-tweet-this-page", arg, ev);
}, 'このページのタイトルと URL を使ってつぶやく', true);

key.setViewKey([['u'], ['<left>']], function (ev) {
key.setViewKey('u', function (ev) {
goDoCommand("cmd_scrollPageUp");
}, '一画面分スクロールアップ');

@@ -866,24 +867,10 @@ key.setViewKey('m', function (ev, arg) {
_fi.toogle();
}, 'fetchimiをトグル');

key.setViewKey('SPC', function (ev, arg) {
MultipleTabService.toggleSelection(gBrowser.mCurrentTab);
gBrowser.mTabContainer.advanceSelectedTab(1, true);
}, 'タブの選択をトグルして次のタブ');

key.setViewKey('S-SPC', function (ev, arg) {
MultipleTabService.toggleSelection(gBrowser.selectedTab);
gBrowser.mTabContainer.advanceSelectedTab(-1, true);
}, 'タブの選択をトグルして前のタブ');

key.setViewKey('z', function (ev, arg) {
ext.exec("keysnail-z-menu", arg, ev);
}, 'open keysnail setting menu', true);

key.setViewKey('C-SPC', function (ev, arg) {
MultipleTabService.toggleSelection(gBrowser.selectedTab);
}, 'タブの選択をトグル');

key.setViewKey('e', function () {
command.focusElement(command.elementsRetrieverTextarea, 0);
}, '最初のインプットエリアへフォーカス', true);
@@ -926,7 +913,7 @@ key.setViewKey('a', function (ev, arg) {
allTabs.open();
}, 'alltabs.open');

key.setViewKey([['<right>'], ['d']], function (ev) {
key.setViewKey('d', function (ev) {
goDoCommand("cmd_scrollPageDown");
}, '一画面スクロールダウン');

@@ -973,9 +960,9 @@ key.setViewKey('p', function (ev) {
key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_UP, true);
}, '一行スクロールアップ');

key.setViewKey('f', function (ev) {
key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_RIGHT, true);
}, '右へスクロール');
key.setViewKey('f', function (ev, arg) {
ext.exec('strong-fullscreen', arg, ev);
}, 'go fullscreen with hiding toolbar and tabbar', true);

key.setViewKey('b', function (ev) {
key.generateKey(ev.originalTarget, KeyEvent.DOM_VK_LEFT, true);
@@ -1042,6 +1029,10 @@ key.setEditKey('C-o', function (ev) {
command.openLine(ev);
}, '行を開く (Open line)');

key.setViewKey('f', function (ev, arg) {
ext.exec('strong-fullscreen', arg, ev);
}, 'go fullscreen with hiding toolbar and tabbar', true);
key.setViewKey('S-SPC', function (ev) {
goDoCommand("cmd_scrollPageUp");
}, '一画面分スクロールアップ');

key.setViewKey('SPC', function (ev) {
goDoCommand("cmd_scrollPageDown");
}, '一画面スクロールダウン');

20-keyboard.conf → conf/20-keyboard.conf 查看文件


conkyrc → conf/conkyrc 查看文件


conkyrc.2 → conf/conkyrc.2 查看文件


fonts.conf → conf/fonts.conf 查看文件


+ 121
- 46
emacs.el 查看文件

@@ -94,6 +94,7 @@ otherwise the path where the library installed."
markdown-mode
yaml-mode
;; ack
color-moccur
)))


@@ -163,6 +164,7 @@ found, otherwise returns nil."

(add-hook 'after-init-hook
(lambda ()
(message "%s %s" invocation-name emacs-version)
(message "%s was taken to initialize emacs." (emacs-init-time))
(switch-to-buffer "*Messages*")
))
@@ -849,6 +851,8 @@ found, otherwise returns nil."
:weight 'normal)
(set-face-foreground 'diff-removed-face "red")
(set-face-foreground 'diff-added-face "green")
(set-face-background 'diff-removed-face nil)
(set-face-background 'diff-added-face nil)
(set-face-attribute 'diff-changed nil
:foreground "magenta"
:weight 'normal)
@@ -1926,55 +1930,66 @@ if arg given, use that eshell buffer, otherwise make new eshell buffer."
(file-name-as-directory dir)
"")
"memo.txt"))))
(file-name-as-directory "..")
(defun my-rgrep-gitgrep (word)
"Recursive grep with git-grep"
(interactive "sgit-grep: Word to search: ")
(require 'grep)
(compilation-start
(format "git --no-pager -c color.grep=false grep -nH -e '%s'"
word)
'grep-mode))

(defun my-rgrep-ag (word)
"Recursive grep with ag"
(interactive "sag: Word to search: ")
(require 'grep)
(compilation-start (format "ag --nocolor --nogroup --nopager '%s'"
word)
'grep-mode))

(defun my-rgrep-ack (word)
"Recursive grep with ack"
(interactive "sack: Word to search: ")
(require 'grep)
(compilation-start (format "ack --nocolor --nogroup --nopager '%s'"
word)
'grep-mode))

(defun my-rgrep-grep (word)
"Recursive grep with grep"
(interactive "sgrep: Word to search: ")
(require 'grep)
(compilation-start
(format (concat "find . "
"-path '*/.git' -prune -o "
"-path '*/.svn' -prune -o "
"-type f -exec grep -nH -e '%s' {} +")
word)
'grep-mode))

(defun my-rgrep (word)
"My recursive grep."
(interactive "sWord to search: ")

(defvar my-rgrep-gitgrep
"git --no-pager -c color.grep=false grep -nH -e "
"grep command for git grep.")

(defvar my-rgrep-ag
"ag --nocolor --nogroup --nopager "
"grep command for ag")

(defvar my-rgrep-ack
"ack --nocolor --nogroup --nopager "
"grep command for ack")

(defvar my-rgrep-grep
(concat "find . "
"-path '*/.git' -prune -o "
"-path '*/.svn' -prune -o "
"-type f -print0 | "
"xargs -0 -e grep -nH -e ")
"grep command for grep")

(defun my-rgrep-grep-command ()
"Return recursive grep command for current directory."
(if (eq 0
(shell-command "git rev-parse --git-dir"))
(my-rgrep-gitgrep word)
my-rgrep-gitgrep
(if (executable-find "ag")
(my-rgrep-ag word)
my-rgrep-ag
(if (executable-find "ack")
(my-rgrep-ack word)
(my-rgrep-grep word)))))
my-rgrep-ack
my-rgrep-grep))))

(defun my-rgrep (command-args)
"My recursive grep."
(interactive (list (read-shell-command "grep command: "
(my-rgrep-grep-command)
'grep-find-history)))
(compilation-start command-args
'grep-mode))

(defun my-rgrep-ack (command-args)
"My recursive grep."
(interactive (list (read-shell-command "grep command: "
my-rgrep-ack
'grep-find-history)))
(my-rgrep command-args))

(defun my-rgrep-ag (command-args)
"My recursive grep."
(interactive (list (read-shell-command "grep command: "
my-rgrep-ag
'grep-find-history)))
(my-rgrep command-args))

(defun my-rgrep-grep (command-args)
"My recursive grep."
(interactive (list (read-shell-command "grep command: "
my-rgrep-grep
'grep-find-history)))
(my-rgrep command-args))

(define-key ctl-x-map "s" 'my-rgrep)

@@ -2047,6 +2062,19 @@ this is test, does not rename files"
(message file))
(message "not visiting file."))))

(defvar kill-ring-buffer-name "*kill-ring*"
"Buffer name for `kill-ring-buffer'.")
(defun open-kill-ring-buffer ()
"Open kill- ring buffer."
(interactive)
(pop-to-buffer
(with-current-buffer (get-buffer-create kill-ring-buffer-name)
(erase-buffer)
(yank)
(text-mode)
(current-local-map)
(goto-char (point-min)))))

;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;; savage emacs
;; ;; when enabled emacs fails to complete
@@ -2054,5 +2082,52 @@ this is test, does not rename files"
;; (defadvice message (before message-for-stupid (arg &rest arg2) activate)
;; (setq arg
;; (concat arg
;; (if (eq nil (string-match "\\. *$" arg)) ".")
;; (if (eq nil
;; (string-match "\\. *$"
;; arg))
;; ".")
;; " Stupid!")))

(defvar my-system-info
nil
"System info in the form of \"[user@host] \".")
(setq my-system-info
(concat "["
user-login-name
"@"
(car (split-string system-name
"\\."))
"] "))

(defadvice read-from-minibuffer (before info-in-prompt activate)
(ad-set-arg 0
(concat my-system-info
(ad-get-arg 0))))

(defadvice read-string (before info-in-prompt activate)
(ad-set-arg 0
(concat my-system-info
(ad-get-arg 0))))

(when (< emacs-major-version 24)
(defadvice completing-read (before info-in-prompt activate)
(ad-set-arg 0
(concat my-system-info
(ad-get-arg 0)))))

(defun my-real-function-subr-p (function)
"Return t if function is a built-in function even if it is advised."
(let* ((advised (and (symbolp function)
(featurep 'advice)
(ad-get-advice-info function)))
(real-function
(or (and advised (let ((origname (cdr (assq 'origname advised))))
(and (fboundp origname)
origname)))
function))
(def (if (symbolp real-function)
(symbol-function real-function)
function)))
(subrp def)))

;; (my-real-function-subr-p 'my-real-function-subr-p)

+ 0
- 42
profile 查看文件

@@ -1,42 +0,0 @@
#!/bin/sh

# # sample of ~/.profile

# . ~/.dotfiles/profile

# # if running bash
# if [ -n "$BASH_VERSION" ]; then
# # include .bashrc if it exists
# if [ -f "$HOME/.bashrc" ]; then
# . "$HOME/.bashrc"
# fi
# fi

# This not works when, for example, inherit parent ENV and load /etc/profile
# again.
#test -n "$DOTFILES_PROFILE" && return
#export DOTFILES_PROFILE=t

# export PS1="\$ "
export LC_TIME=C

mkdir -p $HOME/.local/lib/python/site-packages
export PYTHONDOCS=/usr/share/doc/python/html/
export PYTHONPATH="${PYTHONPATH}:\
${HOME}/my/bin/py:${HOME}/.local/lib/python/site-packages"
test -f "${HOME}/.dotfiles/rc.py" && \
export PYTHONSTARTUP="${HOME}/.dotfiles/rc.py"
#export PYTHONPATH="~/.local/share/lib/python3.2/site-packages"

export GEM_HOME="$HOME/.local/lib/gems"
export PATH="$PATH:$HOME/.local/lib/gems/bin"
export RUBYLIB="$RUBYLIB:$HOME/.local/lib/gems/lib"

#_python_pkg_conf="/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/pkgconfig"
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$_python_pkg_conf"

#export MANPATH="`manpath`:$HOME/.local/share/man"

# in my environment powerdown does not work
test -z "$SSH_CONNECTION" && \
type setterm >/dev/null 2>&1 && setterm -blank 30 -powersave on # -powerdown 10

+ 4
- 3
setup.sh 查看文件

@@ -1,6 +1,6 @@
#!/bin/sh

mkdir -p ~/.my/log
mkdir -p ~/.var/log
mkdir -p ~/.local/bin

_iswindows(){
@@ -60,6 +60,7 @@ git_config(){
$_gitconfig log.date iso
type xz && \
$_gitconfig tar.txz.command "xz -c"
$_gitconfig push.default current

$_gitconfig alias.graph "log --graph --date-order -C -M --pretty=tformat:\"%C(green)%h%C(reset) %C(white)%ad%C(reset) %C(red)%an%C(reset)%C(yellow)%d%C(reset) %C(white bold)%s%C(reset)\" --all --date=iso -n 499"
$_gitconfig alias.st "status -s -b"
@@ -124,8 +125,8 @@ mac_start_daemon(){

default(){
get_install_script \
http://www.frexx.de/xterm-256-notes/data/colortable16.sh \
http://www.frexx.de/xterm-256-notes/data/256colors2.pl
https://gist.github.com/10sr/6852317/raw/colortable16.sh \
https://gist.github.com/10sr/6852331/raw/256colors2.pl

git_config



bashrc → shrc 查看文件

@@ -1,20 +1,85 @@
#!/bin/bash
#!/bin/sh

# TODO: use tput

# If not running interactively, don't do anything
[[ $- != *i* ]] && return

##########################################
null(){
"$@" >/dev/null 2>&1
}
__try_exec(){
__safe_run(){
type $1 >/dev/null 2>&1 && "$@"
}

__match(){
# __match str word
# return 0 if word is found in str
expr "$1" : ".*$2.*" >/dev/null
}


#################################
# profile-like setups
# aliases:
# isinteractive: true if the current session is interactive
# issourced: true if this file is sourced from another file (not so assured)
# __firstload: true if this file is sourced for the first time (not so
# assured)

alias isinteractive=false
__match "$-" i >/dev/null && alias isinteractive=true
# alias issourced=true
# expr "$0" : "^.*shrc$" >/dev/null && alias issourced=false # executed

__safe_add_path_r(){
test -d "$1" && PATH="${PATH}:$1"
}
__safe_add_path_l(){
test -d "$1" && PATH="$1:${PATH}"
}

__safe_add_path_l "$HOME/.local/bin"
__safe_add_path_l "$HOME/.local/lib/gems/bin"
__safe_add_path_r "/c/mingw/bin"
__safe_add_path_r "/c/mingw/msys/1.0/bin"

# macports coreutils
# isdarwin cannot be used it is not defined yet
__safe_add_path_l "/opt/local/bin"
__safe_add_path_l "/opt/local/sbin"
__safe_add_path_l "/opt/local/libexec/gnubin"
__safe_add_path_l \
"/opt/local/Library/Frameworks/Python.framework/Versions/3.2/bin"

test -f "${__dotdir}/rc.py" && export PYTHONSTARTUP="${__dotdir}/rc.py"

install -d "$HOME/.local/lib/python/site-packages"
export PYTHONPATH="${PYTHONPATH}:${HOME}/.local/lib/python/site-packages"

export GEM_HOME="$HOME/.local/lib/gems"
export RUBYLIB="$RUBYLIB:$HOME/.local/lib/gems/lib"


# it is not so good
# http://archive.linux.or.jp/JF/JFdocs/Program-Library-HOWTO/shared-libraries.html
# http://superuser.com/questions/324613/installing-a-library-locally-in-home-directory-but-program-doesnt-recognize-it
# without this ENV i cannot run tmux. another way is to use --disable-shared
# when building tmux
if ! __match "$LD_LIBRARY_PATH" "$HOME/.local/lib"
then
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/.local/lib"
fi

# in my environment powerdown does not work
test -z "$SSH_CONNECTION" && \
type setterm >/dev/null 2>&1 && \
setterm -blank 30 -powersave on # -powerdown 10


##########################
# system type
# aliases:
# ismsys, iscygwin iswindows, isdarwin, islinux,
# with_coreutils, inbash, inzsh

alias ismsys=false
alias iscygwin=false
@@ -44,48 +109,46 @@ then
alias inzsh=true
fi


#################################
# file pathes:
# shrc: Path to this file
# dotdir: Path to .dotfiles directory

__match(){
# __match str1 str2
# return 0 if str2 is found in str1
expr "$1" : ".*$2.*" >/dev/null
}

if ! __match "$PATH" "$HOME/.local/bin"
if inbash
then
if test -d "$HOME/.local/bin"
then
PATH="${HOME}/.local/bin:${PATH}"
fi
if test -d "$HOME/.local/lib/gems/bin"
then
PATH="$HOME/.local/lib/gems/bin:${PATH}"
fi
fi

if ismsys && ! __match "$PATH" /c/mingw/bin
__shrc="$BASH_SOURCE"
elif inzsh
then
PATH="$PATH:/c/mingw/bin:/c/mingw/msys/1.0/bin"
__shrc="$0"
fi

# # it is not so good
# # http://archive.linux.or.jp/JF/JFdocs/Program-Library-HOWTO/shared-libraries.html
# # http://superuser.com/questions/324613/installing-a-library-locally-in-home-directory-but-program-doesnt-recognize-it
# without this ENV i cannot run tmux. another way is to use --disable-shared
# when building tmux
if ! __match "$LD_LIBRARY_PATH" "$HOME/.local/lib"
then
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/.local/lib"
fi
__dotdir="`dirname "$__shrc"`"
__homelocal="$HOME/.local"
__homevar="$HOME/.var"
install -d "$__homelocal"
install -d "$__homevar"


##################################
# EnvVal definitions

export LANG=ja_JP.UTF-8
export LC_MESSAGES=C
export LC_TIME=C

export TERMCAP="${TERMCAP}:vb="
ismsys && export HOSTNAME
export ENV=~/.shrc
# export ENV=~/.shrc

if ! with_coreutils
then
export LSCOLORS=gxfxcxdxbxegedabagacad
else
# http://qiita.com/yuyuchu3333/items/84fa4e051c3325098be3
null type dircolors && eval `dircolors`
fi

if false iswindows
then
@@ -95,11 +158,13 @@ else
fi
export LESS="-iRMX"

# Style for lesspipe is defined in esc.style
_src_hilite_lp_path="`which src-hilite-lesspipe.sh 2>/dev/null`"
if test -n "$_src_hilite_lp_path"
then
export LESSOPEN="| $_src_hilite_lp_path %s"
fi
for f in /usr/share/source-highlight/src-hilite-lesspipe.sh
do
test -z "$_src_hilite_lp_path" && test -e "$f" && _src_hilite_lp_path="$f"
done
test -n "$_src_hilite_lp_path" && export LESSOPEN="| $_src_hilite_lp_path %s"

if null type vim
then
@@ -115,8 +180,8 @@ export GIT_EDITOR="$EDITOR"
export GIT_MERGE_AUTOEDIT=no

if test -n "$TMUX" && \
echo $TERM | grep screen >/dev/null 2>&1 && \
tmux display -p '#{client_termname}' | grep 256color >/dev/null 2>&1
__match $TERM screen && \
__match `tmux display -p '#{client_termname}'` 256color
then
TERM=screen-256color
fi
@@ -146,17 +211,18 @@ if iswindows; then
export USER=$USERNAME
fi

_tmux_prefs(){
null type tmux || return 1
tmux set -g mode-keys vi
}

if test -d ~/dbx
then
export CHIT_PATH="$HOME/dbx/.chit"
fi

#######################
# If not running interactively, don't do anything
# issourced || exit
isinteractive || return

######################
# Print welcome messages

iswindows && alias tty="echo cmd.exe"
type fortune >/dev/null 2>&1 && {
@@ -190,11 +256,6 @@ _timeformat_num="%Y%m%d%H%M%S"
alias datenum="date +$_timeformat_num"

alias ls="ls -hCF${_coloroption}${_timeoption}"
if ! with_coreutils
then
export LSCOLORS=gxfxcxdxbxegedabagacad
alias ls="ls -G"
fi
# export GREP_OPTIONS=""
alias gr="grep -n --color=always"
iswindows && alias grep="grep -n"
@@ -273,10 +334,20 @@ wicn(){
fi
}

for f in /usr/share/vim/vimcurrent/macros/less.sh \
/usr/share/vim/vim73/macros/less.sh \
/usr/share/vim/vim72/macros/less.sh
__find_latest_vimdir(){
vimdir=/usr/share/vim
if test -d "$vimdir"
then
find "$vimdir" -name 'vim??' -type d | sort | tail -n 1
else
echo ""
fi
}

for f in /usr/share/vim/vimcurrent "`__find_latest_vimdir`"
do
test -n "$f" || continue
f="$f/macros/less.sh"
test -f $f && alias vl=$f && break
done

@@ -338,17 +409,91 @@ then
|| complete -o default -o nospace -F _git g
fi
git svn --help >/dev/null 2>&1 && alias gsvn="git svn"
null type gitmemo && alias m=gitmemo

null type gitmemo && alias m=gitmemo

alias setup.py="sudo python3 setup.py install --record files.txt"

randomstr(){
len=$1
test -z "$len" && len=8
uuidgen | tr -d - | cut -c 1-len
}

datestr(){
# datestr yyyyMMdd-hhmmss
if test -z "$1" || test "$1" == "-h"
then
echo "datestr: usage: datestr <yyyyMMddhhmmss>"
return 1
fi

dfmt= # actual format for date command
while test -n "$1"
do
fmt="$1"
while test -n "$fmt"
do
case "$fmt" in
yyyy*) # year
dfmt="${dfmt}%Y"
fmt="`echo "$fmt" | cut -c 5-`"
;;
yy*) # last two digits of year
dfmt="${dfmt}%y"
fmt="`echo "$fmt" | cut -c 3-`"
;;
MM*) # month (01..12)
dfmt="${dfmt}%m"
fmt="`echo "$fmt" | cut -c 3-`"
;;
dd*) # day of month (01..12)
dfmt="${dfmt}%d"
fmt="`echo "$fmt" | cut -c 3-`"
;;
HH* | hh*) # hour (00..23)
dfmt="${dfmt}%H"
fmt="`echo "$fmt" | cut -c 3-`"
;;
mm*) # minute (00..59)
dfmt="${dfmt}%M"
fmt="`echo "$fmt" | cut -c 3-`"
;;
ss*) # second (00..60)
dfmt="${dfmt}%S"
fmt="`echo "$fmt" | cut -c 3-`"
;;
*)
char=`echo "$fmt" | cut -c 1`
dfmt="${dfmt}${char}"
fmt="`echo "$fmt" | cut -c 2-`"
;;
esac
done
shift
done
date +"$dfmt"
}

ssh(){
__my_set_screen_title ssh
command ssh "$@"
}

__ssh_with_cd(){
# __ssh_with_cd <host> <directory> [<arg> ...]
if test -z "$2"
then
echo "usage: __ssh_with_cd <host> <directory> [<arg> ...]"
return 1
fi
host="$1"
shift
dir="$1"
shift
ssh "$host" "$@" -t "cd \"$dir\"; \$SHELL -l"
}

memo(){
if test -z "$1"
then
@@ -358,7 +503,7 @@ memo(){
fi
}

clk(){
now(){
local tformat="%Y/%m/%d %H:%M:%S %z"
cal
REPLY=
@@ -423,38 +568,6 @@ netwait(){
echo network works.
}

cd(){
if test $# -eq 0
then
pushd ~/ >/dev/null
elif test "$1" = -
then
local pwd="$PWD"
command cd "$OLDPWD"
pushd -n "$pwd" >/dev/null # stack last dir
elif ! test -d "$1"
then
echo `basename ${SHELL}`: cd: "$1": No such file or directory 1>&2
return 1
else
pushd "$1" >/dev/null
fi
__dirs_rm_dup "$PWD"
echo "$PWD"
}

__dirs_rm_dup(){
for d in "$@"
do
local next="$(__realpath --strip "$d")"
for l in $(\dirs -v -l | cut -d $'\n' -f 2- | \
\grep -x " *[0-9]\+ \+${next}" | \grep -o "^ *[0-9]\+ " | tac)
do
popd +$l -n >/dev/null
done
done
}

__realpath(){
if type realpath >/dev/null 2>&1
then
@@ -464,49 +577,19 @@ __realpath(){
do
shift
done
local d="$OLDPWD"
command cd "$1"
echo "$PWD"
command cd "$d"
(command cd "$d" && echo "$PWD")
# local d="$OLDPWD"
# command cd "$1"
# echo "$PWD"
# command cd "$d"
fi
}

dh(){
if test $# -eq 0
then
dirs -v -l
else
local dir="$(dirs -v -l | \grep "^ *$1 \+" | sed "s/^ *[0-9]* *//g")"
cd "$dir"
fi
}
input(){
local foo
stty -echo
read foo
stty echo
echo $foo
}

# tmux(){
# if test $# -eq 0
# then
# (cd ~; command tmux start;)
# if command tmux has -t main
# then
# command tmux attach -t main
# else
# (cd ~; command tmux new -s main;)
# fi
# else
# command tmux "$@"
# fi
# }
tx(){
if test $# -eq 0
then
echo ":: tx <session> to attach."
tmux ls
echo "tx <session> to attach."
elif tmux has -t "$1"
then
tmux attach -t "$1"
@@ -515,6 +598,11 @@ tx(){
fi
}

_tmux_prefs(){
null type tmux || return 1
tmux set -g mode-keys vi
}

dt(){
# dt [<name>] [<command ...>]
__dtach_dir="${TMP}/dtach"
@@ -589,7 +677,7 @@ dtscr(){
# echo $_file
}

mcrypt-stream(){
mcrypt_stream(){
test $# -eq 2 || return 1
case $1 in
en)
@@ -599,7 +687,7 @@ mcrypt-stream(){
esac
}

gpg-stream(){
gpg_stream(){
test $# -eq 2 || return 1
case $1 in
en)
@@ -632,7 +720,7 @@ dgpg(){
elif test -f "$d"
then
echo "`printf 'failed (%s is already exists)' $d`"
elif <"$f" gpg-stream $1 $pw >"$d" 2>/dev/null
elif <"$f" gpg_stream $1 $pw >"$d" 2>/dev/null
then
echo "done"
else
@@ -642,27 +730,27 @@ dgpg(){
done
}

alias enst="gpg-stream en"
alias dest="gpg-stream de"
alias enst="gpg_stream en"
alias dest="gpg_stream de"

showinfo(){
echo "Japanese letters are 表示可能"

__try_exec diskinfo
__safe_run diskinfo

! isdarwin && test -n "${DISPLAY}" && {
__try_exec xrandr | \grep --color=never ^Screen
__safe_run xrandr | \grep --color=never ^Screen
}

iswindows || __try_exec finger $USER
LANG=C __try_exec id
__try_exec xset q
iswindows || __safe_run finger $USER
LANG=C __safe_runc id
__safe_run xset q
}

x(){
if [[ -z $DISPLAY ]] && ! [[ -e /tmp/.X11-unix/X0 ]] && (( EUID )); then
#mkdir -p ~/.my/log
# nohup startx >~/.my/log/xorg.log 2>&1 &
#mkdir -p ~/.var/log
# nohup startx >~/.var/log/xorg.log 2>&1 &
# exit
exec startx
else
@@ -689,7 +777,7 @@ di(){

tb(){
local datenum=`date +%Y%m%d-%H%M%S`
local tb="$HOME/.my/tb/$datenum"
local tb="$HOME/.var/tb/$datenum"
mkdir -p "$tb"
for file in "$@"
do
@@ -794,31 +882,14 @@ o(){
fi
}

convmv-sjis2utf8-test(){
convmv_sjis2utf8_test(){
convmv -r -f sjis -t utf8 *
}

convmv-sjis2utf8-notest(){
convmv_sjis2utf8_notest(){
convmv -r -f sjis -t utf8 * --notest
}

winln(){
# for windose make link (actually junction)
if test $# -eq 0
then
{
echo "usage: winln TARGET LINK_NAME"
echo "Create a link to TARGET with the name LINK_NAME \
(that is, TARGET must already exist)."
echo "About other features run 'junction'."
} 1>&2
return 1
else
junction "$2" "$1"
fi
}



#################################################
## pastebin services
@@ -846,8 +917,28 @@ dpaste(){
}


##########################
# Zsh specific preferences

if inzsh
then
bindkey -e

# http://zsh.sourceforge.net/Guide/zshguide06.html#l147
autoload compinit; compinit
unsetopt auto_menu
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
setopt bash_auto_list

autoload colors; colors

autoload -Uz promptinit
promptinit
prompt walters
fi

######################################
## Prompt
## Prompt Settings

__my_moc_state(){
type mocp >/dev/null 2>&1 || return
@@ -886,7 +977,7 @@ __my_battery_status(){
}
alias bat='__my_battery_status %s\\n'

ip-address(){
ipaddress(){
type ip >/dev/null 2>&1 || return 1
local ip=$(LANG=C ip addr show scope global | \
\grep --color=never --only-matching 'inet [^ ]*' | cut -d " " -f 2)
@@ -902,53 +993,42 @@ test -n "$SSH_CONNECTION" && __my_ps1_str="${__my_ps1_str}${__my_c5}SSH${__my_cd
test -n "$__MY_DTACH" && __my_ps1_str="${__my_ps1_str}${__my_c5}DTACH${__my_cdef} "

__my_ps1_scale(){
local last=$?
if null type stty && ! ismsys
then
stty size | tr -d $'\n' | tr " " x
printf " "
fi
return $last
}

__my_ps1_tmux(){
local last=$?
null type tmux || return $last
local tmuxc="$(tmux display -p '#S:#I:#W.#P' 2>/dev/null)"
test -n "$TMUX" && echo "[TMUX:$tmuxc]"
return $last
}

__my_ps1_moc(){
local last=$?
__my_moc_state "[MOC:%s]"
return $last
}

for f in /usr/share/git/git-prompt.sh \
/opt/local/share/git-core/git-prompt.sh \
/opt/local/share/doc/git-core/contrib/completion/git-prompt.sh
do
test -r "$f" && . "$f" && break
test -r "$f" && inbash && . "$f" && break
done
GIT_PS1_SHOWDIRTYSTATE=t
GIT_PS1_SHOWUPSTREAM=t
__my_ps1_git(){
local last=$?
null type __git_ps1 || return $last
null git rev-parse --git-dir >/dev/null 2>&1 || return $last
__git_ps1 "[GIT:$(__try_exec git config --get user.name):%s]"
return $last
__git_ps1 "[GIT:$(__safe_run git config --get user.name):%s]"
}

__my_ps1_ipaddr(){
local last=$?
! iswindows && ip-address [Addr:%s]
return $last
! iswindows && ipaddress [Addr:%s]
}

__my_ps1_bttry(){
local last=$?
local bst="${TMP}/batterystatus"
if test -z "$DISPLAY" && ! iswindows
then
@@ -957,7 +1037,6 @@ __my_ps1_bttry(){
echo "[Battery:$bstr]"
__my_battery_status %s >$bst &
fi
return $last
}

__my_ps1_dirs(){
@@ -968,6 +1047,10 @@ __my_ps1_jobs(){
jobs | wc -l
}

__my_alert_fail(){
test $laststatus -eq 0 || echo '!!! '
}

if test "$TERM" != dumb
then
__my_c1="\[\e[0;33m\]" # color for PWD
@@ -982,19 +1065,12 @@ then
__my_cdef="\[\e[0m\]"
fi

# export _LAST_STATUS=a
# __my_export_last_status(){
# local last=$?
# echo $last
# export _LAST_STATUS=$last
# echo $_LAST_STATUS
# return $last
# }

_ps1_bash="\
${__my_c4}:: ${__my_cdef}[${__my_c2}\u@\H${__my_cdef}:${__my_c1}\w/${__my_cdef}]\$(__my_ps1_git)\$(__my_ps1_bttry)\$(__my_ps1_ipaddr)\$(__my_ps1_moc)\n\
${__my_c4}:: ${__my_cdef}l${SHLVL}n\#j\js\$? $(__my_ps1_scale) \D{%T} ${__my_ps1_str}\$ "
${__my_c4}:: ${__my_cdef}l${SHLVL}n\#j\js\$laststatus $(__my_ps1_scale)\D{%T} ${__my_ps1_str}\$(__my_alert_fail)\$ "
inbash && PS1=$_ps1_bash
_ps1_zsh="$_ps1_bash"
#inzsh && PS1="$_ps1_zsh"

__my_set_screen_title(){
if test -n "$TMUX" && test -z "$INSIDE_EMACS"
@@ -1016,3 +1092,5 @@ __my_set_title(){
}
PROMPT_COMMAND="__my_set_title \${USER}@\${HOSTNAME}\:\${PWD};
__my_set_screen_title \$(basename \"\$PWD\")/"
PROMPT_COMMAND="laststatus=\$?;$PROMPT_COMMAND"
laststatus=0

+ 1
- 0
xinitrc 查看文件

@@ -4,6 +4,7 @@ test -n "$DISPLAY" || return
test -z "$ROXTERM_PID" || return
test -z "$SSH_CONNECTION" || return

# if already in x return
case "$TERM" in
xterm*) return;;
esac


+ 2
- 2
xprograms 查看文件

@@ -26,8 +26,8 @@ _gsoundap(){
}

_conky(){
conky -c ~/.dotfiles/conkyrc >~/.my/log/conky.log 2>&1 &
conky -c ~/.dotfiles/conkyrc.2 >~/.my/log/conky.2.log 2>&1 &
conky -c ~/.dotfiles/conkyrc >~/.var/log/conky.log 2>&1 &
conky -c ~/.dotfiles/conkyrc.2 >~/.var/log/conky.2.log 2>&1 &
}

_wicd(){


Loading…
取消
儲存