From 0f125a7d4f380851e4de4da3fece19b0eb6c72d6 Mon Sep 17 00:00:00 2001 From: Yorick Barbanneau Date: Tue, 7 Mar 2023 21:30:31 +0100 Subject: [PATCH] Add configuration files --- files/bin/create_conf.sh | 78 ++++++ files/bin/import-gsettings | 11 + files/bin/launcher.sh | 36 +++ files/bin/netflix | 3 + files/bin/sway.sh | 3 + files/cmus/notify.sh | 36 +++ files/cmus/rc | 56 +++++ files/gtk-3.0/settings.ini | 16 ++ files/systemd/import-gsettings.service | 10 + files/vifm/vifmrc | 335 +++++++++++++++++++++++++ files/zsh/.zprofile | 17 ++ files/zsh/.zshrc | 57 +++++ 12 files changed, 658 insertions(+) create mode 100755 files/bin/create_conf.sh create mode 100755 files/bin/import-gsettings create mode 100755 files/bin/launcher.sh create mode 100755 files/bin/netflix create mode 100755 files/bin/sway.sh create mode 100755 files/cmus/notify.sh create mode 100644 files/cmus/rc create mode 100644 files/gtk-3.0/settings.ini create mode 100644 files/systemd/import-gsettings.service create mode 100644 files/vifm/vifmrc create mode 100755 files/zsh/.zprofile create mode 100755 files/zsh/.zshrc diff --git a/files/bin/create_conf.sh b/files/bin/create_conf.sh new file mode 100755 index 0000000..720e8d6 --- /dev/null +++ b/files/bin/create_conf.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash +test="" +base_dir="${HOME}/medias/videos/sambab" +conf="$*" +key_UUID="0564-A865" +#key_UUID="188E-29AA" +printf "Creation de la conférence de %s\n" "$conf" +cd ~/medias/videos/sambab || exit 1 + +#Get las friday date for creating folder +friday=$(date --date='last Friday' +"%Y.%m.%d") + +#Add basedir, then I have my directory +folder="${base_dir}/${friday}-${conf// /_}" + +#create it +mkdir "${folder}"/{rushes,audio,titles} -p || { + echo " - >Error !"; + exit 1; +} + + +cp "${base_dir}/logo_amis.svg" "${folder}/titles" || { echo "error on SVG copy"; exit 1; } +cp "${base_dir}/template.kdenlive" "${folder}/montage.kdenlive" || { echo "error on template copy"; exit 1; } + +inkscape_date=$(LANG=fr_FR.UTF-8 date --date='last Friday' +"%A %d %B %Y") + +echo "Put Name on title" +sed -i "s/\[\[conf\]\]/${conf//_/ }/g" ${folder}/titles/logo_amis.svg || { + echo " ->Error !"; + exit 1; +} + +echo "Put date on tile" +sed -i "s/\[\[date\]\]/${inkscape_date}/g" ${folder}/titles/logo_amis.svg || { + echo " ->Error !"; + exit 1; +} + +echo "Importing PNG File in ${folder}/montage.kdenlive" +sed -i "s#\[\[logo\]\]#${folder}/titles/logo_amis.png#g" "${folder}"/montage.kdenlive || { + >&2 echo " ->Error !"; + exit 1; +} + +echo "Export SVG title" +inkscape --export-type="png" "${folder}/titles/logo_amis.svg" || { + echo " ->Error !"; + exit 1; +} + +echo "Mount USBkey with UUID $key_UUID" +usb_key="/dev/$(lsblk -o KNAME,UUID | grep ${key_UUID} | awk '{print $1}')" +[[ ! $usb_key = "/dev/" ]] || { + >&2 echo " -> Error getting device name, is USB key plugged? $usb_key"; + exit 1; +} + +disk="$(udisksctl mount -b ${usb_key} | awk '{print $4}')" +sleep 1 +[[ -n $disk ]] || { + >&2 echo " -> Error mounting device $usb_key"; + exit 1 +} + +echo "Copy files from USB key" +mv ${disk}/$(date --date='last Friday' +'%Y-%m-%d')\ *.mkv "${folder}/rushes/" || { + >&2 echo " -> Error moving video file!"; + exit 1; +} + +mv ${disk}/RECORD/EXREC/*.MP3 "${folder}/audio/" || { + >&2 echo " -> Error moving audio file!"; + exit 1; +} + +udisksctl unmount -b ${usb_key} +exit 0 diff --git a/files/bin/import-gsettings b/files/bin/import-gsettings new file mode 100755 index 0000000..dfc2d98 --- /dev/null +++ b/files/bin/import-gsettings @@ -0,0 +1,11 @@ +#!/bin/sh + +# usage: import-gsettings : : ... + +expression="" +for pair in "$@"; do + IFS=:; set -- $pair + expressions="$expressions -e 's:^$2=(.*)$:gsettings set org.gnome.desktop.interface $1 \"\1\":e'" +done +IFS= +eval exec sed --debug -E $expressions "${XDG_CONFIG_HOME:-$HOME/.config}"/gtk-3.0/settings.ini diff --git a/files/bin/launcher.sh b/files/bin/launcher.sh new file mode 100755 index 0000000..45e7d63 --- /dev/null +++ b/files/bin/launcher.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# terminal application launcher for sway, using fzf +# inspired by https://github.com/Biont/sway-launcher-desktop + +set -o pipefail +shopt -s nullglob globstar +HIST_FILE="${XDG_CACHE_HOME:-$HOME/.cache}/sway-launcher-history.txt" +export FZF_DEFAULT_OPTS="--layout=reverse --no-extended --print-query --no-sort" + +[ ! -f "$HIST_FILE" ] && touch {"$HIST_FILE" +# Create fifo for populate fzf in async mode +FZFPIPE=$(mktemp -u) +mkfifo "$FZFPIPE" +trap 'rm "$FZFPIPE"' EXIT INT + +#retrieve history and pipe it into our fifo +readarray HIST_LINES <"$HIST_FILE" +(printf '%s' "${HIST_LINES[@]#* }" >>"$FZFPIPE") & + +# Get command, if empty exit +command=$(fzf <"$FZFPIPE" | tail -n1 || exit 1) +[[ "$command" == "" ]] && exit 0 + +# Update history +index=$(printf '%s' "${HIST_LINES[@]}" | grep -n -Pe "^[0-9]+ ${command}$" | awk -F ':' '{print $1-1}') +if [ -n "$index" ]; then + occurences=${HIST_LINES[$index]%% *} + occurences=$((occurences + 1)) + HIST_LINES[$index]="${occurences} ${command}"$'\n' +else + HIST_LINES+=("1 $command"$'\n') +fi + +printf '%s' "${HIST_LINES[@]}" | sort --numeric-sort --reverse > "$HIST_FILE" +swaymsg -t command exec "$command" +exit 0 diff --git a/files/bin/netflix b/files/bin/netflix new file mode 100755 index 0000000..393dec7 --- /dev/null +++ b/files/bin/netflix @@ -0,0 +1,3 @@ +#!/bin/sh + +exec qutebrowser -C ~/.config/qutebrowser/config.py -B ~/.local/share/qutebrowser-apps/netflix diff --git a/files/bin/sway.sh b/files/bin/sway.sh new file mode 100755 index 0000000..ebc27b5 --- /dev/null +++ b/files/bin/sway.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sway diff --git a/files/cmus/notify.sh b/files/cmus/notify.sh new file mode 100755 index 0000000..3a985d0 --- /dev/null +++ b/files/cmus/notify.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# +#CMUS notification +# +options="--app-name=cmus" +body="" +while [ "$#" -ge 2 ] +do + eval $1='$2' + shift + shift +done + +filename=${file##*/} +image=${file%/*}/cover.jpg +[ -f "$image" ] && options="$options -i ${image}" + +title=${title:-$filename} + +if [ -n "$artist" ] +then + body="$body $artist\n" +fi + +if [ -n "$album" ] +then + body="$body $album" +fi + +if [ -n "$date" ] +then + body="$body ${date%%-*}" +fi +body=${body:-'no informations'} + +notify-send $options "$title" "$body" diff --git a/files/cmus/rc b/files/cmus/rc new file mode 100644 index 0000000..ea71c79 --- /dev/null +++ b/files/cmus/rc @@ -0,0 +1,56 @@ +## Base16 Default Dark + +# overall background and foreground color +set color_win_fg=7 +set color_win_bg=0 + +# bottom status line +set color_statusline_fg=20 +set color_statusline_bg=19 + +# bottom title line +set color_titleline_fg=7 +set color_titleline_bg=18 + +# top title area +set color_win_title_fg=20 +set color_win_title_bg=19 +set color_win_title_attr=bold + +# command-line colors +set color_cmdline_bg=default +set color_cmdline_fg=default +set color_error=1 +set color_info=6 + +# separator of windows +# should be black +set color_separator=16 + +# unselected currently playing track's text +set color_win_cur=13 + +# active selection for currently playing track +set color_win_cur_sel_bg=20 +set color_win_cur_sel_fg=0 +set color_win_cur_sel_attr=none + +# inactive selection for currently playing track +set color_win_inactive_cur_sel_bg=8 +set color_win_inactive_cur_sel_fg=21 + +# active selection +set color_win_sel_bg=6 +set color_win_sel_fg=0 +set color_win_sel_attr=none + +# inactive selection +set color_win_inactive_sel_bg=19 +set color_win_inactive_sel_fg=20 + +# directory listing color +set color_win_dir=default + +set status_display_program=~/.config/cmus/notify.sh + +add -l ~/medias/music diff --git a/files/gtk-3.0/settings.ini b/files/gtk-3.0/settings.ini new file mode 100644 index 0000000..c4a5b53 --- /dev/null +++ b/files/gtk-3.0/settings.ini @@ -0,0 +1,16 @@ +[Settings] +gtk-theme-name=Arc-Darker-solid +gtk-font-name=DejaVu Sans 12 +gtk-cursor-theme-name=Adwaita +gtk-cursor-theme-size=0 +gtk-button-images=0 +gtk-menu-images=0 +gtk-icon-theme-name=Papirus-Dark +gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ +gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR +gtk-enable-event-sounds=1 +gtk-enable-input-feedback-sounds=1 +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle=hintslight +gtk-xft-rgba=none diff --git a/files/systemd/import-gsettings.service b/files/systemd/import-gsettings.service new file mode 100644 index 0000000..1ad750c --- /dev/null +++ b/files/systemd/import-gsettings.service @@ -0,0 +1,10 @@ +[Unit] +Description=Import Gsettings from GTK ini file + +[Service] +Type=oneshot +ExecStart=%h/.local/bin/import-gsettings +RemainAfterExit=yes + +[Install] +WantedBy=sway-session.target diff --git a/files/vifm/vifmrc b/files/vifm/vifmrc new file mode 100644 index 0000000..2ebf393 --- /dev/null +++ b/files/vifm/vifmrc @@ -0,0 +1,335 @@ +" vim: filetype=vifm : +" Sample configuration file for vifm (last updated: 8 August, 2022) +" You can edit this file by hand. +" The " character at the beginning of a line comments out the line. +" Blank lines are ignored. +" The basic format for each item is shown with an example. + +" ------------------------------------------------------------------------------ +" Main settings +" ------------------------------------------------------------------------------ + +" Command used to edit files in various contexts. The default is vim. +" If you would like to use another vi clone such as Elvis or Vile +" you will need to change this setting. +if executable('vim') + set vicmd=vim +elseif executable('nvim') + set vicmd=nvim +elseif executable('elvis') + set vicmd=elvis\ -G\ termcap +elseif executable('vile') + set vicmd=vile +elseif $EDITOR != '' + echo 'Note: using `'.$EDITOR.'` as an editor' + let &vicmd = $EDITOR +endif + +" This makes vifm perform file operations on its own instead of relying on +" standard utilities like `cp`. While using `cp` and alike is a more universal +" solution, it's also much slower when processing large amounts of files and +" doesn't support progress measuring. +set syscalls + +" Trash Directory +" The default is to move files that are deleted with dd or :d to +" the trash directory. If you change this you will not be able to move +" files by deleting them and then using p to put the file in the new location. +" I recommend not changing this until you are familiar with vifm. +" This probably shouldn't be an option. +set trash + +" What should be saved automatically on restarting vifm. Drop "savedirs" +" value if you don't want vifm to remember last visited directories for you. +set vifminfo=dhistory,chistory,state,tui,shistory, + \phistory,fhistory,dirstack,registers,bookmarks,bmarks + +" This is how many directories to store in the directory history. +set history=100 + +" Automatically resolve symbolic links on l or Enter. +set nofollowlinks + +" Natural sort of (version) numbers within text. +set sortnumbers + +" Maximum number of changes that can be undone. +set undolevels=100 + +" Use Vim's format of help file (has highlighting and "hyperlinks"). +" If you would rather use a plain text help file set novimhelp. +set vimhelp + +" If you would like to run an executable file when you +" press Enter, l or Right Arrow, set this. +set norunexec + +" List of color schemes to try (picks the first one supported by the terminal) +colorscheme Zenburn + +" Format for displaying time in file list. For example: +" TIME_STAMP_FORMAT=%m/%d-%H:%M +" See man date or man strftime for details. +set timefmt='%Y/%m/%d %H:%M' + +" Show list of matches on tab completion in command-line mode +set wildmenu + +" Display completions in a form of popup with descriptions of the matches +set wildstyle=popup + +" Display suggestions in normal, visual and view modes for keys, marks and +" registers (at most 5 files). In other view, when available. +set suggestoptions=normal,visual,view,otherpane,keys,marks,registers + +" Ignore case in search patterns unless it contains at least one uppercase +" letter +set ignorecase +set smartcase + +" Don't highlight search results automatically +set nohlsearch + +" Use increment searching (search while typing) +set incsearch + +" Try to leave some space from cursor to upper/lower border in lists +set scrolloff=4 + +" Don't do too many requests to slow file systems +if !has('win') + set slowfs=curlftpfs +endif +set milleroptions=lsize:1,csize:1,rsize:1,rpreview:all + +" set custom status line look +set statusline=" Hint: %z%= %A %10u:%-7g %15s %20d " + +"------------------------------------------------------------------------------ +" Bookmarks +" ------------------------------------------------------------------------------ + +" :mark mark /full/directory/path [filename] + +mark b ~/.local/bin/ +mark h ~/ + +" ------------------------------------------------------------------------------ +" Commands +" ------------------------------------------------------------------------------ + +" :com[mand][!] command_name action +" +" These are some of the macros that can be used in the action part: +" %a for user arguments +" %c for current file under the cursor +" %C for current file under the cursor of inactive pane +" %f for selected file(s) +" %F for selected file(s) of inactive pane +" %b is the same as %f %F +" %d for current directory name +" %D for current directory name of inactive pane +" %r{x} for list of files in register {x} +" %m runs the command in a menu window +" %u uses command's output to build a file list +" see `:help vifm-macros` and `:help vifm-filename-modifiers` for more + +command! df df -h %m 2> /dev/null +command! diff vim -d %f %F +command! zip zip -r %c.zip %f +command! run !! ./%f +command! make !!make %a +command! mkcd :mkdir %a | cd %a +command! vgrep vim "+grep %a" +command! reload :write | restart full + +" ------------------------------------------------------------------------------ +" File types association +" ------------------------------------------------------------------------------ + +" :filetype pattern1,pattern2 defaultprogram,program2 +" :fileviewer pattern1,pattern2 consoleviewer +" +" The first entry is the default program to be used with a matching file. +" The other programs for the file type can be accessed via :file command. +" The command macros like %f, %F, %d, %D may be used in the commands. +" The %a macro is ignored. To use a % you must put %%. +" Spaces in an app name must be escaped, for example: QuickTime\ Player.app + +" For automated FUSE mounts, you must register an extension with :file[x]type +" in one of the following formats: +" +" :filetype patterns FUSE_MOUNT|mount_cmd %SOURCE_FILE %DESTINATION_DIR +" +" %SOURCE_FILE and %DESTINATION_DIR are filled in at runtime. +" +" Example: +" :filetype *.zip,*.[jwe]ar FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR +" +" :filetype patterns FUSE_MOUNT2|mount_cmd %PARAM %DESTINATION_DIR +" +" %PARAM and %DESTINATION_DIR are filled in at runtime. +" +" Example: +" :filetype *.ssh FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR +" +" %PARAM value is the first line of the matched file, example: root@127.0.0.1:/ +" +" You can also add %CLEAR if you want to clear screen before running FUSE +" program. There is also %FOREGROUND, which is useful for entering passwords. + +fileviewer .*/,*/ ls --group-directories-first --classify --color %c +fileviewer {*.pdf}, pdftotext -nopgbrk %c - +fileviewer {*.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm}, + \ chafa -f sixel -s %pwx%ph %c:p %pd %N 2>/dev/null +fileviewer *.zip,*.jar,*.war,*.ear,*.oxt tar -tf %f +fileviewer *.tgz,*.tar.gz tar -tzf %c +fileviewer *.tar.bz2,*.tbz2 tar -tjf %c +fileviewer *.tar.xz,*.txz tar -tJf %c +fileviewer *.tar.zst,*.tzst tar -t --zstd -f %c +fileviewer {*.tar}, tar -tf %c + +" rar archives +fileviewer {*.rar}, unrar v %c + +fileviewer {*.7z}, 7z l %c +fileviewer highlight -O xterm256 -s base16/default-dark %c +filetype * xdg-open +" Customize view columns a bit (enable ellipsis for truncated file names) +set viewcolumns=-{name}..,6{}. + +" Show vertical border +set fillchars=vborder:│ + +" Filter-out build and temporary files +" filter! {*.lo,*.o,*.d,*.class,*.pyc,*.pyo,.*~} + +" ------------------------------------------------------------------------------ +" Sample keyboard mappings +" ------------------------------------------------------------------------------ + +" Start shell in current directory +nnoremap s :shell + +" Display sorting dialog +nnoremap S :sort + +" Toggle visibility of preview window +nnoremap w :view +vnoremap w :viewgv + +if $DISPLAY && executable('gvim') + " Open file in existing instance of gvim + nnoremap o :!gvim --remote-tab-silent %f + " Open file in new instance of gvim + nnoremap O :!gvim %f +endif + +" Open file in the background using its default program +nnoremap gb :file &l + +" Interaction with system clipboard +if has('win') + " Yank current directory path to Windows clipboard with forward slashes + nnoremap yp :!echo %"d:gs!\!/! %i | clip + " Yank path to current file to Windows clipboard with forward slashes + nnoremap yf :!echo %"c:gs!\!/! %i | clip +elseif $WAYLAND_DISPLAY + if executable('wl-copy') + " Yank current directory path into primary and selection clipboards + nnoremap yd :!echo -n %d | wl-copy %i && + \ echo -n %d | wl-copy -p %i + " Yank current file path into into primary and selection clipboards + nnoremap yf :!echo -n %c:p | wl-copy %i && + \ echo -n %c:p | wl-copy -p %i + endif +elseif $DISPLAY + if executable('xclip') + " Yank current directory path into the clipboard + nnoremap yd :!echo %d | xclip %i + " Yank current file path into the clipboard + nnoremap yf :!echo %c:p | xclip %i + elseif executable('xsel') + " Yank current directory path into primary and selection clipboards + nnoremap yd :!echo -n %d | xsel --input --primary %i && + \ echo -n %d | xsel --clipboard --input %i + " Yank current file path into into primary and selection clipboards + nnoremap yf :!echo -n %c:p | xsel --input --primary %i && + \ echo -n %c:p | xsel --clipboard --input %i + endif +endif + +" Mappings for faster renaming +nnoremap I cw +nnoremap cc cw +nnoremap A cw + +" As above, but without the file extension +" nnoremap I cW +" nnoremap cc cW +" nnoremap A cW + +" Open console in current directory +if $DISPLAY && executable('xterm') + nnoremap ,t :!xterm & +elseif $TERMINAL + nnoremap ,t :!$TERMINAL & +endif + +" Open editor to edit vifmrc and apply settings after returning to vifm +nnoremap ,c :write | edit $MYVIFMRC | restart full + +" Open gvim to edit vifmrc +if $DISPLAY && executable('gvim') + nnoremap ,C :!gvim --remote-tab-silent $MYVIFMRC & +endif + +" Toggle wrap setting on ,w key +nnoremap ,w :set wrap! + +" Example of standard two-panel file managers mappings +nnoremap :!less %f +nnoremap :edit +nnoremap :copy +nnoremap :move +nnoremap :mkdir +nnoremap :delete + +" Midnight commander alike mappings +" Open current directory in the other pane +nnoremap :sync +" Open directory under cursor in the other pane +nnoremap :sync %c +" Swap panes +nnoremap x + +" ------------------------------------------------------------------------------ +" Various customization examples +" ------------------------------------------------------------------------------ + +" Use ag (the silver searcher) instead of grep +" set grepprg='ag --line-numbers %i %a %s' + +" Add additional place to look for executables +" let $PATH = $HOME.'/bin/fuse:'.$PATH + +" Block particular shortcut +" nnoremap + +" Export IPC name of current instance as environment variable and use it to +" communicate with the instance later. +" +" It can be used in some shell script that gets run from inside vifm, for +" example, like this: +" vifm --server-name "$VIFM_SERVER_NAME" --remote +"cd '$PWD'" +" +" let $VIFM_SERVER_NAME = v:servername + +" Activate screen/tmux support +" screen! + +" ------------------------------------------------------------------------------ +" Icon decorations example +" ------------------------------------------------------------------------------ + +" https://github.com/cirala/vifm_devicons diff --git a/files/zsh/.zprofile b/files/zsh/.zprofile new file mode 100755 index 0000000..3a59b32 --- /dev/null +++ b/files/zsh/.zprofile @@ -0,0 +1,17 @@ +for file in ~/.config/environment.d/*.conf +do + while read -r line + do + varname=${line%=*} + value=${${(e)line#*=}//\"} + export $varname="${value}" + done < $file +done + +#notmutch +export NOTMUCH_CONFIG="${HOME}/.config/notmuch/config" +export PATH=~/.local/bin:$PATH +unset DEBUGINFOD_URLS +if [[ ! $DISPLAY && $XDG_VTNR -eq 1 ]]; then + exec ~/.local/bin/sway.sh +fi diff --git a/files/zsh/.zshrc b/files/zsh/.zshrc new file mode 100755 index 0000000..5fda44d --- /dev/null +++ b/files/zsh/.zshrc @@ -0,0 +1,57 @@ +SAVEHIST=10000 +HISTSIZE=10000 +HISTFILE="$HOME/.local/share/zsh/zhistory" + + +setopt EXTENDED_HISTORY +setopt APPEND_HISTORY +setopt HIST_FIND_NO_DUPS +setopt HIST_EXPIRE_DUPS_FIRST +setopt HIST_IGNORE_SPACE +setopt HIST_VERIFY +setopt SHARE_HISTORY +setopt HIST_IGNORE_DUPS +setopt INC_APPEND_HISTORY +setopt HIST_REDUCE_BLANKS +# Activate extended gobbing +setopt extended_glob + +# Install Zinit +ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit/zinit.git" +[ ! -d $ZINIT_HOME ] && mkdir -p "$(dirname $ZINIT_HOME)" +[ ! -d $ZINIT_HOME/.git ] && git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME" +source "${ZINIT_HOME}/zinit.zsh" +autoload -Uz _zinit +(( ${+_comps} )) && _comps[zinit]=_zinit + + +zinit ice pick"async.sh" src"scripts/base16-default-dark.sh" +zinit load "chriskempson/base16-shell" + +zinit ice wait"1a" lucid +zinit light "zdharma/fast-syntax-highlighting" + +# Some completions +zinit ice wait"0" blockf lucid +zinit load "zsh-users/zsh-completions" + +# Apply Pure theme +zinit ice pick"async.zsh" src"pure.zsh" +zinit light "sindresorhus/pure" + +#Search +zinit light "zdharma/history-search-multi-word" +zinit light "zsh-users/zsh-history-substring-search" + +autoload -Uz compinit && compinit +zinit cdreplay -q + +# Keymap +bindkey '^[[A' history-substring-search-up +bindkey '^[[B' history-substring-search-down + +# dirscolors +if [ -f ~/.dir_colors ]; then + eval `dircolors ~/.dir_colors` +fi +