Copy config removing sensitive data
This commit is contained in:
parent
d15767a938
commit
490e0c86c5
89 changed files with 12214 additions and 0 deletions
1
.bash_logout
Symbolic link
1
.bash_logout
Symbolic link
|
@ -0,0 +1 @@
|
|||
bash_logout
|
1
.bash_profile
Symbolic link
1
.bash_profile
Symbolic link
|
@ -0,0 +1 @@
|
|||
bash_profile
|
1
.bashrc
Symbolic link
1
.bashrc
Symbolic link
|
@ -0,0 +1 @@
|
|||
bashrc
|
1
.bin
Symbolic link
1
.bin
Symbolic link
|
@ -0,0 +1 @@
|
|||
bin
|
1
.config
Symbolic link
1
.config
Symbolic link
|
@ -0,0 +1 @@
|
|||
config
|
1
.conky
Symbolic link
1
.conky
Symbolic link
|
@ -0,0 +1 @@
|
|||
.config/conky/
|
1
.gitconfig
Symbolic link
1
.gitconfig
Symbolic link
|
@ -0,0 +1 @@
|
|||
gitconfig
|
1
.local
Symbolic link
1
.local
Symbolic link
|
@ -0,0 +1 @@
|
|||
local
|
33
Templates/article.latex
Normal file
33
Templates/article.latex
Normal file
|
@ -0,0 +1,33 @@
|
|||
\documentclass[12pt]{article}
|
||||
|
||||
\usepackage{geometry} % Required for adjusting page dimensions
|
||||
\usepackage{amsmath}
|
||||
\usepackage{amsthm}
|
||||
\usepackage{amssymb}
|
||||
\usepackage{amsfonts}
|
||||
\usepackage{longtable}
|
||||
\usepackage{booktabs}
|
||||
\usepackage[UKenglish]{babel}
|
||||
\geometry{
|
||||
paper=a4paper, % Change to letterpaper for US letter
|
||||
top=3cm, % Top margin
|
||||
bottom=1.5cm, % Bottom margin
|
||||
left=4.5cm, % Left margin
|
||||
right=4.5cm, % Right margin
|
||||
%showframe, % Uncomment to show how the type block is set on the page
|
||||
}
|
||||
|
||||
\title{<++>}
|
||||
\author{Jonathan Hodgson}
|
||||
\date{\today}
|
||||
|
||||
|
||||
\begin{document}
|
||||
\maketitle
|
||||
|
||||
|
||||
\section{<++>}
|
||||
<++>
|
||||
|
||||
|
||||
\end{document}
|
12
Templates/html
Normal file
12
Templates/html
Normal file
|
@ -0,0 +1,12 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title><++></title>
|
||||
<++>
|
||||
</head>
|
||||
<body>
|
||||
<++>
|
||||
</body>
|
||||
</html>
|
||||
|
1
Templates/latex
Symbolic link
1
Templates/latex
Symbolic link
|
@ -0,0 +1 @@
|
|||
article.latex
|
37
Templates/letter.latex
Normal file
37
Templates/letter.latex
Normal file
|
@ -0,0 +1,37 @@
|
|||
\documentclass[12pt,stdletter,orderfromtodate,sigleft,a4paper,dateleft,addrfromemail,addrfromphone]{newlfm}
|
||||
\usepackage{blindtext, xfrac}
|
||||
\usepackage{longtable}
|
||||
\usepackage{booktabs}
|
||||
\usepackage[UKenglish]{babel}
|
||||
|
||||
\newcommand{\latex}{\LaTeX}
|
||||
|
||||
\newlfmP{dateskipbefore=20pt}
|
||||
\newlfmP{sigsize=20pt}
|
||||
\newlfmP{sigskipbefore=50pt}
|
||||
|
||||
\newlfmP{Headlinewd=0pt,Footlinewd=0pt}
|
||||
|
||||
\namefrom{Jonathan Hodgson}
|
||||
\addrfrom{Cherrydown \\ The Meadows \\ Station Road \\ Cotton \\ Stowmarket \\ Suffolk \\ IP14 4NZ \\
|
||||
}
|
||||
\phonefrom{07753 492267}
|
||||
\emailfrom{jonathan@lunarweb.co.uk}
|
||||
|
||||
\nameto{<+Recipient Name+>}
|
||||
\addrto{%
|
||||
<+Recipient Address+>
|
||||
}
|
||||
|
||||
\dateset{\today}
|
||||
\regarding{<+Subject+>}
|
||||
|
||||
\greetto{<+Dear Sir or Madam+>}
|
||||
\closeline{Yours sincerely,} %Sincerly if you know the name. Failthfully if you don't
|
||||
|
||||
\begin{document}
|
||||
\begin{newlfm}
|
||||
|
||||
<+Message+>
|
||||
\end{newlfm}
|
||||
\end{document}
|
60
Templates/oldletter.latex
Normal file
60
Templates/oldletter.latex
Normal file
|
@ -0,0 +1,60 @@
|
|||
%----------------------------------------------------------------------------------------
|
||||
% DOCUMENT CONFIGURATION
|
||||
%----------------------------------------------------------------------------------------
|
||||
|
||||
\documentclass[12pt,a4paper,stdletter,sigleft]{newlfm} % 10pt font size default, 11pt and 12pt are also possible
|
||||
|
||||
|
||||
%\longindentation=0pt % Un-commenting this line will push the closing "Sincerely," to the left of the page
|
||||
|
||||
|
||||
\usepackage[T1]{fontenc} % Output font encoding for international characters
|
||||
\usepackage[utf8]{inputenc} % Required for inputting international characters
|
||||
\usepackage[UKenglish]{babel}
|
||||
\usepackage{stix} % Use the Stix font by default
|
||||
|
||||
\usepackage{microtype} % Improve justification
|
||||
|
||||
%----------------------------------------------------------------------------------------
|
||||
% YOUR NAME & ADDRESS SECTION
|
||||
%----------------------------------------------------------------------------------------
|
||||
|
||||
\signature{Jonathan Hodgson} % Your name for the signature at the bottom
|
||||
|
||||
\address{Cherrydown \\ The Meadows \\ Station Road \\ Cotton \\ Stowmarket \\ Suffolk \\ IP14 4NZ \\ 07753 492267} % Your address and phone number
|
||||
|
||||
%----------------------------------------------------------------------------------------
|
||||
|
||||
\begin{document}
|
||||
|
||||
%----------------------------------------------------------------------------------------
|
||||
% ADDRESSEE SECTION
|
||||
%----------------------------------------------------------------------------------------
|
||||
|
||||
\begin{letter}{<++>} % Name/title of the addressee{Recipient Name \\ Recipient Address}
|
||||
|
||||
%----------------------------------------------------------------------------------------
|
||||
% LETTER CONTENT SECTION
|
||||
%----------------------------------------------------------------------------------------
|
||||
|
||||
\opening{\textbf{Dear Sir or Madam,}}
|
||||
|
||||
<++>
|
||||
|
||||
Thank you for your time and consideration.
|
||||
|
||||
I look forward to your reply.
|
||||
|
||||
\vspace{2\parskip} % Extra whitespace for aesthetics
|
||||
\closing{Yours failthfully,}
|
||||
\vspace{2\parskip} % Extra whitespace for aesthetics
|
||||
|
||||
%\ps{P.S. You can find additional information attached to this letter.} % Postscript text, comment this line to remove it
|
||||
|
||||
%\encl{Copyright permission form} % Enclosures with the letter, comment this line to remove it
|
||||
|
||||
%----------------------------------------------------------------------------------------
|
||||
|
||||
\end{letter}
|
||||
|
||||
\end{document}
|
3
bash_logout
Normal file
3
bash_logout
Normal file
|
@ -0,0 +1,3 @@
|
|||
#
|
||||
# ~/.bash_logout
|
||||
#
|
10
bash_profile
Normal file
10
bash_profile
Normal file
|
@ -0,0 +1,10 @@
|
|||
#
|
||||
# ~/.bash_profile
|
||||
#
|
||||
|
||||
|
||||
[[ -f ~/.bashrc ]] && . ~/.bashrc
|
||||
|
||||
|
||||
|
||||
|
344
bashrc
Normal file
344
bashrc
Normal file
|
@ -0,0 +1,344 @@
|
|||
#
|
||||
# ~/.bashrc
|
||||
#
|
||||
|
||||
# If not running interactively, don't do anything
|
||||
[[ $- != *i* ]] && return
|
||||
|
||||
export TERMINAL=/usr/bin/konsole
|
||||
export TERM=xterm-256color
|
||||
export PATH=~/.bin:/opt/lampp/bin:$PATH:.
|
||||
export EDITOR=vim
|
||||
export CDPATH=.:~:~/Sites
|
||||
|
||||
#Ruby things
|
||||
#GEM_HOME=$(ls -t -U | ruby -e 'puts Gem.user_dir')
|
||||
#GEM_PATH=$GEM_HOME
|
||||
#export PATH=$PATH:$GEM_HOME/bin
|
||||
#export GEM_HOME=$(ruby -e 'print Gem.user_dir')
|
||||
|
||||
big-chromium () {
|
||||
chromium --force-device-scale-factor=$1
|
||||
}
|
||||
|
||||
big-new-chromium () {
|
||||
chromium-snapshot-bin --force-device-scale-factor=$1
|
||||
}
|
||||
|
||||
#Swap two files
|
||||
function swap() {
|
||||
mv $1 $1._tmp;
|
||||
mv $2 $1;
|
||||
mv $1._tmp $2;
|
||||
}
|
||||
|
||||
function old() {
|
||||
mv "$1" "$1.old"
|
||||
}
|
||||
|
||||
#This prints the current working directory after doing a cd"
|
||||
cdls(){
|
||||
cd "$@"
|
||||
ls -F --color=auto
|
||||
}
|
||||
|
||||
#Takes you to the aquarius theme
|
||||
function aquarius() {
|
||||
public_html=${PWD%/public_html*}/public_html
|
||||
if [ -d $public_html ]; then
|
||||
theme=$public_html/wp-content/themes
|
||||
if [ -d $theme ]; then
|
||||
cdls $theme/aquarius
|
||||
else
|
||||
echo " Can't find theme folder "
|
||||
fi
|
||||
else
|
||||
echo " Can't find public_html folder."
|
||||
fi
|
||||
}
|
||||
|
||||
#Takes you to the child theme
|
||||
function theme() {
|
||||
public_html=${PWD%/public_html*}/public_html
|
||||
if [ -d $public_html ]; then
|
||||
theme=$public_html/wp-content/themes
|
||||
if [ -d $theme ]; then
|
||||
child=$(ls -d $theme/*/ | grep -v "$theme\/aquarius" | grep -v "$theme\/twenty*" | grep -v "$theme\/barelycorporate" -m 1)
|
||||
cdls $child
|
||||
else
|
||||
echo " Can't find theme folder "
|
||||
fi
|
||||
else
|
||||
echo " Can't find public_html folder."
|
||||
fi
|
||||
}
|
||||
|
||||
########################################
|
||||
## ##
|
||||
## Search Functions ##
|
||||
## ##
|
||||
########################################
|
||||
|
||||
#These search functions use grep to search all sub-folders of the current working directory
|
||||
searchjs() {
|
||||
# This will search through .js and .es6 files but won't search minified files
|
||||
grep -r -i -n --color="auto" --include=\*.{js,es6} --exclude=\*.min.js "$1" .
|
||||
}
|
||||
searchcss() {
|
||||
# This will search through .css and .less files but won't search minified files
|
||||
grep -r -i -n --color="auto" --include=\*.{css,less} --exclude=\*.min.css "$1" .
|
||||
}
|
||||
searchphp() {
|
||||
grep -r -i -n --color="auto" --include="*.php" "$1" .
|
||||
}
|
||||
|
||||
# This makes cd use function above
|
||||
alias cd="cdls"
|
||||
|
||||
# These alow me to easily set the file and folder permissions for a wordpress instilation.
|
||||
alias folder-perms='find . -type d -not -path "./.git/*" -not -path "./.git" -exec chmod 775 {} \;'
|
||||
alias file-perms='find . -type f -not -path "./.git/*" -not -path "./.git" -exec chmod 664 {} \;'
|
||||
alias wp-perms='folder-perms; file-perms'
|
||||
|
||||
# Make ls add Indicators to file names and colour the output
|
||||
alias ls='ls -F --color=auto'
|
||||
|
||||
# Make tree add indicators and color
|
||||
alias tree='tree -F -C'
|
||||
|
||||
#Start cups
|
||||
alias cups='sudo systemctl start org.cups.cupsd.service'
|
||||
|
||||
#Start network manager
|
||||
alias net='sudo systemctl start NetworkManager.service'
|
||||
|
||||
# Alias lampp because I don't want to clog my PATH
|
||||
alias lampp='/opt/lampp/lampp'
|
||||
alias glampp='gksudo /opt/lampp/manager-linux-x64.run'
|
||||
|
||||
#Always make all directories necesary
|
||||
alias mkdir='mkdir -p'
|
||||
|
||||
# Shortcut for rewriting wp permalinks
|
||||
alias perms='wp rewrite flush'
|
||||
|
||||
#Clear terminal and screenfetch
|
||||
alias cls='clear; screenfetch'
|
||||
|
||||
#An alias for my standard less configuration
|
||||
#I don't set it to lessc because sometimes I don't use this config and I always forget how to ignore an alias
|
||||
#alias myless='lessc --clean-css --source-map-basepath=/home/jonathan/Sites/charts/public_html --source-map --autoprefix="last 3 versions, ie >= 9" styles.less styles.min.css'
|
||||
alias myless='lessc --clean-css --source-map --autoprefix="last 3 versions, ie >= 9" styles.less styles.min.css'
|
||||
|
||||
# Git shortcuts
|
||||
alias status='git status '
|
||||
alias st='git status'
|
||||
alias checkout='git checkout'
|
||||
alias ch='git checkout'
|
||||
alias push='git push '
|
||||
alias pull='git pull '
|
||||
alias bb='git open'
|
||||
|
||||
# Always make grep ouput color
|
||||
alias grep="grep --color=auto"
|
||||
|
||||
# Shortcuts to sites folder
|
||||
alias sites="cd ~/Sites"
|
||||
alias s="cd ~/Sites"
|
||||
|
||||
# Shortcuts to documents folder
|
||||
alias documents="cd ~/Documents/"
|
||||
alias d="cd ~/Documents/"
|
||||
|
||||
# Shortcuts to home folder
|
||||
alias home="cd ~/"
|
||||
alias ~="cd ~/"
|
||||
|
||||
#Goes up to the public_html folder
|
||||
alias ph='cd ${PWD%/public_html*}/public_html'
|
||||
|
||||
# Quit the terminal using :q (The same as Vi/Vim)
|
||||
alias :q='exit;'
|
||||
|
||||
# Not sure why and how but this makes sudo work with my aliases
|
||||
alias sudo='sudo '
|
||||
|
||||
#Make the cal command default to start on Sunday
|
||||
alias cal='cal -s'
|
||||
|
||||
# update the third party wordpress plugins we are mirroring
|
||||
alias u3p='update3rdPartyPlugins'
|
||||
|
||||
# Edit my bashrc
|
||||
alias brc='$EDITOR ~/.bashrc'
|
||||
|
||||
# Edit my vimrc
|
||||
alias vrc='$EDITOR ~/.vimrc'
|
||||
|
||||
# Go to my .vim folder
|
||||
alias .v='cd ~/.vim/'
|
||||
# Go to my dotfiles folder
|
||||
if [[ $(hostname) == "jonathansnuc" ]]; then
|
||||
#Please don't judge - This is a reminant from first days of version controlling dotfiles
|
||||
alias df='cd ~/Downloads/laptopConfig/'
|
||||
else
|
||||
alias df='cd ~/.dotfiles'
|
||||
fi
|
||||
|
||||
#Old ps1
|
||||
#PS1='[\u@\h \W]\$ '
|
||||
|
||||
|
||||
# bash completion for the `wp` command
|
||||
_wp_complete() {
|
||||
local OLD_IFS="$IFS"
|
||||
local cur=${COMP_WORDS[COMP_CWORD]}
|
||||
IFS=$'\n'; # want to preserve spaces at the end
|
||||
local opts="$(wp cli completions --line="$COMP_LINE" --point="$COMP_POINT")"
|
||||
if [[ "$opts" =~ \<file\>\s* ]]
|
||||
then
|
||||
COMPREPLY=( $(compgen -f -- $cur) )
|
||||
elif [[ $opts = "" ]]
|
||||
then
|
||||
COMPREPLY=( $(compgen -f -- $cur) )
|
||||
else
|
||||
COMPREPLY=( ${opts[*]} )
|
||||
fi
|
||||
IFS="$OLD_IFS"
|
||||
return 0
|
||||
}
|
||||
complete -o nospace -F _wp_complete wp
|
||||
|
||||
export GIT_PS1_SHOWDIRTYSTATE=1 # Show the +(Staged) or *(unstaged) next to branch name for
|
||||
export GIT_PS1_SHOWUNTRACKEDFILES=1 # Show the %(Untracked) next to branch name
|
||||
export GIT_PS1_SHOWUPSTREAM="auto"
|
||||
|
||||
source /usr/share/git/completion/git-completion.bash
|
||||
source /usr/share/git/completion/git-prompt.sh
|
||||
|
||||
############################################
|
||||
## ##
|
||||
## Colours for output ##
|
||||
## ##
|
||||
############################################
|
||||
#{{{
|
||||
# Reset
|
||||
Color_Off="\[\033[0m\]" # Text Reset
|
||||
|
||||
# Regular Colors
|
||||
Black="\[\033[0;30m\]" # Black
|
||||
Red="\[\033[0;31m\]" # Red
|
||||
Green="\[\033[0;32m\]" # Green
|
||||
Yellow="\[\033[0;33m\]" # Yellow
|
||||
Blue="\[\033[0;34m\]" # Blue
|
||||
Purple="\[\033[0;35m\]" # Purple
|
||||
Cyan="\[\033[0;36m\]" # Cyan
|
||||
White="\[\033[0;37m\]" # White
|
||||
|
||||
# Bold
|
||||
BBlack="\[\033[1;30m\]" # Black
|
||||
BRed="\[\033[1;31m\]" # Red
|
||||
BGreen="\[\033[1;32m\]" # Green
|
||||
BYellow="\[\033[1;33m\]" # Yellow
|
||||
BBlue="\[\033[1;34m\]" # Blue
|
||||
BPurple="\[\033[1;35m\]" # Purple
|
||||
BCyan="\[\033[1;36m\]" # Cyan
|
||||
BWhite="\[\033[1;37m\]" # White
|
||||
|
||||
# Underline
|
||||
UBlack="\[\033[4;30m\]" # Black
|
||||
URed="\[\033[4;31m\]" # Red
|
||||
UGreen="\[\033[4;32m\]" # Green
|
||||
UYellow="\[\033[4;33m\]" # Yellow
|
||||
UBlue="\[\033[4;34m\]" # Blue
|
||||
UPurple="\[\033[4;35m\]" # Purple
|
||||
UCyan="\[\033[4;36m\]" # Cyan
|
||||
UWhite="\[\033[4;37m\]" # White
|
||||
|
||||
# Background
|
||||
On_Black="\[\033[40m\]" # Black
|
||||
On_Red="\[\033[41m\]" # Red
|
||||
On_Green="\[\033[42m\]" # Green
|
||||
On_Yellow="\[\033[43m\]" # Yellow
|
||||
On_Blue="\[\033[44m\]" # Blue
|
||||
On_Purple="\[\033[45m\]" # Purple
|
||||
On_Cyan="\[\033[46m\]" # Cyan
|
||||
On_White="\[\033[47m\]" # White
|
||||
|
||||
# High Intensty
|
||||
IBlack="\[\033[0;90m\]" # Black
|
||||
IRed="\[\033[0;91m\]" # Red
|
||||
IGreen="\[\033[0;92m\]" # Green
|
||||
IYellow="\[\033[0;93m\]" # Yellow
|
||||
IBlue="\[\033[0;94m\]" # Blue
|
||||
IPurple="\[\033[0;95m\]" # Purple
|
||||
ICyan="\[\033[0;96m\]" # Cyan
|
||||
IWhite="\[\033[0;97m\]" # White
|
||||
|
||||
# Bold High Intensty
|
||||
BIBlack="\[\033[1;90m\]" # Black
|
||||
BIRed="\[\033[1;91m\]" # Red
|
||||
BIGreen="\[\033[1;92m\]" # Green
|
||||
BIYellow="\[\033[1;93m\]" # Yellow
|
||||
BIBlue="\[\033[1;94m\]" # Blue
|
||||
BIPurple="\[\033[1;95m\]" # Purple
|
||||
BICyan="\[\033[1;96m\]" # Cyan
|
||||
BIWhite="\[\033[1;97m\]" # White
|
||||
|
||||
# High Intensty backgrounds
|
||||
On_IBlack="\[\033[0;100m\]" # Black
|
||||
On_IRed="\[\033[0;101m\]" # Red
|
||||
On_IGreen="\[\033[0;102m\]" # Green
|
||||
On_IYellow="\[\033[0;103m\]" # Yellow
|
||||
On_IBlue="\[\033[0;104m\]" # Blue
|
||||
On_IPurple="\[\033[10;95m\]" # Purple
|
||||
On_ICyan="\[\033[0;106m\]" # Cyan
|
||||
On_IWhite="\[\033[0;107m\]" # White
|
||||
#}}}
|
||||
# Various variables you might want for your PS1 prompt instead
|
||||
Time12h="\T"
|
||||
Time12a="\@"
|
||||
PathShort="\w"
|
||||
PathFull="\W"
|
||||
NewLine="\n"
|
||||
Jobs="\j"
|
||||
Username="\u"
|
||||
|
||||
# Default PS1
|
||||
# \u@\h [\w]$
|
||||
export PS1=$Username" "$Yellow$PathShort$Color_Off'$(git branch &>/dev/null;\
|
||||
if [ $? -eq 0 ]; then \
|
||||
echo "$(echo `git status` | grep "nothing to commit" > /dev/null 2>&1; \
|
||||
if [ "$?" -eq "0" ]; then \
|
||||
echo "'$Green'"$(__git_ps1 " (%s)");\
|
||||
else \
|
||||
echo "'$Red'"$(__git_ps1 " (%s)");\
|
||||
fi)"; \
|
||||
fi)'$Color_Off'\$ '
|
||||
|
||||
# export PS1="\[\033[0;97m\]\u \[\033[0;33m\]\w"'$(git branch &>/dev/null;\
|
||||
# if [ $? -eq 0 ]; then \
|
||||
# echo "$(echo `git status` | grep "nothing to commit" > /dev/null 2>&1; \
|
||||
# if [ "$?" -eq "0" ]; then \
|
||||
# echo "\[\033[0;32m\]"$(__git_ps1 " (%s)");\
|
||||
# else \
|
||||
# echo "\[\033[0;91m\]"$(__git_ps1 " (%s)");\
|
||||
# fi)"; \
|
||||
# fi)\[\033[0m\]\$ '
|
||||
function _update_ps1() {
|
||||
export PS1="$(~/.config/powerline-shell/powerline-shell.py $? 2> /dev/null)"
|
||||
}
|
||||
|
||||
if [ "$TERM" != "linux" ]; then
|
||||
PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
|
||||
fi
|
||||
|
||||
[ -r "$HOME/.smartcd_config" ] && ( [ -n $BASH_VERSION ] || [ -n $ZSH_VERSION ] ) && source ~/.smartcd_config
|
||||
|
||||
#If on work computer, cd into sites
|
||||
|
||||
clear
|
||||
screenfetch
|
||||
set -o vi
|
||||
|
||||
# vim: foldmethod=marker
|
26
bin/addhost
Executable file
26
bin/addhost
Executable file
|
@ -0,0 +1,26 @@
|
|||
#!/usr/bin/bash
|
||||
if [ $1 ]; then
|
||||
case $1 in
|
||||
-h|--help)
|
||||
echo "Add entrys to your hosts file"
|
||||
echo ""
|
||||
echo -e "addhost domain.com\t\t\t\tadds domain.com to your hosts and points to local machine"
|
||||
echo -e "addhost (alex|aaron|jonathan) domain.com\tadds domain.com to your hosts and points to persons machine"
|
||||
;;
|
||||
alex)
|
||||
echo -e "10.0.1.201\t$2" | sudo tee -a /etc/hosts
|
||||
;;
|
||||
aaron)
|
||||
echo -e "10.0.1.202\t$2" | sudo tee -a /etc/hosts
|
||||
;;
|
||||
jonathan)
|
||||
echo -e "10.0.1.203\t$2" | sudo tee -a /etc/hosts
|
||||
;;
|
||||
*)
|
||||
echo -e "127.0.0.1\t$1" | sudo tee -a /etc/hosts
|
||||
;;
|
||||
esac
|
||||
else
|
||||
echo "You need to add at least a domain"
|
||||
fi
|
||||
|
3
bin/capslock
Executable file
3
bin/capslock
Executable file
|
@ -0,0 +1,3 @@
|
|||
#!/usr/bin/bash
|
||||
v=$(xset -q | grep Caps)
|
||||
echo ${v:7:17}
|
22
bin/code-to-pdf
Executable file
22
bin/code-to-pdf
Executable file
|
@ -0,0 +1,22 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
TITLE="$1"
|
||||
shift
|
||||
|
||||
enscript -1 --media=A4 \
|
||||
--toc \
|
||||
--header '%H - $N | | page $% of $= in file $v' \
|
||||
--font "Menlo-Regular@8.5" \
|
||||
--header-font "Menlo-Bold@10" \
|
||||
--margins=60:60:18:60 \
|
||||
--fancy-header=sjl \
|
||||
--title $TITLE \
|
||||
--baselineskip 3 \
|
||||
--line-numbers \
|
||||
--highlight \
|
||||
--color \
|
||||
--mark-wrapped-lines=arrow \
|
||||
-p - \
|
||||
--word-wrap $* \
|
||||
| ps2pdf -i -o code.pdf
|
||||
|
157
bin/csvtomd
Executable file
157
bin/csvtomd
Executable file
|
@ -0,0 +1,157 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
"""
|
||||
csvtomd 0.2.1
|
||||
|
||||
Convert your CSV files into Markdown tables.
|
||||
|
||||
More info: http://github.com/mplewis/csvtomd
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import csv
|
||||
import sys
|
||||
|
||||
|
||||
def check_negative(value):
|
||||
try:
|
||||
ivalue = int(value)
|
||||
except ValueError:
|
||||
raise argparse.ArgumentTypeError(
|
||||
'"%s" must be an integer' % value)
|
||||
if ivalue < 0:
|
||||
raise argparse.ArgumentTypeError(
|
||||
'"%s" must not be a negative value' % value)
|
||||
return ivalue
|
||||
|
||||
|
||||
def pad_to(unpadded, target_len):
|
||||
"""
|
||||
Pad a string to the target length in characters, or return the original
|
||||
string if it's longer than the target length.
|
||||
"""
|
||||
under = target_len - len(unpadded)
|
||||
if under <= 0:
|
||||
return unpadded
|
||||
return unpadded + (' ' * under)
|
||||
|
||||
|
||||
def normalize_cols(table):
|
||||
"""
|
||||
Pad short rows to the length of the longest row to help render "jagged"
|
||||
CSV files
|
||||
"""
|
||||
longest_row_len = max([len(row) for row in table])
|
||||
for row in table:
|
||||
while len(row) < longest_row_len:
|
||||
row.append('')
|
||||
return table
|
||||
|
||||
|
||||
def pad_cells(table):
|
||||
"""Pad each cell to the size of the largest cell in its column."""
|
||||
col_sizes = [max(map(len, col)) for col in zip(*table)]
|
||||
for row in table:
|
||||
for cell_num, cell in enumerate(row):
|
||||
row[cell_num] = pad_to(cell, col_sizes[cell_num])
|
||||
return table
|
||||
|
||||
|
||||
def horiz_div(col_widths, horiz, vert, padding):
|
||||
"""
|
||||
Create the column dividers for a table with given column widths.
|
||||
|
||||
col_widths: list of column widths
|
||||
horiz: the character to use for a horizontal divider
|
||||
vert: the character to use for a vertical divider
|
||||
padding: amount of padding to add to each side of a column
|
||||
"""
|
||||
horizs = [horiz * w for w in col_widths]
|
||||
div = ''.join([padding * horiz, vert, padding * horiz])
|
||||
return div.join(horizs)
|
||||
|
||||
|
||||
def add_dividers(row, divider, padding):
|
||||
"""Add dividers and padding to a row of cells and return a string."""
|
||||
div = ''.join([padding * ' ', divider, padding * ' '])
|
||||
return div.join(row)
|
||||
|
||||
|
||||
def md_table(table, *, padding=1, divider='|', header_div='-'):
|
||||
"""
|
||||
Convert a 2D array of items into a Markdown table.
|
||||
|
||||
padding: the number of padding spaces on either side of each divider
|
||||
divider: the vertical divider to place between columns
|
||||
header_div: the horizontal divider to place between the header row and
|
||||
body cells
|
||||
"""
|
||||
table = normalize_cols(table)
|
||||
table = pad_cells(table)
|
||||
header = table[0]
|
||||
body = table[1:]
|
||||
|
||||
col_widths = [len(cell) for cell in header]
|
||||
horiz = horiz_div(col_widths, header_div, divider, padding)
|
||||
|
||||
header = add_dividers(header, divider, padding)
|
||||
body = [add_dividers(row, divider, padding) for row in body]
|
||||
|
||||
table = [header, horiz]
|
||||
table.extend(body)
|
||||
table = [row.rstrip() for row in table]
|
||||
return '\n'.join(table)
|
||||
|
||||
|
||||
def csv_to_table(file, delimiter):
|
||||
return list(csv.reader(file, delimiter=delimiter))
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description='Read one or more CSV files and output their contents in '
|
||||
'the form of Markdown tables.')
|
||||
parser.add_argument('files', metavar='csv_file', type=str, nargs='*',
|
||||
default=['-'],
|
||||
help="One or more CSV files to be converted. "
|
||||
"Use - for stdin.")
|
||||
parser.add_argument('-n', '--no-filenames', action='store_false',
|
||||
dest='show_filenames',
|
||||
help="Don't display filenames when outputting "
|
||||
"multiple Markdown tables.")
|
||||
parser.add_argument('-p', '--padding', type=check_negative, default=2,
|
||||
help="The number of spaces to add between table cells "
|
||||
"and column dividers. Default is 2 spaces.")
|
||||
parser.add_argument('-d', '--delimiter', default=',',
|
||||
help='The delimiter to use when parsing CSV data. '
|
||||
'Default is "%(default)s"')
|
||||
|
||||
args = parser.parse_args()
|
||||
first = True
|
||||
|
||||
if '-' in args.files and len(args.files) > 1:
|
||||
print('Standard input can only be used alone.', file=sys.stderr)
|
||||
exit(1)
|
||||
for file_num, filename in enumerate(args.files):
|
||||
# Print space between consecutive tables
|
||||
if not first:
|
||||
print('')
|
||||
else:
|
||||
first = False
|
||||
# Read the CSV files
|
||||
if filename == '-':
|
||||
table = csv_to_table(sys.stdin, args.delimiter)
|
||||
else:
|
||||
with open(filename, 'rU') as f:
|
||||
table = csv_to_table(f, args.delimiter)
|
||||
# Print filename for each table if --no-filenames wasn't passed and
|
||||
# more than one CSV was provided
|
||||
file_count = len(args.files)
|
||||
if args.show_filenames and file_count > 1:
|
||||
print(filename + '\n')
|
||||
# Generate and print Markdown table
|
||||
print(md_table(table, padding=args.padding))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
80
bin/extract
Executable file
80
bin/extract
Executable file
|
@ -0,0 +1,80 @@
|
|||
#!/usr/bin/bash
|
||||
|
||||
if [ -f $1 ] ; then
|
||||
case $1 in
|
||||
*.tar.bz2)
|
||||
if [ "$2" ]; then
|
||||
tar xvjf $1 -C $2
|
||||
else
|
||||
tar xvjf $1
|
||||
fi
|
||||
;;
|
||||
*.tar.gz)
|
||||
if [ "$2" ]; then
|
||||
tar xvzf $1 -C $2
|
||||
else
|
||||
tar xvzf $1
|
||||
fi
|
||||
;;
|
||||
*.bz2)
|
||||
if [ "$2" ]; then
|
||||
bunzip -c $1 > $2
|
||||
else
|
||||
bunzip $1
|
||||
fi
|
||||
;;
|
||||
#*.rar) rar x $1 ;;
|
||||
*.gz)
|
||||
if [ "$2" ]; then
|
||||
gunzip -c $1 > $2
|
||||
else
|
||||
gunzip $1
|
||||
fi
|
||||
;;
|
||||
*.tar)
|
||||
if [ "$2" ]; then
|
||||
tar xvf $1 -C $2
|
||||
else
|
||||
tar xvf $1
|
||||
fi
|
||||
;;
|
||||
*.tbz2)
|
||||
if [ "$2" ]; then
|
||||
tar xvjf $1 -C $2
|
||||
else
|
||||
tar xvjf $1
|
||||
fi
|
||||
;;
|
||||
*.tgz)
|
||||
if [ "$2" ]; then
|
||||
tar xvzf $1 -C $2
|
||||
else
|
||||
tar xvzf $1
|
||||
fi
|
||||
;;
|
||||
*.zip)
|
||||
if [ "$2" ]; then
|
||||
unzip $1 -d $2
|
||||
else
|
||||
unzip $1
|
||||
fi
|
||||
;;
|
||||
*.Z)
|
||||
if [ "$2" ]; then
|
||||
uncompress -c $1 > $2
|
||||
else
|
||||
uncompress $1
|
||||
fi
|
||||
;;
|
||||
*.7z)
|
||||
if [ "$2" ]; then
|
||||
7z x $1 -o$2
|
||||
else
|
||||
7z x $1
|
||||
fi
|
||||
;;
|
||||
*) echo "don't know how to extract '$1'..." ;;
|
||||
esac
|
||||
else
|
||||
echo "'$1' is not a valid file!"
|
||||
fi
|
75
bin/git-cleaner
Executable file
75
bin/git-cleaner
Executable file
|
@ -0,0 +1,75 @@
|
|||
#!/usr/bin/bash
|
||||
|
||||
function help() {
|
||||
cat <<HELP
|
||||
Git Clean
|
||||
https://jonathanh.co.uk
|
||||
|
||||
Some code came from Ben Alman
|
||||
http://benalman.com/
|
||||
|
||||
|
||||
Usage: $(basename "$0") [command]
|
||||
|
||||
Commands:
|
||||
clean Remove current unstaged changes/untracked files**
|
||||
cleanall Remove all saved tags, unstaged changes and untracked files**
|
||||
|
||||
** This action is destructive and cannot be undone!
|
||||
|
||||
Description:
|
||||
Cleans unstaged changes and untracked files
|
||||
|
||||
Copyright (c) 2014 "Cowboy" Ben Alman
|
||||
Licensed under the MIT license.
|
||||
http://benalman.com/about/license/
|
||||
HELP
|
||||
}
|
||||
|
||||
function usage() {
|
||||
echo "Usage: $(basename "$0") [clean | cleanall]"
|
||||
}
|
||||
|
||||
function git_head_sha() {
|
||||
git rev-parse --short HEAD
|
||||
}
|
||||
|
||||
# Get absolute path to root of Git repo
|
||||
function git_repo_toplevel() {
|
||||
git rev-parse --show-toplevel
|
||||
}
|
||||
|
||||
# Clean (permanently) current changes and remove the current saved tag
|
||||
function clean() {
|
||||
local head_sha=$(git_head_sha)
|
||||
git tag -d "git-jump-$head_sha" &>/dev/null
|
||||
if [[ $? == 0 ]]; then
|
||||
echo "Removed stored data for commit $head_sha."
|
||||
fi
|
||||
local repo_root="$(git_repo_toplevel)"
|
||||
git reset HEAD "$repo_root" >/dev/null
|
||||
git clean -f -d -q -- "$repo_root" >/dev/null
|
||||
git checkout -- "$repo_root" >/dev/null
|
||||
echo "Unstaged changes and untracked files removed."
|
||||
}
|
||||
|
||||
# Remove (permanently) all saved tags
|
||||
function clean_all_tags() {
|
||||
git for-each-ref refs/tags --format='%(refname:short)' | \
|
||||
while read tag; do
|
||||
if [[ "$tag" =~ ^git-jump- ]]; then
|
||||
git tag -d "$tag"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Handle CLI arguments
|
||||
if [[ "$1" == "clean" ]]; then
|
||||
clean
|
||||
elif [[ "$1" == "cleanall" ]]; then
|
||||
clean_all_tags
|
||||
clean
|
||||
else
|
||||
usage
|
||||
exit 1
|
||||
fi
|
24
bin/git-delete-submodule
Executable file
24
bin/git-delete-submodule
Executable file
|
@ -0,0 +1,24 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
test -z "$1" && echo "submodule required" 1>&2 && exit 1
|
||||
#cd "$(git root)"
|
||||
test ! -f .gitmodules && echo ".gitmodules file not found" 1>&2 && exit 2
|
||||
|
||||
NAME="$(echo "$1" | sed 's/\/$//g')"
|
||||
test -z \
|
||||
"$(git config --file=.gitmodules submodule."$NAME".url)" \
|
||||
&& echo "submodule not found" 1>&2 && exit 3
|
||||
|
||||
# 1. Delete the relevant section from .git/config and clean submodule files
|
||||
git submodule deinit -f "$NAME" || exit 4
|
||||
rmdir "$NAME"
|
||||
rm -rf .git/modules/"$NAME"
|
||||
# 2. Delete the relevant line from .gitmodules
|
||||
git config --file=.gitmodules --remove-section submodule."$NAME"
|
||||
git add .gitmodules
|
||||
# 3. Run git rm --cached path_to_submodule
|
||||
git rm --cached -rf "$NAME"
|
||||
# 4. Need to confirm and commit the changes for yourself
|
||||
echo
|
||||
echo "Now submodule $NAME is deleted."
|
||||
echo 'Confirm with `git submodule status` and commit the changes for yourself.'
|
158
bin/git-jump
Executable file
158
bin/git-jump
Executable file
|
@ -0,0 +1,158 @@
|
|||
#!/usr/bin/bash
|
||||
|
||||
function help() {
|
||||
cat <<HELP
|
||||
Git Jump (Forward & Back)
|
||||
http://benalman.com/
|
||||
|
||||
Modified slightly by Jonathan Hodgson
|
||||
https://jonathanh.co.uk/
|
||||
|
||||
Copyright (c) 2017 Jonathan Hodgson
|
||||
Licensed under the MIT license.
|
||||
https://en.wikipedia.org/wiki/MIT_License
|
||||
|
||||
Usage: $(basename "$0") [command]
|
||||
|
||||
Commands:
|
||||
next Jump forward to the next commit in this branch
|
||||
prev Jump backward to the next commit in this branch
|
||||
|
||||
|
||||
Git config:
|
||||
git-jump.branch Branch to jump through. If not set, defaults to master
|
||||
|
||||
Description:
|
||||
"Replay" Git commits by moving forward / backward through a branch's
|
||||
history. Before jumping, any current unstaged changes and untracked
|
||||
files are saved in a tag for later retrieval, which is restored when
|
||||
jumped back to.
|
||||
|
||||
Original Licence:
|
||||
Copyright (c) 2014 "Cowboy" Ben Alman
|
||||
Licensed under the MIT license.
|
||||
http://benalman.com/about/license/
|
||||
HELP
|
||||
}
|
||||
|
||||
function usage() {
|
||||
echo "Usage: $(basename "$0") [next | prev]"
|
||||
}
|
||||
|
||||
# Get branch stored in Git config or default to master
|
||||
git_branch="$(git config git-jump.branch || echo "master")"
|
||||
|
||||
# Get some (short) SHAs
|
||||
function git_branch_sha() {
|
||||
git rev-parse --short "$git_branch"
|
||||
}
|
||||
function git_head_sha() {
|
||||
git rev-parse --short HEAD
|
||||
}
|
||||
function git_prev_sha() {
|
||||
git log --format='%h' "$git_branch" "$@" | awk "/^$(git_head_sha)/{getline; print}"
|
||||
}
|
||||
function git_next_sha() {
|
||||
git_prev_sha --reverse
|
||||
}
|
||||
|
||||
# Get absolute path to root of Git repo
|
||||
function git_repo_toplevel() {
|
||||
git rev-parse --show-toplevel
|
||||
}
|
||||
|
||||
# Get subject of specified commit
|
||||
function git_commit_subject() {
|
||||
git log --format='%s' -n 1 $1
|
||||
}
|
||||
|
||||
# Save changes for later retrieval
|
||||
function save() {
|
||||
local status=""
|
||||
local head_sha=$(git_head_sha)
|
||||
# Checkout current HEAD by SHA to force detached state
|
||||
git checkout -q $head_sha
|
||||
# Add all files in repo
|
||||
git add "$(git_repo_toplevel)"
|
||||
# Commit changes (if there were any)
|
||||
git commit --no-verify -m "Git Jump: saved changes for $head_sha" >/dev/null
|
||||
# If the commit was successful, tag it (overwriting any previous tag)
|
||||
if [[ $? == 0 ]]; then
|
||||
status="*"
|
||||
git tag -f "git-jump-$head_sha" >/dev/null
|
||||
fi
|
||||
echo "Previous HEAD was $head_sha$status, $(git_commit_subject $head_sha)"
|
||||
}
|
||||
|
||||
# Restore previously-saved changes
|
||||
function restore() {
|
||||
local status=""
|
||||
# Save current changes before restoring
|
||||
save
|
||||
# Attempt to restore saved changes for specified commit
|
||||
git checkout "git-jump-$1" 2>/dev/null
|
||||
if [[ $? == 0 ]]; then
|
||||
# If the restore was successful, figure out exactly what was saved, check
|
||||
# out the original commit, then restore the saved changes on top of it
|
||||
status="*"
|
||||
local patch="$(git format-patch HEAD^ --stdout)"
|
||||
git checkout HEAD^ 2>/dev/null
|
||||
echo "$patch" | git apply -
|
||||
else
|
||||
# Otherwise, just restore the original commit
|
||||
git checkout "$1" 2>/dev/null
|
||||
fi
|
||||
echo "HEAD is now $1$status, $(git_commit_subject $1)"
|
||||
}
|
||||
|
||||
# Jump to next commit
|
||||
function next() {
|
||||
local next_sha=$(git_next_sha)
|
||||
if [[ "$next_sha" == "$(git_head_sha)" ]]; then
|
||||
# Abort if no more commits
|
||||
echo "Already at last commit in $git_branch. Congratulations!"
|
||||
else
|
||||
# Checkout branch by name if at its HEAD
|
||||
if [[ "$next_sha" == "$(git_branch_sha)" ]]; then
|
||||
next_sha="$git_branch"
|
||||
fi
|
||||
echo "Jumping ahead to next commit."
|
||||
restore $next_sha
|
||||
fi
|
||||
}
|
||||
|
||||
# Jump to previous commit
|
||||
function prev() {
|
||||
local prev_sha=$(git_prev_sha)
|
||||
if [[ "$prev_sha" == "$(git_head_sha)" ]]; then
|
||||
# Abort if no more commits
|
||||
echo "Already at first commit in $git_branch."
|
||||
else
|
||||
echo "Jumping back to previous commit."
|
||||
restore $prev_sha
|
||||
fi
|
||||
}
|
||||
|
||||
# Show help if requested
|
||||
if [[ "$1" == "--help" || "$1" == "-h" ]]; then
|
||||
help
|
||||
exit
|
||||
fi
|
||||
|
||||
# Check if branch is valid
|
||||
git rev-parse "$git_branch" &>/dev/null
|
||||
if [[ $? != 0 ]]; then
|
||||
echo "Error: Branch \"$git_branch\" does not appear to be valid."
|
||||
echo "Try $(basename "$0") --help for more information."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Handle CLI arguments
|
||||
if [[ "$1" == "next" ]]; then
|
||||
next
|
||||
elif [[ "$1" == "prev" ]]; then
|
||||
prev
|
||||
else
|
||||
usage
|
||||
exit 1
|
||||
fi
|
12
bin/git-nuke
Executable file
12
bin/git-nuke
Executable file
|
@ -0,0 +1,12 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Nukes a branch locally and on the origin remote.
|
||||
#
|
||||
# $1 - Branch name.
|
||||
#
|
||||
# Examples
|
||||
#
|
||||
# git nuke add-git-nuke
|
||||
|
||||
git branch -D $1
|
||||
git push origin :$1
|
149
bin/git-open
Executable file
149
bin/git-open
Executable file
|
@ -0,0 +1,149 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Opens the BitBucket/GitHub page for a repo/branch in your browser.
|
||||
#
|
||||
# git open
|
||||
# git open [remote] [branch]
|
||||
|
||||
|
||||
# are we in a git repo?
|
||||
git rev-parse --is-inside-work-tree &>/dev/null
|
||||
|
||||
if [[ $? != 0 ]]; then
|
||||
echo "Not a git repository." 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
# assume origin if not provided
|
||||
# fallback to upstream if neither is present.
|
||||
remote="origin"
|
||||
if [ -n "$1" ]; then
|
||||
if [ "$1" == "issue" ]; then
|
||||
currentBranch=$(git symbolic-ref -q --short HEAD)
|
||||
regex='^issue'
|
||||
if [[ $currentBranch =~ $regex ]]; then
|
||||
issue=${currentBranch#*#}
|
||||
else
|
||||
echo "'git open issue' expect branch naming to be issues/#123" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
remote="$1"
|
||||
fi
|
||||
fi
|
||||
|
||||
remote_url="remote.${remote}.url"
|
||||
|
||||
giturl=$(git config --get "$remote_url")
|
||||
if [ -z "$giturl" ]; then
|
||||
echo "$remote_url not set." 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# get current branch
|
||||
if [ -z "$2" ]; then
|
||||
branch=$(git symbolic-ref -q --short HEAD)
|
||||
else
|
||||
branch="$2"
|
||||
fi
|
||||
|
||||
# Make # and % characters url friendly
|
||||
# github.com/paulirish/git-open/pull/24
|
||||
branch=${branch//%/%25} && branch=${branch//#/%23}
|
||||
|
||||
# URL normalization
|
||||
# GitHub gists
|
||||
if grep -q gist.github <<<$giturl; then
|
||||
giturl=${giturl/git\@gist.github\.com\:/https://gist.github.com/}
|
||||
providerUrlDifference=tree
|
||||
|
||||
# GitHub
|
||||
elif grep -q github <<<$giturl; then
|
||||
giturl=${giturl/git\@github\.com\:/https://github.com/}
|
||||
|
||||
# handle SSH protocol (links like ssh://git@github.com/user/repo)
|
||||
giturl=${giturl/#ssh\:\/\/git\@github\.com\//https://github.com/}
|
||||
|
||||
providerUrlDifference=tree
|
||||
|
||||
# Bitbucket
|
||||
elif grep -q bitbucket <<<$giturl; then
|
||||
giturl=${giturl/git\@bitbucket\.org\:/https://bitbucket.org/}
|
||||
# handle SSH protocol (change ssh://https://bitbucket.org/user/repo to https://bitbucket.org/user/repo)
|
||||
giturl=${giturl/#ssh\:\/\/git\@/https://}
|
||||
|
||||
rev="$(git rev-parse HEAD)"
|
||||
git_pwd="$(git rev-parse --show-prefix)"
|
||||
providerUrlDifference="src/${rev}/${git_pwd}"
|
||||
branch="?at=${branch}"
|
||||
|
||||
# Atlassian Bitbucket Server
|
||||
elif grep -q "/scm/" <<<$giturl; then
|
||||
re='(.*)/scm/(.*)/(.*)\.git'
|
||||
if [[ $giturl =~ $re ]]; then
|
||||
giturl=${BASH_REMATCH[1]}/projects/${BASH_REMATCH[2]}/repos/${BASH_REMATCH[3]}
|
||||
providerUrlDifference=browse
|
||||
branch="?at=refs%2Fheads%2F${branch}"
|
||||
fi
|
||||
|
||||
# GitLab
|
||||
else
|
||||
# custom GitLab
|
||||
gitlab_domain=$(git config --get gitopen.gitlab.domain)
|
||||
gitlab_ssh_domain=$(git config --get gitopen.gitlab.ssh.domain)
|
||||
gitlab_ssh_domain=${gitlab_ssh_domain:-$gitlab_domain}
|
||||
gitlab_ssh_port=$(git config --get gitopen.gitlab.ssh.port)
|
||||
|
||||
gitlab_protocol=$(git config --get gitopen.gitlab.protocol)
|
||||
if [ -z "$gitlab_protocol" ]; then
|
||||
gitlab_protocol=https
|
||||
fi
|
||||
|
||||
if [ -n "$gitlab_domain" ]; then
|
||||
if egrep -q "${gitlab_domain}|${gitlab_ssh_domain}" <<<$giturl; then
|
||||
|
||||
# Handle GitLab's default SSH notation (like git@gitlab.domain.com:user/repo)
|
||||
giturl=${giturl/git\@${gitlab_ssh_domain}\:/${gitlab_protocol}://${gitlab_domain}/}
|
||||
|
||||
# handle SSH protocol (links like ssh://git@gitlab.domain.com/user/repo)
|
||||
giturl=${giturl/#ssh\:\/\//${gitlab_protocol}://}
|
||||
|
||||
# remove git@ from the domain
|
||||
giturl=${giturl/git\@${gitlab_ssh_domain}/${gitlab_domain}/}
|
||||
|
||||
# remove SSH port
|
||||
if [ -n "$gitlab_ssh_port" ]; then
|
||||
giturl=${giturl/\/:${gitlab_ssh_port}\///}
|
||||
fi
|
||||
providerUrlDifference=tree
|
||||
fi
|
||||
# hosted GitLab
|
||||
elif grep -q gitlab <<<$giturl; then
|
||||
giturl=${giturl/git\@gitlab\.com\:/https://gitlab.com/}
|
||||
providerUrlDifference=tree
|
||||
fi
|
||||
fi
|
||||
giturl=${giturl%\.git}
|
||||
|
||||
if [ -n "$issue" ]; then
|
||||
giturl="${giturl}/issues/${issue}"
|
||||
elif [ -n "$branch" ]; then
|
||||
giturl="${giturl}/${providerUrlDifference}/${branch}"
|
||||
fi
|
||||
|
||||
# simplify URL for master
|
||||
giturl=${giturl/tree\/master/}
|
||||
|
||||
# get current open browser command
|
||||
case $( uname -s ) in
|
||||
Darwin) open=open;;
|
||||
MINGW*) open=start;;
|
||||
CYGWIN*) open=cygstart;;
|
||||
MSYS*) open="powershell.exe –NoProfile Start";;
|
||||
*) open=${BROWSER:-xdg-open};;
|
||||
esac
|
||||
|
||||
# open it in a browser
|
||||
$open "$giturl" &> /dev/null
|
||||
exit $?
|
349
bin/git-recall
Executable file
349
bin/git-recall
Executable file
|
@ -0,0 +1,349 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
|
||||
# usage info
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Usage: git recall [options]
|
||||
Options:
|
||||
-d, --date Show logs for last n days.
|
||||
-a, --author Author name.
|
||||
-f, --fetch fetch commits.
|
||||
-h, --help This message.
|
||||
-v, --version Show version.
|
||||
-- End of options.
|
||||
EOF
|
||||
}
|
||||
|
||||
|
||||
# Global variables
|
||||
SINCE="1 days ago" # show logs for last day by default
|
||||
AUTHOR=""
|
||||
FETCH=false
|
||||
GIT_FORMAT=""
|
||||
GIT_LOG=""
|
||||
COMMITS=""
|
||||
COMMITS_UNCOL=() # commits without colors
|
||||
LESSKEY=false
|
||||
SED_BIN="" # Sed option to use according OS.
|
||||
VERSION="1.1.10"
|
||||
|
||||
# Are we in a git repo?
|
||||
if [[ ! -d ".git" ]] && ! git rev-parse --git-dir &>/dev/null; then
|
||||
echo "abort: not a git repository." 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Parse options
|
||||
while [[ "$1" =~ ^- && ! "$1" == "--" ]]; do
|
||||
case $1 in
|
||||
-v | --version )
|
||||
echo "$version"
|
||||
exit
|
||||
;;
|
||||
-d | --date )
|
||||
SINCE="$2 days ago"
|
||||
shift;
|
||||
;;
|
||||
-a | --author )
|
||||
AUTHOR="$2"
|
||||
shift
|
||||
;;
|
||||
-f | --fetch )
|
||||
FETCH=true
|
||||
;;
|
||||
-h | --help )
|
||||
usage
|
||||
exit
|
||||
;;
|
||||
* )
|
||||
echo "abort: unknown argument" 1>&2
|
||||
exit 1
|
||||
esac
|
||||
shift
|
||||
done
|
||||
if [[ "$1" == "--" ]]; then shift; fi
|
||||
|
||||
|
||||
# Colored output.
|
||||
function colored() {
|
||||
GREEN=$(tput setaf 4)
|
||||
YELLOW=$(tput setaf 3)
|
||||
NORMAL=$(tput sgr0)
|
||||
REVERSE=$(tput rev)
|
||||
}
|
||||
|
||||
# Uncolored output.
|
||||
function uncolored() {
|
||||
GREEN=""
|
||||
YELLOW=""
|
||||
NORMAL=""
|
||||
REVERSE=""
|
||||
}
|
||||
|
||||
# Enable colors if supported by terminal.
|
||||
if [[ -t 1 ]] && [[ -n "$TERM" ]] && which tput &>/dev/null && tput colors &>/dev/null; then
|
||||
ncolors=$(tput colors)
|
||||
if [[ -n "$ncolors" ]] && [[ "$ncolors" -ge 8 ]] ; then
|
||||
colored
|
||||
else
|
||||
uncolored
|
||||
fi
|
||||
else
|
||||
uncolored
|
||||
fi
|
||||
|
||||
# Check if lesskey is installed.
|
||||
if command -v lesskey &> /dev/null; then
|
||||
LESSKEY=true
|
||||
fi
|
||||
|
||||
# Set AUTHOR to current user if no param passed or display for all users if param equal to "all".
|
||||
if [[ ! -n $AUTHOR ]]; then
|
||||
AUTHOR=$(git config user.name 2>/dev/null)
|
||||
elif [[ $AUTHOR = "all" ]]; then
|
||||
AUTHOR=".*"
|
||||
fi
|
||||
|
||||
# Fetch changes before.
|
||||
if [[ $FETCH == true ]]; then
|
||||
echo "${GREEN}Fetching changes...${NORMAL}"
|
||||
git fetch --all &> /dev/null
|
||||
tput cuu1
|
||||
tput ed # clear screen
|
||||
fi
|
||||
|
||||
# Log template.
|
||||
GIT_FORMAT="%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset"
|
||||
|
||||
# Log command.
|
||||
GIT_LOG="git log --pretty=format:'${GIT_FORMAT}'
|
||||
--author \"$AUTHOR\"
|
||||
--since \"$SINCE\" --abbrev-commit"
|
||||
|
||||
# Change temporary the IFS to store GIT_LOG's output into an array.
|
||||
IFS=$'\n'
|
||||
COMMITS=($(eval ${GIT_LOG} 2>/dev/null))
|
||||
unset IFS
|
||||
|
||||
NI=${#COMMITS[@]} # Total number of items.
|
||||
SN=$(( `tput lines` - 1 )) # Screen's number of lines.
|
||||
CN=$(tput cols) # Screen's number of columns.
|
||||
TN=$(( $NI < $((SN -1)) ? $NI : $((SN -1)))) # Number of lines that we will display.
|
||||
OFFSET=0 #Incremented by one each time a commit's length is higher than teminal width.
|
||||
|
||||
# If there is no items, exit.
|
||||
if [[ $NI = 0 ]]; then
|
||||
if [[ $AUTHOR = ".*" ]]; then
|
||||
echo "${YELLOW}All contributors did nothing during this period.${NORMAL}" && exit 0
|
||||
else
|
||||
echo "${YELLOW}The contributor \"${AUTHOR}\" did nothing during this period.${NORMAL}" && exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# Set correct sed option according OS's type
|
||||
case "$OSTYPE" in
|
||||
darwin*) SED_BIN="sed -E" ;;
|
||||
*) SED_BIN="sed -r" ;;
|
||||
esac
|
||||
|
||||
# Create array with uncolred commits (removing escape sequences using sed)
|
||||
for elt in "${COMMITS[@]}"
|
||||
do
|
||||
ELT="$(echo "$elt" | $SED_BIN "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g")" # remove colors escape codes
|
||||
COMMITS_UNCOL+=("$ELT")
|
||||
done
|
||||
# Add +1 to OFFSET if a commit's length is bigger than the current terminal session's width. (This is to fix a redraw issue)
|
||||
for C in "${COMMITS_UNCOL[@]}"
|
||||
do
|
||||
if [[ ${#C} -gt $CN ]]; then
|
||||
OFFSET=$(( OFFSET + 1 ))
|
||||
fi
|
||||
done
|
||||
|
||||
# Set keys.
|
||||
au="`echo -e '\e[A'`" # arrow up
|
||||
au_1="k" # arrow up
|
||||
ad="`echo -e '\e[B'`" # arrow down
|
||||
ad_1="j" # arrow down
|
||||
ec="`echo -e '\e'`" # escape
|
||||
nl="`echo -e '\n'`" # newline
|
||||
nl_1="e" # expand
|
||||
co="c" # checkout
|
||||
|
||||
# Create a temporary lesskey file to change the keybindings so the user can use the TAB key to quit less. (more convenient)
|
||||
if [[ $LESSKEY = true ]]; then
|
||||
echo "\t quit" | lesskey -o $HOME/.lsh_less_keys_tmp -- - &> /dev/null
|
||||
fi
|
||||
|
||||
## Get commit's diff.
|
||||
function get_diff() {
|
||||
ELT="$(echo "${COMMITS_UNCOL[$CP-1]}")"
|
||||
DIFF_TIP=${ELT:0:7}
|
||||
DIFF_CMD="git show $DIFF_TIP --color=always"
|
||||
DIFF=$(eval ${DIFF_CMD} 2>/dev/null)
|
||||
tmp_diff="$(echo "$DIFF" | $SED_BIN "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g")" # remove colors escape codes
|
||||
off=$(echo "$tmp_diff" | grep -c ".\{$CN\}") #Number of lines in the diff that are longer than terminal width.
|
||||
DIFF_LINES_NUMBER="$(echo "$DIFF" | wc -l)"
|
||||
DIFF_LINES_NUMBER=$(( DIFF_LINES_NUMBER + off ))
|
||||
}
|
||||
|
||||
## This function will print the diff according the commit's tip. If the diff is too long, the result will be displayed using 'less'.
|
||||
function print_diff() {
|
||||
get_diff # get commit's diff
|
||||
if [[ $(( TN + DIFF_LINES_NUMBER + OFFSET )) -ge $(( `tput lines` - 1 )) ]]; then
|
||||
if [[ $LESSKEY = true ]]; then
|
||||
echo "$DIFF" | less -r -k $HOME/.lsh_less_keys_tmp
|
||||
else
|
||||
echo "$DIFF" | less -r
|
||||
fi
|
||||
tput ed # Clear screen
|
||||
else
|
||||
stop=false
|
||||
tput ed
|
||||
for i in `seq 1 $TN`
|
||||
do
|
||||
echo -n "$NORMAL"
|
||||
[[ $CP == "$i" ]] && echo -n "$REVERSE"
|
||||
echo "${COMMITS[$i - 1]}"
|
||||
[[ $CP == "$i" ]] && echo "$DIFF"
|
||||
done
|
||||
# Wait for user action.
|
||||
while ! $stop
|
||||
do
|
||||
read -sn 1 key
|
||||
case "$key" in
|
||||
"$nl" | "$nl_1")
|
||||
stop=true
|
||||
;;
|
||||
"q")
|
||||
stop=true
|
||||
END=true
|
||||
;;
|
||||
esac
|
||||
done
|
||||
[[ $END = false ]] && tput cuu $(( TN + DIFF_LINES_NUMBER + OFFSET )) && tput ed
|
||||
[[ $END = true ]] && tput cuu 1
|
||||
fi
|
||||
}
|
||||
|
||||
function do_checkout(){
|
||||
ELT="$(echo "${COMMITS_UNCOL[$CP-1]}")"
|
||||
DIFF_TIP=${ELT:0:7}
|
||||
eval "git checkout $DIFF_TIP 2> /dev/null"
|
||||
}
|
||||
|
||||
# Calculate OFFSET to avoid bad redraw.
|
||||
function calculate_offset {
|
||||
tmp=1
|
||||
index=$(( SI -1 ))
|
||||
while [[ $tmp -lt $SN ]]
|
||||
do
|
||||
el=${COMMITS_UNCOL[$index]}
|
||||
if [[ ${#el} -gt $CN ]] && [[ $CP -lt $((SN -1)) ]]; then
|
||||
OFFSET_2=$(( OFFSET_2 + 1 ))
|
||||
tmp=$(( tmp + 1 ))
|
||||
fi
|
||||
tmp=$(( tmp + 1 ))
|
||||
index=$(( index + 1 ))
|
||||
done
|
||||
}
|
||||
|
||||
{ # capture stdout to stderr
|
||||
|
||||
tput civis # hide cursor.
|
||||
CP=1 # current position
|
||||
SI=1 # index
|
||||
END=false # end while loop
|
||||
EXT=0 # Used to extend the number of lines to display.
|
||||
|
||||
## Loops, reads inputs and prints commits until user presses 'q' to exit or TAB to show the diff.
|
||||
while ! $END
|
||||
do
|
||||
END_INDEX=0 # Index for the last item to display
|
||||
# When the number of item is higher than screen's number of lines, OFFSET_2 is recalculated each time we select a new item
|
||||
# Set last index to print. (based on OFFSET)
|
||||
if [[ $TN == $NI ]]; then
|
||||
END_INDEX=$TN
|
||||
OFFSET_2=$OFFSET
|
||||
elif [[ $TN == $(( SN - 1 )) ]]; then
|
||||
# Calculate new OFFSET.
|
||||
if [[ $OFFSET != 0 ]]; then
|
||||
[[ $CP -lt $((SN -1)) ]] && OFFSET_2=0
|
||||
EXT=1
|
||||
calculate_offset
|
||||
fi
|
||||
END_INDEX=$(( TN + SI -1 + EXT - OFFSET_2 ))
|
||||
fi
|
||||
|
||||
# Loop and echo commits
|
||||
for i in `seq $SI $END_INDEX`
|
||||
do
|
||||
echo -n "$NORMAL"
|
||||
[[ $CP == $i ]] && echo -n "$REVERSE"
|
||||
echo "${COMMITS[$i - 1]}"
|
||||
done
|
||||
|
||||
read -sn 1 key
|
||||
[[ "$key" == "$ec" ]] &&
|
||||
{
|
||||
read -sn 2 k2
|
||||
key="$key$k2"
|
||||
}
|
||||
|
||||
case "$key" in
|
||||
|
||||
"$au" | "$au_1")
|
||||
CP=$(( CP - 1 ))
|
||||
[[ $CP == 0 ]] && [[ $SI == 1 ]] && [[ $TN == $(( SN - 1 )) ]] && CP=$NI && SI=$(( NI - SN + 2 + OFFSET_2 ))
|
||||
[[ $CP == 0 ]] && [[ $SI == 1 ]] && [[ $TN == $NI ]] && CP=$TN
|
||||
[[ $CP == $(( SI - 1 )) ]] && [[ $SI != 1 ]] && SI=$(( SI - 1 ))
|
||||
|
||||
[[ $TN != $(( SN - 1 )) ]] && tput cuu $(( TN + OFFSET_2 ))
|
||||
[[ $TN == $(( SN - 1 )) ]] && tput cuu $(( TN + EXT ))
|
||||
[[ $SI != 1 ]] && tput ed # clear screen
|
||||
;;
|
||||
|
||||
"$ad" | "$ad_1")
|
||||
CP=$(( CP + 1 ))
|
||||
[[ $CP == $(( NI + 1 )) ]] && CP=1 && SI=1
|
||||
[[ $CP == $(( SN + SI - 1 + EXT - OFFSET_2 )) ]] && [[ $TN == $(( SN - 1 )) ]] && SI=$(( SI + 1 ))
|
||||
|
||||
[[ $TN != $(( SN - 1 )) ]] && tput cuu $(( TN + OFFSET_2 ))
|
||||
[[ $TN == $(( SN - 1 )) ]] && tput cuu $(( TN + EXT ))
|
||||
[[ $SI != 1 ]] && tput ed # clear screen
|
||||
[[ $SI = 1 ]] && [[ $CP = 1 ]] && tput ed # clear screen
|
||||
;;
|
||||
|
||||
"$nl" | "$nl_1")
|
||||
[[ $TN == $NI ]] && tput cuu $(( TN + OFFSET_2 ))
|
||||
[[ $TN != $NI ]] && tput cuu $(( TN + EXT ))
|
||||
print_diff
|
||||
;;
|
||||
"$co")
|
||||
si=false
|
||||
END=true
|
||||
do_checkout
|
||||
tput cuu 1 #move cursor up one line. (remove extra line)
|
||||
;;
|
||||
|
||||
"q")
|
||||
si=false
|
||||
END=true
|
||||
tput cuu 1 #move cursor up one line. (remove extra line)
|
||||
;;
|
||||
|
||||
* )
|
||||
tput cuu $(( TN + OFFSET_2 ))
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
# remove temporary less keybindings
|
||||
[[ $LESSKEY = true ]] && rm $HOME/.lsh_less_keys_tmp
|
||||
|
||||
tput cnorm # unhide cursor
|
||||
echo "$NORMAL" # normal colors
|
||||
|
||||
} >&2 # END capture
|
||||
|
364
bin/git-wtf
Executable file
364
bin/git-wtf
Executable file
|
@ -0,0 +1,364 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
HELP = <<EOS
|
||||
git-wtf displays the state of your repository in a readable, easy-to-scan
|
||||
format. It's useful for getting a summary of how a branch relates to a remote
|
||||
server, and for wrangling many topic branches.
|
||||
|
||||
git-wtf can show you:
|
||||
- How a branch relates to the remote repo, if it's a tracking branch.
|
||||
- How a branch relates to integration branches, if it's a feature branch.
|
||||
- How a branch relates to the feature branches, if it's an integration
|
||||
branch.
|
||||
|
||||
git-wtf is best used before a git push, or between a git fetch and a git
|
||||
merge. Be sure to set color.ui to auto or yes for maximum viewing pleasure.
|
||||
EOS
|
||||
|
||||
KEY = <<EOS
|
||||
KEY:
|
||||
() branch only exists locally
|
||||
{} branch only exists on a remote repo
|
||||
[] branch exists locally and remotely
|
||||
|
||||
x merge occurs both locally and remotely
|
||||
~ merge occurs only locally
|
||||
(space) branch isn't merged in
|
||||
|
||||
(It's possible for merges to occur remotely and not locally, of course, but
|
||||
that's a less common case and git-wtf currently doesn't display anything
|
||||
special for it.)
|
||||
EOS
|
||||
|
||||
USAGE = <<EOS
|
||||
Usage: git wtf [branch+] [options]
|
||||
|
||||
If [branch] is not specified, git-wtf will use the current branch. The possible
|
||||
[options] are:
|
||||
|
||||
-l, --long include author info and date for each commit
|
||||
-a, --all show all branches across all remote repos, not just
|
||||
those from origin
|
||||
-A, --all-commits show all commits, not just the first 5
|
||||
-s, --short don't show commits
|
||||
-k, --key show key
|
||||
-r, --relations show relation to features / integration branches
|
||||
--dump-config print out current configuration and exit
|
||||
|
||||
git-wtf uses some heuristics to determine which branches are integration
|
||||
branches, and which are feature branches. (Specifically, it assumes the
|
||||
integration branches are named "master", "next" and "edge".) If it guesses
|
||||
incorrectly, you will have to create a .git-wtfrc file.
|
||||
|
||||
To start building a configuration file, run "git-wtf --dump-config >
|
||||
.git-wtfrc" and edit it. The config file is a YAML file that specifies the
|
||||
integration branches, any branches to ignore, and the max number of commits to
|
||||
display when --all-commits isn't used. git-wtf will look for a .git-wtfrc file
|
||||
starting in the current directory, and recursively up to the root.
|
||||
|
||||
IMPORTANT NOTE: all local branches referenced in .git-wtfrc must be prefixed
|
||||
with heads/, e.g. "heads/master". Remote branches must be of the form
|
||||
remotes/<remote>/<branch>.
|
||||
EOS
|
||||
|
||||
COPYRIGHT = <<EOS
|
||||
git-wtf Copyright 2008--2009 William Morgan <wmorgan at the masanjin dot nets>.
|
||||
This program is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation, either version 3 of the License, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
more details.
|
||||
|
||||
You can find the GNU General Public License at: http://www.gnu.org/licenses/
|
||||
EOS
|
||||
|
||||
require 'yaml'
|
||||
CONFIG_FN = ".git-wtfrc"
|
||||
|
||||
class Numeric; def pluralize s; "#{to_s} #{s}" + (self != 1 ? "s" : "") end end
|
||||
|
||||
if ARGV.delete("--help") || ARGV.delete("-h")
|
||||
puts USAGE
|
||||
exit
|
||||
end
|
||||
|
||||
## poor man's trollop
|
||||
$long = ARGV.delete("--long") || ARGV.delete("-l")
|
||||
$short = ARGV.delete("--short") || ARGV.delete("-s")
|
||||
$all = ARGV.delete("--all") || ARGV.delete("-a")
|
||||
$all_commits = ARGV.delete("--all-commits") || ARGV.delete("-A")
|
||||
$dump_config = ARGV.delete("--dump-config")
|
||||
$key = ARGV.delete("--key") || ARGV.delete("-k")
|
||||
$show_relations = ARGV.delete("--relations") || ARGV.delete("-r")
|
||||
ARGV.each { |a| abort "Error: unknown argument #{a}." if a =~ /^--/ }
|
||||
|
||||
## search up the path for a file
|
||||
def find_file fn
|
||||
while true
|
||||
return fn if File.exist? fn
|
||||
fn2 = File.join("..", fn)
|
||||
return nil if File.expand_path(fn2) == File.expand_path(fn)
|
||||
fn = fn2
|
||||
end
|
||||
end
|
||||
|
||||
want_color = `git config color.wtf`
|
||||
want_color = `git config color.ui` if want_color.empty?
|
||||
$color = case want_color.chomp
|
||||
when "true"; true
|
||||
when "auto"; $stdout.tty?
|
||||
end
|
||||
|
||||
def red s; $color ? "\033[31m#{s}\033[0m" : s end
|
||||
def green s; $color ? "\033[32m#{s}\033[0m" : s end
|
||||
def yellow s; $color ? "\033[33m#{s}\033[0m" : s end
|
||||
def cyan s; $color ? "\033[36m#{s}\033[0m" : s end
|
||||
def grey s; $color ? "\033[1;30m#{s}\033[0m" : s end
|
||||
def purple s; $color ? "\033[35m#{s}\033[0m" : s end
|
||||
|
||||
## the set of commits in 'to' that aren't in 'from'.
|
||||
## if empty, 'to' has been merged into 'from'.
|
||||
def commits_between from, to
|
||||
if $long
|
||||
`git log --pretty=format:"- %s [#{yellow "%h"}] (#{purple "%ae"}; %ar)" #{from}..#{to}`
|
||||
else
|
||||
`git log --pretty=format:"- %s [#{yellow "%h"}]" #{from}..#{to}`
|
||||
end.split(/[\r\n]+/)
|
||||
end
|
||||
|
||||
def show_commits commits, prefix=" "
|
||||
if commits.empty?
|
||||
puts "#{prefix} none"
|
||||
else
|
||||
max = $all_commits ? commits.size : $config["max_commits"]
|
||||
max -= 1 if max == commits.size - 1 # never show "and 1 more"
|
||||
commits[0 ... max].each { |c| puts "#{prefix}#{c}" }
|
||||
puts grey("#{prefix}... and #{commits.size - max} more (use -A to see all).") if commits.size > max
|
||||
end
|
||||
end
|
||||
|
||||
def ahead_behind_string ahead, behind
|
||||
[ahead.empty? ? nil : "#{ahead.size.pluralize 'commit'} ahead",
|
||||
behind.empty? ? nil : "#{behind.size.pluralize 'commit'} behind"].
|
||||
compact.join("; ")
|
||||
end
|
||||
|
||||
def widget merged_in, remote_only=false, local_only=false, local_only_merge=false
|
||||
left, right = case
|
||||
when remote_only; %w({ })
|
||||
when local_only; %w{( )}
|
||||
else %w([ ])
|
||||
end
|
||||
middle = case
|
||||
when merged_in && local_only_merge; green("~")
|
||||
when merged_in; green("x")
|
||||
else " "
|
||||
end
|
||||
print left, middle, right
|
||||
end
|
||||
|
||||
def show b
|
||||
have_both = b[:local_branch] && b[:remote_branch]
|
||||
|
||||
pushc, pullc, oosync = if have_both
|
||||
[x = commits_between(b[:remote_branch], b[:local_branch]),
|
||||
y = commits_between(b[:local_branch], b[:remote_branch]),
|
||||
!x.empty? && !y.empty?]
|
||||
end
|
||||
|
||||
if b[:local_branch]
|
||||
puts "Local branch: " + green(b[:local_branch].sub(/^heads\//, ""))
|
||||
|
||||
if have_both
|
||||
if pushc.empty?
|
||||
puts "#{widget true} in sync with remote"
|
||||
else
|
||||
action = oosync ? "push after rebase / merge" : "push"
|
||||
puts "#{widget false} NOT in sync with remote (you should #{action})"
|
||||
show_commits pushc unless $short
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if b[:remote_branch]
|
||||
puts "Remote branch: #{cyan b[:remote_branch]} (#{b[:remote_url]})"
|
||||
|
||||
if have_both
|
||||
if pullc.empty?
|
||||
puts "#{widget true} in sync with local"
|
||||
else
|
||||
action = pushc.empty? ? "merge" : "rebase / merge"
|
||||
puts "#{widget false} NOT in sync with local (you should #{action})"
|
||||
show_commits pullc unless $short
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
puts "\n#{red "WARNING"}: local and remote branches have diverged. A merge will occur unless you rebase." if oosync
|
||||
end
|
||||
|
||||
def show_relations b, all_branches
|
||||
ibs, fbs = all_branches.partition { |name, br| $config["integration-branches"].include?(br[:local_branch]) || $config["integration-branches"].include?(br[:remote_branch]) }
|
||||
if $config["integration-branches"].include? b[:local_branch]
|
||||
puts "\nFeature branches:" unless fbs.empty?
|
||||
fbs.each do |name, br|
|
||||
next if $config["ignore"].member?(br[:local_branch]) || $config["ignore"].member?(br[:remote_branch])
|
||||
next if br[:ignore]
|
||||
local_only = br[:remote_branch].nil?
|
||||
remote_only = br[:local_branch].nil?
|
||||
name = if local_only
|
||||
purple br[:name]
|
||||
elsif remote_only
|
||||
cyan br[:name]
|
||||
else
|
||||
green br[:name]
|
||||
end
|
||||
|
||||
## for remote_only branches, we'll compute wrt the remote branch head. otherwise, we'll
|
||||
## use the local branch head.
|
||||
head = remote_only ? br[:remote_branch] : br[:local_branch]
|
||||
|
||||
remote_ahead = b[:remote_branch] ? commits_between(b[:remote_branch], head) : []
|
||||
local_ahead = b[:local_branch] ? commits_between(b[:local_branch], head) : []
|
||||
|
||||
if local_ahead.empty? && remote_ahead.empty?
|
||||
puts "#{widget true, remote_only, local_only} #{name} #{local_only ? "(local-only) " : ""}is merged in"
|
||||
elsif local_ahead.empty?
|
||||
puts "#{widget true, remote_only, local_only, true} #{name} merged in (only locally)"
|
||||
else
|
||||
behind = commits_between head, (br[:local_branch] || br[:remote_branch])
|
||||
ahead = remote_only ? remote_ahead : local_ahead
|
||||
puts "#{widget false, remote_only, local_only} #{name} #{local_only ? "(local-only) " : ""}is NOT merged in (#{ahead_behind_string ahead, behind})"
|
||||
show_commits ahead unless $short
|
||||
end
|
||||
end
|
||||
else
|
||||
puts "\nIntegration branches:" unless ibs.empty? # unlikely
|
||||
ibs.sort_by { |v, br| v }.each do |v, br|
|
||||
next if $config["ignore"].member?(br[:local_branch]) || $config["ignore"].member?(br[:remote_branch])
|
||||
next if br[:ignore]
|
||||
local_only = br[:remote_branch].nil?
|
||||
remote_only = br[:local_branch].nil?
|
||||
name = remote_only ? cyan(br[:name]) : green(br[:name])
|
||||
|
||||
ahead = commits_between v, (b[:local_branch] || b[:remote_branch])
|
||||
if ahead.empty?
|
||||
puts "#{widget true, local_only} merged into #{name}"
|
||||
else
|
||||
#behind = commits_between b[:local_branch], v
|
||||
puts "#{widget false, local_only} NOT merged into #{name} (#{ahead.size.pluralize 'commit'} ahead)"
|
||||
show_commits ahead unless $short
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
#### EXECUTION STARTS HERE ####
|
||||
|
||||
## find config file and load it
|
||||
$config = { "integration-branches" => %w(heads/master heads/next heads/edge), "ignore" => [], "max_commits" => 5 }.merge begin
|
||||
fn = find_file CONFIG_FN
|
||||
if fn && (h = YAML::load_file(fn)) # yaml turns empty files into false
|
||||
h["integration-branches"] ||= h["versions"] # support old nomenclature
|
||||
h
|
||||
else
|
||||
{}
|
||||
end
|
||||
end
|
||||
|
||||
if $dump_config
|
||||
puts $config.to_yaml
|
||||
exit
|
||||
end
|
||||
|
||||
## first, index registered remotes
|
||||
remotes = `git config --get-regexp ^remote\.\*\.url`.split(/[\r\n]+/).inject({}) do |hash, l|
|
||||
l =~ /^remote\.(.+?)\.url (.+)$/ or next hash
|
||||
hash[$1] ||= $2
|
||||
hash
|
||||
end
|
||||
|
||||
## next, index followed branches
|
||||
branches = `git config --get-regexp ^branch\.`.split(/[\r\n]+/).inject({}) do |hash, l|
|
||||
case l
|
||||
when /branch\.(.*?)\.remote (.+)/
|
||||
name, remote = $1, $2
|
||||
|
||||
hash[name] ||= {}
|
||||
hash[name].merge! :remote => remote, :remote_url => remotes[remote]
|
||||
when /branch\.(.*?)\.merge ((refs\/)?heads\/)?(.+)/
|
||||
name, remote_branch = $1, $4
|
||||
hash[name] ||= {}
|
||||
hash[name].merge! :remote_mergepoint => remote_branch
|
||||
end
|
||||
hash
|
||||
end
|
||||
|
||||
## finally, index all branches
|
||||
remote_branches = {}
|
||||
`git show-ref`.split(/[\r\n]+/).each do |l|
|
||||
sha1, ref = l.chomp.split " refs/"
|
||||
|
||||
if ref =~ /^heads\/(.+)$/ # local branch
|
||||
name = $1
|
||||
next if name == "HEAD"
|
||||
branches[name] ||= {}
|
||||
branches[name].merge! :name => name, :local_branch => ref
|
||||
elsif ref =~ /^remotes\/(.+?)\/(.+)$/ # remote branch
|
||||
remote, name = $1, $2
|
||||
remote_branches["#{remote}/#{name}"] = true
|
||||
next if name == "HEAD"
|
||||
ignore = !($all || remote == "origin")
|
||||
|
||||
branch = name
|
||||
if branches[name] && branches[name][:remote] == remote
|
||||
# nothing
|
||||
else
|
||||
name = "#{remote}/#{branch}"
|
||||
end
|
||||
|
||||
branches[name] ||= {}
|
||||
branches[name].merge! :name => name, :remote => remote, :remote_branch => "#{remote}/#{branch}", :remote_url => remotes[remote], :ignore => ignore
|
||||
end
|
||||
end
|
||||
|
||||
## assemble remotes
|
||||
branches.each do |k, b|
|
||||
next unless b[:remote] && b[:remote_mergepoint]
|
||||
b[:remote_branch] = if b[:remote] == "."
|
||||
b[:remote_mergepoint]
|
||||
else
|
||||
t = "#{b[:remote]}/#{b[:remote_mergepoint]}"
|
||||
remote_branches[t] && t # only if it's still alive
|
||||
end
|
||||
end
|
||||
|
||||
show_dirty = ARGV.empty?
|
||||
targets = if ARGV.empty?
|
||||
[`git symbolic-ref HEAD`.chomp.sub(/^refs\/heads\//, "")]
|
||||
else
|
||||
ARGV.map { |x| x.sub(/^heads\//, "") }
|
||||
end.map { |t| branches[t] or abort "Error: can't find branch #{t.inspect}." }
|
||||
|
||||
targets.each do |t|
|
||||
show t
|
||||
show_relations t, branches if $show_relations || t[:remote_branch].nil?
|
||||
end
|
||||
|
||||
modified = show_dirty && `git ls-files -m` != ""
|
||||
uncommitted = show_dirty && `git diff-index --cached HEAD` != ""
|
||||
|
||||
if $key
|
||||
puts
|
||||
puts KEY
|
||||
end
|
||||
|
||||
puts if modified || uncommitted
|
||||
puts "#{red "NOTE"}: working directory contains modified files." if modified
|
||||
puts "#{red "NOTE"}: staging area contains staged but uncommitted files." if uncommitted
|
||||
|
||||
# the end!
|
103
bin/imgcat
Executable file
103
bin/imgcat
Executable file
|
@ -0,0 +1,103 @@
|
|||
#!/bin/bash
|
||||
|
||||
# tmux requires unrecognized OSC sequences to be wrapped with DCS tmux;
|
||||
# <sequence> ST, and for all ESCs in <sequence> to be replaced with ESC ESC. It
|
||||
# only accepts ESC backslash for ST.
|
||||
function print_osc() {
|
||||
if [[ $TERM == screen* ]] ; then
|
||||
printf "\033Ptmux;\033\033]"
|
||||
else
|
||||
printf "\033]"
|
||||
fi
|
||||
}
|
||||
|
||||
# More of the tmux workaround described above.
|
||||
function print_st() {
|
||||
if [[ $TERM == screen* ]] ; then
|
||||
printf "\a\033\\"
|
||||
else
|
||||
printf "\a"
|
||||
fi
|
||||
}
|
||||
|
||||
# print_image filename inline base64contents
|
||||
# filename: Filename to convey to client
|
||||
# inline: 0 or 1
|
||||
# base64contents: Base64-encoded contents
|
||||
function print_image() {
|
||||
print_osc
|
||||
printf '1337;File='
|
||||
if [[ -n "$1" ]]; then
|
||||
printf 'name='`echo -n "$1" | base64`";"
|
||||
fi
|
||||
if $(base64 --version 2>&1 | grep GNU > /dev/null)
|
||||
then
|
||||
BASE64ARG=-d
|
||||
else
|
||||
BASE64ARG=-D
|
||||
fi
|
||||
echo -n "$3" | base64 $BASE64ARG | wc -c | awk '{printf "size=%d",$1}'
|
||||
printf ";inline=$2"
|
||||
printf ";width=50"
|
||||
printf ":"
|
||||
echo -n "$3"
|
||||
print_st
|
||||
printf '\n'
|
||||
}
|
||||
|
||||
function error() {
|
||||
echo "ERROR: $*" 1>&2
|
||||
}
|
||||
|
||||
function show_help() {
|
||||
echo "Usage: imgcat filename ..." 1>& 2
|
||||
echo " or: cat filename | imgcat" 1>& 2
|
||||
}
|
||||
|
||||
## Main
|
||||
|
||||
if [ -t 0 ]; then
|
||||
has_stdin=f
|
||||
else
|
||||
has_stdin=t
|
||||
fi
|
||||
|
||||
# Show help if no arguments and no stdin.
|
||||
if [ $has_stdin = f -a $# -eq 0 ]; then
|
||||
show_help
|
||||
exit
|
||||
fi
|
||||
|
||||
# Look for command line flags.
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
-h|--h|--help)
|
||||
show_help
|
||||
exit
|
||||
;;
|
||||
-*)
|
||||
error "Unknown option flag: $1"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
if [ -r "$1" ] ; then
|
||||
print_image "$1" 1 "$(base64 < "$1")"
|
||||
else
|
||||
error "imgcat: $1: No such file or directory"
|
||||
exit 2
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# Read and print stdin
|
||||
if [ $has_stdin = t ]; then
|
||||
print_image "" 1 "$(cat | base64)"
|
||||
fi
|
||||
|
||||
echo
|
||||
echo
|
||||
|
||||
exit 0
|
91
bin/new
Executable file
91
bin/new
Executable file
|
@ -0,0 +1,91 @@
|
|||
#!/usr/bin/bash
|
||||
|
||||
if [ $1 ]; then
|
||||
while test $# -gt 0; do
|
||||
case $1 in
|
||||
-h|--help)
|
||||
echo "Create files from template"
|
||||
echo ""
|
||||
echo "Usage: new [options] newFile"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo "--------"
|
||||
echo -e "{-t,--template} filename \t Force use of template in Template Directory"
|
||||
echo -e "{-l,--list} \t\t\t Lists the available templates"
|
||||
echo -e "{-h,--help} \t\t\t Show this help text"
|
||||
exit 0
|
||||
;;
|
||||
-t|--template)
|
||||
shift
|
||||
if [[ -f "$HOME/Templates/$1" ]]; then
|
||||
template="$HOME/Templates/$1"
|
||||
else
|
||||
echo "The file $HOME/Templates/$1 does not exits"
|
||||
exit 1
|
||||
fi
|
||||
shift
|
||||
;;
|
||||
-l|--list)
|
||||
shift
|
||||
for file in $HOME/Templates/*$1; do
|
||||
echo ${file##*/}
|
||||
done
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
file=$1
|
||||
if [[ "$template" == "" ]]; then
|
||||
extention=${file##*.}
|
||||
posTemplates=()
|
||||
if [[ -f $HOME/Templates/$extention ]]; then
|
||||
posTemplates+=("$HOME/Templates/$extention")
|
||||
fi
|
||||
for template in $HOME/Templates/*.$extention; do
|
||||
if [[ -f $template ]]; then
|
||||
posTemplates+=( $template )
|
||||
fi
|
||||
done
|
||||
if [[ ${#posTemplates[@]} == 1 ]]; then
|
||||
echo "Only one template"
|
||||
template=${posTemplates[0]}
|
||||
else
|
||||
|
||||
posTemplates+=("Cancel")
|
||||
while
|
||||
echo Your options are:
|
||||
for (( i=0; i<${#posTemplates[@]}; i++ )); do
|
||||
echo "$i: ${posTemplates[$i]##*/}"
|
||||
done
|
||||
echo -e -n "Please enter a number: [0] "
|
||||
read input
|
||||
if [[ "$input"=="" ]]; then
|
||||
test=0
|
||||
fi;
|
||||
if [[ "$input" == "$(expr ${#posTemplates[@]} - 1)" ]]; then
|
||||
echo "Exited By User"
|
||||
exit 0
|
||||
fi
|
||||
template=${posTemplates[$input]}
|
||||
[[ $input>=${#posTemplates[@]} || $input<0 ]]
|
||||
do
|
||||
echo
|
||||
echo Please chose one of the available options
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if [[ -f "$file" ]]; then
|
||||
echo "$file already exists"
|
||||
echo "delete it first"
|
||||
exit 1
|
||||
fi
|
||||
cat "$template" > "$file"
|
||||
echo "$file created from template $template"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
done
|
||||
else
|
||||
echo "You haven't given anything to work with"
|
||||
fi
|
31
bin/php-swap
Executable file
31
bin/php-swap
Executable file
|
@ -0,0 +1,31 @@
|
|||
#!/usr/bin/bash
|
||||
line=$(php --version | grep "PHP" -m 1)
|
||||
target="$1"
|
||||
lampp='/opt/lampp/lampp'
|
||||
echo $phpexe
|
||||
if [ "$(id -u)" != "0" ]; then
|
||||
echo "Sorry, you are not root."
|
||||
exit 1
|
||||
fi
|
||||
if [[ $target = "" ]]; then
|
||||
echo "PLease specify the version you want"
|
||||
exit 1
|
||||
fi;
|
||||
|
||||
file="/opt/lampp/etc/extra/httpd-xampp-php$target.conf"
|
||||
phpexe=$(ls /opt/lampp/bin/php-$target*)
|
||||
phpcgi=$(ls /opt/lampp/bin/php-cgi-$target*)
|
||||
phpconfig=$(ls /opt/lampp/bin/php-config-$target*)
|
||||
phpize=$(ls /opt/lampp/bin/phpize-$target*)
|
||||
|
||||
$lampp stopapache
|
||||
ln -s -f $file /opt/lampp/etc/extra/httpd-xampp.conf
|
||||
ln -s -f $phpexe /opt/lampp/bin/php
|
||||
ln -s -f $phpcgi /opt/lampp/bin/php-cgi
|
||||
ln -s -f $phpconfig /opt/lampp/bin/php-config
|
||||
ln -s -f $phpize /opt/lampp/bin/phpize
|
||||
|
||||
$lampp startapache
|
||||
echo
|
||||
echo "Now on PHP $target"
|
||||
exit 0
|
8
bin/update3rdPartyPlugins
Executable file
8
bin/update3rdPartyPlugins
Executable file
|
@ -0,0 +1,8 @@
|
|||
#!/usr/bin/bash
|
||||
|
||||
pluginFolder="/home/jonathan/WPPlugins"
|
||||
for dir in $pluginFolder/*/; do
|
||||
cd $dir
|
||||
pwd | cowsay
|
||||
git-svn-mirror update
|
||||
done
|
7
bin/weather
Executable file
7
bin/weather
Executable file
|
@ -0,0 +1,7 @@
|
|||
#!/usr/bin/bash
|
||||
initial=$@
|
||||
place=${initial// /+}
|
||||
if [[ "$place" == "" ]]; then
|
||||
place="Bury+St+Edmunds"
|
||||
fi
|
||||
curl "wttr.in/$place"
|
2
bin/where
Executable file
2
bin/where
Executable file
|
@ -0,0 +1,2 @@
|
|||
#!/usr/bin/bash
|
||||
find . -name "$1" | sed 's/[^/]\+$//' | uniq -c | sort -g
|
4
config/conky/.themepacks
Normal file
4
config/conky/.themepacks
Normal file
|
@ -0,0 +1,4 @@
|
|||
default-themes-1.1.cmtp.7z
|
||||
default-themes-1.2.cmtp.7z
|
||||
default-themes-2.1.cmtp.7z
|
||||
default-themes-2.1.cmtp.7z
|
54
config/conky/BibleVerse/bibleGateway
Normal file
54
config/conky/BibleVerse/bibleGateway
Normal file
|
@ -0,0 +1,54 @@
|
|||
background yes
|
||||
update_interval 0.2
|
||||
|
||||
|
||||
double_buffer yes
|
||||
no_buffers yes
|
||||
text_buffer_size 2048
|
||||
|
||||
gap_x 10
|
||||
gap_y 10
|
||||
|
||||
own_window yes
|
||||
own_window_type override
|
||||
own_window_class Conky
|
||||
own_window_transparent yes
|
||||
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
|
||||
own_window_colour 000000
|
||||
#own_window_argb_visual yes
|
||||
#own_window_argb_value 128
|
||||
|
||||
border_inner_margin 0
|
||||
border_outer_margin 0
|
||||
alignment top_left
|
||||
|
||||
|
||||
draw_shades no
|
||||
draw_outline no
|
||||
draw_borders no
|
||||
draw_graph_borders no
|
||||
|
||||
override_utf8_locale yes
|
||||
use_xft yes
|
||||
xftfont caviar dreams:size=10
|
||||
xftalpha 0.5
|
||||
uppercase no
|
||||
|
||||
# Defining colors
|
||||
default_color FFFFFF
|
||||
# Shades of Gray
|
||||
color1 DDDDDD
|
||||
color2 AAAAAA
|
||||
color3 888888
|
||||
# Blue
|
||||
color4 2f519a
|
||||
# Green
|
||||
color5 77B753
|
||||
|
||||
|
||||
minimum_size 250 500
|
||||
own_window_argb_value 0
|
||||
own_window_argb_visual no
|
||||
TEXT
|
||||
${font GE Inspira:pixelsize=30}${execpi 60 python ~/.conky/BibleVerse/bibleGateway.py}
|
||||
${color 2f519a}${execpi 60 python ~/.conky/BibleVerse/reference.py}
|
11
config/conky/BibleVerse/bibleGateway.py
Normal file
11
config/conky/BibleVerse/bibleGateway.py
Normal file
|
@ -0,0 +1,11 @@
|
|||
__author__ = 'jonathan'
|
||||
|
||||
import urllib.request
|
||||
import json
|
||||
import html
|
||||
import textwrap
|
||||
|
||||
f = urllib.request.urlopen("http://www.biblegateway.com/votd/get/?format=json&version=ESV")
|
||||
content = json.loads(f.read().decode("utf-8"))
|
||||
|
||||
print(textwrap.fill(html.unescape(content['votd']['text']),30))
|
8
config/conky/BibleVerse/reference.py
Normal file
8
config/conky/BibleVerse/reference.py
Normal file
|
@ -0,0 +1,8 @@
|
|||
__author__ = 'jonathan'
|
||||
|
||||
import urllib.request
|
||||
import json
|
||||
|
||||
f = urllib.request.urlopen("http://www.biblegateway.com/votd/get/?format=json&version=ESV")
|
||||
content = json.loads(f.read().decode("utf-8"))
|
||||
print(content['votd']['reference'])
|
42
config/conky/MyBlue/MyBlue
Normal file
42
config/conky/MyBlue/MyBlue
Normal file
|
@ -0,0 +1,42 @@
|
|||
use_xft yes
|
||||
xftfont 123:size=8
|
||||
xftalpha 0.1
|
||||
update_interval 0.5
|
||||
total_run_times 0
|
||||
|
||||
own_window yes
|
||||
own_window_type override
|
||||
own_window_class Conky
|
||||
own_window_transparent yes
|
||||
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
|
||||
own_window_colour 000000
|
||||
#own_window_argb_visual yes
|
||||
#own_window_argb_value 128
|
||||
|
||||
background yes
|
||||
|
||||
double_buffer yes
|
||||
maximum_width 500
|
||||
draw_shades no
|
||||
draw_outline no
|
||||
draw_borders no
|
||||
draw_graph_borders no
|
||||
default_color white
|
||||
default_shade_color red
|
||||
default_outline_color green
|
||||
alignment top_right
|
||||
gap_x 0
|
||||
gap_y 10
|
||||
no_buffers yes
|
||||
uppercase no
|
||||
cpu_avg_samples 2
|
||||
net_avg_samples 1
|
||||
override_utf8_locale yes
|
||||
|
||||
|
||||
own_window_argb_value 0
|
||||
own_window_argb_visual no
|
||||
minimum_size 0 0
|
||||
TEXT
|
||||
${color EAEAEA}${font GE Inspira:pixelsize=120}${time %H:%M}${color 2f519a}${time :%S}${font}
|
||||
${color EAEAEA}${font GE Inspira:pixelsize=58}${time %A}${font GE Inspira:pixelsize=42}${color 2f519a}${time %d}${font GE Inspira:pixelsize=22}${color EAEAEA}${time %B} ${time %Y}
|
BIN
config/conky/Octupi_Arch/FAMI_E.TTF
Executable file
BIN
config/conky/Octupi_Arch/FAMI_E.TTF
Executable file
Binary file not shown.
60
config/conky/Octupi_Arch/co_main
Normal file
60
config/conky/Octupi_Arch/co_main
Normal file
|
@ -0,0 +1,60 @@
|
|||
# -- Conky settings -- #
|
||||
background no
|
||||
update_interval 2
|
||||
|
||||
cpu_avg_samples 2
|
||||
net_avg_samples 2
|
||||
|
||||
override_utf8_locale yes
|
||||
|
||||
double_buffer yes
|
||||
no_buffers yes
|
||||
|
||||
text_buffer_size 2048
|
||||
imlib_cache_size 0
|
||||
|
||||
# -- Window specifications -- #
|
||||
|
||||
own_window yes
|
||||
own_window_type override
|
||||
own_window_class Conky
|
||||
own_window_transparent yes
|
||||
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
|
||||
own_window_colour 000000
|
||||
#own_window_argb_visual yes
|
||||
#own_window_argb_value 128
|
||||
border_inner_margin 0
|
||||
border_outer_margin 0
|
||||
|
||||
minimum_size 7266 748
|
||||
|
||||
# -- Graphics settings -- #
|
||||
draw_shades no
|
||||
draw_outline no
|
||||
draw_borders no
|
||||
draw_graph_borders no
|
||||
|
||||
# -- Text settings -- #
|
||||
use_xft yes
|
||||
xftfont Santana:size=8
|
||||
xftalpha 0.8
|
||||
|
||||
uppercase no
|
||||
|
||||
default_color FFFFFF
|
||||
|
||||
# -- Lua load -- #
|
||||
lua_load main.lua
|
||||
lua_draw_hook_pre main
|
||||
lua_startup_hook setup
|
||||
|
||||
alignment top_left
|
||||
gap_x 280
|
||||
gap_y 80
|
||||
own_window_argb_value 0
|
||||
own_window_argb_visual yes
|
||||
own_window_colour 000000
|
||||
TEXT
|
||||
#${offset 636}${voffset 223}${font Roboto:size=12}${time %l:%M %P }
|
||||
${offset 630}${voffset 228}${font Roboto:size=35}Arch
|
||||
|
1
config/conky/Octupi_Arch/face
Symbolic link
1
config/conky/Octupi_Arch/face
Symbolic link
|
@ -0,0 +1 @@
|
|||
./face.png
|
BIN
config/conky/Octupi_Arch/face.png
Normal file
BIN
config/conky/Octupi_Arch/face.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 158 KiB |
BIN
config/conky/Octupi_Arch/faceold
Normal file
BIN
config/conky/Octupi_Arch/faceold
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.6 KiB |
1012
config/conky/Octupi_Arch/main.lua
Normal file
1012
config/conky/Octupi_Arch/main.lua
Normal file
File diff suppressed because it is too large
Load diff
17
config/conky/Octupi_Arch/settings
Normal file
17
config/conky/Octupi_Arch/settings
Normal file
|
@ -0,0 +1,17 @@
|
|||
|
||||
# dimenstions
|
||||
WIDTH = 1366;
|
||||
HEIGHT = 748;
|
||||
|
||||
# network
|
||||
NETWORK = wlo1;
|
||||
|
||||
# cpu
|
||||
NO_OF_CORES = 8;
|
||||
|
||||
# color scheme the values are DARK or WHITE
|
||||
COLOR = WHITE;
|
||||
|
||||
# gmail account
|
||||
MAIL = '''MAIL''':'''PASSWARD''' https://mail.google.com/mail/feed/atom/unread;
|
||||
|
8
config/conky/conky-startup.sh
Normal file
8
config/conky/conky-startup.sh
Normal file
|
@ -0,0 +1,8 @@
|
|||
sleep 5s
|
||||
killall conky
|
||||
cd "/home/jonathan/.conky/BibleVerse"
|
||||
conky -c "/home/jonathan/.conky/BibleVerse/bibleGateway" &
|
||||
cd "/home/jonathan/.conky/MyBlue"
|
||||
conky -c "/home/jonathan/.conky/MyBlue/MyBlue" &
|
||||
cd "/home/jonathan/.conky/Octupi_Arch"
|
||||
conky -c "/home/jonathan/.conky/Octupi_Arch/co_main" &
|
361
config/i3/config
Normal file
361
config/i3/config
Normal file
|
@ -0,0 +1,361 @@
|
|||
# This file has been auto-generated by i3-config-wizard(1).
|
||||
# It will not be overwritten, so edit it as you like.
|
||||
#
|
||||
# Should you change your keyboard layout some time, delete
|
||||
# this file and re-run i3-config-wizard(1).
|
||||
#
|
||||
|
||||
# i3 config file (v4)
|
||||
#
|
||||
# Please see http://i3wm.org/docs/userguide.html for a complete reference!
|
||||
|
||||
set $mod Mod4
|
||||
|
||||
set $base00 #101218
|
||||
set $base01 #1f222d
|
||||
set $base02 #252936
|
||||
set $base03 #7780a1
|
||||
set $base04 #C0C5CE
|
||||
set $base05 #d1d4e0
|
||||
set $base06 #C9CCDB
|
||||
set $base07 #ffffff
|
||||
set $base08 #ee829f
|
||||
set $base09 #f99170
|
||||
set $base0A #ffefcc
|
||||
set $base0B #a5ffe1
|
||||
set $base0C #97e0ff
|
||||
set $base0D #97bbf7
|
||||
set $base0E #c0b7f9
|
||||
set $base0F #fcc09e
|
||||
|
||||
|
||||
# Font for window titles. Will also be used by the bar unless a different font
|
||||
# is used in the bar {} block below.
|
||||
font pango:monospace 8
|
||||
|
||||
# This font is widely installed, provides lots of unicode glyphs, right-to-left
|
||||
# text rendering and scalability on retina/hidpi displays (thanks to pango).
|
||||
#font pango:DejaVu Sans Mono 8
|
||||
|
||||
# Before i3 v4.8, we used to recommend this one as the default:
|
||||
# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||
# The font above is very space-efficient, that is, it looks good, sharp and
|
||||
# clear in small sizes. However, its unicode glyph coverage is limited, the old
|
||||
# X core fonts rendering does not support right-to-left and this being a bitmap
|
||||
# font, it doesn’t scale on retina/hidpi displays.
|
||||
|
||||
# Use Mouse+$mod to drag floating windows to their wanted position
|
||||
floating_modifier $mod
|
||||
|
||||
# start a terminal
|
||||
# bindsym $mod+Return exec xfce4-terminal
|
||||
#bindsym $mod+Return exec konsole
|
||||
bindsym $mod+Return exec termite
|
||||
|
||||
# kill focused window
|
||||
bindsym $mod+q kill
|
||||
|
||||
# start dmenu (a program launcher)
|
||||
# bindsym $mod+d exec dmenu_run
|
||||
bindsym $mod+d exec albert toggle
|
||||
#bindsym $mod+z exec xfce4-appfinder
|
||||
|
||||
#kill i3
|
||||
bindsym $mod+Shift+x exec killall i3
|
||||
|
||||
for_window [class="xfce4-appfinder"] floating enable
|
||||
|
||||
|
||||
|
||||
# There also is the (new) i3-dmenu-desktop which only displays applications
|
||||
# shipping a .desktop file. It is a wrapper around dmenu, so you need that
|
||||
# installed.
|
||||
# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
|
||||
|
||||
# change focus
|
||||
bindsym $mod+j focus down
|
||||
bindsym $mod+k focus up
|
||||
bindsym $mod+l focus right
|
||||
bindsym $mod+h focus left
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# move focused window
|
||||
bindsym $mod+Shift+j move down
|
||||
bindsym $mod+Shift+k move up
|
||||
bindsym $mod+Shift+l move right
|
||||
bindsym $mod+Shift+h move left
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
|
||||
# split in horizontal orientation
|
||||
bindsym $mod+g split h
|
||||
|
||||
# split in vertical orientation
|
||||
bindsym $mod+v split v
|
||||
|
||||
# enter fullscreen mode for the focused container
|
||||
bindsym $mod+f fullscreen toggle
|
||||
|
||||
# change container layout (stacked, tabbed, toggle split)
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+w layout tabbed
|
||||
bindsym $mod+e layout toggle split
|
||||
|
||||
# toggle tiling / floating
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
|
||||
# change focus between tiling / floating windows
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
# focus the parent container
|
||||
bindsym $mod+a focus parent
|
||||
|
||||
# move to the parent container
|
||||
bindsym $mod+Shift+a move parent
|
||||
|
||||
# focus the child container
|
||||
bindsym $mod+z focus child
|
||||
|
||||
# move to the child container
|
||||
bindsym $mod+Shift+z focus child
|
||||
|
||||
|
||||
#set workspace names
|
||||
set $workspace1 "1: Browser "
|
||||
set $workspace2 "2: Terminal "
|
||||
set $workspace3 "3"
|
||||
set $workspace4 "4"
|
||||
set $workspace5 "5"
|
||||
set $workspace6 "6"
|
||||
set $workspace7 "7"
|
||||
set $workspace8 "8"
|
||||
set $workspace9 "9"
|
||||
set $workspace10 "10: Chat "
|
||||
|
||||
# switch to workspace
|
||||
bindsym $mod+1 workspace $workspace1
|
||||
bindsym $mod+2 workspace $workspace2
|
||||
bindsym $mod+3 workspace $workspace3
|
||||
bindsym $mod+4 workspace $workspace4
|
||||
bindsym $mod+5 workspace $workspace5
|
||||
bindsym $mod+6 workspace $workspace6
|
||||
bindsym $mod+7 workspace $workspace7
|
||||
bindsym $mod+8 workspace $workspace8
|
||||
bindsym $mod+9 workspace $workspace9
|
||||
bindsym $mod+0 workspace $workspace10
|
||||
|
||||
# move focused container to workspace
|
||||
bindsym $mod+Shift+1 move container to workspace $workspace1, workspace $workspace1
|
||||
bindsym $mod+Shift+2 move container to workspace $workspace2, workspace $workspace2
|
||||
bindsym $mod+Shift+3 move container to workspace $workspace3, workspace $workspace3
|
||||
bindsym $mod+Shift+4 move container to workspace $workspace4, workspace $workspace4
|
||||
bindsym $mod+Shift+5 move container to workspace $workspace5, workspace $workspace5
|
||||
bindsym $mod+Shift+6 move container to workspace $workspace6, workspace $workspace6
|
||||
bindsym $mod+Shift+7 move container to workspace $workspace7, workspace $workspace7
|
||||
bindsym $mod+Shift+8 move container to workspace $workspace8, workspace $workspace8
|
||||
bindsym $mod+Shift+9 move container to workspace $workspace9, workspace $workspace9
|
||||
bindsym $mod+Shift+0 move container to workspace $workspace10, workspace $workspace10
|
||||
|
||||
#assign programs to workspaces
|
||||
assign [class="chromium"] $workspace1
|
||||
assign [instance="crx_knipolnnllmklapflnccelgolnpehhpl"] to $workspace10
|
||||
|
||||
for_window [window_role="gimp-toolbox"] floating disable; move left; move left;
|
||||
for_window [window_role="gimp-dock"] floating disable; move right; move right;
|
||||
|
||||
# reload the configuration file
|
||||
bindsym $mod+Shift+c reload
|
||||
|
||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
||||
bindsym $mod+Shift+r restart
|
||||
|
||||
# exit i3 (logs you out of your X session)
|
||||
#bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
|
||||
|
||||
# resize window (you can also use the mouse for that)
|
||||
mode "resize" {
|
||||
# These bindings trigger as soon as you enter the resize mode
|
||||
|
||||
# Pressing left will shrink the window’s width.
|
||||
# Pressing right will grow the window’s width.
|
||||
# Pressing up will shrink the window’s height.
|
||||
# Pressing down will grow the window’s height.
|
||||
bindsym h resize shrink width 10 px or 10 ppt
|
||||
bindsym j resize grow height 10 px or 10 ppt
|
||||
bindsym k resize shrink height 10 px or 10 ppt
|
||||
bindsym l resize grow width 10 px or 10 ppt
|
||||
|
||||
# same bindings, but for the arrow keys
|
||||
bindsym Left resize shrink width 10 px or 10 ppt
|
||||
bindsym Down resize grow height 10 px or 10 ppt
|
||||
bindsym Up resize shrink height 10 px or 10 ppt
|
||||
bindsym Right resize grow width 10 px or 10 ppt
|
||||
|
||||
# back to normal: Enter or Escape
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
|
||||
bindsym $mod+r mode "resize"
|
||||
|
||||
|
||||
# Widow Colours
|
||||
# border background text indicator
|
||||
client.focused $base01 $base01 $base07 $base0F
|
||||
client.focused_inactive $base02 $base02 $base03 $base0F
|
||||
client.unfocused $base02 $base02 $base03 $base0F
|
||||
client.urgent $base02 $base08 $base00 $base0F
|
||||
|
||||
|
||||
# Start i3bar to display a workspace bar (plus the system information i3status
|
||||
# finds out, if available)
|
||||
bar {
|
||||
status_command i3status
|
||||
#tray_output primary
|
||||
colors {
|
||||
separator $base03
|
||||
background $base01
|
||||
statusline $base05
|
||||
# border background text
|
||||
focused_workspace $base01 $base01 $base07
|
||||
active_workspace $base01 $base02 $base03
|
||||
inactive_workspace $base01 $base01 $base03
|
||||
urgent_workspace $base01 $base01 $base08
|
||||
}
|
||||
}
|
||||
|
||||
#Use xfce4 panel instead of i3's
|
||||
#exec --no-startup-id xfce4-panel --disable-wm-check
|
||||
|
||||
bindsym control+mod1+c exec chromium, workspace $workspace1
|
||||
bindsym control+mod1+f exec thunar
|
||||
|
||||
|
||||
# Pulse Audio controls
|
||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 1 +5% #increase sound volume
|
||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 1 -5% #decrease sound volume
|
||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 1 toggle # mute sound
|
||||
|
||||
# Sreen brightness controls
|
||||
bindsym XF86MonBrightnessUp exec xbacklight -inc 20 # increase screen brightness
|
||||
bindsym XF86MonBrightnessDown exec xbacklight -dec 20 # decrease screen brightness
|
||||
|
||||
# Touchpad controls
|
||||
bindsym XF86TouchpadToggle exec /some/path/toggletouchpad.sh # toggle touchpad
|
||||
|
||||
# Media player controls
|
||||
bindsym XF86AudioPlay exec playerctl play
|
||||
bindsym XF86AudioPause exec playerctl pause
|
||||
bindsym XF86AudioNext exec playerctl next
|
||||
bindsym XF86AudioPrev exec playerctl previous
|
||||
|
||||
#printscreen
|
||||
bindsym Print exec xfce4-screenshooter -f
|
||||
bindsym ctrl+Print exec xfce4-screenshooter -w
|
||||
bindsym Shift+Print exec xfce4-screenshooter -r
|
||||
|
||||
|
||||
bindsym $mod+x exec --no-startup-id ~/.config/i3/i3exit logout
|
||||
|
||||
|
||||
set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown
|
||||
mode "$mode_system" {
|
||||
bindsym l exec --no-startup-id ~/.config/i3/i3exit lock, mode "default"
|
||||
bindsym e exec --no-startup-id ~/.config/i3/i3exit logout, mode "default"
|
||||
bindsym s exec --no-startup-id ~/.config/i3/i3exit suspend, mode "default"
|
||||
bindsym h exec --no-startup-id ~/.config/i3/i3exit hibernate, mode "default"
|
||||
bindsym r exec --no-startup-id~/.config/i3/i3exit reboot, mode "default"
|
||||
bindsym Shift+s exec --no-startup-id ~/.config/i3/i3exit shutdown, mode "default"
|
||||
|
||||
# back to normal: Enter or Escape
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
bindsym ctrl+Shift+l mode "$mode_system"
|
||||
#bindsym ctrl+l exec "/home/jonathan/.bin/i3exit lock"
|
||||
|
||||
|
||||
##################################################
|
||||
# #
|
||||
# i3 Gaps #
|
||||
# #
|
||||
##################################################
|
||||
|
||||
for_window [class="^.*"] border pixel 0
|
||||
gaps outer 0
|
||||
gaps inner 10
|
||||
smart_gaps on
|
||||
|
||||
set $mode_gaps Gaps: (o) outer, (i) inner, (d) default
|
||||
set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global)
|
||||
set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global)
|
||||
bindsym $mod+Shift+g mode "$mode_gaps"
|
||||
|
||||
mode "$mode_gaps" {
|
||||
bindsym o mode "$mode_gaps_outer"
|
||||
bindsym i mode "$mode_gaps_inner"
|
||||
bindsym d gaps inner current set 10; gaps outer current set 0
|
||||
bindsym Shift+d gaps inner all set 10; gaps outer all set 0
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
|
||||
mode "$mode_gaps_inner" {
|
||||
bindsym plus gaps inner current plus 5
|
||||
bindsym minus gaps inner current minus 5
|
||||
bindsym 0 gaps inner current set 0
|
||||
bindsym d gaps inner current set 10
|
||||
|
||||
bindsym Shift+plus gaps inner all plus 5
|
||||
bindsym Shift+minus gaps inner all minus 5
|
||||
bindsym Shift+0 gaps inner all set 0
|
||||
bindsym Shift+d gaps inner all set 10
|
||||
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
mode "$mode_gaps_outer" {
|
||||
bindsym plus gaps outer current plus 5
|
||||
bindsym minus gaps outer current minus 5
|
||||
bindsym 0 gaps outer current set 0
|
||||
bindsym d gaps outer current set 0
|
||||
|
||||
bindsym Shift+plus gaps outer all plus 5
|
||||
bindsym Shift+minus gaps outer all minus 5
|
||||
bindsym Shift+0 gaps outer all set 0
|
||||
bindsym Shift+d gaps outer all set 0
|
||||
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#exec --no-startup-id redshift-gtk
|
||||
#exec_always feh --bg-fill /home/jonathan/Pictures/Wallpapers/blueConky/dfCXBel.jpg
|
||||
exec --no-startup-id compton -f -i 0.95
|
||||
exec --no-startup-id albert
|
||||
#exec --no-startup-id nm-applet
|
||||
#exec --no-startup-id blueman-applet
|
||||
#exec --no-startup-id xfce4-clipman
|
||||
#exec --no-startup-id xfce4-power-manager
|
||||
#exec_always --no-startup-id /usr/lib/kdeconnectd
|
||||
#exec_always --no-startup-id indicator-kdeconnect
|
||||
#exec_always --no-startup-id killall conky
|
||||
#exec_always --no-startup-id sleep 1s; killall -9 conky
|
||||
#exec --no-startup-id sh /home/jonathan/.conky/conky-startup.sh
|
||||
#exec_always --no-startup-id sleep 2s; conky -c "/home/jonathan/.conky/BibleVerse/bibleGateway"
|
||||
#exec_always --no-startup-id sleep 2s; conky -c "/home/jonathan/.conky/MyBlue/MyBlue"
|
||||
#exec_always --no-startup-id cd /home/jonathan/.conky/Octupi_Arch
|
||||
#exec_always --no-startup-id sleep 2s; conky -c "co_main"
|
||||
exec setxkbmap gb
|
363
config/i3/configWork
Normal file
363
config/i3/configWork
Normal file
|
@ -0,0 +1,363 @@
|
|||
# i3 config file (v4)
|
||||
#
|
||||
# Please see http://i3wm.org/docs/userguide.html for a complete reference!
|
||||
|
||||
set $mod Mod4
|
||||
|
||||
set $base00 #101218
|
||||
set $base01 #1f222d
|
||||
set $base02 #252936
|
||||
set $base03 #7780a1
|
||||
set $base04 #C0C5CE
|
||||
set $base05 #d1d4e0
|
||||
set $base06 #C9CCDB
|
||||
set $base07 #ffffff
|
||||
set $base08 #ee829f
|
||||
set $base09 #f99170
|
||||
set $base0A #ffefcc
|
||||
set $base0B #a5ffe1
|
||||
set $base0C #97e0ff
|
||||
set $base0D #97bbf7
|
||||
set $base0E #c0b7f9
|
||||
set $base0F #fcc09e
|
||||
|
||||
|
||||
# Font for window titles. Will also be used by the bar unless a different font
|
||||
# is used in the bar {} block below.
|
||||
font pango:monospace 8
|
||||
|
||||
# This font is widely installed, provides lots of unicode glyphs, right-to-left
|
||||
# text rendering and scalability on retina/hidpi displays (thanks to pango).
|
||||
font pango:DejaVu Sans Mono 8
|
||||
|
||||
# Before i3 v4.8, we used to recommend this one as the default:
|
||||
# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
|
||||
# The font above is very space-efficient, that is, it looks good, sharp and
|
||||
# clear in small sizes. However, its unicode glyph coverage is limited, the old
|
||||
# X core fonts rendering does not support right-to-left and this being a bitmap
|
||||
# font, it doesn’t scale on retina/hidpi displays.
|
||||
|
||||
# Use Mouse+$mod to drag floating windows to their wanted position
|
||||
floating_modifier $mod
|
||||
|
||||
# start a terminal
|
||||
# bindsym $mod+Return exec xfce4-terminal
|
||||
# bindsym $mod+Return exec konsole
|
||||
bindsym $mod+Return exec termite
|
||||
|
||||
# kill focused window
|
||||
bindsym $mod+q kill
|
||||
|
||||
# start dmenu (a program launcher)
|
||||
#bindsym $mod+d exec dmenu_run
|
||||
bindsym $mod+d exec albert toggle
|
||||
bindsym XF86Search exec albert toggle
|
||||
#bindsym $mod+z exec xfce4-appfinder
|
||||
|
||||
#kill i3
|
||||
bindsym $mod+Shift+x exec killall i3
|
||||
|
||||
for_window [class="xfce4-appfinder"] floating enable
|
||||
|
||||
|
||||
|
||||
# There also is the (new) i3-dmenu-desktop which only displays applications
|
||||
# shipping a .desktop file. It is a wrapper around dmenu, so you need that
|
||||
# installed.
|
||||
# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
|
||||
|
||||
# change focus
|
||||
bindsym $mod+j focus down
|
||||
bindsym $mod+k focus up
|
||||
bindsym $mod+l focus right
|
||||
bindsym $mod+h focus left
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# move focused window
|
||||
bindsym $mod+Shift+h move left
|
||||
bindsym $mod+Shift+j move down
|
||||
bindsym $mod+Shift+k move up
|
||||
bindsym $mod+Shift+l move right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
|
||||
# split in horizontal orientation
|
||||
bindsym $mod+g split h
|
||||
|
||||
# split in vertical orientation
|
||||
bindsym $mod+v split v
|
||||
|
||||
# enter fullscreen mode for the focused container
|
||||
bindsym $mod+f fullscreen toggle
|
||||
|
||||
# change container layout (stacked, tabbed, toggle split)
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+w layout tabbed
|
||||
bindsym $mod+e layout toggle split
|
||||
|
||||
# toggle tiling / floating
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
|
||||
# change focus between tiling / floating windows
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
# focus the parent container
|
||||
bindsym $mod+a focus parent
|
||||
|
||||
# focus the child container
|
||||
bindsym $mod+Shift+a focus child
|
||||
|
||||
|
||||
#set workspace names
|
||||
set $workspace1 "1: Browser "
|
||||
set $workspace2 "2: Terminal "
|
||||
set $workspace3 "3"
|
||||
set $workspace4 "4"
|
||||
set $workspace5 "5"
|
||||
set $workspace6 "6"
|
||||
set $workspace7 "7"
|
||||
set $workspace8 "8"
|
||||
set $workspace9 "9"
|
||||
set $workspace10 "10 Chat "
|
||||
|
||||
# switch to workspace
|
||||
bindsym $mod+1 workspace $workspace1
|
||||
bindsym $mod+2 workspace $workspace2
|
||||
bindsym $mod+3 workspace $workspace3
|
||||
bindsym $mod+4 workspace $workspace4
|
||||
bindsym $mod+5 workspace $workspace5
|
||||
bindsym $mod+6 workspace $workspace6
|
||||
bindsym $mod+7 workspace $workspace7
|
||||
bindsym $mod+8 workspace $workspace8
|
||||
bindsym $mod+9 workspace $workspace9
|
||||
bindsym $mod+0 workspace $workspace10
|
||||
|
||||
# move focused container to workspace
|
||||
bindsym $mod+Shift+1 move container to workspace $workspace1, workspace $workspace1
|
||||
bindsym $mod+Shift+2 move container to workspace $workspace2, workspace $workspace2
|
||||
bindsym $mod+Shift+3 move container to workspace $workspace3, workspace $workspace3
|
||||
bindsym $mod+Shift+4 move container to workspace $workspace4, workspace $workspace4
|
||||
bindsym $mod+Shift+5 move container to workspace $workspace5, workspace $workspace5
|
||||
bindsym $mod+Shift+6 move container to workspace $workspace6, workspace $workspace6
|
||||
bindsym $mod+Shift+7 move container to workspace $workspace7, workspace $workspace7
|
||||
bindsym $mod+Shift+8 move container to workspace $workspace8, workspace $workspace8
|
||||
bindsym $mod+Shift+9 move container to workspace $workspace9, workspace $workspace9
|
||||
bindsym $mod+Shift+0 move container to workspace $workspace10, workspace $workspace10
|
||||
|
||||
# move workspace to left/right
|
||||
bindsym $mod+control+Left move workspace to output left
|
||||
bindsym $mod+control+Right move workspace to output right
|
||||
|
||||
|
||||
bindsym $mod+control+h move workspace to output left
|
||||
bindsym $mod+control+l move workspace to output right
|
||||
|
||||
|
||||
#assign programs to workspaces
|
||||
assign [class="chromium"] $workspace1
|
||||
assign [class="skypeforlinux"] $workspace10
|
||||
|
||||
#make applications open in floating mode
|
||||
for_window [class="Galculator"] floating enable
|
||||
|
||||
# reload the configuration file
|
||||
bindsym $mod+Shift+c reload
|
||||
|
||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
||||
bindsym $mod+Shift+r restart
|
||||
|
||||
# exit i3 (logs you out of your X session)
|
||||
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
|
||||
|
||||
# resize window (you can also use the mouse for that)
|
||||
mode "resize" {
|
||||
# These bindings trigger as soon as you enter the resize mode
|
||||
|
||||
# Pressing left will shrink the window’s width.
|
||||
# Pressing right will grow the window’s width.
|
||||
# Pressing up will shrink the window’s height.
|
||||
# Pressing down will grow the window’s height.
|
||||
bindsym h resize shrink width 10 px or 10 ppt
|
||||
bindsym j resize grow height 10 px or 10 ppt
|
||||
bindsym k resize shrink height 10 px or 10 ppt
|
||||
bindsym l resize grow width 10 px or 10 ppt
|
||||
|
||||
# same bindings, but for the arrow keys
|
||||
bindsym Left resize shrink width 10 px or 10 ppt
|
||||
bindsym Down resize grow height 10 px or 10 ppt
|
||||
bindsym Up resize shrink height 10 px or 10 ppt
|
||||
bindsym Right resize grow width 10 px or 10 ppt
|
||||
|
||||
# back to normal: Enter or Escape
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
|
||||
bindsym $mod+r mode "resize"
|
||||
|
||||
|
||||
# Widow Colours
|
||||
# border background text indicator
|
||||
client.focused $base01 $base01 $base07 $base0F
|
||||
client.focused_inactive $base02 $base02 $base03 $base0F
|
||||
client.unfocused $base02 $base02 $base03 $base0F
|
||||
client.urgent $base02 $base08 $base00 $base0F
|
||||
|
||||
|
||||
# Start i3bar to display a workspace bar (plus the system information i3status
|
||||
# finds out, if available)
|
||||
bar {
|
||||
status_command i3status
|
||||
#tray_output primary
|
||||
colors {
|
||||
separator $base03
|
||||
background $base01
|
||||
statusline $base05
|
||||
# border background text
|
||||
focused_workspace $base01 $base01 $base07
|
||||
active_workspace $base01 $base02 $base03
|
||||
inactive_workspace $base01 $base01 $base03
|
||||
urgent_workspace $base01 $base01 $base08
|
||||
}
|
||||
}
|
||||
|
||||
#Use xfce4 panel instead of i3's
|
||||
#exec --no-startup-id xfce4-panel --disable-wm-check
|
||||
|
||||
bindsym control+mod1+c exec chromium, workspace $workspace1
|
||||
bindsym control+mod1+f exec thunar
|
||||
bindsym XF86Mail exec thunderbird
|
||||
bindsym $mod+z exec zeal
|
||||
|
||||
# Pulse Audio controls
|
||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% #increase sound volume
|
||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% #decrease sound volume
|
||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle # mute sound
|
||||
|
||||
# Sreen brightness controls
|
||||
#bindsym XF86MonBrightnessUp exec xbacklight -inc 20 # increase screen brightness
|
||||
#bindsym XF86MonBrightnessDown exec xbacklight -dec 20 # decrease screen brightness
|
||||
|
||||
# Touchpad controls
|
||||
#bindsym XF86TouchpadToggle exec /some/path/toggletouchpad.sh # toggle touchpad
|
||||
|
||||
# Media player controls
|
||||
bindsym XF86AudioPlay exec playerctl play-pause
|
||||
#bindsym XF86AudioPause exec playerctl pause
|
||||
#bindsym XF86AudioNext exec playerctl next
|
||||
#bindsym XF86AudioPrev exec playerctl previous
|
||||
|
||||
#calculator button
|
||||
bindsym XF86Calculator exec galculator
|
||||
|
||||
#printscreen
|
||||
bindsym Print exec xfce4-screenshooter -f
|
||||
bindsym ctrl+Print exec xfce4-screenshooter -w
|
||||
bindsym Shift+Print exec xfce4-screenshooter -r
|
||||
|
||||
|
||||
bindsym $mod+x exec --no-startup-id ~/.config/i3/i3exit logout
|
||||
|
||||
|
||||
set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown
|
||||
mode "$mode_system" {
|
||||
bindsym l exec --no-startup-id ~/.config/i3/i3exit lock, mode "default"
|
||||
bindsym e exec --no-startup-id ~/.config/i3/i3exit logout, mode "default"
|
||||
bindsym s exec --no-startup-id ~/.config/i3/i3exit suspend, mode "default"
|
||||
bindsym h exec --no-startup-id ~/.config/i3/i3exit hibernate, mode "default"
|
||||
bindsym r exec --no-startup-id~/.config/i3/i3exit reboot, mode "default"
|
||||
bindsym Shift+s exec --no-startup-id ~/.config/i3/i3exit shutdown, mode "default"
|
||||
|
||||
# back to normal: Enter or Escape
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
bindsym ctrl+shift+l mode "$mode_system"
|
||||
#bindsym ctrl+l exec "~/.config/i3/i3exit lock"
|
||||
|
||||
##################################################
|
||||
# #
|
||||
# i3 Gaps #
|
||||
# #
|
||||
##################################################
|
||||
|
||||
for_window [class="^.*"] border pixel 0
|
||||
gaps outer 0
|
||||
gaps inner 10
|
||||
smart_gaps on
|
||||
|
||||
set $mode_gaps Gaps: (o) outer, (i) inner, (d) default
|
||||
set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global)
|
||||
set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global)
|
||||
bindsym $mod+Shift+g mode "$mode_gaps"
|
||||
|
||||
mode "$mode_gaps" {
|
||||
bindsym o mode "$mode_gaps_outer"
|
||||
bindsym i mode "$mode_gaps_inner"
|
||||
bindsym d gaps inner current set 10; gaps outer current set 0
|
||||
bindsym Shift+d gaps inner all set 10; gaps outer all set 0
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
|
||||
mode "$mode_gaps_inner" {
|
||||
bindsym plus gaps inner current plus 5
|
||||
bindsym minus gaps inner current minus 5
|
||||
bindsym 0 gaps inner current set 0
|
||||
bindsym d gaps inner current set 10
|
||||
|
||||
bindsym Shift+plus gaps inner all plus 5
|
||||
bindsym Shift+minus gaps inner all minus 5
|
||||
bindsym Shift+0 gaps inner all set 0
|
||||
bindsym Shift+d gaps inner all set 10
|
||||
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
mode "$mode_gaps_outer" {
|
||||
bindsym plus gaps outer current plus 5
|
||||
bindsym minus gaps outer current minus 5
|
||||
bindsym 0 gaps outer current set 0
|
||||
bindsym d gaps outer current set 0
|
||||
|
||||
bindsym Shift+plus gaps outer all plus 5
|
||||
bindsym Shift+minus gaps outer all minus 5
|
||||
bindsym Shift+0 gaps outer all set 0
|
||||
bindsym Shift+d gaps outer all set 0
|
||||
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#exec --no-startup-id redshift-gtk
|
||||
|
||||
#exec --no-startup-id redshift-gtk
|
||||
#exec feh --bg-scale /home/jonathan/Pictures/Wallpapers/blueConky/ram_memory_chip-wallpaper-3554x1999.jpg
|
||||
exec --no-startup-id compton -f -i 0.95
|
||||
exec_always --no-startup-id /usr/lib/kdeconnectd
|
||||
exec_always --no-startup-id indicator-kdeconnect
|
||||
#exec --no-startup-id nm-applet
|
||||
#exec --no-startup-id blueman-applet
|
||||
exec --no-startup-id xfce4-clipman
|
||||
#exec --no-startup-id xfce4-power-manager
|
||||
#exec_always --no-startup-id killall conky
|
||||
#exec_always --no-startup-id sleep 1s; killall -9 conky
|
||||
exec --no-startup-id xrandr --output HDMI-1 --auto --left-of DP-1
|
||||
exec_always --no-startup-id /usr/lib/xfce4/notifyd/xfce4-notifyd
|
||||
exec --no-startup-id sh ~/.fehbg
|
||||
exec_always --no-startup-id sh "/home/jonathan/.config/conky/conky-startup.sh"
|
||||
#exec --no-startup-id conky -c "/home/jonathan/.config/conky/BibleVerse/bibleGateway"
|
||||
#exec --no-startup-id conky -c "/home/jonathan/.config/conky/MyBlue/MyBlue"
|
||||
exec --no-startup-id albert
|
36
config/i3/fadeLockScreen
Executable file
36
config/i3/fadeLockScreen
Executable file
|
@ -0,0 +1,36 @@
|
|||
#!/bin/bash
|
||||
|
||||
scrot -z /tmp/screen.png
|
||||
convert /tmp/screen.png -scale 10% -scale 1000% /tmp/screen.png
|
||||
|
||||
if [[ -f $HOME/.config/screen-lock.png ]]
|
||||
then
|
||||
# placement x/y
|
||||
PX=0
|
||||
PY=0
|
||||
# lockscreen image info
|
||||
R=$(file ~/.config/screen-lock.png | grep -o '[0-9]* x [0-9]*')
|
||||
RX=$(echo $R | cut -d' ' -f 1)
|
||||
RY=$(echo $R | cut -d' ' -f 3)
|
||||
|
||||
|
||||
|
||||
SR=$(xrandr --query | grep ' connected' | cut -f4 -d' ')
|
||||
echo $SR
|
||||
for RES in $SR
|
||||
do
|
||||
echo $RES
|
||||
# monitor position/offset
|
||||
SRX=$(echo $RES | cut -d'x' -f 1) # x pos
|
||||
SRY=$(echo $RES | cut -d'x' -f 2 | cut -d'+' -f 1) # y pos
|
||||
SROX=$(echo $RES | cut -d'x' -f 2 | cut -d'+' -f 2) # x offset
|
||||
SROY=$(echo $RES | cut -d'x' -f 2 | cut -d'+' -f 3) # y offset
|
||||
PX=$(($SROX + $SRX/2 - $RX/2))
|
||||
PY=$(($SROY + $SRY/2 - $RY/2))
|
||||
convert /tmp/screen.png $HOME/.config/screen-lock.png -geometry +$PX+$PY -composite -matte /tmp/screen.png
|
||||
echo "done"
|
||||
done
|
||||
fi
|
||||
# dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Stop
|
||||
# i3lock -I 10 -d -e -u -n -i /tmp/screen.png
|
||||
i3lock -e -n -i /tmp/screen.png
|
31
config/i3/i3exit
Executable file
31
config/i3/i3exit
Executable file
|
@ -0,0 +1,31 @@
|
|||
#!/bin/sh
|
||||
lock() {
|
||||
~/.config/i3/fadeLockScreen
|
||||
#i3lock
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
lock)
|
||||
lock
|
||||
;;
|
||||
logout)
|
||||
i3-msg exit
|
||||
;;
|
||||
suspend)
|
||||
systemctl suspend && lock
|
||||
;;
|
||||
hibernate)
|
||||
systemctl hibernate && lock
|
||||
;;
|
||||
reboot)
|
||||
systemctl reboot
|
||||
;;
|
||||
shutdown)
|
||||
systemctl poweroff
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {lock|logout|suspend|hibernate|reboot|shutdown}"
|
||||
exit 2
|
||||
esac
|
||||
|
||||
exit 0
|
1351
config/inkscape/preferences.xml
Normal file
1351
config/inkscape/preferences.xml
Normal file
File diff suppressed because one or more lines are too long
86
config/powerline-shell/CHANGELOG.md
Normal file
86
config/powerline-shell/CHANGELOG.md
Normal file
|
@ -0,0 +1,86 @@
|
|||
# Changes
|
||||
|
||||
2016-04-16
|
||||
|
||||
* Fix issue around unicode function for python 3
|
||||
|
||||
2016-04-01
|
||||
|
||||
* Refactor of the way the git segment manages data about git's state.
|
||||
([@b-ryan](https://github.com/milkbikis/powerline-shell/pull/221))
|
||||
|
||||
2015-12-26
|
||||
|
||||
* Beginnings of unit testing for segments. Included in this change was a
|
||||
refactor of the way segments are added to powerline. Now, instead of looking
|
||||
for a global `powerline` object, `powerline` is passed into the function to
|
||||
add the segment. Segments will also no longer add the segments by calling the
|
||||
`add` function themselves.
|
||||
([@b-ryan](https://github.com/milkbikis/powerline-shell/pull/212))
|
||||
* Python3 fixes for `lib/color_compliment.py`.
|
||||
([@ceholden](https://github.com/milkbikis/powerline-shell/pull/220))
|
||||
|
||||
2015-11-25
|
||||
|
||||
* `virtual_env` segment now supports environments made with `conda`
|
||||
([@ceholden](https://github.com/milkbikis/powerline-shell/pull/198))
|
||||
|
||||
2015-11-21
|
||||
|
||||
* Fixes for Python 3 compatibility
|
||||
([@b-ryan](https://github.com/milkbikis/powerline-shell/pull/211))
|
||||
|
||||
2015-11-18
|
||||
|
||||
* The git segment has gotten a makeover
|
||||
([@MartinWetterwald](https://github.com/milkbikis/powerline-shell/pull/136))
|
||||
* Fix git segment when git is not on the standard PATH
|
||||
([@andrejgl](https://github.com/milkbikis/powerline-shell/pull/153))
|
||||
* Fix `--cwd-max-depth` showing duplicates when it's <= 2
|
||||
([@b-ryan](https://github.com/milkbikis/powerline-shell/pull/209))
|
||||
* Add padding around `exit_code` segment
|
||||
([@phatblat](https://github.com/milkbikis/powerline-shell/pull/205))
|
||||
|
||||
2015-10-02
|
||||
|
||||
* New option (`--cwd-max-dir-size`) which allows you to limit each directory
|
||||
that is displayed to a number of characters. This currently does not apply
|
||||
if you are using `--cwd-mode plain`.
|
||||
([@mart-e](https://github.com/milkbikis/powerline-shell/pull/127))
|
||||
|
||||
2015-08-26
|
||||
|
||||
* New `plain` mode of displaying the current working directory which can be
|
||||
used by adding `--cwd-only plain` to `powerline-shell.py`.
|
||||
This deprecates the `--cwd-only` option. `--cwd-mode dironly` can be used
|
||||
instead. ([@paol](https://github.com/milkbikis/powerline-shell/pull/156))
|
||||
|
||||
2015-08-18
|
||||
|
||||
* New `time` segment
|
||||
([@filipebarros](https://github.com/milkbikis/powerline-shell/pull/107))
|
||||
|
||||
2015-08-01
|
||||
|
||||
* Use `print` function for some python3 compatibility
|
||||
([@strycore](https://github.com/milkbikis/powerline-shell/pull/195))
|
||||
|
||||
2015-07-31
|
||||
|
||||
* The current working directory no longer follows symbolic links
|
||||
* New `exit_code` segment
|
||||
([@disruptek](https://github.com/milkbikis/powerline-shell/pull/129))
|
||||
|
||||
2015-07-30
|
||||
|
||||
* Fix ZSH root indicator
|
||||
([@nkcfan](https://github.com/milkbikis/powerline-shell/pull/150))
|
||||
* Add uptime segment
|
||||
([@marcioAlmada](https://github.com/milkbikis/powerline-shell/pull/139))
|
||||
|
||||
2015-07-27
|
||||
|
||||
* Use `python2` instead of `python` in hashbangs
|
||||
([@Undeterminant](https://github.com/milkbikis/powerline-shell/pull/100))
|
||||
* Add `node_version` segment
|
||||
([@mmilleruva](https://github.com/milkbikis/powerline-shell/pull/189))
|
20
config/powerline-shell/LICENSE
Normal file
20
config/powerline-shell/LICENSE
Normal file
|
@ -0,0 +1,20 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Shrey Banga and contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
170
config/powerline-shell/README.md
Normal file
170
config/powerline-shell/README.md
Normal file
|
@ -0,0 +1,170 @@
|
|||
A Powerline style prompt for your shell
|
||||
=======================================
|
||||
|
||||
A [Powerline](https://github.com/Lokaltog/vim-powerline) like prompt for Bash, ZSH and Fish:
|
||||
|
||||

|
||||
|
||||
* Shows some important details about the git/svn/hg/fossil branch (see below)
|
||||
* Changes color if the last command exited with a failure code
|
||||
* If you're too deep into a directory tree, shortens the displayed path with an ellipsis
|
||||
* Shows the current Python [virtualenv](http://www.virtualenv.org/) environment
|
||||
* It's easy to customize and extend. See below for details.
|
||||
|
||||
### Version Control
|
||||
|
||||
All of the version control systems supported by powerline shell give you a
|
||||
quick look into the state of your repo:
|
||||
|
||||
* The current branch is displayed and changes background color when the
|
||||
branch is dirty.
|
||||
* When the local branch differs from the remote, the difference in number
|
||||
of commits is shown along with `⇡` or `⇣` indicating whether a git push
|
||||
or pull is pending
|
||||
|
||||
In addition, git has a few extra symbols:
|
||||
|
||||
* `✎` -- a file has been modified, but not staged for commit
|
||||
* `✔` -- a file is staged for commit
|
||||
* `✼` -- a file has conflicts
|
||||
|
||||
FIXME
|
||||
* A `+` appears when untracked files are present (except for git, which
|
||||
uses `?` instead)
|
||||
|
||||
Each of these will have a number next to it if more than one file matches.
|
||||
|
||||
# Setup
|
||||
|
||||
This script uses ANSI color codes to display colors in a terminal. These are
|
||||
notoriously non-portable, so may not work for you out of the box, but try
|
||||
setting your $TERM to `xterm-256color`, because that works for me.
|
||||
|
||||
* Patch the font you use for your terminal: see https://github.com/Lokaltog/powerline-fonts
|
||||
|
||||
* If you struggle too much to get working fonts in your terminal, you can use "compatible" mode.
|
||||
* If you're using old patched fonts, you have to use the older symbols. Basically reverse [this commit](https://github.com/milkbikis/powerline-shell/commit/2a84ecc) in your copy
|
||||
|
||||
* Clone this repository somewhere:
|
||||
|
||||
git clone https://github.com/milkbikis/powerline-shell
|
||||
|
||||
* Copy `config.py.dist` to `config.py` and edit it to configure the segments you want. Then run
|
||||
|
||||
./install.py
|
||||
|
||||
* This will generate `powerline-shell.py`
|
||||
|
||||
* (optional) Create a symlink to this python script in your home:
|
||||
|
||||
ln -s <path/to/powerline-shell.py> ~/powerline-shell.py
|
||||
|
||||
* If you don't want the symlink, just modify the path in the commands below
|
||||
|
||||
* For python2.6 you have to install argparse
|
||||
|
||||
pip install argparse
|
||||
|
||||
### All Shells:
|
||||
There are a few optional arguments which can be seen by running `powerline-shell.py --help`.
|
||||
|
||||
```
|
||||
--cwd-mode {fancy,plain,dironly}
|
||||
How to display the current directory
|
||||
--cwd-max-depth CWD_MAX_DEPTH
|
||||
Maximum number of directories to show in path
|
||||
--cwd-max-dir-size CWD_MAX_DIR_SIZE
|
||||
Maximum number of letters displayed for each directory
|
||||
in the path
|
||||
--colorize-hostname Colorize the hostname based on a hash of itself.
|
||||
--mode {patched,compatible,flat}
|
||||
The characters used to make separators between
|
||||
segments
|
||||
```
|
||||
|
||||
### Bash:
|
||||
Add the following to your `.bashrc` (or `.profile` on Mac):
|
||||
|
||||
```
|
||||
function _update_ps1() {
|
||||
PS1="$(~/powerline-shell.py $? 2> /dev/null)"
|
||||
}
|
||||
|
||||
if [ "$TERM" != "linux" ]; then
|
||||
PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
|
||||
fi
|
||||
```
|
||||
|
||||
### ZSH:
|
||||
Add the following to your `.zshrc`:
|
||||
|
||||
```
|
||||
function powerline_precmd() {
|
||||
PS1="$(~/powerline-shell.py $? --shell zsh 2> /dev/null)"
|
||||
}
|
||||
|
||||
function install_powerline_precmd() {
|
||||
for s in "${precmd_functions[@]}"; do
|
||||
if [ "$s" = "powerline_precmd" ]; then
|
||||
return
|
||||
fi
|
||||
done
|
||||
precmd_functions+=(powerline_precmd)
|
||||
}
|
||||
|
||||
if [ "$TERM" != "linux" ]; then
|
||||
install_powerline_precmd
|
||||
fi
|
||||
```
|
||||
|
||||
### Fish:
|
||||
Redefine `fish_prompt` in ~/.config/fish/config.fish:
|
||||
|
||||
```
|
||||
function fish_prompt
|
||||
~/powerline-shell.py $status --shell bare ^/dev/null
|
||||
end
|
||||
```
|
||||
|
||||
# Customization
|
||||
|
||||
### Adding, Removing and Re-arranging segments
|
||||
|
||||
The `config.py` file defines which segments are drawn and in which order. Simply
|
||||
comment out and rearrange segment names to get your desired arrangement. Every
|
||||
time you change `config.py`, run `install.py`, which will generate a new
|
||||
`powerline-shell.py` customized to your configuration. You should see the new
|
||||
prompt immediately.
|
||||
|
||||
### Contributing new types of segments
|
||||
|
||||
The `segments` directory contains python scripts which are injected as is into
|
||||
a single file `powerline_shell_base.py`. Each segment script defines a function
|
||||
that inserts one or more segments into the prompt. If you want to add a new
|
||||
segment, simply create a new file in the segments directory and add its name to
|
||||
the `config.py` file at the appropriate location.
|
||||
|
||||
Make sure that your script does not introduce new globals which might conflict
|
||||
with other scripts. Your script should fail silently and run quickly in any
|
||||
scenario.
|
||||
|
||||
Make sure you introduce new default colors in `themes/default.py` for every new
|
||||
segment you create. Test your segment with this theme first.
|
||||
|
||||
You should add tests for your segment as best you are able. Unit and
|
||||
integration tests are both welcome. Run your tests with the `nosetests` command
|
||||
after install the requirements in `dev_requirements.txt`.
|
||||
|
||||
### Themes
|
||||
|
||||
The `themes` directory stores themes for your prompt, which are basically color
|
||||
values used by segments. The `default.py` defines a default theme which can be
|
||||
used standalone, and every other theme falls back to it if they miss colors for
|
||||
any segments. Create new themes by copying any other existing theme and
|
||||
changing the values. To use a theme, set the `THEME` variable in `config.py` to
|
||||
the name of your theme.
|
||||
|
||||
A script for testing color combinations is provided at `themes/colortest.py`.
|
||||
Note that the colors you see may vary depending on your terminal. When designing
|
||||
a theme, please test your theme on multiple terminals, especially with default
|
||||
settings.
|
0
config/powerline-shell/bob
Normal file
0
config/powerline-shell/bob
Normal file
5
config/powerline-shell/circle.yml
Normal file
5
config/powerline-shell/circle.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
dependencies:
|
||||
pre:
|
||||
- sudo pip install -r dev_requirements.txt
|
||||
- git config --global user.email "tester@example.com"
|
||||
- git config --global user.name "Tester McGee"
|
57
config/powerline-shell/config.py
Normal file
57
config/powerline-shell/config.py
Normal file
|
@ -0,0 +1,57 @@
|
|||
# This is the configuration file for your powerline-shell prompt
|
||||
# Every time you make a change to this file, run install.py to apply changes
|
||||
#
|
||||
# For instructions on how to use the powerline-shell.py script, see the README
|
||||
|
||||
# Add, remove or rearrange these segments to customize what you see on the shell
|
||||
# prompt. Any segment you add must be present in the segments/ directory
|
||||
|
||||
SEGMENTS = [
|
||||
# Set the terminal window title to user@host:dir
|
||||
'set_term_title',
|
||||
|
||||
# Show current virtual environment (see http://www.virtualenv.org/)
|
||||
'virtual_env',
|
||||
|
||||
# Show the current user's username as in ordinary prompts
|
||||
'username',
|
||||
|
||||
# Show the machine's hostname. Mostly used when ssh-ing into other machines
|
||||
# 'hostname',
|
||||
|
||||
# Show a padlock when ssh-ing from another machine
|
||||
'ssh',
|
||||
|
||||
# Show the current directory. If the path is too long, the middle part is
|
||||
# replaced with ellipsis ('...')
|
||||
'cwd',
|
||||
|
||||
# Show a padlock if the current user has no write access to the current
|
||||
# directory
|
||||
'read_only',
|
||||
|
||||
# Show the current git branch and status
|
||||
'git',
|
||||
|
||||
# Show the current mercurial branch and status
|
||||
'hg',
|
||||
|
||||
# Show the current svn branch and status
|
||||
'svn',
|
||||
|
||||
# Show the current fossil branch and status
|
||||
'fossil',
|
||||
|
||||
# Show number of running jobs
|
||||
'jobs',
|
||||
|
||||
# Show the last command's exit code if it was non-zero
|
||||
# 'exit_code',
|
||||
|
||||
# Shows a '#' if the current user is root, '$' otherwise
|
||||
# Also, changes color if the last command exited with a non-zero error code
|
||||
'root',
|
||||
]
|
||||
|
||||
# Change the colors used to draw individual segments in your prompt
|
||||
THEME = 'default'
|
57
config/powerline-shell/config.py.dist
Normal file
57
config/powerline-shell/config.py.dist
Normal file
|
@ -0,0 +1,57 @@
|
|||
# This is the configuration file for your powerline-shell prompt
|
||||
# Every time you make a change to this file, run install.py to apply changes
|
||||
#
|
||||
# For instructions on how to use the powerline-shell.py script, see the README
|
||||
|
||||
# Add, remove or rearrange these segments to customize what you see on the shell
|
||||
# prompt. Any segment you add must be present in the segments/ directory
|
||||
|
||||
SEGMENTS = [
|
||||
# Set the terminal window title to user@host:dir
|
||||
# 'set_term_title',
|
||||
|
||||
# Show current virtual environment (see http://www.virtualenv.org/)
|
||||
'virtual_env',
|
||||
|
||||
# Show the current user's username as in ordinary prompts
|
||||
'username',
|
||||
|
||||
# Show the machine's hostname. Mostly used when ssh-ing into other machines
|
||||
'hostname',
|
||||
|
||||
# Show a padlock when ssh-ing from another machine
|
||||
'ssh',
|
||||
|
||||
# Show the current directory. If the path is too long, the middle part is
|
||||
# replaced with ellipsis ('...')
|
||||
'cwd',
|
||||
|
||||
# Show a padlock if the current user has no write access to the current
|
||||
# directory
|
||||
'read_only',
|
||||
|
||||
# Show the current git branch and status
|
||||
'git',
|
||||
|
||||
# Show the current mercurial branch and status
|
||||
'hg',
|
||||
|
||||
# Show the current svn branch and status
|
||||
'svn',
|
||||
|
||||
# Show the current fossil branch and status
|
||||
'fossil',
|
||||
|
||||
# Show number of running jobs
|
||||
'jobs',
|
||||
|
||||
# Show the last command's exit code if it was non-zero
|
||||
# 'exit_code',
|
||||
|
||||
# Shows a '#' if the current user is root, '$' otherwise
|
||||
# Also, changes color if the last command exited with a non-zero error code
|
||||
'root',
|
||||
]
|
||||
|
||||
# Change the colors used to draw individual segments in your prompt
|
||||
THEME = 'default'
|
3
config/powerline-shell/dev_requirements.txt
Normal file
3
config/powerline-shell/dev_requirements.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
nose>=1.3.7
|
||||
mock>=1.3.0
|
||||
sh>=1.11
|
49
config/powerline-shell/install.py
Executable file
49
config/powerline-shell/install.py
Executable file
|
@ -0,0 +1,49 @@
|
|||
#!/usr/bin/env python
|
||||
from __future__ import print_function
|
||||
import os
|
||||
import stat
|
||||
|
||||
try:
|
||||
import config
|
||||
except ImportError:
|
||||
print('Created personal config.py for your customizations')
|
||||
import shutil
|
||||
shutil.copyfile('config.py.dist', 'config.py')
|
||||
import config
|
||||
|
||||
TEMPLATE_FILE = 'powerline_shell_base.py'
|
||||
OUTPUT_FILE = 'powerline-shell.py'
|
||||
SEGMENTS_DIR = 'segments'
|
||||
THEMES_DIR = 'themes'
|
||||
|
||||
def load_source(srcfile):
|
||||
try:
|
||||
return ''.join(open(srcfile).readlines()) + '\n\n'
|
||||
except IOError:
|
||||
print('Could not open', srcfile)
|
||||
return ''
|
||||
|
||||
if __name__ == "__main__":
|
||||
source = load_source(TEMPLATE_FILE)
|
||||
source += load_source(os.path.join(THEMES_DIR, 'default.py'))
|
||||
|
||||
if config.THEME != 'default':
|
||||
source += load_source(os.path.join(THEMES_DIR, config.THEME + '.py'))
|
||||
|
||||
for segment in config.SEGMENTS:
|
||||
source += load_source(os.path.join(SEGMENTS_DIR, segment + '.py'))
|
||||
|
||||
# assumes each segment file will have a function called
|
||||
# add_segment__[segment] that accepts the powerline object
|
||||
source += 'add_{}_segment(powerline)\n'.format(segment)
|
||||
|
||||
source += 'sys.stdout.write(powerline.draw())\n'
|
||||
|
||||
try:
|
||||
open(OUTPUT_FILE, 'w').write(source)
|
||||
st = os.stat(OUTPUT_FILE)
|
||||
os.chmod(OUTPUT_FILE, st.st_mode | stat.S_IEXEC)
|
||||
print(OUTPUT_FILE, 'saved successfully')
|
||||
except IOError:
|
||||
print('ERROR: Could not write to powerline-shell.py. Make sure it is writable')
|
||||
exit(1)
|
704
config/powerline-shell/powerline-shell.py
Executable file
704
config/powerline-shell/powerline-shell.py
Executable file
|
@ -0,0 +1,704 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import print_function
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import sys
|
||||
|
||||
py3 = sys.version_info.major == 3
|
||||
|
||||
|
||||
def warn(msg):
|
||||
print('[powerline-bash] ', msg)
|
||||
|
||||
|
||||
if py3:
|
||||
def unicode(x):
|
||||
return x
|
||||
|
||||
|
||||
class Powerline:
|
||||
symbols = {
|
||||
'compatible': {
|
||||
'lock': 'RO',
|
||||
'network': 'SSH',
|
||||
'separator': u'\u25B6',
|
||||
'separator_thin': u'\u276F'
|
||||
},
|
||||
'patched': {
|
||||
'lock': u'\uE0A2',
|
||||
'network': u'\uE0A2',
|
||||
'separator': u'\uE0B0',
|
||||
'separator_thin': u'\uE0B1'
|
||||
},
|
||||
'flat': {
|
||||
'lock': '',
|
||||
'network': '',
|
||||
'separator': '',
|
||||
'separator_thin': ''
|
||||
},
|
||||
}
|
||||
|
||||
color_templates = {
|
||||
'bash': '\\[\\e%s\\]',
|
||||
'zsh': '%%{%s%%}',
|
||||
'bare': '%s',
|
||||
}
|
||||
|
||||
def __init__(self, args, cwd):
|
||||
self.args = args
|
||||
self.cwd = cwd
|
||||
mode, shell = args.mode, args.shell
|
||||
self.color_template = self.color_templates[shell]
|
||||
self.reset = self.color_template % '[0m'
|
||||
self.lock = Powerline.symbols[mode]['lock']
|
||||
self.network = Powerline.symbols[mode]['network']
|
||||
self.separator = Powerline.symbols[mode]['separator']
|
||||
self.separator_thin = Powerline.symbols[mode]['separator_thin']
|
||||
self.segments = []
|
||||
|
||||
def color(self, prefix, code):
|
||||
if code is None:
|
||||
return ''
|
||||
else:
|
||||
return self.color_template % ('[%s;5;%sm' % (prefix, code))
|
||||
|
||||
def fgcolor(self, code):
|
||||
return self.color('38', code)
|
||||
|
||||
def bgcolor(self, code):
|
||||
return self.color('48', code)
|
||||
|
||||
def append(self, content, fg, bg, separator=None, separator_fg=None):
|
||||
self.segments.append((content, fg, bg,
|
||||
separator if separator is not None else self.separator,
|
||||
separator_fg if separator_fg is not None else bg))
|
||||
|
||||
def draw(self):
|
||||
text = (''.join(self.draw_segment(i) for i in range(len(self.segments)))
|
||||
+ self.reset) + ' '
|
||||
if py3:
|
||||
return text
|
||||
else:
|
||||
return text.encode('utf-8')
|
||||
|
||||
def draw_segment(self, idx):
|
||||
segment = self.segments[idx]
|
||||
next_segment = self.segments[idx + 1] if idx < len(self.segments)-1 else None
|
||||
|
||||
return ''.join((
|
||||
self.fgcolor(segment[1]),
|
||||
self.bgcolor(segment[2]),
|
||||
segment[0],
|
||||
self.bgcolor(next_segment[2]) if next_segment else self.reset,
|
||||
self.fgcolor(segment[4]),
|
||||
segment[3]))
|
||||
|
||||
|
||||
class RepoStats:
|
||||
symbols = {
|
||||
'detached': u'\u2693',
|
||||
'ahead': u'\u2B06',
|
||||
'behind': u'\u2B07',
|
||||
'staged': u'\u2714',
|
||||
'not_staged': u'\u270E',
|
||||
'untracked': u'\u003F',
|
||||
'conflicted': u'\u273C'
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
self.ahead = 0
|
||||
self.behind = 0
|
||||
self.untracked = 0
|
||||
self.not_staged = 0
|
||||
self.staged = 0
|
||||
self.conflicted = 0
|
||||
|
||||
@property
|
||||
def dirty(self):
|
||||
qualifiers = [
|
||||
self.untracked,
|
||||
self.not_staged,
|
||||
self.staged,
|
||||
self.conflicted,
|
||||
]
|
||||
return sum(qualifiers) > 0
|
||||
|
||||
def __getitem__(self, _key):
|
||||
return getattr(self, _key)
|
||||
|
||||
def n_or_empty(self, _key):
|
||||
"""Given a string name of one of the properties of this class, returns
|
||||
the value of the property as a string when the value is greater than
|
||||
1. When it is not greater than one, returns an empty string.
|
||||
|
||||
As an example, if you want to show an icon for untracked files, but you
|
||||
only want a number to appear next to the icon when there are more than
|
||||
one untracked files, you can do:
|
||||
|
||||
segment = repo_stats.n_or_empty("untracked") + icon_string
|
||||
"""
|
||||
return unicode(self[_key]) if int(self[_key]) > 1 else u''
|
||||
|
||||
def add_to_powerline(self, powerline, color):
|
||||
def add(_key, fg, bg):
|
||||
if self[_key]:
|
||||
s = u" {}{} ".format(self.n_or_empty(_key), self.symbols[_key])
|
||||
powerline.append(s, fg, bg)
|
||||
add('ahead', color.GIT_AHEAD_FG, color.GIT_AHEAD_BG)
|
||||
add('behind', color.GIT_BEHIND_FG, color.GIT_BEHIND_BG)
|
||||
add('staged', color.GIT_STAGED_FG, color.GIT_STAGED_BG)
|
||||
add('not_staged', color.GIT_NOTSTAGED_FG, color.GIT_NOTSTAGED_BG)
|
||||
add('untracked', color.GIT_UNTRACKED_FG, color.GIT_UNTRACKED_BG)
|
||||
add('conflicted', color.GIT_CONFLICTED_FG, color.GIT_CONFLICTED_BG)
|
||||
|
||||
|
||||
def get_valid_cwd():
|
||||
""" We check if the current working directory is valid or not. Typically
|
||||
happens when you checkout a different branch on git that doesn't have
|
||||
this directory.
|
||||
We return the original cwd because the shell still considers that to be
|
||||
the working directory, so returning our guess will confuse people
|
||||
"""
|
||||
# Prefer the PWD environment variable. Python's os.getcwd function follows
|
||||
# symbolic links, which is undesirable. But if PWD is not set then fall
|
||||
# back to this func
|
||||
try:
|
||||
cwd = os.getenv('PWD') or os.getcwd()
|
||||
except:
|
||||
warn("Your current directory is invalid. If you open a ticket at " +
|
||||
"https://github.com/milkbikis/powerline-shell/issues/new " +
|
||||
"we would love to help fix the issue.")
|
||||
sys.stdout.write("> ")
|
||||
sys.exit(1)
|
||||
|
||||
parts = cwd.split(os.sep)
|
||||
up = cwd
|
||||
while parts and not os.path.exists(up):
|
||||
parts.pop()
|
||||
up = os.sep.join(parts)
|
||||
if cwd != up:
|
||||
warn("Your current directory is invalid. Lowest valid directory: "
|
||||
+ up)
|
||||
return cwd
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
arg_parser = argparse.ArgumentParser()
|
||||
arg_parser.add_argument('--cwd-mode', action='store',
|
||||
help='How to display the current directory', default='fancy',
|
||||
choices=['fancy', 'plain', 'dironly'])
|
||||
arg_parser.add_argument('--cwd-only', action='store_true',
|
||||
help='Deprecated. Use --cwd-mode=dironly')
|
||||
arg_parser.add_argument('--cwd-max-depth', action='store', type=int,
|
||||
default=5, help='Maximum number of directories to show in path')
|
||||
arg_parser.add_argument('--cwd-max-dir-size', action='store', type=int,
|
||||
help='Maximum number of letters displayed for each directory in the path')
|
||||
arg_parser.add_argument('--colorize-hostname', action='store_true',
|
||||
help='Colorize the hostname based on a hash of itself.')
|
||||
arg_parser.add_argument('--mode', action='store', default='patched',
|
||||
help='The characters used to make separators between segments',
|
||||
choices=['patched', 'compatible', 'flat'])
|
||||
arg_parser.add_argument('--shell', action='store', default='bash',
|
||||
help='Set this to your shell type', choices=['bash', 'zsh', 'bare'])
|
||||
arg_parser.add_argument('prev_error', nargs='?', type=int, default=0,
|
||||
help='Error code returned by the last command')
|
||||
args = arg_parser.parse_args()
|
||||
|
||||
powerline = Powerline(args, get_valid_cwd())
|
||||
|
||||
|
||||
class DefaultColor:
|
||||
"""
|
||||
This class should have the default colors for every segment.
|
||||
Please test every new segment with this theme first.
|
||||
"""
|
||||
USERNAME_FG = 250
|
||||
USERNAME_BG = 240
|
||||
USERNAME_ROOT_BG = 124
|
||||
|
||||
HOSTNAME_FG = 250
|
||||
HOSTNAME_BG = 238
|
||||
|
||||
HOME_SPECIAL_DISPLAY = True
|
||||
HOME_BG = 31 # blueish
|
||||
HOME_FG = 15 # white
|
||||
PATH_BG = 237 # dark grey
|
||||
PATH_FG = 250 # light grey
|
||||
CWD_FG = 254 # nearly-white grey
|
||||
SEPARATOR_FG = 244
|
||||
|
||||
READONLY_BG = 124
|
||||
READONLY_FG = 254
|
||||
|
||||
SSH_BG = 166 # medium orange
|
||||
SSH_FG = 254
|
||||
|
||||
REPO_CLEAN_BG = 148 # a light green color
|
||||
REPO_CLEAN_FG = 0 # black
|
||||
REPO_DIRTY_BG = 161 # pink/red
|
||||
REPO_DIRTY_FG = 15 # white
|
||||
|
||||
JOBS_FG = 39
|
||||
JOBS_BG = 238
|
||||
|
||||
CMD_PASSED_BG = 236
|
||||
CMD_PASSED_FG = 15
|
||||
CMD_FAILED_BG = 161
|
||||
CMD_FAILED_FG = 15
|
||||
|
||||
SVN_CHANGES_BG = 148
|
||||
SVN_CHANGES_FG = 22 # dark green
|
||||
|
||||
GIT_AHEAD_BG = 240
|
||||
GIT_AHEAD_FG = 250
|
||||
GIT_BEHIND_BG = 240
|
||||
GIT_BEHIND_FG = 250
|
||||
GIT_STAGED_BG = 22
|
||||
GIT_STAGED_FG = 15
|
||||
GIT_NOTSTAGED_BG = 130
|
||||
GIT_NOTSTAGED_FG = 15
|
||||
GIT_UNTRACKED_BG = 52
|
||||
GIT_UNTRACKED_FG = 15
|
||||
GIT_CONFLICTED_BG = 9
|
||||
GIT_CONFLICTED_FG = 15
|
||||
|
||||
VIRTUAL_ENV_BG = 35 # a mid-tone green
|
||||
VIRTUAL_ENV_FG = 00
|
||||
|
||||
class Color(DefaultColor):
|
||||
"""
|
||||
This subclass is required when the user chooses to use 'default' theme.
|
||||
Because the segments require a 'Color' class for every theme.
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
def add_set_term_title_segment(powerline):
|
||||
term = os.getenv('TERM')
|
||||
if not (('xterm' in term) or ('rxvt' in term)):
|
||||
return
|
||||
|
||||
if powerline.args.shell == 'bash':
|
||||
set_title = '\\[\\e]0;\\u@\\h: \\w\\a\\]'
|
||||
elif powerline.args.shell == 'zsh':
|
||||
set_title = '\033]0;%n@%m: %~\007'
|
||||
else:
|
||||
import socket
|
||||
set_title = '\033]0;%s@%s: %s\007' % (os.getenv('USER'), socket.gethostname().split('.')[0], powerline.cwd or os.getenv('PWD'))
|
||||
|
||||
powerline.append(set_title, None, None, '')
|
||||
|
||||
|
||||
|
||||
add_set_term_title_segment(powerline)
|
||||
import os
|
||||
|
||||
def add_virtual_env_segment(powerline):
|
||||
env = os.getenv('VIRTUAL_ENV') or os.getenv('CONDA_ENV_PATH')
|
||||
if env is None:
|
||||
return
|
||||
|
||||
env_name = os.path.basename(env)
|
||||
bg = Color.VIRTUAL_ENV_BG
|
||||
fg = Color.VIRTUAL_ENV_FG
|
||||
powerline.append(' %s ' % env_name, fg, bg)
|
||||
|
||||
|
||||
add_virtual_env_segment(powerline)
|
||||
|
||||
def add_username_segment(powerline):
|
||||
import os
|
||||
if powerline.args.shell == 'bash':
|
||||
user_prompt = ' \\u '
|
||||
elif powerline.args.shell == 'zsh':
|
||||
user_prompt = ' %n '
|
||||
else:
|
||||
user_prompt = ' %s ' % os.getenv('USER')
|
||||
|
||||
if os.getenv('USER') == 'root':
|
||||
bgcolor = Color.USERNAME_ROOT_BG
|
||||
else:
|
||||
bgcolor = Color.USERNAME_BG
|
||||
|
||||
powerline.append(user_prompt, Color.USERNAME_FG, bgcolor)
|
||||
|
||||
|
||||
add_username_segment(powerline)
|
||||
import os
|
||||
|
||||
def add_ssh_segment(powerline):
|
||||
|
||||
if os.getenv('SSH_CLIENT'):
|
||||
powerline.append(' %s ' % powerline.network, Color.SSH_FG, Color.SSH_BG)
|
||||
|
||||
|
||||
add_ssh_segment(powerline)
|
||||
import os
|
||||
|
||||
ELLIPSIS = u'\u2026'
|
||||
|
||||
|
||||
def replace_home_dir(cwd):
|
||||
home = os.getenv('HOME')
|
||||
if cwd.startswith(home):
|
||||
return '~' + cwd[len(home):]
|
||||
return cwd
|
||||
|
||||
|
||||
def split_path_into_names(cwd):
|
||||
names = cwd.split(os.sep)
|
||||
|
||||
if names[0] == '':
|
||||
names = names[1:]
|
||||
|
||||
if not names[0]:
|
||||
return ['/']
|
||||
|
||||
return names
|
||||
|
||||
|
||||
def requires_special_home_display(name):
|
||||
"""Returns true if the given directory name matches the home indicator and
|
||||
the chosen theme should use a special home indicator display."""
|
||||
return (name == '~' and Color.HOME_SPECIAL_DISPLAY)
|
||||
|
||||
|
||||
def maybe_shorten_name(powerline, name):
|
||||
"""If the user has asked for each directory name to be shortened, will
|
||||
return the name up to their specified length. Otherwise returns the full
|
||||
name."""
|
||||
if powerline.args.cwd_max_dir_size:
|
||||
return name[:powerline.args.cwd_max_dir_size]
|
||||
return name
|
||||
|
||||
|
||||
def get_fg_bg(name):
|
||||
"""Returns the foreground and background color to use for the given name.
|
||||
"""
|
||||
if requires_special_home_display(name):
|
||||
return (Color.HOME_FG, Color.HOME_BG,)
|
||||
return (Color.PATH_FG, Color.PATH_BG,)
|
||||
|
||||
|
||||
def add_cwd_segment(powerline):
|
||||
cwd = powerline.cwd or os.getenv('PWD')
|
||||
if not py3:
|
||||
cwd = cwd.decode("utf-8")
|
||||
cwd = replace_home_dir(cwd)
|
||||
|
||||
if powerline.args.cwd_mode == 'plain':
|
||||
powerline.append(' %s ' % (cwd,), Color.CWD_FG, Color.PATH_BG)
|
||||
return
|
||||
|
||||
names = split_path_into_names(cwd)
|
||||
|
||||
max_depth = powerline.args.cwd_max_depth
|
||||
if max_depth <= 0:
|
||||
warn("Ignoring --cwd-max-depth argument since it's not greater than 0")
|
||||
elif len(names) > max_depth:
|
||||
# https://github.com/milkbikis/powerline-shell/issues/148
|
||||
# n_before is the number is the number of directories to put before the
|
||||
# ellipsis. So if you are at ~/a/b/c/d/e and max depth is 4, it will
|
||||
# show `~ a ... d e`.
|
||||
#
|
||||
# max_depth must be greater than n_before or else you end up repeating
|
||||
# parts of the path with the way the splicing is written below.
|
||||
n_before = 2 if max_depth > 2 else max_depth - 1
|
||||
names = names[:n_before] + [ELLIPSIS] + names[n_before - max_depth:]
|
||||
|
||||
if (powerline.args.cwd_mode == 'dironly' or powerline.args.cwd_only):
|
||||
# The user has indicated they only want the current directory to be
|
||||
# displayed, so chop everything else off
|
||||
names = names[-1:]
|
||||
|
||||
for i, name in enumerate(names):
|
||||
fg, bg = get_fg_bg(name)
|
||||
|
||||
separator = powerline.separator_thin
|
||||
separator_fg = Color.SEPARATOR_FG
|
||||
is_last_dir = (i == len(names) - 1)
|
||||
if requires_special_home_display(name) or is_last_dir:
|
||||
separator = None
|
||||
separator_fg = None
|
||||
|
||||
powerline.append(' %s ' % maybe_shorten_name(powerline, name), fg, bg,
|
||||
separator, separator_fg)
|
||||
|
||||
|
||||
add_cwd_segment(powerline)
|
||||
import os
|
||||
|
||||
def add_read_only_segment(powerline):
|
||||
cwd = powerline.cwd or os.getenv('PWD')
|
||||
|
||||
if not os.access(cwd, os.W_OK):
|
||||
powerline.append(' %s ' % powerline.lock, Color.READONLY_FG, Color.READONLY_BG)
|
||||
|
||||
|
||||
add_read_only_segment(powerline)
|
||||
import re
|
||||
import subprocess
|
||||
import os
|
||||
|
||||
def get_PATH():
|
||||
"""Normally gets the PATH from the OS. This function exists to enable
|
||||
easily mocking the PATH in tests.
|
||||
"""
|
||||
return os.getenv("PATH")
|
||||
|
||||
def git_subprocess_env():
|
||||
return {
|
||||
# LANG is specified to ensure git always uses a language we are expecting.
|
||||
# Otherwise we may be unable to parse the output.
|
||||
"LANG": "C",
|
||||
|
||||
# https://github.com/milkbikis/powerline-shell/pull/126
|
||||
"HOME": os.getenv("HOME"),
|
||||
|
||||
# https://github.com/milkbikis/powerline-shell/pull/153
|
||||
"PATH": get_PATH(),
|
||||
}
|
||||
|
||||
|
||||
def parse_git_branch_info(status):
|
||||
info = re.search('^## (?P<local>\S+?)''(\.{3}(?P<remote>\S+?)( \[(ahead (?P<ahead>\d+)(, )?)?(behind (?P<behind>\d+))?\])?)?$', status[0])
|
||||
return info.groupdict() if info else None
|
||||
|
||||
|
||||
def _get_git_detached_branch():
|
||||
p = subprocess.Popen(['git', 'describe', '--tags', '--always'],
|
||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
|
||||
env=git_subprocess_env())
|
||||
detached_ref = p.communicate()[0].decode("utf-8").rstrip('\n')
|
||||
if p.returncode == 0:
|
||||
branch = u'{} {}'.format(RepoStats.symbols['detached'], detached_ref)
|
||||
else:
|
||||
branch = 'Big Bang'
|
||||
return branch
|
||||
|
||||
|
||||
def parse_git_stats(status):
|
||||
stats = RepoStats()
|
||||
for statusline in status[1:]:
|
||||
code = statusline[:2]
|
||||
if code == '??':
|
||||
stats.untracked += 1
|
||||
elif code in ('DD', 'AU', 'UD', 'UA', 'DU', 'AA', 'UU'):
|
||||
stats.conflicted += 1
|
||||
else:
|
||||
if code[1] != ' ':
|
||||
stats.not_staged += 1
|
||||
if code[0] != ' ':
|
||||
stats.staged += 1
|
||||
|
||||
return stats
|
||||
|
||||
|
||||
def add_git_segment(powerline):
|
||||
try:
|
||||
p = subprocess.Popen(['git', 'status', '--porcelain', '-b'],
|
||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
|
||||
env=git_subprocess_env())
|
||||
except OSError:
|
||||
# Popen will throw an OSError if git is not found
|
||||
return
|
||||
|
||||
pdata = p.communicate()
|
||||
if p.returncode != 0:
|
||||
return
|
||||
|
||||
status = pdata[0].decode("utf-8").splitlines()
|
||||
stats = parse_git_stats(status)
|
||||
branch_info = parse_git_branch_info(status)
|
||||
|
||||
if branch_info:
|
||||
stats.ahead = branch_info["ahead"]
|
||||
stats.behind = branch_info["behind"]
|
||||
branch = branch_info['local']
|
||||
else:
|
||||
branch = _get_git_detached_branch()
|
||||
|
||||
bg = Color.REPO_CLEAN_BG
|
||||
fg = Color.REPO_CLEAN_FG
|
||||
if stats.dirty:
|
||||
bg = Color.REPO_DIRTY_BG
|
||||
fg = Color.REPO_DIRTY_FG
|
||||
|
||||
powerline.append(' %s ' % branch, fg, bg)
|
||||
stats.add_to_powerline(powerline, Color)
|
||||
|
||||
|
||||
add_git_segment(powerline)
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
def get_hg_status():
|
||||
has_modified_files = False
|
||||
has_untracked_files = False
|
||||
has_missing_files = False
|
||||
|
||||
p = subprocess.Popen(['hg', 'status'], stdout=subprocess.PIPE)
|
||||
output = p.communicate()[0].decode("utf-8")
|
||||
|
||||
for line in output.split('\n'):
|
||||
if line == '':
|
||||
continue
|
||||
elif line[0] == '?':
|
||||
has_untracked_files = True
|
||||
elif line[0] == '!':
|
||||
has_missing_files = True
|
||||
else:
|
||||
has_modified_files = True
|
||||
return has_modified_files, has_untracked_files, has_missing_files
|
||||
|
||||
def add_hg_segment(powerline):
|
||||
branch = os.popen('hg branch 2> /dev/null').read().rstrip()
|
||||
if len(branch) == 0:
|
||||
return False
|
||||
bg = Color.REPO_CLEAN_BG
|
||||
fg = Color.REPO_CLEAN_FG
|
||||
has_modified_files, has_untracked_files, has_missing_files = get_hg_status()
|
||||
if has_modified_files or has_untracked_files or has_missing_files:
|
||||
bg = Color.REPO_DIRTY_BG
|
||||
fg = Color.REPO_DIRTY_FG
|
||||
extra = ''
|
||||
if has_untracked_files:
|
||||
extra += '+'
|
||||
if has_missing_files:
|
||||
extra += '!'
|
||||
branch += (' ' + extra if extra != '' else '')
|
||||
return powerline.append(' %s ' % branch, fg, bg)
|
||||
|
||||
|
||||
add_hg_segment(powerline)
|
||||
import subprocess
|
||||
|
||||
|
||||
def _add_svn_segment(powerline):
|
||||
is_svn = subprocess.Popen(['svn', 'status'],
|
||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
is_svn_output = is_svn.communicate()[1].decode("utf-8").strip()
|
||||
if len(is_svn_output) != 0:
|
||||
return
|
||||
|
||||
#"svn status | grep -c "^[ACDIMRX\\!\\~]"
|
||||
p1 = subprocess.Popen(['svn', 'status'], stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE)
|
||||
p2 = subprocess.Popen(['grep', '-c', '^[ACDIMR\\!\\~]'],
|
||||
stdin=p1.stdout, stdout=subprocess.PIPE)
|
||||
output = p2.communicate()[0].decode("utf-8").strip()
|
||||
if len(output) > 0 and int(output) > 0:
|
||||
changes = output.strip()
|
||||
powerline.append(' %s ' % changes, Color.SVN_CHANGES_FG, Color.SVN_CHANGES_BG)
|
||||
|
||||
|
||||
def add_svn_segment(powerline):
|
||||
"""Wraps _add_svn_segment in exception handling."""
|
||||
|
||||
# FIXME This function was added when introducing a testing framework,
|
||||
# during which the 'powerline' object was passed into the
|
||||
# `add_[segment]_segment` functions instead of being a global variable. At
|
||||
# that time it was unclear whether the below exceptions could actually be
|
||||
# thrown. It would be preferable to find out whether they ever will. If so,
|
||||
# write a comment explaining when. Otherwise remove.
|
||||
|
||||
try:
|
||||
_add_svn_segment(powerline)
|
||||
except OSError:
|
||||
pass
|
||||
except subprocess.CalledProcessError:
|
||||
pass
|
||||
|
||||
|
||||
add_svn_segment(powerline)
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
def get_fossil_status():
|
||||
has_modified_files = False
|
||||
has_untracked_files = False
|
||||
has_missing_files = False
|
||||
output = os.popen('fossil changes 2>/dev/null').read().strip()
|
||||
has_untracked_files = True if os.popen("fossil extras 2>/dev/null").read().strip() else False
|
||||
has_missing_files = 'MISSING' in output
|
||||
has_modified_files = 'EDITED' in output
|
||||
|
||||
return has_modified_files, has_untracked_files, has_missing_files
|
||||
|
||||
def _add_fossil_segment(powerline):
|
||||
subprocess.Popen(['fossil'], stdout=subprocess.PIPE).communicate()[0]
|
||||
branch = ''.join([i.replace('*','').strip() for i in os.popen("fossil branch 2> /dev/null").read().strip().split("\n") if i.startswith('*')])
|
||||
if len(branch) == 0:
|
||||
return
|
||||
|
||||
bg = Color.REPO_CLEAN_BG
|
||||
fg = Color.REPO_CLEAN_FG
|
||||
has_modified_files, has_untracked_files, has_missing_files = get_fossil_status()
|
||||
if has_modified_files or has_untracked_files or has_missing_files:
|
||||
bg = Color.REPO_DIRTY_BG
|
||||
fg = Color.REPO_DIRTY_FG
|
||||
extra = ''
|
||||
if has_untracked_files:
|
||||
extra += '+'
|
||||
if has_missing_files:
|
||||
extra += '!'
|
||||
branch += (' ' + extra if extra != '' else '')
|
||||
powerline.append(' %s ' % branch, fg, bg)
|
||||
|
||||
def add_fossil_segment(powerline):
|
||||
"""Wraps _add_fossil_segment in exception handling."""
|
||||
|
||||
# FIXME This function was added when introducing a testing framework,
|
||||
# during which the 'powerline' object was passed into the
|
||||
# `add_[segment]_segment` functions instead of being a global variable. At
|
||||
# that time it was unclear whether the below exceptions could actually be
|
||||
# thrown. It would be preferable to find out whether they ever will. If so,
|
||||
# write a comment explaining when. Otherwise remove.
|
||||
|
||||
try:
|
||||
_add_fossil_segment(powerline)
|
||||
except OSError:
|
||||
pass
|
||||
except subprocess.CalledProcessError:
|
||||
pass
|
||||
|
||||
|
||||
add_fossil_segment(powerline)
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
|
||||
def add_jobs_segment(powerline):
|
||||
pppid_proc = subprocess.Popen(['ps', '-p', str(os.getppid()), '-oppid='],
|
||||
stdout=subprocess.PIPE)
|
||||
pppid = pppid_proc.communicate()[0].decode("utf-8").strip()
|
||||
|
||||
output_proc = subprocess.Popen(['ps', '-a', '-o', 'ppid'],
|
||||
stdout=subprocess.PIPE)
|
||||
output = output_proc.communicate()[0].decode("utf-8")
|
||||
|
||||
num_jobs = len(re.findall(str(pppid), output)) - 1
|
||||
|
||||
if num_jobs > 0:
|
||||
powerline.append(' %d ' % num_jobs, Color.JOBS_FG, Color.JOBS_BG)
|
||||
|
||||
|
||||
add_jobs_segment(powerline)
|
||||
def add_root_segment(powerline):
|
||||
root_indicators = {
|
||||
'bash': ' \\$ ',
|
||||
'zsh': ' %# ',
|
||||
'bare': ' $ ',
|
||||
}
|
||||
bg = Color.CMD_PASSED_BG
|
||||
fg = Color.CMD_PASSED_FG
|
||||
if powerline.args.prev_error != 0:
|
||||
fg = Color.CMD_FAILED_FG
|
||||
bg = Color.CMD_FAILED_BG
|
||||
powerline.append(root_indicators[powerline.args.shell], fg, bg)
|
||||
|
||||
|
||||
add_root_segment(powerline)
|
||||
sys.stdout.write(powerline.draw())
|
209
config/powerline-shell/powerline_shell_base.py
Executable file
209
config/powerline-shell/powerline_shell_base.py
Executable file
|
@ -0,0 +1,209 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import print_function
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import sys
|
||||
|
||||
py3 = sys.version_info.major == 3
|
||||
|
||||
|
||||
def warn(msg):
|
||||
print('[powerline-bash] ', msg)
|
||||
|
||||
|
||||
if py3:
|
||||
def unicode(x):
|
||||
return x
|
||||
|
||||
|
||||
class Powerline:
|
||||
symbols = {
|
||||
'compatible': {
|
||||
'lock': 'RO',
|
||||
'network': 'SSH',
|
||||
'separator': u'\u25B6',
|
||||
'separator_thin': u'\u276F'
|
||||
},
|
||||
'patched': {
|
||||
'lock': u'\uE0A2',
|
||||
'network': u'\uE0A2',
|
||||
'separator': u'\uE0B0',
|
||||
'separator_thin': u'\uE0B1'
|
||||
},
|
||||
'flat': {
|
||||
'lock': '',
|
||||
'network': '',
|
||||
'separator': '',
|
||||
'separator_thin': ''
|
||||
},
|
||||
}
|
||||
|
||||
color_templates = {
|
||||
'bash': '\\[\\e%s\\]',
|
||||
'zsh': '%%{%s%%}',
|
||||
'bare': '%s',
|
||||
}
|
||||
|
||||
def __init__(self, args, cwd):
|
||||
self.args = args
|
||||
self.cwd = cwd
|
||||
mode, shell = args.mode, args.shell
|
||||
self.color_template = self.color_templates[shell]
|
||||
self.reset = self.color_template % '[0m'
|
||||
self.lock = Powerline.symbols[mode]['lock']
|
||||
self.network = Powerline.symbols[mode]['network']
|
||||
self.separator = Powerline.symbols[mode]['separator']
|
||||
self.separator_thin = Powerline.symbols[mode]['separator_thin']
|
||||
self.segments = []
|
||||
|
||||
def color(self, prefix, code):
|
||||
if code is None:
|
||||
return ''
|
||||
else:
|
||||
return self.color_template % ('[%s;5;%sm' % (prefix, code))
|
||||
|
||||
def fgcolor(self, code):
|
||||
return self.color('38', code)
|
||||
|
||||
def bgcolor(self, code):
|
||||
return self.color('48', code)
|
||||
|
||||
def append(self, content, fg, bg, separator=None, separator_fg=None):
|
||||
self.segments.append((content, fg, bg,
|
||||
separator if separator is not None else self.separator,
|
||||
separator_fg if separator_fg is not None else bg))
|
||||
|
||||
def draw(self):
|
||||
text = (''.join(self.draw_segment(i) for i in range(len(self.segments)))
|
||||
+ self.reset) + ' '
|
||||
if py3:
|
||||
return text
|
||||
else:
|
||||
return text.encode('utf-8')
|
||||
|
||||
def draw_segment(self, idx):
|
||||
segment = self.segments[idx]
|
||||
next_segment = self.segments[idx + 1] if idx < len(self.segments)-1 else None
|
||||
|
||||
return ''.join((
|
||||
self.fgcolor(segment[1]),
|
||||
self.bgcolor(segment[2]),
|
||||
segment[0],
|
||||
self.bgcolor(next_segment[2]) if next_segment else self.reset,
|
||||
self.fgcolor(segment[4]),
|
||||
segment[3]))
|
||||
|
||||
|
||||
class RepoStats:
|
||||
symbols = {
|
||||
'detached': u'\u2693',
|
||||
'ahead': u'\u2B06',
|
||||
'behind': u'\u2B07',
|
||||
'staged': u'\u2714',
|
||||
'not_staged': u'\u270E',
|
||||
'untracked': u'\u003F',
|
||||
'conflicted': u'\u273C'
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
self.ahead = 0
|
||||
self.behind = 0
|
||||
self.untracked = 0
|
||||
self.not_staged = 0
|
||||
self.staged = 0
|
||||
self.conflicted = 0
|
||||
|
||||
@property
|
||||
def dirty(self):
|
||||
qualifiers = [
|
||||
self.untracked,
|
||||
self.not_staged,
|
||||
self.staged,
|
||||
self.conflicted,
|
||||
]
|
||||
return sum(qualifiers) > 0
|
||||
|
||||
def __getitem__(self, _key):
|
||||
return getattr(self, _key)
|
||||
|
||||
def n_or_empty(self, _key):
|
||||
"""Given a string name of one of the properties of this class, returns
|
||||
the value of the property as a string when the value is greater than
|
||||
1. When it is not greater than one, returns an empty string.
|
||||
|
||||
As an example, if you want to show an icon for untracked files, but you
|
||||
only want a number to appear next to the icon when there are more than
|
||||
one untracked files, you can do:
|
||||
|
||||
segment = repo_stats.n_or_empty("untracked") + icon_string
|
||||
"""
|
||||
return unicode(self[_key]) if int(self[_key]) > 1 else u''
|
||||
|
||||
def add_to_powerline(self, powerline, color):
|
||||
def add(_key, fg, bg):
|
||||
if self[_key]:
|
||||
s = u" {}{} ".format(self.n_or_empty(_key), self.symbols[_key])
|
||||
powerline.append(s, fg, bg)
|
||||
add('ahead', color.GIT_AHEAD_FG, color.GIT_AHEAD_BG)
|
||||
add('behind', color.GIT_BEHIND_FG, color.GIT_BEHIND_BG)
|
||||
add('staged', color.GIT_STAGED_FG, color.GIT_STAGED_BG)
|
||||
add('not_staged', color.GIT_NOTSTAGED_FG, color.GIT_NOTSTAGED_BG)
|
||||
add('untracked', color.GIT_UNTRACKED_FG, color.GIT_UNTRACKED_BG)
|
||||
add('conflicted', color.GIT_CONFLICTED_FG, color.GIT_CONFLICTED_BG)
|
||||
|
||||
|
||||
def get_valid_cwd():
|
||||
""" We check if the current working directory is valid or not. Typically
|
||||
happens when you checkout a different branch on git that doesn't have
|
||||
this directory.
|
||||
We return the original cwd because the shell still considers that to be
|
||||
the working directory, so returning our guess will confuse people
|
||||
"""
|
||||
# Prefer the PWD environment variable. Python's os.getcwd function follows
|
||||
# symbolic links, which is undesirable. But if PWD is not set then fall
|
||||
# back to this func
|
||||
try:
|
||||
cwd = os.getenv('PWD') or os.getcwd()
|
||||
except:
|
||||
warn("Your current directory is invalid. If you open a ticket at " +
|
||||
"https://github.com/milkbikis/powerline-shell/issues/new " +
|
||||
"we would love to help fix the issue.")
|
||||
sys.stdout.write("> ")
|
||||
sys.exit(1)
|
||||
|
||||
parts = cwd.split(os.sep)
|
||||
up = cwd
|
||||
while parts and not os.path.exists(up):
|
||||
parts.pop()
|
||||
up = os.sep.join(parts)
|
||||
if cwd != up:
|
||||
warn("Your current directory is invalid. Lowest valid directory: "
|
||||
+ up)
|
||||
return cwd
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
arg_parser = argparse.ArgumentParser()
|
||||
arg_parser.add_argument('--cwd-mode', action='store',
|
||||
help='How to display the current directory', default='fancy',
|
||||
choices=['fancy', 'plain', 'dironly'])
|
||||
arg_parser.add_argument('--cwd-only', action='store_true',
|
||||
help='Deprecated. Use --cwd-mode=dironly')
|
||||
arg_parser.add_argument('--cwd-max-depth', action='store', type=int,
|
||||
default=5, help='Maximum number of directories to show in path')
|
||||
arg_parser.add_argument('--cwd-max-dir-size', action='store', type=int,
|
||||
help='Maximum number of letters displayed for each directory in the path')
|
||||
arg_parser.add_argument('--colorize-hostname', action='store_true',
|
||||
help='Colorize the hostname based on a hash of itself.')
|
||||
arg_parser.add_argument('--mode', action='store', default='patched',
|
||||
help='The characters used to make separators between segments',
|
||||
choices=['patched', 'compatible', 'flat'])
|
||||
arg_parser.add_argument('--shell', action='store', default='bash',
|
||||
help='Set this to your shell type', choices=['bash', 'zsh', 'bare'])
|
||||
arg_parser.add_argument('prev_error', nargs='?', type=int, default=0,
|
||||
help='Error code returned by the last command')
|
||||
args = arg_parser.parse_args()
|
||||
|
||||
powerline = Powerline(args, get_valid_cwd())
|
3
config/ranger/.gitignore
vendored
Normal file
3
config/ranger/.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
history
|
||||
bookmarks
|
||||
tagged
|
61
config/ranger/commands.py
Normal file
61
config/ranger/commands.py
Normal file
|
@ -0,0 +1,61 @@
|
|||
# This is a sample commands.py. You can add your own commands here.
|
||||
#
|
||||
# Please refer to commands_full.py for all the default commands and a complete
|
||||
# documentation. Do NOT add them all here, or you may end up with defunct
|
||||
# commands when upgrading ranger.
|
||||
|
||||
# You always need to import ranger.api.commands here to get the Command class:
|
||||
from ranger.api.commands import *
|
||||
|
||||
# A simple command for demonstration purposes follows.
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
# You can import any python module as needed.
|
||||
import os
|
||||
|
||||
# Any class that is a subclass of "Command" will be integrated into ranger as a
|
||||
# command. Try typing ":my_edit<ENTER>" in ranger!
|
||||
|
||||
|
||||
class my_edit(Command):
|
||||
# The so-called doc-string of the class will be visible in the built-in
|
||||
# help that is accessible by typing "?c" inside ranger.
|
||||
""":my_edit <filename>
|
||||
|
||||
A sample command for demonstration purposes that opens a file in an editor.
|
||||
"""
|
||||
|
||||
# The execute method is called when you run this command in ranger.
|
||||
def execute(self):
|
||||
# self.arg(1) is the first (space-separated) argument to the function.
|
||||
# This way you can write ":my_edit somefilename<ENTER>".
|
||||
if self.arg(1):
|
||||
# self.rest(1) contains self.arg(1) and everything that follows
|
||||
target_filename = self.rest(1)
|
||||
else:
|
||||
# self.fm is a ranger.core.filemanager.FileManager object and gives
|
||||
# you access to internals of ranger.
|
||||
# self.fm.thisfile is a ranger.container.file.File object and is a
|
||||
# reference to the currently selected file.
|
||||
target_filename = self.fm.thisfile.path
|
||||
|
||||
# This is a generic function to print text in ranger.
|
||||
self.fm.notify("Let's edit the file " + target_filename + "!")
|
||||
|
||||
# Using bad=True in fm.notify allows you to print error messages:
|
||||
if not os.path.exists(target_filename):
|
||||
self.fm.notify("The given file does not exist!", bad=True)
|
||||
return
|
||||
|
||||
# This executes a function from ranger.core.acitons, a module with a
|
||||
# variety of subroutines that can help you construct commands.
|
||||
# Check out the source, or run "pydoc ranger.core.actions" for a list.
|
||||
self.fm.edit_file(target_filename)
|
||||
|
||||
# The tab method is called when you press tab, and should return a list of
|
||||
# suggestions that the user will tab through.
|
||||
# tabnum is 1 for <TAB> and -1 for <S-TAB> by default
|
||||
def tab(self, tabnum):
|
||||
# This is a generic tab-completion function that iterates through the
|
||||
# content of the current directory.
|
||||
return self._tab_directory_content()
|
1486
config/ranger/commands_full.py
Normal file
1486
config/ranger/commands_full.py
Normal file
File diff suppressed because it is too large
Load diff
618
config/ranger/rc.conf
Normal file
618
config/ranger/rc.conf
Normal file
|
@ -0,0 +1,618 @@
|
|||
# ===================================================================
|
||||
# This file contains the default startup commands for ranger.
|
||||
# To change them, it is recommended to create the file
|
||||
# ~/.config/ranger/rc.conf and add your custom commands there.
|
||||
#
|
||||
# If you copy this whole file there, you may want to set the environment
|
||||
# variable RANGER_LOAD_DEFAULT_RC to FALSE to avoid loading it twice.
|
||||
#
|
||||
# The purpose of this file is mainly to define keybindings and settings.
|
||||
# For running more complex python code, please create a plugin in "plugins/" or
|
||||
# a command in "commands.py".
|
||||
#
|
||||
# Each line is a command that will be run before the user interface
|
||||
# is initialized. As a result, you can not use commands which rely
|
||||
# on the UI such as :delete or :mark.
|
||||
# ===================================================================
|
||||
|
||||
# ===================================================================
|
||||
# == Options
|
||||
# ===================================================================
|
||||
|
||||
# Which viewmode should be used? Possible values are:
|
||||
# miller: Use miller columns which show multiple levels of the hierarchy
|
||||
# multipane: Midnight-commander like multipane view showing all tabs next
|
||||
# to each other
|
||||
set viewmode miller
|
||||
#set viewmode multipane
|
||||
|
||||
# How many columns are there, and what are their relative widths?
|
||||
set column_ratios 1,3,4
|
||||
|
||||
# Which files should be hidden? (regular expression)
|
||||
set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$
|
||||
|
||||
# Show hidden files? You can toggle this by typing 'zh'
|
||||
set show_hidden false
|
||||
|
||||
# Ask for a confirmation when running the "delete" command?
|
||||
# Valid values are "always", "never", "multiple" (default)
|
||||
# With "multiple", ranger will ask only if you delete multiple files at once.
|
||||
set confirm_on_delete multiple
|
||||
|
||||
# Which script is used to generate file previews?
|
||||
# ranger ships with scope.sh, a script that calls external programs (see
|
||||
# README.md for dependencies) to preview images, archives, etc.
|
||||
set preview_script ~/.config/ranger/scope.sh
|
||||
|
||||
# Use the external preview script or display simple plain text or image previews?
|
||||
set use_preview_script true
|
||||
|
||||
# Automatically count files in the directory, even before entering them?
|
||||
set automatically_count_files true
|
||||
|
||||
# Open all images in this directory when running certain image viewers
|
||||
# like feh or sxiv? You can still open selected files by marking them.
|
||||
set open_all_images true
|
||||
|
||||
# Be aware of version control systems and display information.
|
||||
set vcs_aware true
|
||||
|
||||
# State of the three backends git, hg, bzr. The possible states are
|
||||
# disabled, local (only show local info), enabled (show local and remote
|
||||
# information).
|
||||
set vcs_backend_git enabled
|
||||
set vcs_backend_hg disabled
|
||||
set vcs_backend_bzr disabled
|
||||
|
||||
# Use one of the supported image preview protocols
|
||||
set preview_images true
|
||||
|
||||
# Set the preview image method. Supported methods:
|
||||
#
|
||||
# * w3m (default):
|
||||
# Preview images in full color with the external command "w3mimgpreview"?
|
||||
# This requires the console web browser "w3m" and a supported terminal.
|
||||
# It has been successfully tested with "xterm" and "urxvt" without tmux.
|
||||
#
|
||||
# * iterm2:
|
||||
# Preview images in full color using iTerm2 image previews
|
||||
# (http://iterm2.com/images.html). This requires using iTerm2 compiled
|
||||
# with image preview support.
|
||||
#
|
||||
# * urxvt:
|
||||
# Preview images in full color using urxvt image backgrounds. This
|
||||
# requires using urxvt compiled with pixbuf support.
|
||||
#
|
||||
# * urxvt-full:
|
||||
# The same as urxvt but utilizing not only the preview pane but the
|
||||
# whole terminal window.
|
||||
set preview_images_method w3m
|
||||
|
||||
# Use a unicode "..." character to mark cut-off filenames?
|
||||
set unicode_ellipsis false
|
||||
|
||||
# Show dotfiles in the bookmark preview box?
|
||||
set show_hidden_bookmarks true
|
||||
|
||||
# Which colorscheme to use? These colorschemes are available by default:
|
||||
# default, jungle, snow, solarized
|
||||
set colorscheme default
|
||||
|
||||
# Preview files on the rightmost column?
|
||||
# And collapse (shrink) the last column if there is nothing to preview?
|
||||
set preview_files true
|
||||
set preview_directories true
|
||||
set collapse_preview true
|
||||
|
||||
# Save the console history on exit?
|
||||
set save_console_history true
|
||||
|
||||
# Draw the status bar on top of the browser window (default: bottom)
|
||||
set status_bar_on_top false
|
||||
|
||||
# Draw a progress bar in the status bar which displays the average state of all
|
||||
# currently running tasks which support progress bars?
|
||||
set draw_progress_bar_in_status_bar true
|
||||
|
||||
# Draw borders around columns?
|
||||
set draw_borders true
|
||||
|
||||
# Display the directory name in tabs?
|
||||
set dirname_in_tabs false
|
||||
|
||||
# Enable the mouse support?
|
||||
set mouse_enabled true
|
||||
|
||||
# Display the file size in the main column or status bar?
|
||||
set display_size_in_main_column true
|
||||
set display_size_in_status_bar true
|
||||
|
||||
# Display files tags in all columns or only in main column?
|
||||
set display_tags_in_all_columns true
|
||||
|
||||
# Set a title for the window?
|
||||
set update_title false
|
||||
|
||||
# Set the title to "ranger" in the tmux program?
|
||||
set update_tmux_title false
|
||||
|
||||
# Shorten the title if it gets long? The number defines how many
|
||||
# directories are displayed at once, 0 turns off this feature.
|
||||
set shorten_title 3
|
||||
|
||||
# Abbreviate $HOME with ~ in the titlebar (first line) of ranger?
|
||||
set tilde_in_titlebar false
|
||||
|
||||
# How many directory-changes or console-commands should be kept in history?
|
||||
set max_history_size 20
|
||||
set max_console_history_size 50
|
||||
|
||||
# Try to keep so much space between the top/bottom border when scrolling:
|
||||
set scroll_offset 8
|
||||
|
||||
# Flush the input after each key hit? (Noticeable when ranger lags)
|
||||
set flushinput true
|
||||
|
||||
# Padding on the right when there's no preview?
|
||||
# This allows you to click into the space to run the file.
|
||||
set padding_right true
|
||||
|
||||
# Save bookmarks (used with mX and `X) instantly?
|
||||
# This helps to synchronize bookmarks between multiple ranger
|
||||
# instances but leads to *slight* performance loss.
|
||||
# When false, bookmarks are saved when ranger is exited.
|
||||
set autosave_bookmarks true
|
||||
|
||||
# You can display the "real" cumulative size of directories by using the
|
||||
# command :get_cumulative_size or typing "dc". The size is expensive to
|
||||
# calculate and will not be updated automatically. You can choose
|
||||
# to update it automatically though by turning on this option:
|
||||
set autoupdate_cumulative_size false
|
||||
|
||||
# Turning this on makes sense for screen readers:
|
||||
set show_cursor false
|
||||
|
||||
# One of: size, natural, basename, atime, ctime, mtime, type, random
|
||||
set sort natural
|
||||
|
||||
# Additional sorting options
|
||||
set sort_reverse false
|
||||
set sort_case_insensitive true
|
||||
set sort_directories_first true
|
||||
set sort_unicode false
|
||||
|
||||
# Enable this if key combinations with the Alt Key don't work for you.
|
||||
# (Especially on xterm)
|
||||
set xterm_alt_key false
|
||||
|
||||
# Whether to include bookmarks in cd command
|
||||
set cd_bookmarks true
|
||||
|
||||
# Avoid previewing files larger than this size, in bytes. Use a value of 0 to
|
||||
# disable this feature.
|
||||
set preview_max_size 0
|
||||
|
||||
# Add the highlighted file to the path in the titlebar
|
||||
set show_selection_in_titlebar true
|
||||
|
||||
# The delay that ranger idly waits for user input, in milliseconds, with a
|
||||
# resolution of 100ms. Lower delay reduces lag between directory updates but
|
||||
# increases CPU load.
|
||||
set idle_delay 2000
|
||||
|
||||
# When the metadata manager module looks for metadata, should it only look for
|
||||
# a ".metadata.json" file in the current directory, or do a deep search and
|
||||
# check all directories above the current one as well?
|
||||
set metadata_deep_search false
|
||||
|
||||
# Clear all existing filters when leaving a directory
|
||||
set clear_filters_on_dir_change false
|
||||
|
||||
# Disable displaying line numbers in main column
|
||||
set line_numbers false
|
||||
|
||||
# ===================================================================
|
||||
# == Local Options
|
||||
# ===================================================================
|
||||
# You can set local options that only affect a single directory.
|
||||
|
||||
# Examples:
|
||||
# setlocal path=~/downloads sort mtime
|
||||
|
||||
# ===================================================================
|
||||
# == Command Aliases in the Console
|
||||
# ===================================================================
|
||||
|
||||
alias e edit
|
||||
alias q quit
|
||||
alias q! quitall
|
||||
alias qa quitall
|
||||
alias qall quitall
|
||||
alias setl setlocal
|
||||
|
||||
alias filter scout -prt
|
||||
alias find scout -aeit
|
||||
alias mark scout -mr
|
||||
alias unmark scout -Mr
|
||||
alias search scout -rs
|
||||
alias search_inc scout -rts
|
||||
alias travel scout -aefiklst
|
||||
|
||||
# ===================================================================
|
||||
# == Define keys for the browser
|
||||
# ===================================================================
|
||||
|
||||
# Basic
|
||||
map Q quit!
|
||||
map q quit
|
||||
copymap q ZZ ZQ
|
||||
|
||||
map R reload_cwd
|
||||
map <C-r> reset
|
||||
map <C-l> redraw_window
|
||||
map <C-c> abort
|
||||
map <esc> change_mode normal
|
||||
map ~ set viewmode!
|
||||
|
||||
map i display_file
|
||||
map ? help
|
||||
map W display_log
|
||||
map w taskview_open
|
||||
map S shell $SHELL
|
||||
|
||||
map : console
|
||||
map ; console
|
||||
map ! console shell%space
|
||||
map @ console -p6 shell %%s
|
||||
map # console shell -p%space
|
||||
map s console shell%space
|
||||
map r chain draw_possible_programs; console open_with%%space
|
||||
map f console find%space
|
||||
map cd console cd%space
|
||||
|
||||
# Change the line mode
|
||||
map Mf linemode filename
|
||||
map Mi linemode fileinfo
|
||||
map Mm linemode mtime
|
||||
map Mp linemode permissions
|
||||
map Ms linemode sizemtime
|
||||
map Mt linemode metatitle
|
||||
|
||||
# Tagging / Marking
|
||||
map t tag_toggle
|
||||
map ut tag_remove
|
||||
map "<any> tag_toggle tag=%any
|
||||
map <Space> mark_files toggle=True
|
||||
map v mark_files all=True toggle=True
|
||||
map uv mark_files all=True val=False
|
||||
map V toggle_visual_mode
|
||||
map uV toggle_visual_mode reverse=True
|
||||
|
||||
# For the nostalgics: Midnight Commander bindings
|
||||
map <F1> help
|
||||
map <F3> display_file
|
||||
map <F4> edit
|
||||
map <F5> copy
|
||||
map <F6> cut
|
||||
map <F7> console mkdir%space
|
||||
map <F8> console delete
|
||||
map <F10> exit
|
||||
|
||||
# In case you work on a keyboard with dvorak layout
|
||||
map <UP> move up=1
|
||||
map <DOWN> move down=1
|
||||
map <LEFT> move left=1
|
||||
map <RIGHT> move right=1
|
||||
map <HOME> move to=0
|
||||
map <END> move to=-1
|
||||
map <PAGEDOWN> move down=1 pages=True
|
||||
map <PAGEUP> move up=1 pages=True
|
||||
map <CR> move right=1
|
||||
#map <DELETE> console delete
|
||||
map <INSERT> console touch%space
|
||||
|
||||
# VIM-like
|
||||
copymap <UP> k
|
||||
copymap <DOWN> j
|
||||
copymap <LEFT> h
|
||||
copymap <RIGHT> l
|
||||
copymap <HOME> gg
|
||||
copymap <END> G
|
||||
copymap <PAGEDOWN> <C-F>
|
||||
copymap <PAGEUP> <C-B>
|
||||
|
||||
map J move down=0.5 pages=True
|
||||
map K move up=0.5 pages=True
|
||||
copymap J <C-D>
|
||||
copymap K <C-U>
|
||||
|
||||
# Jumping around
|
||||
map H history_go -1
|
||||
map L history_go 1
|
||||
map ] move_parent 1
|
||||
map [ move_parent -1
|
||||
map } traverse
|
||||
|
||||
map gh cd ~
|
||||
map ge cd /etc
|
||||
map gu cd /usr
|
||||
map gd cd /dev
|
||||
map gl cd -r .
|
||||
map gL cd -r %f
|
||||
map go cd /opt
|
||||
map gv cd /var
|
||||
map gm cd /media
|
||||
map gM cd /mnt
|
||||
map gs cd /srv
|
||||
map gr cd /
|
||||
map gR eval fm.cd(ranger.RANGERDIR)
|
||||
map g/ cd /
|
||||
map g? cd /usr/share/doc/ranger
|
||||
|
||||
# External Programs
|
||||
map E edit
|
||||
map du shell -p du --max-depth=1 -h --apparent-size
|
||||
map dU shell -p du --max-depth=1 -h --apparent-size | sort -rh
|
||||
map yp shell -f echo -n %d/%f | xsel -i; xsel -o | xsel -i -b
|
||||
map yd shell -f echo -n %d | xsel -i; xsel -o | xsel -i -b
|
||||
map yn shell -f echo -n %f | xsel -i; xsel -o | xsel -i -b
|
||||
|
||||
# Filesystem Operations
|
||||
map = chmod
|
||||
|
||||
map cw console rename%space
|
||||
map a rename_append
|
||||
map A eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"))
|
||||
map I eval fm.open_console('rename ' + fm.thisfile.relative_path.replace("%", "%%"), position=7)
|
||||
|
||||
map pp paste
|
||||
map po paste overwrite=True
|
||||
map pP paste append=True
|
||||
map pO paste overwrite=True append=True
|
||||
map pl paste_symlink relative=False
|
||||
map pL paste_symlink relative=True
|
||||
map phl paste_hardlink
|
||||
map pht paste_hardlinked_subtree
|
||||
|
||||
map dD console delete
|
||||
|
||||
map dd cut
|
||||
map ud uncut
|
||||
map da cut mode=add
|
||||
map dr cut mode=remove
|
||||
map dt cut mode=toggle
|
||||
|
||||
map yy copy
|
||||
map uy uncut
|
||||
map ya copy mode=add
|
||||
map yr copy mode=remove
|
||||
map yt copy mode=toggle
|
||||
|
||||
# Temporary workarounds
|
||||
map dgg eval fm.cut(dirarg=dict(to=0), narg=quantifier)
|
||||
map dG eval fm.cut(dirarg=dict(to=-1), narg=quantifier)
|
||||
map dj eval fm.cut(dirarg=dict(down=1), narg=quantifier)
|
||||
map dk eval fm.cut(dirarg=dict(up=1), narg=quantifier)
|
||||
map ygg eval fm.copy(dirarg=dict(to=0), narg=quantifier)
|
||||
map yG eval fm.copy(dirarg=dict(to=-1), narg=quantifier)
|
||||
map yj eval fm.copy(dirarg=dict(down=1), narg=quantifier)
|
||||
map yk eval fm.copy(dirarg=dict(up=1), narg=quantifier)
|
||||
|
||||
# Searching
|
||||
map / console search%space
|
||||
map n search_next
|
||||
map N search_next forward=False
|
||||
map ct search_next order=tag
|
||||
map cs search_next order=size
|
||||
map ci search_next order=mimetype
|
||||
map cc search_next order=ctime
|
||||
map cm search_next order=mtime
|
||||
map ca search_next order=atime
|
||||
|
||||
# Tabs
|
||||
map <C-n> tab_new ~
|
||||
map <C-w> tab_close
|
||||
map <TAB> tab_move 1
|
||||
map <S-TAB> tab_move -1
|
||||
map <A-Right> tab_move 1
|
||||
map <A-Left> tab_move -1
|
||||
map gt tab_move 1
|
||||
map gT tab_move -1
|
||||
map gn tab_new ~
|
||||
map gc tab_close
|
||||
map uq tab_restore
|
||||
map <a-1> tab_open 1
|
||||
map <a-2> tab_open 2
|
||||
map <a-3> tab_open 3
|
||||
map <a-4> tab_open 4
|
||||
map <a-5> tab_open 5
|
||||
map <a-6> tab_open 6
|
||||
map <a-7> tab_open 7
|
||||
map <a-8> tab_open 8
|
||||
map <a-9> tab_open 9
|
||||
|
||||
# Sorting
|
||||
map or set sort_reverse!
|
||||
map oz set sort=random
|
||||
map os chain set sort=size; set sort_reverse=False
|
||||
map ob chain set sort=basename; set sort_reverse=False
|
||||
map on chain set sort=natural; set sort_reverse=False
|
||||
map om chain set sort=mtime; set sort_reverse=False
|
||||
map oc chain set sort=ctime; set sort_reverse=False
|
||||
map oa chain set sort=atime; set sort_reverse=False
|
||||
map ot chain set sort=type; set sort_reverse=False
|
||||
map oe chain set sort=extension; set sort_reverse=False
|
||||
|
||||
map oS chain set sort=size; set sort_reverse=True
|
||||
map oB chain set sort=basename; set sort_reverse=True
|
||||
map oN chain set sort=natural; set sort_reverse=True
|
||||
map oM chain set sort=mtime; set sort_reverse=True
|
||||
map oC chain set sort=ctime; set sort_reverse=True
|
||||
map oA chain set sort=atime; set sort_reverse=True
|
||||
map oT chain set sort=type; set sort_reverse=True
|
||||
map oE chain set sort=extension; set sort_reverse=True
|
||||
|
||||
map dc get_cumulative_size
|
||||
|
||||
# Settings
|
||||
map zc set collapse_preview!
|
||||
map zd set sort_directories_first!
|
||||
map zh set show_hidden!
|
||||
map <C-h> set show_hidden!
|
||||
map zI set flushinput!
|
||||
map zi set preview_images!
|
||||
map zm set mouse_enabled!
|
||||
map zp set preview_files!
|
||||
map zP set preview_directories!
|
||||
map zs set sort_case_insensitive!
|
||||
map zu set autoupdate_cumulative_size!
|
||||
map zv set use_preview_script!
|
||||
map zf console filter%space
|
||||
|
||||
# Bookmarks
|
||||
map `<any> enter_bookmark %any
|
||||
map '<any> enter_bookmark %any
|
||||
map m<any> set_bookmark %any
|
||||
map um<any> unset_bookmark %any
|
||||
|
||||
map m<bg> draw_bookmarks
|
||||
copymap m<bg> um<bg> `<bg> '<bg>
|
||||
|
||||
# Generate all the chmod bindings with some python help:
|
||||
eval for arg in "rwxXst": cmd("map +u{0} shell -f chmod u+{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map +g{0} shell -f chmod g+{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map +o{0} shell -f chmod o+{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map +a{0} shell -f chmod a+{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map +{0} shell -f chmod u+{0} %s".format(arg))
|
||||
|
||||
eval for arg in "rwxXst": cmd("map -u{0} shell -f chmod u-{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map -g{0} shell -f chmod g-{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map -o{0} shell -f chmod o-{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map -a{0} shell -f chmod a-{0} %s".format(arg))
|
||||
eval for arg in "rwxXst": cmd("map -{0} shell -f chmod u-{0} %s".format(arg))
|
||||
|
||||
# ===================================================================
|
||||
# == Define keys for the console
|
||||
# ===================================================================
|
||||
# Note: Unmapped keys are passed directly to the console.
|
||||
|
||||
# Basic
|
||||
cmap <tab> eval fm.ui.console.tab()
|
||||
cmap <s-tab> eval fm.ui.console.tab(-1)
|
||||
cmap <ESC> eval fm.ui.console.close()
|
||||
cmap <CR> eval fm.ui.console.execute()
|
||||
cmap <C-l> redraw_window
|
||||
|
||||
copycmap <ESC> <C-c>
|
||||
copycmap <CR> <C-j>
|
||||
|
||||
# Move around
|
||||
cmap <up> eval fm.ui.console.history_move(-1)
|
||||
cmap <down> eval fm.ui.console.history_move(1)
|
||||
cmap <left> eval fm.ui.console.move(left=1)
|
||||
cmap <right> eval fm.ui.console.move(right=1)
|
||||
cmap <home> eval fm.ui.console.move(right=0, absolute=True)
|
||||
cmap <end> eval fm.ui.console.move(right=-1, absolute=True)
|
||||
cmap <a-left> eval fm.ui.console.move_word(left=1)
|
||||
cmap <a-right> eval fm.ui.console.move_word(right=1)
|
||||
|
||||
# Line Editing
|
||||
cmap <backspace> eval fm.ui.console.delete(-1)
|
||||
cmap <delete> eval fm.ui.console.delete(0)
|
||||
cmap <C-w> eval fm.ui.console.delete_word()
|
||||
cmap <A-d> eval fm.ui.console.delete_word(backward=False)
|
||||
cmap <C-k> eval fm.ui.console.delete_rest(1)
|
||||
cmap <C-u> eval fm.ui.console.delete_rest(-1)
|
||||
cmap <C-y> eval fm.ui.console.paste()
|
||||
|
||||
# And of course the emacs way
|
||||
copycmap <up> <C-p>
|
||||
copycmap <down> <C-n>
|
||||
copycmap <left> <C-b>
|
||||
copycmap <right> <C-f>
|
||||
copycmap <home> <C-a>
|
||||
copycmap <end> <C-e>
|
||||
copycmap <delete> <C-d>
|
||||
copycmap <backspace> <C-h>
|
||||
|
||||
# Note: There are multiple ways to express backspaces. <backspace> (code 263)
|
||||
# and <backspace2> (code 127). To be sure, use both.
|
||||
copycmap <backspace> <backspace2>
|
||||
|
||||
# This special expression allows typing in numerals:
|
||||
cmap <allow_quantifiers> false
|
||||
|
||||
# ===================================================================
|
||||
# == Pager Keybindings
|
||||
# ===================================================================
|
||||
|
||||
# Movement
|
||||
pmap <down> pager_move down=1
|
||||
pmap <up> pager_move up=1
|
||||
pmap <left> pager_move left=4
|
||||
pmap <right> pager_move right=4
|
||||
pmap <home> pager_move to=0
|
||||
pmap <end> pager_move to=-1
|
||||
pmap <pagedown> pager_move down=1.0 pages=True
|
||||
pmap <pageup> pager_move up=1.0 pages=True
|
||||
pmap <C-d> pager_move down=0.5 pages=True
|
||||
pmap <C-u> pager_move up=0.5 pages=True
|
||||
|
||||
copypmap <UP> k <C-p>
|
||||
copypmap <DOWN> j <C-n> <CR>
|
||||
copypmap <LEFT> h
|
||||
copypmap <RIGHT> l
|
||||
copypmap <HOME> g
|
||||
copypmap <END> G
|
||||
copypmap <C-d> d
|
||||
copypmap <C-u> u
|
||||
copypmap <PAGEDOWN> n f <C-F> <Space>
|
||||
copypmap <PAGEUP> p b <C-B>
|
||||
|
||||
# Basic
|
||||
pmap <C-l> redraw_window
|
||||
pmap <ESC> pager_close
|
||||
copypmap <ESC> q Q i <F3>
|
||||
pmap E edit_file
|
||||
|
||||
# ===================================================================
|
||||
# == Taskview Keybindings
|
||||
# ===================================================================
|
||||
|
||||
# Movement
|
||||
tmap <up> taskview_move up=1
|
||||
tmap <down> taskview_move down=1
|
||||
tmap <home> taskview_move to=0
|
||||
tmap <end> taskview_move to=-1
|
||||
tmap <pagedown> taskview_move down=1.0 pages=True
|
||||
tmap <pageup> taskview_move up=1.0 pages=True
|
||||
tmap <C-d> taskview_move down=0.5 pages=True
|
||||
tmap <C-u> taskview_move up=0.5 pages=True
|
||||
|
||||
copytmap <UP> k <C-p>
|
||||
copytmap <DOWN> j <C-n> <CR>
|
||||
copytmap <HOME> g
|
||||
copytmap <END> G
|
||||
copytmap <C-u> u
|
||||
copytmap <PAGEDOWN> n f <C-F> <Space>
|
||||
copytmap <PAGEUP> p b <C-B>
|
||||
|
||||
# Changing priority and deleting tasks
|
||||
tmap J eval -q fm.ui.taskview.task_move(-1)
|
||||
tmap K eval -q fm.ui.taskview.task_move(0)
|
||||
tmap dd eval -q fm.ui.taskview.task_remove()
|
||||
tmap <pagedown> eval -q fm.ui.taskview.task_move(-1)
|
||||
tmap <pageup> eval -q fm.ui.taskview.task_move(0)
|
||||
tmap <delete> eval -q fm.ui.taskview.task_remove()
|
||||
|
||||
# Basic
|
||||
tmap <C-l> redraw_window
|
||||
tmap <ESC> taskview_close
|
||||
copytmap <ESC> q Q w <C-c>
|
||||
|
||||
# ===================================================================
|
||||
# == My Additions
|
||||
# ===================================================================
|
||||
# Start terminal at location
|
||||
map S shell bash -c "cd %d ; bash"
|
211
config/ranger/rifle.conf
Normal file
211
config/ranger/rifle.conf
Normal file
|
@ -0,0 +1,211 @@
|
|||
# vim: ft=cfg
|
||||
#
|
||||
# This is the configuration file of "rifle", ranger's file executor/opener.
|
||||
# Each line consists of conditions and a command. For each line the conditions
|
||||
# are checked and if they are met, the respective command is run.
|
||||
#
|
||||
# Syntax:
|
||||
# <condition1> , <condition2> , ... = command
|
||||
#
|
||||
# The command can contain these environment variables:
|
||||
# $1-$9 | The n-th selected file
|
||||
# $@ | All selected files
|
||||
#
|
||||
# If you use the special command "ask", rifle will ask you what program to run.
|
||||
#
|
||||
# Prefixing a condition with "!" will negate its result.
|
||||
# These conditions are currently supported:
|
||||
# match <regexp> | The regexp matches $1
|
||||
# ext <regexp> | The regexp matches the extension of $1
|
||||
# mime <regexp> | The regexp matches the mime type of $1
|
||||
# name <regexp> | The regexp matches the basename of $1
|
||||
# path <regexp> | The regexp matches the absolute path of $1
|
||||
# has <program> | The program is installed (i.e. located in $PATH)
|
||||
# env <variable> | The environment variable "variable" is non-empty
|
||||
# file | $1 is a file
|
||||
# directory | $1 is a directory
|
||||
# number <n> | change the number of this command to n
|
||||
# terminal | stdin, stderr and stdout are connected to a terminal
|
||||
# X | $DISPLAY is not empty (i.e. Xorg runs)
|
||||
#
|
||||
# There are also pseudo-conditions which have a "side effect":
|
||||
# flag <flags> | Change how the program is run. See below.
|
||||
# label <label> | Assign a label or name to the command so it can
|
||||
# | be started with :open_with <label> in ranger
|
||||
# | or `rifle -p <label>` in the standalone executable.
|
||||
# else | Always true.
|
||||
#
|
||||
# Flags are single characters which slightly transform the command:
|
||||
# f | Fork the program, make it run in the background.
|
||||
# | New command = setsid $command >& /dev/null &
|
||||
# r | Execute the command with root permissions
|
||||
# | New command = sudo $command
|
||||
# t | Run the program in a new terminal. If $TERMCMD is not defined,
|
||||
# | rifle will attempt to extract it from $TERM.
|
||||
# | New command = $TERMCMD -e $command
|
||||
# Note: The "New command" serves only as an illustration, the exact
|
||||
# implementation may differ.
|
||||
# Note: When using rifle in ranger, there is an additional flag "c" for
|
||||
# only running the current file even if you have marked multiple files.
|
||||
|
||||
#-------------------------------------------
|
||||
# Websites
|
||||
#-------------------------------------------
|
||||
# Rarely installed browsers get higher priority; It is assumed that if you
|
||||
# install a rare browser, you probably use it. Firefox/konqueror/w3m on the
|
||||
# other hand are often only installed as fallback browsers.
|
||||
ext x?html?, has surf, X, flag f = surf -- file://"$1"
|
||||
ext x?html?, has vimprobable, X, flag f = vimprobable -- "$@"
|
||||
ext x?html?, has vimprobable2, X, flag f = vimprobable2 -- "$@"
|
||||
ext x?html?, has qutebrowser, X, flag f = qutebrowser -- "$@"
|
||||
ext x?html?, has dwb, X, flag f = dwb -- "$@"
|
||||
ext x?html?, has jumanji, X, flag f = jumanji -- "$@"
|
||||
ext x?html?, has luakit, X, flag f = luakit -- "$@"
|
||||
ext x?html?, has uzbl, X, flag f = uzbl -- "$@"
|
||||
ext x?html?, has uzbl-tabbed, X, flag f = uzbl-tabbed -- "$@"
|
||||
ext x?html?, has uzbl-browser, X, flag f = uzbl-browser -- "$@"
|
||||
ext x?html?, has uzbl-core, X, flag f = uzbl-core -- "$@"
|
||||
ext x?html?, has midori, X, flag f = midori -- "$@"
|
||||
ext x?html?, has chromium, X, flag f = chromium -- "$@"
|
||||
ext x?html?, has opera, X, flag f = opera -- "$@"
|
||||
ext x?html?, has firefox, X, flag f = firefox -- "$@"
|
||||
ext x?html?, has seamonkey, X, flag f = seamonkey -- "$@"
|
||||
ext x?html?, has iceweasel, X, flag f = iceweasel -- "$@"
|
||||
ext x?html?, has epiphany, X, flag f = epiphany -- "$@"
|
||||
ext x?html?, has konqueror, X, flag f = konqueror -- "$@"
|
||||
ext x?html?, has elinks, terminal = elinks "$@"
|
||||
ext x?html?, has links2, terminal = links2 "$@"
|
||||
ext x?html?, has links, terminal = links "$@"
|
||||
ext x?html?, has lynx, terminal = lynx -- "$@"
|
||||
ext x?html?, has w3m, terminal = w3m "$@"
|
||||
|
||||
#-------------------------------------------
|
||||
# Misc
|
||||
#-------------------------------------------
|
||||
# Define the "editor" for text files as first action
|
||||
mime ^text, label editor = $EDITOR -- "$@"
|
||||
mime ^text, label pager = "$PAGER" -- "$@"
|
||||
!mime ^text, label editor, ext xml|json|csv|tex|py|pl|rb|js|sh|php = $EDITOR -- "$@"
|
||||
!mime ^text, label pager, ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER" -- "$@"
|
||||
|
||||
ext 1 = man "$1"
|
||||
ext s[wmf]c, has zsnes, X = zsnes "$1"
|
||||
ext s[wmf]c, has snes9x-gtk,X = snes9x-gtk "$1"
|
||||
ext nes, has fceux, X = fceux "$1"
|
||||
ext exe = wine "$1"
|
||||
name ^[mM]akefile$ = make
|
||||
|
||||
#--------------------------------------------
|
||||
# Code
|
||||
#-------------------------------------------
|
||||
ext py = python -- "$1"
|
||||
ext pl = perl -- "$1"
|
||||
ext rb = ruby -- "$1"
|
||||
ext js = node -- "$1"
|
||||
ext sh = sh -- "$1"
|
||||
ext php = php -- "$1"
|
||||
|
||||
#--------------------------------------------
|
||||
# Audio without X
|
||||
#-------------------------------------------
|
||||
mime ^audio|ogg$, terminal, has mpv = mpv -- "$@"
|
||||
mime ^audio|ogg$, terminal, has mplayer2 = mplayer2 -- "$@"
|
||||
mime ^audio|ogg$, terminal, has mplayer = mplayer -- "$@"
|
||||
ext midi?, terminal, has wildmidi = wildmidi -- "$@"
|
||||
|
||||
#--------------------------------------------
|
||||
# Video/Audio with a GUI
|
||||
#-------------------------------------------
|
||||
mime ^video|audio, has gmplayer, X, flag f = gmplayer -- "$@"
|
||||
mime ^video|audio, has smplayer, X, flag f = smplayer "$@"
|
||||
mime ^video, has mpv, X, flag f = mpv -- "$@"
|
||||
mime ^video, has mpv, X, flag f = mpv --fs -- "$@"
|
||||
mime ^video, has mplayer2, X, flag f = mplayer2 -- "$@"
|
||||
mime ^video, has mplayer2, X, flag f = mplayer2 -fs -- "$@"
|
||||
mime ^video, has mplayer, X, flag f = mplayer -- "$@"
|
||||
mime ^video, has mplayer, X, flag f = mplayer -fs -- "$@"
|
||||
mime ^video|audio, has vlc, X, flag f = vlc -- "$@"
|
||||
mime ^video|audio, has totem, X, flag f = totem -- "$@"
|
||||
mime ^video|audio, has totem, X, flag f = totem --fullscreen -- "$@"
|
||||
|
||||
#--------------------------------------------
|
||||
# Video without X:
|
||||
#-------------------------------------------
|
||||
mime ^video, terminal, !X, has mpv = mpv -- "$@"
|
||||
mime ^video, terminal, !X, has mplayer2 = mplayer2 -- "$@"
|
||||
mime ^video, terminal, !X, has mplayer = mplayer -- "$@"
|
||||
|
||||
#-------------------------------------------
|
||||
# Documents
|
||||
#-------------------------------------------
|
||||
ext pdf, has llpp, X, flag f = llpp "$@"
|
||||
ext pdf, has zathura, X, flag f = zathura -- "$@"
|
||||
ext pdf, has mupdf, X, flag f = mupdf "$@"
|
||||
ext pdf, has mupdf-x11,X, flag f = mupdf-x11 "$@"
|
||||
ext pdf, has apvlv, X, flag f = apvlv -- "$@"
|
||||
ext pdf, has xpdf, X, flag f = xpdf -- "$@"
|
||||
ext pdf, has evince, X, flag f = evince -- "$@"
|
||||
ext pdf, has atril, X, flag f = atril -- "$@"
|
||||
ext pdf, has okular, X, flag f = okular -- "$@"
|
||||
ext pdf, has epdfview, X, flag f = epdfview -- "$@"
|
||||
ext pdf, has qpdfview, X, flag f = qpdfview "$@"
|
||||
|
||||
ext docx?, has catdoc, terminal = catdoc -- "$@" | "$PAGER"
|
||||
|
||||
ext sxc|xlsx?|xlt|xlw|gnm|gnumeric, has gnumeric, X, flag f = gnumeric -- "$@"
|
||||
ext sxc|xlsx?|xlt|xlw|gnm|gnumeric, has kspread, X, flag f = kspread -- "$@"
|
||||
ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has libreoffice, X, flag f = libreoffice "$@"
|
||||
ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has soffice, X, flag f = soffice "$@"
|
||||
ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has ooffice, X, flag f = ooffice "$@"
|
||||
|
||||
ext djvu, has zathura,X, flag f = zathura -- "$@"
|
||||
ext djvu, has evince, X, flag f = evince -- "$@"
|
||||
ext djvu, has atril, X, flag f = atril -- "$@"
|
||||
|
||||
#-------------------------------------------
|
||||
# Image Viewing:
|
||||
#-------------------------------------------
|
||||
mime ^image/svg, has inkscape, X, flag f = inkscape -- "$@"
|
||||
mime ^image/svg, has display, X, flag f = display -- "$@"
|
||||
|
||||
mime ^image, has pqiv, X, flag f = pqiv -- "$@"
|
||||
mime ^image, has sxiv, X, flag f = sxiv -- "$@"
|
||||
mime ^image, has feh, X, flag f = feh -- "$@"
|
||||
mime ^image, has mirage, X, flag f = mirage -- "$@"
|
||||
mime ^image, has ristretto, X, flag f = ristretto "$@"
|
||||
mime ^image, has eog, X, flag f = eog -- "$@"
|
||||
mime ^image, has eom, X, flag f = eom -- "$@"
|
||||
mime ^image, has gimp, X, flag f = gimp -- "$@"
|
||||
ext xcf, X, flag f = gimp -- "$@"
|
||||
|
||||
#-------------------------------------------
|
||||
# Archives
|
||||
#-------------------------------------------
|
||||
|
||||
# avoid password prompt by providing empty password
|
||||
ext 7z, has 7z = 7z -p l "$@" | "$PAGER"
|
||||
# This requires atool
|
||||
ext ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, has als = als -- "$@" | "$PAGER"
|
||||
ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has als = als -- "$@" | "$PAGER"
|
||||
ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, has aunpack = aunpack -- "$@"
|
||||
ext iso|jar|msi|pkg|rar|shar|tar|tgz|xar|xpi|xz|zip, has aunpack = aunpack -- "$@"
|
||||
|
||||
# Fallback:
|
||||
ext tar|gz, has tar = tar vvtf "$@" | "$PAGER"
|
||||
ext tar|gz, has tar = tar vvxf "$@"
|
||||
|
||||
#-------------------------------------------
|
||||
# Misc
|
||||
#-------------------------------------------
|
||||
label wallpaper, number 11, mime ^image, has feh, X = feh --bg-scale "$1"
|
||||
label wallpaper, number 12, mime ^image, has feh, X = feh --bg-tile "$1"
|
||||
label wallpaper, number 13, mime ^image, has feh, X = feh --bg-center "$1"
|
||||
label wallpaper, number 14, mime ^image, has feh, X = feh --bg-fill "$1"
|
||||
|
||||
# Define the editor for non-text files + pager as last action
|
||||
!mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = ask
|
||||
label editor, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = $EDITOR -- "$@"
|
||||
label pager, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER" -- "$@"
|
||||
|
||||
# The very last action, so that it's never triggered accidentally, is to execute a program:
|
||||
mime application/x-executable = "$1"
|
128
config/ranger/scope.sh
Executable file
128
config/ranger/scope.sh
Executable file
|
@ -0,0 +1,128 @@
|
|||
#!/usr/bin/env sh
|
||||
# ranger supports enhanced previews. If the option "use_preview_script"
|
||||
# is set to True and this file exists, this script will be called and its
|
||||
# output is displayed in ranger. ANSI color codes are supported.
|
||||
|
||||
# NOTES: This script is considered a configuration file. If you upgrade
|
||||
# ranger, it will be left untouched. (You must update it yourself.)
|
||||
# Also, ranger disables STDIN here, so interactive scripts won't work properly
|
||||
|
||||
# Meanings of exit codes:
|
||||
# code | meaning | action of ranger
|
||||
# -----+------------+-------------------------------------------
|
||||
# 0 | success | success. display stdout as preview
|
||||
# 1 | no preview | failure. display no preview at all
|
||||
# 2 | plain text | display the plain content of the file
|
||||
# 3 | fix width | success. Don't reload when width changes
|
||||
# 4 | fix height | success. Don't reload when height changes
|
||||
# 5 | fix both | success. Don't ever reload
|
||||
# 6 | image | success. display the image $cached points to as an image preview
|
||||
# 7 | image | success. display the file directly as an image
|
||||
|
||||
# Meaningful aliases for arguments:
|
||||
path="$1" # Full path of the selected file
|
||||
width="$2" # Width of the preview pane (number of fitting characters)
|
||||
height="$3" # Height of the preview pane (number of fitting characters)
|
||||
cached="$4" # Path that should be used to cache image previews
|
||||
preview_images="$5" # "True" if image previews are enabled, "False" otherwise.
|
||||
|
||||
maxln=200 # Stop after $maxln lines. Can be used like ls | head -n $maxln
|
||||
|
||||
# Find out something about the file:
|
||||
mimetype=$(file --mime-type -Lb "$path")
|
||||
extension=$(/bin/echo "${path##*.}" | awk '{print tolower($0)}')
|
||||
|
||||
# Functions:
|
||||
# runs a command and saves its output into $output. Useful if you need
|
||||
# the return value AND want to use the output in a pipe
|
||||
try() { output=$(eval '"$@"'); }
|
||||
|
||||
# writes the output of the previously used "try" command
|
||||
dump() { /bin/echo "$output"; }
|
||||
|
||||
# a common post-processing function used after most commands
|
||||
trim() { head -n "$maxln"; }
|
||||
|
||||
# wraps highlight to treat exit code 141 (killed by SIGPIPE) as success
|
||||
safepipe() { "$@"; test $? = 0 -o $? = 141; }
|
||||
|
||||
# Image previews, if enabled in ranger.
|
||||
if [ "$preview_images" = "True" ]; then
|
||||
case "$mimetype" in
|
||||
# Image previews for SVG files, disabled by default.
|
||||
###image/svg+xml)
|
||||
### convert "$path" "$cached" && exit 6 || exit 1;;
|
||||
# Image previews for image files. w3mimgdisplay will be called for all
|
||||
# image files (unless overriden as above), but might fail for
|
||||
# unsupported types.
|
||||
image/svg+xml)
|
||||
inkscape -e "${cached//.png}" "$path" && exit 6;;
|
||||
image/*)
|
||||
exit 7;;
|
||||
# Image preview for video, disabled by default.:
|
||||
video/*)
|
||||
ffmpegthumbnailer -i "$path" -o "$cached" -s 0 && exit 6 || exit 1;;
|
||||
application/pdf)
|
||||
pdftoppm -jpeg -singlefile "$path" "${cached//.jpg}" && exit 6;;
|
||||
esac
|
||||
fi
|
||||
|
||||
case "$extension" in
|
||||
# Archive extensions:
|
||||
a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|\
|
||||
rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)
|
||||
try als "$path" && { dump | trim; exit 0; }
|
||||
try acat "$path" && { dump | trim; exit 3; }
|
||||
try bsdtar -lf "$path" && { dump | trim; exit 0; }
|
||||
exit 1;;
|
||||
rar)
|
||||
# avoid password prompt by providing empty password
|
||||
try unrar -p- lt "$path" && { dump | trim; exit 0; } || exit 1;;
|
||||
7z)
|
||||
# avoid password prompt by providing empty password
|
||||
try 7z -p l "$path" && { dump | trim; exit 0; } || exit 1;;
|
||||
# PDF documents:
|
||||
pdf)
|
||||
try pdftotext -l 10 -nopgbrk -q "$path" - && \
|
||||
{ dump | trim | fmt -s -w $width; exit 0; } || exit 1;;
|
||||
# BitTorrent Files
|
||||
torrent)
|
||||
try transmission-show "$path" && { dump | trim; exit 5; } || exit 1;;
|
||||
# ODT Files
|
||||
#odt|ods|odp|sxw)
|
||||
# try odt2txt "$path" && { dump | trim; exit 5; } || exit 1;;
|
||||
# Try to get the text out of a document using libreoffice
|
||||
odt|ods|odp|sxw|doc|docx|xls|xlsx|ppt|pptx)
|
||||
try libreoffice --cat "$path" && { dump | trim | fmt -s -w $width; exit 0; } || exit 1;;
|
||||
# HTML Pages:
|
||||
htm|html|xhtml)
|
||||
try w3m -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; }
|
||||
try lynx -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; }
|
||||
try elinks -dump "$path" && { dump | trim | fmt -s -w $width; exit 4; }
|
||||
;; # fall back to highlight/cat if the text browsers fail
|
||||
esac
|
||||
|
||||
case "$mimetype" in
|
||||
# Syntax highlight for text files:
|
||||
text/* | */xml)
|
||||
if [ "$(tput colors)" -ge 256 ]; then
|
||||
pygmentize_format=terminal256
|
||||
highlight_format=xterm256
|
||||
else
|
||||
pygmentize_format=terminal
|
||||
highlight_format=ansi
|
||||
fi
|
||||
try safepipe highlight --out-format=${highlight_format} "$path" && { dump | trim; exit 5; }
|
||||
try safepipe pygmentize -f ${pygmentize_format} "$path" && { dump | trim; exit 5; }
|
||||
exit 2;;
|
||||
# Ascii-previews of images:
|
||||
image/*)
|
||||
img2txt --gamma=0.6 --width="$width" "$path" && exit 4 || exit 1;;
|
||||
# Display information about media files:
|
||||
video/* | audio/*)
|
||||
exiftool "$path" && exit 5
|
||||
# Use sed to remove spaces so the output fits into the narrow window
|
||||
try mediainfo "$path" && { dump | trim | sed 's/ \+:/: /;'; exit 5; } || exit 1;;
|
||||
esac
|
||||
|
||||
exit 1
|
81
config/termite/config
Normal file
81
config/termite/config
Normal file
|
@ -0,0 +1,81 @@
|
|||
[options]
|
||||
scroll_on_output = false
|
||||
scroll_on_keystroke = true
|
||||
audible_bell = false
|
||||
mouse_autohide = false
|
||||
allow_bold = true
|
||||
dynamic_title = true
|
||||
urgent_on_bell = true
|
||||
clickable_url = true
|
||||
#font = Monospace 12
|
||||
#font = DejaVu Sans Mono for Powerline 12
|
||||
font = Ubuntu Mono derivative Powerline 15
|
||||
font = Roboto Mono for Powerline 12
|
||||
#font = Ubuntu Mono 15
|
||||
scrollback_lines = 10000
|
||||
search_wrap = true
|
||||
#icon_name = terminal
|
||||
#geometry = 640x480
|
||||
|
||||
# "system", "on" or "off"
|
||||
cursor_blink = system
|
||||
|
||||
# "block", "underline" or "ibeam"
|
||||
cursor_shape = block
|
||||
|
||||
# $BROWSER is used by default if set, with xdg-open as a fallback
|
||||
#browser = xdg-open
|
||||
|
||||
# set size hints for the window
|
||||
#size_hints = false
|
||||
|
||||
# Hide links that are no longer valid in url select overlay mode
|
||||
filter_unmatched_urls = true
|
||||
|
||||
# emit escape sequences for extra modified keys
|
||||
#modify_other_keys = false
|
||||
|
||||
[colors]
|
||||
#cursor = #dcdccc
|
||||
#cursor_foreground = #dcdccc
|
||||
foreground = #dcdccc
|
||||
foreground_bold = #ffffff
|
||||
background = #3f3f3f
|
||||
|
||||
# 20% background transparency (requires a compositor)
|
||||
background = rgba(63, 63, 63, 0.95)
|
||||
|
||||
# if unset, will reverse foreground and background
|
||||
highlight = #2f2f2f
|
||||
|
||||
# colors from color0 to color254 can be set
|
||||
#color0 = #3f3f3f
|
||||
#color1 = #705050
|
||||
#color2 = #60b48a
|
||||
#color3 = #dfaf8f
|
||||
#color4 = #506070
|
||||
#color5 = #dc8cc3
|
||||
#color6 = #8cd0d3
|
||||
#color7 = #dcdccc
|
||||
#color8 = #709080
|
||||
#color9 = #dca3a3
|
||||
#color10 = #c3bf9f
|
||||
#color11 = #f0dfaf
|
||||
#This is the blue that ls used by default for folders
|
||||
color12 = #94bff3
|
||||
#color13 = #ec93d3
|
||||
#color14 = #93e0e3
|
||||
#color15 = #ffffff
|
||||
|
||||
[hints]
|
||||
#font = Monospace 12
|
||||
#foreground = #dcdccc
|
||||
#background = #3f3f3f
|
||||
#active_foreground = #e68080
|
||||
#active_background = #3f3f3f
|
||||
#padding = 2
|
||||
#border = #3f3f3f
|
||||
#border_width = 0.5
|
||||
#roundness = 2.0
|
||||
|
||||
# vim: ft=dosini cms=#%s
|
668
etc/dnsmasq.conf
Normal file
668
etc/dnsmasq.conf
Normal file
|
@ -0,0 +1,668 @@
|
|||
# Configuration file for dnsmasq.
|
||||
#
|
||||
# Format is one option per line, legal options are the same
|
||||
# as the long options legal on the command line. See
|
||||
# "/usr/sbin/dnsmasq --help" or "man 8 dnsmasq" for details.
|
||||
|
||||
# Listen on this specific port instead of the standard DNS port
|
||||
# (53). Setting this to zero completely disables DNS function,
|
||||
# leaving only DHCP and/or TFTP.
|
||||
#port=5353
|
||||
|
||||
# The following two options make you a better netizen, since they
|
||||
# tell dnsmasq to filter out queries which the public DNS cannot
|
||||
# answer, and which load the servers (especially the root servers)
|
||||
# unnecessarily. If you have a dial-on-demand link they also stop
|
||||
# these requests from bringing up the link unnecessarily.
|
||||
|
||||
# Never forward plain names (without a dot or domain part)
|
||||
#domain-needed
|
||||
# Never forward addresses in the non-routed address spaces.
|
||||
#bogus-priv
|
||||
|
||||
# Uncomment these to enable DNSSEC validation and caching:
|
||||
# (Requires dnsmasq to be built with DNSSEC option.)
|
||||
#conf-file=/usr/share/dnsmasq/trust-anchors.conf
|
||||
#dnssec
|
||||
|
||||
# Replies which are not DNSSEC signed may be legitimate, because the domain
|
||||
# is unsigned, or may be forgeries. Setting this option tells dnsmasq to
|
||||
# check that an unsigned reply is OK, by finding a secure proof that a DS
|
||||
# record somewhere between the root and the domain does not exist.
|
||||
# The cost of setting this is that even queries in unsigned domains will need
|
||||
# one or more extra DNS queries to verify.
|
||||
#dnssec-check-unsigned
|
||||
|
||||
# Uncomment this to filter useless windows-originated DNS requests
|
||||
# which can trigger dial-on-demand links needlessly.
|
||||
# Note that (amongst other things) this blocks all SRV requests,
|
||||
# so don't use it if you use eg Kerberos, SIP, XMMP or Google-talk.
|
||||
# This option only affects forwarding, SRV records originating for
|
||||
# dnsmasq (via srv-host= lines) are not suppressed by it.
|
||||
#filterwin2k
|
||||
|
||||
# Change this line if you want dns to get its upstream servers from
|
||||
# somewhere other that /etc/resolv.conf
|
||||
#resolv-file=
|
||||
|
||||
# By default, dnsmasq will send queries to any of the upstream
|
||||
# servers it knows about and tries to favour servers to are known
|
||||
# to be up. Uncommenting this forces dnsmasq to try each query
|
||||
# with each server strictly in the order they appear in
|
||||
# /etc/resolv.conf
|
||||
#strict-order
|
||||
|
||||
# If you don't want dnsmasq to read /etc/resolv.conf or any other
|
||||
# file, getting its servers from this file instead (see below), then
|
||||
# uncomment this.
|
||||
#no-resolv
|
||||
|
||||
# If you don't want dnsmasq to poll /etc/resolv.conf or other resolv
|
||||
# files for changes and re-read them then uncomment this.
|
||||
#no-poll
|
||||
|
||||
# Add other name servers here, with domain specs if they are for
|
||||
# non-public domains.
|
||||
#server=/localnet/192.168.0.1
|
||||
|
||||
# Example of routing PTR queries to nameservers: this will send all
|
||||
# address->name queries for 192.168.3/24 to nameserver 10.1.2.3
|
||||
#server=/3.168.192.in-addr.arpa/10.1.2.3
|
||||
|
||||
# Add local-only domains here, queries in these domains are answered
|
||||
# from /etc/hosts or DHCP only.
|
||||
#local=/localnet/
|
||||
|
||||
# Add domains which you want to force to an IP address here.
|
||||
# The example below send any host in double-click.net to a local
|
||||
# web-server.
|
||||
#address=/double-click.net/127.0.0.1
|
||||
address=/.localhost/127.0.0.1
|
||||
|
||||
# --address (and --server) work with IPv6 addresses too.
|
||||
#address=/www.thekelleys.org.uk/fe80::20d:60ff:fe36:f83
|
||||
|
||||
# Add the IPs of all queries to yahoo.com, google.com, and their
|
||||
# subdomains to the vpn and search ipsets:
|
||||
#ipset=/yahoo.com/google.com/vpn,search
|
||||
|
||||
# You can control how dnsmasq talks to a server: this forces
|
||||
# queries to 10.1.2.3 to be routed via eth1
|
||||
# server=10.1.2.3@eth1
|
||||
|
||||
# and this sets the source (ie local) address used to talk to
|
||||
# 10.1.2.3 to 192.168.1.1 port 55 (there must be a interface with that
|
||||
# IP on the machine, obviously).
|
||||
# server=10.1.2.3@192.168.1.1#55
|
||||
|
||||
# If you want dnsmasq to change uid and gid to something other
|
||||
# than the default, edit the following lines.
|
||||
#user=
|
||||
#group=
|
||||
|
||||
# If you want dnsmasq to listen for DHCP and DNS requests only on
|
||||
# specified interfaces (and the loopback) give the name of the
|
||||
# interface (eg eth0) here.
|
||||
# Repeat the line for more than one interface.
|
||||
#interface=
|
||||
# Or you can specify which interface _not_ to listen on
|
||||
#except-interface=
|
||||
# Or which to listen on by address (remember to include 127.0.0.1 if
|
||||
# you use this.)
|
||||
#listen-address=
|
||||
listen-address=127.0.0.1
|
||||
# If you want dnsmasq to provide only DNS service on an interface,
|
||||
# configure it as shown above, and then use the following line to
|
||||
# disable DHCP and TFTP on it.
|
||||
#no-dhcp-interface=
|
||||
|
||||
# On systems which support it, dnsmasq binds the wildcard address,
|
||||
# even when it is listening on only some interfaces. It then discards
|
||||
# requests that it shouldn't reply to. This has the advantage of
|
||||
# working even when interfaces come and go and change address. If you
|
||||
# want dnsmasq to really bind only the interfaces it is listening on,
|
||||
# uncomment this option. About the only time you may need this is when
|
||||
# running another nameserver on the same machine.
|
||||
#bind-interfaces
|
||||
|
||||
# If you don't want dnsmasq to read /etc/hosts, uncomment the
|
||||
# following line.
|
||||
#no-hosts
|
||||
# or if you want it to read another file, as well as /etc/hosts, use
|
||||
# this.
|
||||
#addn-hosts=/etc/banner_add_hosts
|
||||
|
||||
# Set this (and domain: see below) if you want to have a domain
|
||||
# automatically added to simple names in a hosts-file.
|
||||
#expand-hosts
|
||||
|
||||
# Set the domain for dnsmasq. this is optional, but if it is set, it
|
||||
# does the following things.
|
||||
# 1) Allows DHCP hosts to have fully qualified domain names, as long
|
||||
# as the domain part matches this setting.
|
||||
# 2) Sets the "domain" DHCP option thereby potentially setting the
|
||||
# domain of all systems configured by DHCP
|
||||
# 3) Provides the domain part for "expand-hosts"
|
||||
#domain=thekelleys.org.uk
|
||||
|
||||
# Set a different domain for a particular subnet
|
||||
#domain=wireless.thekelleys.org.uk,192.168.2.0/24
|
||||
|
||||
# Same idea, but range rather then subnet
|
||||
#domain=reserved.thekelleys.org.uk,192.68.3.100,192.168.3.200
|
||||
|
||||
# Uncomment this to enable the integrated DHCP server, you need
|
||||
# to supply the range of addresses available for lease and optionally
|
||||
# a lease time. If you have more than one network, you will need to
|
||||
# repeat this for each network on which you want to supply DHCP
|
||||
# service.
|
||||
#dhcp-range=192.168.0.50,192.168.0.150,12h
|
||||
|
||||
# This is an example of a DHCP range where the netmask is given. This
|
||||
# is needed for networks we reach the dnsmasq DHCP server via a relay
|
||||
# agent. If you don't know what a DHCP relay agent is, you probably
|
||||
# don't need to worry about this.
|
||||
#dhcp-range=192.168.0.50,192.168.0.150,255.255.255.0,12h
|
||||
|
||||
# This is an example of a DHCP range which sets a tag, so that
|
||||
# some DHCP options may be set only for this network.
|
||||
#dhcp-range=set:red,192.168.0.50,192.168.0.150
|
||||
|
||||
# Use this DHCP range only when the tag "green" is set.
|
||||
#dhcp-range=tag:green,192.168.0.50,192.168.0.150,12h
|
||||
|
||||
# Specify a subnet which can't be used for dynamic address allocation,
|
||||
# is available for hosts with matching --dhcp-host lines. Note that
|
||||
# dhcp-host declarations will be ignored unless there is a dhcp-range
|
||||
# of some type for the subnet in question.
|
||||
# In this case the netmask is implied (it comes from the network
|
||||
# configuration on the machine running dnsmasq) it is possible to give
|
||||
# an explicit netmask instead.
|
||||
#dhcp-range=192.168.0.0,static
|
||||
|
||||
# Enable DHCPv6. Note that the prefix-length does not need to be specified
|
||||
# and defaults to 64 if missing/
|
||||
#dhcp-range=1234::2, 1234::500, 64, 12h
|
||||
|
||||
# Do Router Advertisements, BUT NOT DHCP for this subnet.
|
||||
#dhcp-range=1234::, ra-only
|
||||
|
||||
# Do Router Advertisements, BUT NOT DHCP for this subnet, also try and
|
||||
# add names to the DNS for the IPv6 address of SLAAC-configured dual-stack
|
||||
# hosts. Use the DHCPv4 lease to derive the name, network segment and
|
||||
# MAC address and assume that the host will also have an
|
||||
# IPv6 address calculated using the SLAAC alogrithm.
|
||||
#dhcp-range=1234::, ra-names
|
||||
|
||||
# Do Router Advertisements, BUT NOT DHCP for this subnet.
|
||||
# Set the lifetime to 46 hours. (Note: minimum lifetime is 2 hours.)
|
||||
#dhcp-range=1234::, ra-only, 48h
|
||||
|
||||
# Do DHCP and Router Advertisements for this subnet. Set the A bit in the RA
|
||||
# so that clients can use SLAAC addresses as well as DHCP ones.
|
||||
#dhcp-range=1234::2, 1234::500, slaac
|
||||
|
||||
# Do Router Advertisements and stateless DHCP for this subnet. Clients will
|
||||
# not get addresses from DHCP, but they will get other configuration information.
|
||||
# They will use SLAAC for addresses.
|
||||
#dhcp-range=1234::, ra-stateless
|
||||
|
||||
# Do stateless DHCP, SLAAC, and generate DNS names for SLAAC addresses
|
||||
# from DHCPv4 leases.
|
||||
#dhcp-range=1234::, ra-stateless, ra-names
|
||||
|
||||
# Do router advertisements for all subnets where we're doing DHCPv6
|
||||
# Unless overriden by ra-stateless, ra-names, et al, the router
|
||||
# advertisements will have the M and O bits set, so that the clients
|
||||
# get addresses and configuration from DHCPv6, and the A bit reset, so the
|
||||
# clients don't use SLAAC addresses.
|
||||
#enable-ra
|
||||
|
||||
# Supply parameters for specified hosts using DHCP. There are lots
|
||||
# of valid alternatives, so we will give examples of each. Note that
|
||||
# IP addresses DO NOT have to be in the range given above, they just
|
||||
# need to be on the same network. The order of the parameters in these
|
||||
# do not matter, it's permissible to give name, address and MAC in any
|
||||
# order.
|
||||
|
||||
# Always allocate the host with Ethernet address 11:22:33:44:55:66
|
||||
# The IP address 192.168.0.60
|
||||
#dhcp-host=11:22:33:44:55:66,192.168.0.60
|
||||
|
||||
# Always set the name of the host with hardware address
|
||||
# 11:22:33:44:55:66 to be "fred"
|
||||
#dhcp-host=11:22:33:44:55:66,fred
|
||||
|
||||
# Always give the host with Ethernet address 11:22:33:44:55:66
|
||||
# the name fred and IP address 192.168.0.60 and lease time 45 minutes
|
||||
#dhcp-host=11:22:33:44:55:66,fred,192.168.0.60,45m
|
||||
|
||||
# Give a host with Ethernet address 11:22:33:44:55:66 or
|
||||
# 12:34:56:78:90:12 the IP address 192.168.0.60. Dnsmasq will assume
|
||||
# that these two Ethernet interfaces will never be in use at the same
|
||||
# time, and give the IP address to the second, even if it is already
|
||||
# in use by the first. Useful for laptops with wired and wireless
|
||||
# addresses.
|
||||
#dhcp-host=11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.60
|
||||
|
||||
# Give the machine which says its name is "bert" IP address
|
||||
# 192.168.0.70 and an infinite lease
|
||||
#dhcp-host=bert,192.168.0.70,infinite
|
||||
|
||||
# Always give the host with client identifier 01:02:02:04
|
||||
# the IP address 192.168.0.60
|
||||
#dhcp-host=id:01:02:02:04,192.168.0.60
|
||||
|
||||
# Always give the Infiniband interface with hardware address
|
||||
# 80:00:00:48:fe:80:00:00:00:00:00:00:f4:52:14:03:00:28:05:81 the
|
||||
# ip address 192.168.0.61. The client id is derived from the prefix
|
||||
# ff:00:00:00:00:00:02:00:00:02:c9:00 and the last 8 pairs of
|
||||
# hex digits of the hardware address.
|
||||
#dhcp-host=id:ff:00:00:00:00:00:02:00:00:02:c9:00:f4:52:14:03:00:28:05:81,192.168.0.61
|
||||
|
||||
# Always give the host with client identifier "marjorie"
|
||||
# the IP address 192.168.0.60
|
||||
#dhcp-host=id:marjorie,192.168.0.60
|
||||
|
||||
# Enable the address given for "judge" in /etc/hosts
|
||||
# to be given to a machine presenting the name "judge" when
|
||||
# it asks for a DHCP lease.
|
||||
#dhcp-host=judge
|
||||
|
||||
# Never offer DHCP service to a machine whose Ethernet
|
||||
# address is 11:22:33:44:55:66
|
||||
#dhcp-host=11:22:33:44:55:66,ignore
|
||||
|
||||
# Ignore any client-id presented by the machine with Ethernet
|
||||
# address 11:22:33:44:55:66. This is useful to prevent a machine
|
||||
# being treated differently when running under different OS's or
|
||||
# between PXE boot and OS boot.
|
||||
#dhcp-host=11:22:33:44:55:66,id:*
|
||||
|
||||
# Send extra options which are tagged as "red" to
|
||||
# the machine with Ethernet address 11:22:33:44:55:66
|
||||
#dhcp-host=11:22:33:44:55:66,set:red
|
||||
|
||||
# Send extra options which are tagged as "red" to
|
||||
# any machine with Ethernet address starting 11:22:33:
|
||||
#dhcp-host=11:22:33:*:*:*,set:red
|
||||
|
||||
# Give a fixed IPv6 address and name to client with
|
||||
# DUID 00:01:00:01:16:d2:83:fc:92:d4:19:e2:d8:b2
|
||||
# Note the MAC addresses CANNOT be used to identify DHCPv6 clients.
|
||||
# Note also the they [] around the IPv6 address are obilgatory.
|
||||
#dhcp-host=id:00:01:00:01:16:d2:83:fc:92:d4:19:e2:d8:b2, fred, [1234::5]
|
||||
|
||||
# Ignore any clients which are not specified in dhcp-host lines
|
||||
# or /etc/ethers. Equivalent to ISC "deny unknown-clients".
|
||||
# This relies on the special "known" tag which is set when
|
||||
# a host is matched.
|
||||
#dhcp-ignore=tag:!known
|
||||
|
||||
# Send extra options which are tagged as "red" to any machine whose
|
||||
# DHCP vendorclass string includes the substring "Linux"
|
||||
#dhcp-vendorclass=set:red,Linux
|
||||
|
||||
# Send extra options which are tagged as "red" to any machine one
|
||||
# of whose DHCP userclass strings includes the substring "accounts"
|
||||
#dhcp-userclass=set:red,accounts
|
||||
|
||||
# Send extra options which are tagged as "red" to any machine whose
|
||||
# MAC address matches the pattern.
|
||||
#dhcp-mac=set:red,00:60:8C:*:*:*
|
||||
|
||||
# If this line is uncommented, dnsmasq will read /etc/ethers and act
|
||||
# on the ethernet-address/IP pairs found there just as if they had
|
||||
# been given as --dhcp-host options. Useful if you keep
|
||||
# MAC-address/host mappings there for other purposes.
|
||||
#read-ethers
|
||||
|
||||
# Send options to hosts which ask for a DHCP lease.
|
||||
# See RFC 2132 for details of available options.
|
||||
# Common options can be given to dnsmasq by name:
|
||||
# run "dnsmasq --help dhcp" to get a list.
|
||||
# Note that all the common settings, such as netmask and
|
||||
# broadcast address, DNS server and default route, are given
|
||||
# sane defaults by dnsmasq. You very likely will not need
|
||||
# any dhcp-options. If you use Windows clients and Samba, there
|
||||
# are some options which are recommended, they are detailed at the
|
||||
# end of this section.
|
||||
|
||||
# Override the default route supplied by dnsmasq, which assumes the
|
||||
# router is the same machine as the one running dnsmasq.
|
||||
#dhcp-option=3,1.2.3.4
|
||||
|
||||
# Do the same thing, but using the option name
|
||||
#dhcp-option=option:router,1.2.3.4
|
||||
|
||||
# Override the default route supplied by dnsmasq and send no default
|
||||
# route at all. Note that this only works for the options sent by
|
||||
# default (1, 3, 6, 12, 28) the same line will send a zero-length option
|
||||
# for all other option numbers.
|
||||
#dhcp-option=3
|
||||
|
||||
# Set the NTP time server addresses to 192.168.0.4 and 10.10.0.5
|
||||
#dhcp-option=option:ntp-server,192.168.0.4,10.10.0.5
|
||||
|
||||
# Send DHCPv6 option. Note [] around IPv6 addresses.
|
||||
#dhcp-option=option6:dns-server,[1234::77],[1234::88]
|
||||
|
||||
# Send DHCPv6 option for namservers as the machine running
|
||||
# dnsmasq and another.
|
||||
#dhcp-option=option6:dns-server,[::],[1234::88]
|
||||
|
||||
# Ask client to poll for option changes every six hours. (RFC4242)
|
||||
#dhcp-option=option6:information-refresh-time,6h
|
||||
|
||||
# Set option 58 client renewal time (T1). Defaults to half of the
|
||||
# lease time if not specified. (RFC2132)
|
||||
#dhcp-option=option:T1:1m
|
||||
|
||||
# Set option 59 rebinding time (T2). Defaults to 7/8 of the
|
||||
# lease time if not specified. (RFC2132)
|
||||
#dhcp-option=option:T2:2m
|
||||
|
||||
# Set the NTP time server address to be the same machine as
|
||||
# is running dnsmasq
|
||||
#dhcp-option=42,0.0.0.0
|
||||
|
||||
# Set the NIS domain name to "welly"
|
||||
#dhcp-option=40,welly
|
||||
|
||||
# Set the default time-to-live to 50
|
||||
#dhcp-option=23,50
|
||||
|
||||
# Set the "all subnets are local" flag
|
||||
#dhcp-option=27,1
|
||||
|
||||
# Send the etherboot magic flag and then etherboot options (a string).
|
||||
#dhcp-option=128,e4:45:74:68:00:00
|
||||
#dhcp-option=129,NIC=eepro100
|
||||
|
||||
# Specify an option which will only be sent to the "red" network
|
||||
# (see dhcp-range for the declaration of the "red" network)
|
||||
# Note that the tag: part must precede the option: part.
|
||||
#dhcp-option = tag:red, option:ntp-server, 192.168.1.1
|
||||
|
||||
# The following DHCP options set up dnsmasq in the same way as is specified
|
||||
# for the ISC dhcpcd in
|
||||
# http://www.samba.org/samba/ftp/docs/textdocs/DHCP-Server-Configuration.txt
|
||||
# adapted for a typical dnsmasq installation where the host running
|
||||
# dnsmasq is also the host running samba.
|
||||
# you may want to uncomment some or all of them if you use
|
||||
# Windows clients and Samba.
|
||||
#dhcp-option=19,0 # option ip-forwarding off
|
||||
#dhcp-option=44,0.0.0.0 # set netbios-over-TCP/IP nameserver(s) aka WINS server(s)
|
||||
#dhcp-option=45,0.0.0.0 # netbios datagram distribution server
|
||||
#dhcp-option=46,8 # netbios node type
|
||||
|
||||
# Send an empty WPAD option. This may be REQUIRED to get windows 7 to behave.
|
||||
#dhcp-option=252,"\n"
|
||||
|
||||
# Send RFC-3397 DNS domain search DHCP option. WARNING: Your DHCP client
|
||||
# probably doesn't support this......
|
||||
#dhcp-option=option:domain-search,eng.apple.com,marketing.apple.com
|
||||
|
||||
# Send RFC-3442 classless static routes (note the netmask encoding)
|
||||
#dhcp-option=121,192.168.1.0/24,1.2.3.4,10.0.0.0/8,5.6.7.8
|
||||
|
||||
# Send vendor-class specific options encapsulated in DHCP option 43.
|
||||
# The meaning of the options is defined by the vendor-class so
|
||||
# options are sent only when the client supplied vendor class
|
||||
# matches the class given here. (A substring match is OK, so "MSFT"
|
||||
# matches "MSFT" and "MSFT 5.0"). This example sets the
|
||||
# mtftp address to 0.0.0.0 for PXEClients.
|
||||
#dhcp-option=vendor:PXEClient,1,0.0.0.0
|
||||
|
||||
# Send microsoft-specific option to tell windows to release the DHCP lease
|
||||
# when it shuts down. Note the "i" flag, to tell dnsmasq to send the
|
||||
# value as a four-byte integer - that's what microsoft wants. See
|
||||
# http://technet2.microsoft.com/WindowsServer/en/library/a70f1bb7-d2d4-49f0-96d6-4b7414ecfaae1033.mspx?mfr=true
|
||||
#dhcp-option=vendor:MSFT,2,1i
|
||||
|
||||
# Send the Encapsulated-vendor-class ID needed by some configurations of
|
||||
# Etherboot to allow is to recognise the DHCP server.
|
||||
#dhcp-option=vendor:Etherboot,60,"Etherboot"
|
||||
|
||||
# Send options to PXELinux. Note that we need to send the options even
|
||||
# though they don't appear in the parameter request list, so we need
|
||||
# to use dhcp-option-force here.
|
||||
# See http://syslinux.zytor.com/pxe.php#special for details.
|
||||
# Magic number - needed before anything else is recognised
|
||||
#dhcp-option-force=208,f1:00:74:7e
|
||||
# Configuration file name
|
||||
#dhcp-option-force=209,configs/common
|
||||
# Path prefix
|
||||
#dhcp-option-force=210,/tftpboot/pxelinux/files/
|
||||
# Reboot time. (Note 'i' to send 32-bit value)
|
||||
#dhcp-option-force=211,30i
|
||||
|
||||
# Set the boot filename for netboot/PXE. You will only need
|
||||
# this is you want to boot machines over the network and you will need
|
||||
# a TFTP server; either dnsmasq's built in TFTP server or an
|
||||
# external one. (See below for how to enable the TFTP server.)
|
||||
#dhcp-boot=pxelinux.0
|
||||
|
||||
# The same as above, but use custom tftp-server instead machine running dnsmasq
|
||||
#dhcp-boot=pxelinux,server.name,192.168.1.100
|
||||
|
||||
# Boot for Etherboot gPXE. The idea is to send two different
|
||||
# filenames, the first loads gPXE, and the second tells gPXE what to
|
||||
# load. The dhcp-match sets the gpxe tag for requests from gPXE.
|
||||
#dhcp-match=set:gpxe,175 # gPXE sends a 175 option.
|
||||
#dhcp-boot=tag:!gpxe,undionly.kpxe
|
||||
#dhcp-boot=mybootimage
|
||||
|
||||
# Encapsulated options for Etherboot gPXE. All the options are
|
||||
# encapsulated within option 175
|
||||
#dhcp-option=encap:175, 1, 5b # priority code
|
||||
#dhcp-option=encap:175, 176, 1b # no-proxydhcp
|
||||
#dhcp-option=encap:175, 177, string # bus-id
|
||||
#dhcp-option=encap:175, 189, 1b # BIOS drive code
|
||||
#dhcp-option=encap:175, 190, user # iSCSI username
|
||||
#dhcp-option=encap:175, 191, pass # iSCSI password
|
||||
|
||||
# Test for the architecture of a netboot client. PXE clients are
|
||||
# supposed to send their architecture as option 93. (See RFC 4578)
|
||||
#dhcp-match=peecees, option:client-arch, 0 #x86-32
|
||||
#dhcp-match=itanics, option:client-arch, 2 #IA64
|
||||
#dhcp-match=hammers, option:client-arch, 6 #x86-64
|
||||
#dhcp-match=mactels, option:client-arch, 7 #EFI x86-64
|
||||
|
||||
# Do real PXE, rather than just booting a single file, this is an
|
||||
# alternative to dhcp-boot.
|
||||
#pxe-prompt="What system shall I netboot?"
|
||||
# or with timeout before first available action is taken:
|
||||
#pxe-prompt="Press F8 for menu.", 60
|
||||
|
||||
# Available boot services. for PXE.
|
||||
#pxe-service=x86PC, "Boot from local disk"
|
||||
|
||||
# Loads <tftp-root>/pxelinux.0 from dnsmasq TFTP server.
|
||||
#pxe-service=x86PC, "Install Linux", pxelinux
|
||||
|
||||
# Loads <tftp-root>/pxelinux.0 from TFTP server at 1.2.3.4.
|
||||
# Beware this fails on old PXE ROMS.
|
||||
#pxe-service=x86PC, "Install Linux", pxelinux, 1.2.3.4
|
||||
|
||||
# Use bootserver on network, found my multicast or broadcast.
|
||||
#pxe-service=x86PC, "Install windows from RIS server", 1
|
||||
|
||||
# Use bootserver at a known IP address.
|
||||
#pxe-service=x86PC, "Install windows from RIS server", 1, 1.2.3.4
|
||||
|
||||
# If you have multicast-FTP available,
|
||||
# information for that can be passed in a similar way using options 1
|
||||
# to 5. See page 19 of
|
||||
# http://download.intel.com/design/archives/wfm/downloads/pxespec.pdf
|
||||
|
||||
|
||||
# Enable dnsmasq's built-in TFTP server
|
||||
#enable-tftp
|
||||
|
||||
# Set the root directory for files available via FTP.
|
||||
#tftp-root=/var/ftpd
|
||||
|
||||
# Do not abort if the tftp-root is unavailable
|
||||
#tftp-no-fail
|
||||
|
||||
# Make the TFTP server more secure: with this set, only files owned by
|
||||
# the user dnsmasq is running as will be send over the net.
|
||||
#tftp-secure
|
||||
|
||||
# This option stops dnsmasq from negotiating a larger blocksize for TFTP
|
||||
# transfers. It will slow things down, but may rescue some broken TFTP
|
||||
# clients.
|
||||
#tftp-no-blocksize
|
||||
|
||||
# Set the boot file name only when the "red" tag is set.
|
||||
#dhcp-boot=tag:red,pxelinux.red-net
|
||||
|
||||
# An example of dhcp-boot with an external TFTP server: the name and IP
|
||||
# address of the server are given after the filename.
|
||||
# Can fail with old PXE ROMS. Overridden by --pxe-service.
|
||||
#dhcp-boot=/var/ftpd/pxelinux.0,boothost,192.168.0.3
|
||||
|
||||
# If there are multiple external tftp servers having a same name
|
||||
# (using /etc/hosts) then that name can be specified as the
|
||||
# tftp_servername (the third option to dhcp-boot) and in that
|
||||
# case dnsmasq resolves this name and returns the resultant IP
|
||||
# addresses in round robin fasion. This facility can be used to
|
||||
# load balance the tftp load among a set of servers.
|
||||
#dhcp-boot=/var/ftpd/pxelinux.0,boothost,tftp_server_name
|
||||
|
||||
# Set the limit on DHCP leases, the default is 150
|
||||
#dhcp-lease-max=150
|
||||
|
||||
# The DHCP server needs somewhere on disk to keep its lease database.
|
||||
# This defaults to a sane location, but if you want to change it, use
|
||||
# the line below.
|
||||
#dhcp-leasefile=/var/lib/misc/dnsmasq.leases
|
||||
|
||||
# Set the DHCP server to authoritative mode. In this mode it will barge in
|
||||
# and take over the lease for any client which broadcasts on the network,
|
||||
# whether it has a record of the lease or not. This avoids long timeouts
|
||||
# when a machine wakes up on a new network. DO NOT enable this if there's
|
||||
# the slightest chance that you might end up accidentally configuring a DHCP
|
||||
# server for your campus/company accidentally. The ISC server uses
|
||||
# the same option, and this URL provides more information:
|
||||
# http://www.isc.org/files/auth.html
|
||||
#dhcp-authoritative
|
||||
|
||||
# Run an executable when a DHCP lease is created or destroyed.
|
||||
# The arguments sent to the script are "add" or "del",
|
||||
# then the MAC address, the IP address and finally the hostname
|
||||
# if there is one.
|
||||
#dhcp-script=/bin/echo
|
||||
|
||||
# Set the cachesize here.
|
||||
#cache-size=150
|
||||
|
||||
# If you want to disable negative caching, uncomment this.
|
||||
#no-negcache
|
||||
|
||||
# Normally responses which come from /etc/hosts and the DHCP lease
|
||||
# file have Time-To-Live set as zero, which conventionally means
|
||||
# do not cache further. If you are happy to trade lower load on the
|
||||
# server for potentially stale date, you can set a time-to-live (in
|
||||
# seconds) here.
|
||||
#local-ttl=
|
||||
|
||||
# If you want dnsmasq to detect attempts by Verisign to send queries
|
||||
# to unregistered .com and .net hosts to its sitefinder service and
|
||||
# have dnsmasq instead return the correct NXDOMAIN response, uncomment
|
||||
# this line. You can add similar lines to do the same for other
|
||||
# registries which have implemented wildcard A records.
|
||||
#bogus-nxdomain=64.94.110.11
|
||||
|
||||
# If you want to fix up DNS results from upstream servers, use the
|
||||
# alias option. This only works for IPv4.
|
||||
# This alias makes a result of 1.2.3.4 appear as 5.6.7.8
|
||||
#alias=1.2.3.4,5.6.7.8
|
||||
# and this maps 1.2.3.x to 5.6.7.x
|
||||
#alias=1.2.3.0,5.6.7.0,255.255.255.0
|
||||
# and this maps 192.168.0.10->192.168.0.40 to 10.0.0.10->10.0.0.40
|
||||
#alias=192.168.0.10-192.168.0.40,10.0.0.0,255.255.255.0
|
||||
|
||||
# Change these lines if you want dnsmasq to serve MX records.
|
||||
|
||||
# Return an MX record named "maildomain.com" with target
|
||||
# servermachine.com and preference 50
|
||||
#mx-host=maildomain.com,servermachine.com,50
|
||||
|
||||
# Set the default target for MX records created using the localmx option.
|
||||
#mx-target=servermachine.com
|
||||
|
||||
# Return an MX record pointing to the mx-target for all local
|
||||
# machines.
|
||||
#localmx
|
||||
|
||||
# Return an MX record pointing to itself for all local machines.
|
||||
#selfmx
|
||||
|
||||
# Change the following lines if you want dnsmasq to serve SRV
|
||||
# records. These are useful if you want to serve ldap requests for
|
||||
# Active Directory and other windows-originated DNS requests.
|
||||
# See RFC 2782.
|
||||
# You may add multiple srv-host lines.
|
||||
# The fields are <name>,<target>,<port>,<priority>,<weight>
|
||||
# If the domain part if missing from the name (so that is just has the
|
||||
# service and protocol sections) then the domain given by the domain=
|
||||
# config option is used. (Note that expand-hosts does not need to be
|
||||
# set for this to work.)
|
||||
|
||||
# A SRV record sending LDAP for the example.com domain to
|
||||
# ldapserver.example.com port 389
|
||||
#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389
|
||||
|
||||
# A SRV record sending LDAP for the example.com domain to
|
||||
# ldapserver.example.com port 389 (using domain=)
|
||||
#domain=example.com
|
||||
#srv-host=_ldap._tcp,ldapserver.example.com,389
|
||||
|
||||
# Two SRV records for LDAP, each with different priorities
|
||||
#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389,1
|
||||
#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389,2
|
||||
|
||||
# A SRV record indicating that there is no LDAP server for the domain
|
||||
# example.com
|
||||
#srv-host=_ldap._tcp.example.com
|
||||
|
||||
# The following line shows how to make dnsmasq serve an arbitrary PTR
|
||||
# record. This is useful for DNS-SD. (Note that the
|
||||
# domain-name expansion done for SRV records _does_not
|
||||
# occur for PTR records.)
|
||||
#ptr-record=_http._tcp.dns-sd-services,"New Employee Page._http._tcp.dns-sd-services"
|
||||
|
||||
# Change the following lines to enable dnsmasq to serve TXT records.
|
||||
# These are used for things like SPF and zeroconf. (Note that the
|
||||
# domain-name expansion done for SRV records _does_not
|
||||
# occur for TXT records.)
|
||||
|
||||
#Example SPF.
|
||||
#txt-record=example.com,"v=spf1 a -all"
|
||||
|
||||
#Example zeroconf
|
||||
#txt-record=_http._tcp.example.com,name=value,paper=A4
|
||||
|
||||
# Provide an alias for a "local" DNS name. Note that this _only_ works
|
||||
# for targets which are names from DHCP or /etc/hosts. Give host
|
||||
# "bert" another name, bertrand
|
||||
#cname=bertand,bert
|
||||
|
||||
# For debugging purposes, log each DNS query as it passes through
|
||||
# dnsmasq.
|
||||
#log-queries
|
||||
|
||||
# Log lots of extra information about DHCP transactions.
|
||||
#log-dhcp
|
||||
|
||||
# Include another lot of configuration options.
|
||||
#conf-file=/etc/dnsmasq.more.conf
|
||||
#conf-dir=/etc/dnsmasq.d
|
||||
|
||||
# Include all the files in a directory except those ending in .bak
|
||||
#conf-dir=/etc/dnsmasq.d,.bak
|
||||
|
||||
# Include all files in a directory which end in .conf
|
||||
#conf-dir=/etc/dnsmasq.d/,*.conf
|
101
etc/pacman.conf
Normal file
101
etc/pacman.conf
Normal file
|
@ -0,0 +1,101 @@
|
|||
#
|
||||
# /etc/pacman.conf
|
||||
#
|
||||
# See the pacman.conf(5) manpage for option and repository directives
|
||||
|
||||
#
|
||||
# GENERAL OPTIONS
|
||||
#
|
||||
[options]
|
||||
# The following paths are commented out with their default values listed.
|
||||
# If you wish to use different paths, uncomment and update the paths.
|
||||
#RootDir = /
|
||||
#DBPath = /var/lib/pacman/
|
||||
#CacheDir = /var/cache/pacman/pkg/
|
||||
#LogFile = /var/log/pacman.log
|
||||
#GPGDir = /etc/pacman.d/gnupg/
|
||||
#HookDir = /etc/pacman.d/hooks/
|
||||
HoldPkg = pacman glibc
|
||||
#XferCommand = /usr/bin/curl -C - -f %u > %o
|
||||
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
||||
#CleanMethod = KeepInstalled
|
||||
#UseDelta = 0.7
|
||||
Architecture = auto
|
||||
|
||||
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
||||
#IgnorePkg =
|
||||
#IgnoreGroup =
|
||||
|
||||
#NoUpgrade =
|
||||
#NoExtract =
|
||||
|
||||
# Misc options
|
||||
#UseSyslog
|
||||
Color
|
||||
#TotalDownload
|
||||
CheckSpace
|
||||
#VerbosePkgLists
|
||||
ILoveCandy
|
||||
|
||||
# By default, pacman accepts packages signed by keys that its local keyring
|
||||
# trusts (see pacman-key and its man page), as well as unsigned packages.
|
||||
SigLevel = Required DatabaseOptional
|
||||
LocalFileSigLevel = Optional
|
||||
#RemoteFileSigLevel = Required
|
||||
|
||||
# NOTE: You must run `pacman-key --init` before first using pacman; the local
|
||||
# keyring can then be populated with the keys of all official Arch Linux
|
||||
# packagers with `pacman-key --populate archlinux`.
|
||||
|
||||
#
|
||||
# REPOSITORIES
|
||||
# - can be defined here or included from another file
|
||||
# - pacman will search repositories in the order defined here
|
||||
# - local/custom mirrors can be added here or in separate files
|
||||
# - repositories listed first will take precedence when packages
|
||||
# have identical names, regardless of version number
|
||||
# - URLs will have $repo replaced by the name of the current repo
|
||||
# - URLs will have $arch replaced by the name of the architecture
|
||||
#
|
||||
# Repository entries are of the format:
|
||||
# [repo-name]
|
||||
# Server = ServerName
|
||||
# Include = IncludePath
|
||||
#
|
||||
# The header [repo-name] is crucial - it must be present and
|
||||
# uncommented to enable the repo.
|
||||
#
|
||||
|
||||
# The testing repositories are disabled by default. To enable, uncomment the
|
||||
# repo name header and Include lines. You can add preferred servers immediately
|
||||
# after the header, and they will be used before the default mirrors.
|
||||
|
||||
#[testing]
|
||||
#Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[core]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[extra]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
#[community-testing]
|
||||
#Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[community]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
# If you want to run 32 bit applications on your x86_64 system,
|
||||
# enable the multilib repositories as required here.
|
||||
|
||||
#[multilib-testing]
|
||||
#Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
#[multilib]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
# An example of a custom package repository. See the pacman manpage for
|
||||
# tips on creating your own repositories.
|
||||
#[custom]
|
||||
#SigLevel = Optional TrustAll
|
||||
#Server = file:///home/custompkgs
|
16
gitconfig
Normal file
16
gitconfig
Normal file
|
@ -0,0 +1,16 @@
|
|||
[user]
|
||||
email = jonathan@lunarweb.co.uk
|
||||
name = Jonathan Hodgson
|
||||
[core]
|
||||
editor = vim
|
||||
[status]
|
||||
submoduleSummary = true
|
||||
[alias]
|
||||
#lol = log --graph --decorate --pretty=oneline --abbrev-commit
|
||||
lol = log --graph --pretty=format:\"%C(yellow)%h %C(blue)%cd %C(green)%cn %C(white) - %s\" --date=format:\"%d/%m/%Y %H:%M:%S\"
|
||||
#lola = log --graph --decorate --pretty=oneline --abbrev-commit --all
|
||||
lola = log --graph --pretty=format:\"%C(yellow)%h %C(blue)%cd %C(green)%cn %C(white) - %s\" --date=format:\"%d/%m/%Y %H:%M:%S\" --all
|
||||
ilog = recall
|
||||
detach = "!git checkout $(git rev-parse HEAD)"
|
||||
undo = reset --soft HEAD^
|
||||
|
114
local/share/applications/chromium-snapshot-bin-big.desktop
Normal file
114
local/share/applications/chromium-snapshot-bin-big.desktop
Normal file
|
@ -0,0 +1,114 @@
|
|||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=Chromium Snapshot Big
|
||||
# Only KDE 4 seems to use GenericName, so we reuse the KDE strings.
|
||||
# From Ubuntu's language-pack-kde-XX-base packages, version 9.04-20090413.
|
||||
GenericName=Web Browser
|
||||
GenericName[ar]=متصفح الشبكة
|
||||
GenericName[bg]=Уеб браузър
|
||||
GenericName[ca]=Navegador web
|
||||
GenericName[cs]=WWW prohlížeč
|
||||
GenericName[da]=Browser
|
||||
GenericName[de]=Web-Browser
|
||||
GenericName[el]=Περιηγητής ιστού
|
||||
GenericName[en_GB]=Web Browser
|
||||
GenericName[es]=Navegador web
|
||||
GenericName[et]=Veebibrauser
|
||||
GenericName[fi]=WWW-selain
|
||||
GenericName[fr]=Navigateur Web
|
||||
GenericName[gu]=વેબ બ્રાઉઝર
|
||||
GenericName[he]=דפדפן אינטרנט
|
||||
GenericName[hi]=वेब ब्राउज़र
|
||||
GenericName[hu]=Webböngésző
|
||||
GenericName[it]=Browser Web
|
||||
GenericName[ja]=ウェブブラウザ
|
||||
GenericName[kn]=ಜಾಲ ವೀಕ್ಷಕ
|
||||
GenericName[ko]=웹 브라우저
|
||||
GenericName[lt]=Žiniatinklio naršyklė
|
||||
GenericName[lv]=Tīmekļa pārlūks
|
||||
GenericName[ml]=വെബ് ബ്രൌസര്
|
||||
GenericName[mr]=वेब ब्राऊजर
|
||||
GenericName[nb]=Nettleser
|
||||
GenericName[nl]=Webbrowser
|
||||
GenericName[pl]=Przeglądarka WWW
|
||||
GenericName[pt]=Navegador Web
|
||||
GenericName[pt_BR]=Navegador da Internet
|
||||
GenericName[ro]=Navigator de Internet
|
||||
GenericName[ru]=Веб-браузер
|
||||
GenericName[sl]=Spletni brskalnik
|
||||
GenericName[sv]=Webbläsare
|
||||
GenericName[ta]=இணைய உலாவி
|
||||
GenericName[th]=เว็บเบราว์เซอร์
|
||||
GenericName[tr]=Web Tarayıcı
|
||||
GenericName[uk]=Навігатор Тенет
|
||||
GenericName[zh_CN]=网页浏览器
|
||||
GenericName[zh_HK]=網頁瀏覽器
|
||||
GenericName[zh_TW]=網頁瀏覽器
|
||||
# Not translated in KDE, from Epiphany 2.26.1-0ubuntu1.
|
||||
GenericName[bn]=ওয়েব ব্রাউজার
|
||||
GenericName[fil]=Web Browser
|
||||
GenericName[hr]=Web preglednik
|
||||
GenericName[id]=Browser Web
|
||||
GenericName[or]=ଓ୍ବେବ ବ୍ରାଉଜର
|
||||
GenericName[sk]=WWW prehliadač
|
||||
GenericName[sr]=Интернет прегледник
|
||||
GenericName[te]=మహాతల అన్వేషి
|
||||
GenericName[vi]=Bộ duyệt Web
|
||||
# Gnome and KDE 3 uses Comment.
|
||||
Comment=Access the Internet
|
||||
Comment[ar]=الدخول إلى الإنترنت
|
||||
Comment[bg]=Достъп до интернет
|
||||
Comment[bn]=ইন্টারনেটটি অ্যাক্সেস করুন
|
||||
Comment[ca]=Accedeix a Internet
|
||||
Comment[cs]=Přístup k internetu
|
||||
Comment[da]=Få adgang til internettet
|
||||
Comment[de]=Internetzugriff
|
||||
Comment[el]=Πρόσβαση στο Διαδίκτυο
|
||||
Comment[en_GB]=Access the Internet
|
||||
Comment[es]=Accede a Internet.
|
||||
Comment[et]=Pääs Internetti
|
||||
Comment[fi]=Käytä internetiä
|
||||
Comment[fil]=I-access ang Internet
|
||||
Comment[fr]=Accéder à Internet
|
||||
Comment[gu]=ઇંટરનેટ ઍક્સેસ કરો
|
||||
Comment[he]=גישה אל האינטרנט
|
||||
Comment[hi]=इंटरनेट तक पहुंच स्थापित करें
|
||||
Comment[hr]=Pristup Internetu
|
||||
Comment[hu]=Internetelérés
|
||||
Comment[id]=Akses Internet
|
||||
Comment[it]=Accesso a Internet
|
||||
Comment[ja]=インターネットにアクセス
|
||||
Comment[kn]=ಇಂಟರ್ನೆಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಿ
|
||||
Comment[ko]=인터넷 연결
|
||||
Comment[lt]=Interneto prieiga
|
||||
Comment[lv]=Piekļūt internetam
|
||||
Comment[ml]=ഇന്റര്നെറ്റ് ആക്സസ് ചെയ്യുക
|
||||
Comment[mr]=इंटरनेटमध्ये प्रवेश करा
|
||||
Comment[nb]=Gå til Internett
|
||||
Comment[nl]=Verbinding maken met internet
|
||||
Comment[or]=ଇଣ୍ଟର୍ନେଟ୍ ପ୍ରବେଶ କରନ୍ତୁ
|
||||
Comment[pl]=Skorzystaj z internetu
|
||||
Comment[pt]=Aceder à Internet
|
||||
Comment[pt_BR]=Acessar a internet
|
||||
Comment[ro]=Accesaţi Internetul
|
||||
Comment[ru]=Доступ в Интернет
|
||||
Comment[sk]=Prístup do siete Internet
|
||||
Comment[sl]=Dostop do interneta
|
||||
Comment[sr]=Приступите Интернету
|
||||
Comment[sv]=Gå ut på Internet
|
||||
Comment[ta]=இணையத்தை அணுகுதல்
|
||||
Comment[te]=ఇంటర్నెట్ను ఆక్సెస్ చెయ్యండి
|
||||
Comment[th]=เข้าถึงอินเทอร์เน็ต
|
||||
Comment[tr]=İnternet'e erişin
|
||||
Comment[uk]=Доступ до Інтернету
|
||||
Comment[vi]=Truy cập Internet
|
||||
Comment[zh_CN]=访问互联网
|
||||
Comment[zh_HK]=連線到網際網路
|
||||
Comment[zh_TW]=連線到網際網路
|
||||
Exec=chromium-snapshot-bin --force-device-scale-factor=2 %U
|
||||
Terminal=false
|
||||
Icon=chromium-snapshot-bin
|
||||
Type=Application
|
||||
Categories=GTK;Network;WebBrowser;
|
||||
MimeType=text/html;text/xml;application/xhtml+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
|
||||
StartupWMClass=/usr/bin/chromium-snapshot-bin
|
257
local/share/applications/evince.desktop
Normal file
257
local/share/applications/evince.desktop
Normal file
|
@ -0,0 +1,257 @@
|
|||
[Desktop Entry]
|
||||
Name=Evince
|
||||
Name[af]=Dokumentbekyker
|
||||
Name[an]=Visualizador de documentos
|
||||
Name[ar]=عارض المستندات
|
||||
Name[as]=দস্তাবেজ প্ৰদৰ্শক
|
||||
Name[ast]=Visor de Documentos
|
||||
Name[be]=Праглядальнік дакументаў
|
||||
Name[be@latin]=Ahladalnik dakumentaŭ
|
||||
Name[bg]=Преглед на документи
|
||||
Name[bn]=নথি প্রদর্শক
|
||||
Name[bn_IN]=ডকুমেন্ট প্রদর্শন ব্যবস্থা
|
||||
Name[br]=Lenner teulioù
|
||||
Name[bs]=Pregledač dokumenta
|
||||
Name[ca]=Visualitzador de documents
|
||||
Name[ca@valencia]=Visualitzador de documents
|
||||
Name[cs]=Prohlížeč dokumentů
|
||||
Name[cy]=Gwelydd Dogfennau
|
||||
Name[da]=Dokumentfremviser
|
||||
Name[de]=Dokumentenbetrachter
|
||||
Name[dz]=ཡིག་ཆ་མཐོང་བྱེད།
|
||||
Name[el]=Προβολή εγγράφων
|
||||
Name[en@shaw]=𐑛𐑪𐑒𐑿𐑥𐑩𐑯𐑑 𐑝𐑿𐑼
|
||||
Name[en_CA]=Evince
|
||||
Name[en_GB]=Evince
|
||||
Name[eo]=Dokumentmontrilo
|
||||
Name[es]=Visor de documentos
|
||||
Name[et]=Dokumendinäitaja
|
||||
Name[eu]=Dokumentu-ikustailea
|
||||
Name[fa]=نمایشگر سند
|
||||
Name[fi]=Asiakirjakatselin
|
||||
Name[fr]=Visionneur de documents
|
||||
Name[fur]=Visualizadôr di Documents
|
||||
Name[ga]=Amharcán Cáipéisí
|
||||
Name[gd]=Sealladair sgrìobhainnean
|
||||
Name[gl]=Visualizador de documentos
|
||||
Name[gu]=દસ્તાવેજ દર્શક
|
||||
Name[he]=מציג מסמכים
|
||||
Name[hi]=लेखपत्र प्रदर्शक
|
||||
Name[hr]=Preglednik dokumenata
|
||||
Name[hu]=Dokumentummegjelenítő
|
||||
Name[id]=Penampil Dokumen
|
||||
Name[is]=Skjalaskoðari
|
||||
Name[it]=Visualizzatore documenti
|
||||
Name[ja]=ドキュメントビューアー
|
||||
Name[ka]=დოკუმენტების მნახველი
|
||||
Name[kk]=Құжаттарды көрсету қолданбасы
|
||||
Name[km]=កម្មវិធីមើលឯកសារ
|
||||
Name[kn]=ದಸ್ತಾವೇಜು ವೀಕ್ಷಕ
|
||||
Name[ko]=문서 보기
|
||||
Name[ks]=कागजात वुछनुक
|
||||
Name[ku]=Nîşanderê Belgeyan
|
||||
Name[lt]=Dokumentų peržiūros programa
|
||||
Name[lv]=Dokumentu skatītājs
|
||||
Name[mai]=दस्ताबेज प्रदर्शक
|
||||
Name[mg]=Mpaneho tahirin-kevitra
|
||||
Name[mk]=Прегледувач за документи
|
||||
Name[ml]=രേഖാദര്ശിനി
|
||||
Name[mn]=Баримт бичиг үзүүлэгч
|
||||
Name[mr]=दस्तऐवज दर्शक
|
||||
Name[ms]=Pemapar Dokumen
|
||||
Name[my]=ဖိုင်မြင်ကွင်း
|
||||
Name[nb]=Dokumentvisning
|
||||
Name[nds]=Dokumentkieker
|
||||
Name[ne]=कागजात दृश्यक
|
||||
Name[nl]=Documentenviewer
|
||||
Name[nn]=Dokumentframsynar
|
||||
Name[oc]=Visionador de documents
|
||||
Name[or]=ଦଲିଲ ପ୍ରଦର୍ଶକ
|
||||
Name[pa]=ਦਸਤਾਵੇਜ਼ ਦਰਸ਼ਕ
|
||||
Name[pl]=Przeglądarka dokumentów
|
||||
Name[ps]=لاسوند ليدانی
|
||||
Name[pt]=Visualizador de documento
|
||||
Name[pt_BR]=Visualizador de documentos
|
||||
Name[ro]=Vizualizator de documente
|
||||
Name[ru]=Просмотр документов
|
||||
Name[si]=ලේඛන දසුන
|
||||
Name[sk]=Prehliadač dokumentov
|
||||
Name[sl]=Pregledovalnik dokumentov
|
||||
Name[sq]=Shikues dokumentesh
|
||||
Name[sr]=Прегледач докумената
|
||||
Name[sr@latin]=Pregledač dokumenata
|
||||
Name[sv]=Dokumentvisare
|
||||
Name[ta]=ஆவண காட்டி
|
||||
Name[te]=పత్ర వీక్షకం
|
||||
Name[tg]=Муштарии ҳуҷҷат
|
||||
Name[th]=โปรแกรมดูเอกสาร
|
||||
Name[tr]=Belge Görüntüleyici
|
||||
Name[ug]=پۈتۈك كۆرگۈ
|
||||
Name[uk]=Переглядач документів
|
||||
Name[vi]=Bộ xem tài liệu
|
||||
Name[wa]=Håyneu di documints
|
||||
Name[zh_CN]=文档查看器
|
||||
Name[zh_HK]=文件檢視器
|
||||
Name[zh_TW]=文件檢視器
|
||||
Name[zu]=Isibuki samadokhumende
|
||||
Comment=View multi-page documents
|
||||
Comment[af]=Bekyk multibladsydokumente
|
||||
Comment[an]=Veyer documentos multipachina
|
||||
Comment[ar]=اعرض المستندات متعددة الصفحات
|
||||
Comment[as]=বহু-পৃষ্ঠা দস্তাবেজসমূহ দৰ্শন কৰক
|
||||
Comment[ast]=Ver documentos multipáxina
|
||||
Comment[be]=Прагляд шматаркушных дакументаў
|
||||
Comment[bg]=Преглед на документи с много страници
|
||||
Comment[bn]=বহুপৃষ্ঠা সম্বলিত নথি প্রদর্শন
|
||||
Comment[bn_IN]=একাধিক পৃষ্ঠাবিশিষ্ট ডকুমেন্ট দেখুন
|
||||
Comment[bs]=Pregledajte višestranične dokumente
|
||||
Comment[ca]=Visualitzeu documents multipàgina
|
||||
Comment[ca@valencia]=Visualitzeu documents multipàgina
|
||||
Comment[cs]=Zobrazovat dokumenty po více stránkách
|
||||
Comment[da]=Vis dokumenter med flere sider
|
||||
Comment[de]=Mehrseitige Dokumente anzeigen
|
||||
Comment[el]=Προβολή εγγράφων πολλαπλών σελίδων
|
||||
Comment[en@shaw]=𐑝𐑿 𐑥𐑩𐑤𐑑𐑰-𐑐𐑱𐑡 𐑛𐑪𐑒𐑿𐑥𐑩𐑯𐑑𐑕
|
||||
Comment[en_CA]=View multi-page documents
|
||||
Comment[en_GB]=View multi-page documents
|
||||
Comment[eo]=Montri mult-paĝajn dokumentojn
|
||||
Comment[es]=Vea documentos de varias páginas
|
||||
Comment[et]=Mitmeleheküljeliste dokumentide vaatamine
|
||||
Comment[eu]=Ikusi orrialde anitzeko dokumentuak
|
||||
Comment[fa]=نمایش سندهای چند صفحهای
|
||||
Comment[fi]=Katsele monisivuisia asiakirjoja
|
||||
Comment[fr]=Afficher des documents multipages
|
||||
Comment[fur]=Mostre documents multi-pagjine
|
||||
Comment[gd]=Seall sgrìobhainnean le iomadh duilleag
|
||||
Comment[gl]=Ver documentos de varias páxinas
|
||||
Comment[gu]=ઘણા-પાનાનાં દસ્તાવેજો જુઓ
|
||||
Comment[he]=הצגת מסמכים מרובי עמודים
|
||||
Comment[hi]=बहु पृष्ठ दस्तावेज देखें
|
||||
Comment[hr]=Pregled višestraničnih dokumenata
|
||||
Comment[hu]=Többoldalas dokumentumok megjelenítése
|
||||
Comment[id]=Lihat dokumen halaman banyak
|
||||
Comment[is]=Skoða margsíðna skjöl
|
||||
Comment[it]=Visualizza documenti multi-pagina
|
||||
Comment[ja]=複数ページのドキュメントを表示します
|
||||
Comment[kk]=Көппарақты құжаттарды қарау
|
||||
Comment[km]=មើលឯកសារមានច្រើនទំព័រ
|
||||
Comment[kn]=ಬಹು-ಪುಟದ ದಸ್ತಾವೇಜನ್ನು ವೀಕ್ಷಿಸು
|
||||
Comment[ko]=다중 페이지 문서를 봅니다
|
||||
Comment[ku]=Belgeyên pir-rûpelî nîşan bide
|
||||
Comment[lt]=Peržiūrėti kelių puslapių dokumentams
|
||||
Comment[lv]=Skatīt dokumentus, kas sastāv no vairākām lappusēm
|
||||
Comment[mk]=Прегледај документи со повеќе страници
|
||||
Comment[ml]=അനവധി പേജുകളുളള രേഖ കാണുക
|
||||
Comment[mn]=Олон хуудаст баримт бичиг үзэх
|
||||
Comment[mr]=अनेक-पाने दस्तऐवजांचे दृष्य
|
||||
Comment[ms]=Paparkan
|
||||
Comment[my]=စာမျက်နှာစုံ ဖိုင်မြင်ကွင်း
|
||||
Comment[nb]=Vis dokumenter med mange sider
|
||||
Comment[nl]=Documenten weergeven
|
||||
Comment[nn]=Vis dokument med mange sider
|
||||
Comment[oc]=Afichar de documents multipaginas
|
||||
Comment[or]=ଏକାଧିକ ପ୍ରୁଷ୍ଠା ବିଶିଷ୍ଟ ଦଲିଲଗୁଡ଼ିକୁ ଦେଖନ୍ତୁ
|
||||
Comment[pa]=ਬਹੁ-ਸਫ਼ਾ ਦਸਤਾਵੇਜ਼ਾਂ ਨੂੰ ਵੇਖੋ
|
||||
Comment[pl]=Wyświetlanie wielostronicowych dokumentów
|
||||
Comment[pt]=Ver documentos multipáginas
|
||||
Comment[pt_BR]=Visualize documentos de múltiplas páginas
|
||||
Comment[ro]=Vizualizați documente cu mai multe pagini
|
||||
Comment[ru]=Просмотр многостраничных документов
|
||||
Comment[sk]=Prezerá dokumenty s viacerými stránkami
|
||||
Comment[sl]=Poglejte večstranske dokumente
|
||||
Comment[sr]=Прегледајте вишестраничне документе
|
||||
Comment[sr@latin]=Pregledajte višestranične dokumente
|
||||
Comment[sv]=Visa dokument med flera sidor
|
||||
Comment[ta]=பல பக்க ஆவணங்களை பார்வையிடு
|
||||
Comment[te]=బహుళ-పుట పత్రాలను వీక్షించు
|
||||
Comment[tg]=Намоиши ҳуҷҷатҳои бисёрсаҳимфагӣ
|
||||
Comment[th]=ดูเอกสารแบบหลายหน้า
|
||||
Comment[tr]=Çok sayfalı belgeleri göster
|
||||
Comment[ug]=كۆپ بەتلىك پۈتۈكلەرنى كۆرۈش
|
||||
Comment[uk]=Перегляд багатосторінкових документів
|
||||
Comment[vi]=Xem tài liệu nhiều trang
|
||||
Comment[zh_CN]=查看多页文档
|
||||
Comment[zh_HK]=顯示多頁文件
|
||||
Comment[zh_TW]=顯示多頁文件
|
||||
Comment[zu]=Buka amadokhumende wamakhasi amaningi
|
||||
Keywords=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentation;
|
||||
Keywords[af]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentation;dokument;voorlegging;aanbieding;
|
||||
Keywords[an]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentation;
|
||||
Keywords[ar]=pdf;ps;بوستسكربت;dvi;xps;djvu;tiff;مستند;عرض;
|
||||
Keywords[as]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentation;
|
||||
Keywords[be]=pdf;ps;postscript;dvi;xps;djvu;tiff;дакумент;прэзентацыя;
|
||||
Keywords[bg]=документ;презентация;pdf;ps;postscript;dvi;xps;djvu;tiff;
|
||||
Keywords[bn_IN]=pdf;ps;পোস্টস্ক্রীপ্ট;dvi;xps;djvu;tiff;নথি;উপস্থাপনা;
|
||||
Keywords[bs]=pdf;ps;postscript;dvi;xps;djvu;tiff;dokument;presentacija;
|
||||
Keywords[ca]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentació;
|
||||
Keywords[ca@valencia]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentació;
|
||||
Keywords[cs]=pdf;ps;postscript;postskript;dvi;xps;djvu;tiff;dokument;prezentace;
|
||||
Keywords[da]=pdf;ps;postscript;dvi;xps;djvu;tiff;dokument;præsentation;
|
||||
Keywords[de]=pdf;ps;postscript;dvi;xps;djvu;tiff;Dokument;Präsentation;
|
||||
Keywords[el]=pdf;ps;postscript;dvi;xps;djvu;tiff;έγγραφο;παρουσίαση;document;presentation;
|
||||
Keywords[en_GB]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentation;
|
||||
Keywords[eo]=pdf;ps;postscript;dvi;xps;djvu;tiff;dokumento;prezentaĵo;
|
||||
Keywords[es]=pdf;ps;postscript;dvi;xps;djvu;tiff;documento;presentación;
|
||||
Keywords[et]=pdf;ps;postscript;dvi;xps;djvu;tiff;dokument;dokumendid;esitlused;
|
||||
Keywords[eu]=pdf;ps;postscript;dvi;xps;djvu;tiff;dokumentua;aurkezpena;
|
||||
Keywords[fa]=pdf;ps;postscript;dvi;xps;djvu;tiff;سند;ارائه;نوشتار;
|
||||
Keywords[fi]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentation;asiakirja;esitys;
|
||||
Keywords[fr]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;présentation;
|
||||
Keywords[fur]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentazion;
|
||||
Keywords[gd]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentation;sgrìobhainn;taisbeanadh;
|
||||
Keywords[gl]=pdf;ps;postscript;dvi;xps;djvu;tiff;documento;presentación;
|
||||
Keywords[gu]=pdf;ps;postscript;dvi;xps;djvu;tiff;દસ્તાવેજ;રજૂઆત;
|
||||
Keywords[he]=pdf;ps;פוסטסקריפט;dvi;xps;djvu;tiff;מסמך;מצגת;
|
||||
Keywords[hi]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentation;
|
||||
Keywords[hr]=pdf;ps;postscript;dvi;xps;djvu;tiff;dokument;prezentacija;
|
||||
Keywords[hu]=pdf;ps;postscript;dvi;xps;djvu;tiff;dokumentum;prezentáció;bemutató;
|
||||
Keywords[id]=pdf;ps;postscript;dvi;xps;djvu;tiff;dokumen;presentasi;
|
||||
Keywords[is]=pdf;ps;postscript;dvi;xps;djvu;tiff;skjal;kynning;
|
||||
Keywords[it]=pdf;ps;postscript;dvi;xps;djvu;tiff;documento;presentazione;
|
||||
Keywords[ja]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentation;ポストスクリプト;ドキュメント;文書;プレゼンテーション;
|
||||
Keywords[kk]=pdf;ps;postscript;dvi;xps;djvu;tiff;құжат;презентация;
|
||||
Keywords[kn]=pdf;ps;ಪೋಸ್ಟ್ಸ್ಕ್ರಿಪ್ಟ್;dvi;xps;djvu;tiff;ದಸ್ತಾವೇಜು;ಪ್ರಸ್ತುತಿ;
|
||||
Keywords[ko]=pdf;ps;postscript;포스트스크립트;dvi;xps;djvu;tiff;document;문서;presentation;프리젠테이션;
|
||||
Keywords[lt]=pdf;ps;postscript;dvi;xps;djvu;tiff;dokumentas;pateiktis;prezentacija;
|
||||
Keywords[lv]=pdf;ps;postscript;dvi;xps;djvu;tiff;dokuments;prezentācija;
|
||||
Keywords[ml]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentation;
|
||||
Keywords[mr]=pdf;ps;पोस्टस्क्रिप्ट;dvi;xps;djvu;tiff;डॉक्युमेंट;प्रेजेंटेशन;
|
||||
Keywords[nb]=pdf;ps;postscript;dvi;xps;djvu;tiff;dokument;presentasjon;
|
||||
Keywords[nl]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentation;presentatie;
|
||||
Keywords[oc]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentacion;
|
||||
Keywords[or]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentation;
|
||||
Keywords[pa]=ਪੀਡੀਐਫ;ਪੋਸਟਸਕ੍ਰਿਪਟ;ਡੀਵੀਆਈ;ਦਸਤਾਵੇਜ਼;ਪਰਿਜੈਂਟੇਸ਼ਨ;pdf;ps;postscript;dvi;xps;djvu;tiff;ਡੌਕੂਮੈਂਟ;
|
||||
Keywords[pl]=pdf;ps;postscript;dvi;xps;djvu;tiff;dokument;prezentacja;
|
||||
Keywords[pt]=pdf;ps;postscript;dvi;xps;djvu;tiff;documento;apresentação;
|
||||
Keywords[pt_BR]=pdf;ps;postscript;dvi;xps;djvu;tiff;documento;apresentação;
|
||||
Keywords[ro]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentation;prezentare;
|
||||
Keywords[ru]=pdf;ps;postscript;dvi;xps;djvu;tiff;документ;презентация;
|
||||
Keywords[sk]=pdf;ps;postscript;dvi;xps;djvu;tiff;dokument;prezentácia;
|
||||
Keywords[sl]=pdf;ps;postscript;dvi;xps;djvu;tiff;dokument;predstavitev;
|
||||
Keywords[sr]=пдф;пс;пост-скрипт;дви;икспс;дежави;тифф;документ;презентација;приказивање;
|
||||
Keywords[sr@latin]=pdf;ps;post-skript;dvi;iksps;dežavi;tiff;dokument;prezentacija;prikazivanje;
|
||||
Keywords[sv]=pdf;ps;postscript;dvi;xps;djvu;tiff;dokument;presentation;
|
||||
Keywords[ta]=பிடிஎஃப்;போஸ்ட்ஸ்க்ரிப்ட்;டிவிஐ;எக்ஸ்பிஎஸ்;டிஃப்;ஆவணம்;முன் வைப்பு;
|
||||
Keywords[te]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentation;
|
||||
Keywords[tg]=pdf;ps;хабари тоза;dvi;xps;djvu;tiff;ҳуҷҷат;тақдим;
|
||||
Keywords[th]=pdf;ps;โพสต์สคริปต์;dvi;xps;djvu;tiff;เอกสาร;งานนำเสนอ;
|
||||
Keywords[tr]=pdf;ps;postscript;dvi;xps;djvu;tiff;belge;sunum;
|
||||
Keywords[ug]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentation;پۈتۈك;سۇنۇلما;
|
||||
Keywords[uk]=pdf;ps;postscript;dvi;xps;djvu;tiff;документ;презентація;
|
||||
Keywords[vi]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;tài;liệu;tai;lieu;presentation;trình;diễn;trinh;dien;
|
||||
Keywords[zh_CN]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentation;文档;演示;幻灯;
|
||||
Keywords[zh_HK]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentation;文件;簡報;
|
||||
Keywords[zh_TW]=pdf;ps;postscript;dvi;xps;djvu;tiff;document;presentation;文件;簡報;
|
||||
TryExec=evince
|
||||
Exec=evince %U
|
||||
StartupNotify=true
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=evince
|
||||
X-GNOME-DocPath=
|
||||
X-GNOME-Bugzilla-Bugzilla=GNOME
|
||||
X-GNOME-Bugzilla-Product=evince
|
||||
X-GNOME-Bugzilla-Component=BugBuddyBugs
|
||||
X-GNOME-Bugzilla-Version=3.22.1
|
||||
Categories=GNOME;GTK;Office;Viewer;Graphics;2DGraphics;VectorGraphics;
|
||||
MimeType=application/pdf;application/x-bzpdf;application/x-gzpdf;application/x-xzpdf;application/x-ext-pdf;application/postscript;application/x-bzpostscript;application/x-gzpostscript;image/x-eps;image/x-bzeps;image/x-gzeps;application/x-ext-ps;application/x-ext-eps;application/x-dvi;application/x-bzdvi;application/x-gzdvi;application/x-ext-dvi;image/vnd.djvu;image/vnd.djvu+multipage;application/x-ext-djv;application/x-ext-djvu;image/tiff;application/x-cbr;application/x-cbz;application/x-cb7;application/x-cbt;application/x-ext-cbr;application/x-ext-cbz;application/vnd.comicbook+zip;application/x-ext-cb7;application/x-ext-cbt;application/oxps;application/vnd.ms-xpsdocument;
|
93
xampp/extra/httpd-autoindex.conf
Normal file
93
xampp/extra/httpd-autoindex.conf
Normal file
|
@ -0,0 +1,93 @@
|
|||
#
|
||||
# Directives controlling the display of server-generated directory listings.
|
||||
#
|
||||
# Required modules: mod_authz_core, mod_authz_host,
|
||||
# mod_autoindex, mod_alias
|
||||
#
|
||||
# To see the listing of a directory, the Options directive for the
|
||||
# directory must include "Indexes", and the directory must not contain
|
||||
# a file matching those listed in the DirectoryIndex directive.
|
||||
#
|
||||
|
||||
#
|
||||
# IndexOptions: Controls the appearance of server-generated directory
|
||||
# listings.
|
||||
#
|
||||
IndexOptions FancyIndexing HTMLTable VersionSort
|
||||
|
||||
# We include the /icons/ alias for FancyIndexed directory listings. If
|
||||
# you do not use FancyIndexing, you may comment this out.
|
||||
#
|
||||
Alias /icons/ "/opt/lampp/icons/"
|
||||
|
||||
<Directory "/opt/lampp/icons">
|
||||
Options Indexes MultiViews
|
||||
AllowOverride None
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
#
|
||||
# AddIcon* directives tell the server which icon to show for different
|
||||
# files or filename extensions. These are only displayed for
|
||||
# FancyIndexed directories.
|
||||
#
|
||||
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
|
||||
|
||||
AddIconByType (TXT,/icons/text.gif) text/*
|
||||
AddIconByType (IMG,/icons/image2.gif) image/*
|
||||
AddIconByType (SND,/icons/sound2.gif) audio/*
|
||||
AddIconByType (VID,/icons/movie.gif) video/*
|
||||
|
||||
AddIcon /icons/binary.gif .bin .exe
|
||||
AddIcon /icons/binhex.gif .hqx
|
||||
AddIcon /icons/tar.gif .tar
|
||||
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
|
||||
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
|
||||
AddIcon /icons/a.gif .ps .ai .eps
|
||||
AddIcon /icons/layout.gif .html .shtml .htm .pdf
|
||||
AddIcon /icons/text.gif .txt
|
||||
AddIcon /icons/c.gif .c
|
||||
AddIcon /icons/p.gif .pl .py
|
||||
AddIcon /icons/f.gif .for
|
||||
AddIcon /icons/dvi.gif .dvi
|
||||
AddIcon /icons/uuencoded.gif .uu
|
||||
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
|
||||
AddIcon /icons/tex.gif .tex
|
||||
AddIcon /icons/bomb.gif core
|
||||
|
||||
AddIcon /icons/back.gif ..
|
||||
AddIcon /icons/hand.right.gif README
|
||||
AddIcon /icons/folder.gif ^^DIRECTORY^^
|
||||
AddIcon /icons/blank.gif ^^BLANKICON^^
|
||||
|
||||
#
|
||||
# DefaultIcon is which icon to show for files which do not have an icon
|
||||
# explicitly set.
|
||||
#
|
||||
DefaultIcon /icons/unknown.gif
|
||||
|
||||
#
|
||||
# AddDescription allows you to place a short description after a file in
|
||||
# server-generated indexes. These are only displayed for FancyIndexed
|
||||
# directories.
|
||||
# Format: AddDescription "description" filename
|
||||
#
|
||||
#AddDescription "GZIP compressed document" .gz
|
||||
#AddDescription "tar archive" .tar
|
||||
#AddDescription "GZIP compressed tar archive" .tgz
|
||||
|
||||
#
|
||||
# ReadmeName is the name of the README file the server will look for by
|
||||
# default, and append to directory listings.
|
||||
#
|
||||
# HeaderName is the name of a file which should be prepended to
|
||||
# directory indexes.
|
||||
ReadmeName README.html
|
||||
HeaderName HEADER.html
|
||||
|
||||
#
|
||||
# IndexIgnore is a set of filenames which directory indexing should ignore
|
||||
# and not include in the listing. Shell-style wildcarding is permitted.
|
||||
#
|
||||
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
|
||||
|
50
xampp/extra/httpd-dav.conf
Normal file
50
xampp/extra/httpd-dav.conf
Normal file
|
@ -0,0 +1,50 @@
|
|||
#
|
||||
# Distributed authoring and versioning (WebDAV)
|
||||
#
|
||||
# Required modules: mod_alias, mod_auth_digest, mod_authn_core, mod_authn_file,
|
||||
# mod_authz_core, mod_authz_user, mod_dav, mod_dav_fs,
|
||||
# mod_setenvif
|
||||
|
||||
# The following example gives DAV write access to a directory called
|
||||
# "uploads" under the ServerRoot directory.
|
||||
#
|
||||
# The User/Group specified in httpd.conf needs to have write permissions
|
||||
# on the directory where the DavLockDB is placed and on any directory where
|
||||
# "Dav On" is specified.
|
||||
|
||||
DavLockDB "/opt/lampp/var/DavLock"
|
||||
|
||||
Alias /uploads "/opt/lampp/uploads"
|
||||
|
||||
<Directory "/opt/lampp/uploads">
|
||||
Dav On
|
||||
|
||||
AuthType Digest
|
||||
AuthName DAV-upload
|
||||
# You can use the htdigest program to create the password database:
|
||||
# htdigest -c "/opt/lampp/user.passwd" DAV-upload admin
|
||||
AuthUserFile "/opt/lampp/user.passwd"
|
||||
AuthDigestProvider file
|
||||
|
||||
# Allow universal read-access, but writes are restricted
|
||||
# to the admin user.
|
||||
<RequireAny>
|
||||
Require method GET POST OPTIONS
|
||||
Require user admin
|
||||
</RequireAny>
|
||||
</Directory>
|
||||
|
||||
#
|
||||
# The following directives disable redirects on non-GET requests for
|
||||
# a directory that does not include the trailing slash. This fixes a
|
||||
# problem with several clients that do not appropriately handle
|
||||
# redirects for folders with DAV methods.
|
||||
#
|
||||
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
|
||||
BrowserMatch "MS FrontPage" redirect-carefully
|
||||
BrowserMatch "^WebDrive" redirect-carefully
|
||||
BrowserMatch "^WebDAVFS/1.[01234]" redirect-carefully
|
||||
BrowserMatch "^gnome-vfs/1.0" redirect-carefully
|
||||
BrowserMatch "^XML Spy" redirect-carefully
|
||||
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully
|
||||
BrowserMatch " Konqueror/4" redirect-carefully
|
90
xampp/extra/httpd-default.conf
Normal file
90
xampp/extra/httpd-default.conf
Normal file
|
@ -0,0 +1,90 @@
|
|||
#
|
||||
# This configuration file reflects default settings for Apache HTTP Server.
|
||||
#
|
||||
# You may change these, but chances are that you may not need to.
|
||||
#
|
||||
|
||||
#
|
||||
# Timeout: The number of seconds before receives and sends time out.
|
||||
#
|
||||
Timeout 300
|
||||
|
||||
#
|
||||
# KeepAlive: Whether or not to allow persistent connections (more than
|
||||
# one request per connection). Set to "Off" to deactivate.
|
||||
#
|
||||
KeepAlive On
|
||||
|
||||
#
|
||||
# MaxKeepAliveRequests: The maximum number of requests to allow
|
||||
# during a persistent connection. Set to 0 to allow an unlimited amount.
|
||||
# We recommend you leave this number high, for maximum performance.
|
||||
#
|
||||
MaxKeepAliveRequests 100
|
||||
|
||||
#
|
||||
# KeepAliveTimeout: Number of seconds to wait for the next request from the
|
||||
# same client on the same connection.
|
||||
#
|
||||
KeepAliveTimeout 5
|
||||
|
||||
#
|
||||
# UseCanonicalName: Determines how Apache constructs self-referencing
|
||||
# URLs and the SERVER_NAME and SERVER_PORT variables.
|
||||
# When set "Off", Apache will use the Hostname and Port supplied
|
||||
# by the client. When set "On", Apache will use the value of the
|
||||
# ServerName directive.
|
||||
#
|
||||
UseCanonicalName Off
|
||||
|
||||
#
|
||||
# AccessFileName: The name of the file to look for in each directory
|
||||
# for additional configuration directives. See also the AllowOverride
|
||||
# directive.
|
||||
#
|
||||
AccessFileName .htaccess
|
||||
|
||||
#
|
||||
# ServerTokens
|
||||
# This directive configures what you return as the Server HTTP response
|
||||
# Header. The default is 'Full' which sends information about the OS-Type
|
||||
# and compiled in modules.
|
||||
# Set to one of: Full | OS | Minor | Minimal | Major | Prod
|
||||
# where Full conveys the most information, and Prod the least.
|
||||
#
|
||||
ServerTokens Full
|
||||
|
||||
#
|
||||
# Optionally add a line containing the server version and virtual host
|
||||
# name to server-generated pages (internal error documents, FTP directory
|
||||
# listings, mod_status and mod_info output etc., but not CGI generated
|
||||
# documents or custom error documents).
|
||||
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
|
||||
# Set to one of: On | Off | EMail
|
||||
#
|
||||
ServerSignature Off
|
||||
|
||||
#
|
||||
# HostnameLookups: Log the names of clients or just their IP addresses
|
||||
# e.g., www.apache.org (on) or 204.62.129.132 (off).
|
||||
# The default is off because it'd be overall better for the net if people
|
||||
# had to knowingly turn this feature on, since enabling it means that
|
||||
# each client request will result in AT LEAST one lookup request to the
|
||||
# nameserver.
|
||||
#
|
||||
HostnameLookups Off
|
||||
|
||||
#
|
||||
# Set a timeout for how long the client may take to send the request header
|
||||
# and body.
|
||||
# The default for the headers is header=20-40,MinRate=500, which means wait
|
||||
# for the first byte of headers for 20 seconds. If some data arrives,
|
||||
# increase the timeout corresponding to a data rate of 500 bytes/s, but not
|
||||
# above 40 seconds.
|
||||
# The default for the request body is body=20,MinRate=500, which is the same
|
||||
# but has no upper limit for the timeout.
|
||||
# To disable, set to header=0 body=0
|
||||
#
|
||||
<IfModule reqtimeout_module>
|
||||
RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
|
||||
</IfModule>
|
36
xampp/extra/httpd-info.conf
Normal file
36
xampp/extra/httpd-info.conf
Normal file
|
@ -0,0 +1,36 @@
|
|||
#
|
||||
# Get information about the requests being processed by the server
|
||||
# and the configuration of the server.
|
||||
#
|
||||
# Required modules: mod_authz_core, mod_authz_host,
|
||||
# mod_info (for the server-info handler),
|
||||
# mod_status (for the server-status handler)
|
||||
|
||||
#
|
||||
# Allow server status reports generated by mod_status,
|
||||
# with the URL of http://servername/server-status
|
||||
# Change the ".example.com" to match your domain to enable.
|
||||
|
||||
<Location /server-status>
|
||||
SetHandler server-status
|
||||
Require host .example.com
|
||||
Require ip 127
|
||||
</Location>
|
||||
|
||||
#
|
||||
# ExtendedStatus controls whether Apache will generate "full" status
|
||||
# information (ExtendedStatus On) or just basic information (ExtendedStatus
|
||||
# Off) when the "server-status" handler is called. The default is Off.
|
||||
#
|
||||
#ExtendedStatus On
|
||||
|
||||
#
|
||||
# Allow remote server configuration reports, with the URL of
|
||||
# http://servername/server-info (requires that mod_info.c be loaded).
|
||||
# Change the ".example.com" to match your domain to enable.
|
||||
#
|
||||
<Location /server-info>
|
||||
SetHandler server-info
|
||||
Require host .example.com
|
||||
Require ip 127
|
||||
</Location>
|
141
xampp/extra/httpd-languages.conf
Normal file
141
xampp/extra/httpd-languages.conf
Normal file
|
@ -0,0 +1,141 @@
|
|||
#
|
||||
# Settings for hosting different languages.
|
||||
#
|
||||
# Required modules: mod_mime, mod_negotiation
|
||||
|
||||
# DefaultLanguage and AddLanguage allows you to specify the language of
|
||||
# a document. You can then use content negotiation to give a browser a
|
||||
# file in a language the user can understand.
|
||||
#
|
||||
# Specify a default language. This means that all data
|
||||
# going out without a specific language tag (see below) will
|
||||
# be marked with this one. You probably do NOT want to set
|
||||
# this unless you are sure it is correct for all cases.
|
||||
#
|
||||
# * It is generally better to not mark a page as
|
||||
# * being a certain language than marking it with the wrong
|
||||
# * language!
|
||||
#
|
||||
# DefaultLanguage nl
|
||||
#
|
||||
# Note 1: The suffix does not have to be the same as the language
|
||||
# keyword --- those with documents in Polish (whose net-standard
|
||||
# language code is pl) may wish to use "AddLanguage pl .po" to
|
||||
# avoid the ambiguity with the common suffix for perl scripts.
|
||||
#
|
||||
# Note 2: The example entries below illustrate that in some cases
|
||||
# the two character 'Language' abbreviation is not identical to
|
||||
# the two character 'Country' code for its country,
|
||||
# E.g. 'Danmark/dk' versus 'Danish/da'.
|
||||
#
|
||||
# Note 3: In the case of 'ltz' we violate the RFC by using a three char
|
||||
# specifier. There is 'work in progress' to fix this and get
|
||||
# the reference data for rfc1766 cleaned up.
|
||||
#
|
||||
# Catalan (ca) - Croatian (hr) - Czech (cs) - Danish (da) - Dutch (nl)
|
||||
# English (en) - Esperanto (eo) - Estonian (et) - French (fr) - German (de)
|
||||
# Greek-Modern (el) - Hebrew (he) - Italian (it) - Japanese (ja)
|
||||
# Korean (ko) - Luxembourgeois* (ltz) - Norwegian Nynorsk (nn)
|
||||
# Norwegian (no) - Polish (pl) - Portugese (pt)
|
||||
# Brazilian Portuguese (pt-BR) - Russian (ru) - Swedish (sv)
|
||||
# Turkish (tr) - Simplified Chinese (zh-CN) - Spanish (es)
|
||||
# Traditional Chinese (zh-TW)
|
||||
#
|
||||
AddLanguage ca .ca
|
||||
AddLanguage cs .cz .cs
|
||||
AddLanguage da .dk
|
||||
AddLanguage de .de
|
||||
AddLanguage el .el
|
||||
AddLanguage en .en
|
||||
AddLanguage eo .eo
|
||||
AddLanguage es .es
|
||||
AddLanguage et .et
|
||||
AddLanguage fr .fr
|
||||
AddLanguage he .he
|
||||
AddLanguage hr .hr
|
||||
AddLanguage it .it
|
||||
AddLanguage ja .ja
|
||||
AddLanguage ko .ko
|
||||
AddLanguage ltz .ltz
|
||||
AddLanguage nl .nl
|
||||
AddLanguage nn .nn
|
||||
AddLanguage no .no
|
||||
AddLanguage pl .po
|
||||
AddLanguage pt .pt
|
||||
AddLanguage pt-BR .pt-br
|
||||
AddLanguage ru .ru
|
||||
AddLanguage sv .sv
|
||||
AddLanguage tr .tr
|
||||
AddLanguage zh-CN .zh-cn
|
||||
AddLanguage zh-TW .zh-tw
|
||||
|
||||
# LanguagePriority allows you to give precedence to some languages
|
||||
# in case of a tie during content negotiation.
|
||||
#
|
||||
# Just list the languages in decreasing order of preference. We have
|
||||
# more or less alphabetized them here. You probably want to change this.
|
||||
#
|
||||
LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv tr zh-CN zh-TW
|
||||
|
||||
#
|
||||
# ForceLanguagePriority allows you to serve a result page rather than
|
||||
# MULTIPLE CHOICES (Prefer) [in case of a tie] or NOT ACCEPTABLE (Fallback)
|
||||
# [in case no accepted languages matched the available variants]
|
||||
#
|
||||
ForceLanguagePriority Prefer Fallback
|
||||
|
||||
#
|
||||
# Commonly used filename extensions to character sets. You probably
|
||||
# want to avoid clashes with the language extensions, unless you
|
||||
# are good at carefully testing your setup after each change.
|
||||
# See http://www.iana.org/assignments/character-sets for the
|
||||
# official list of charset names and their respective RFCs.
|
||||
#
|
||||
AddCharset us-ascii.ascii .us-ascii
|
||||
AddCharset ISO-8859-1 .iso8859-1 .latin1
|
||||
AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
|
||||
AddCharset ISO-8859-3 .iso8859-3 .latin3
|
||||
AddCharset ISO-8859-4 .iso8859-4 .latin4
|
||||
AddCharset ISO-8859-5 .iso8859-5 .cyr .iso-ru
|
||||
AddCharset ISO-8859-6 .iso8859-6 .arb .arabic
|
||||
AddCharset ISO-8859-7 .iso8859-7 .grk .greek
|
||||
AddCharset ISO-8859-8 .iso8859-8 .heb .hebrew
|
||||
AddCharset ISO-8859-9 .iso8859-9 .latin5 .trk
|
||||
AddCharset ISO-8859-10 .iso8859-10 .latin6
|
||||
AddCharset ISO-8859-13 .iso8859-13
|
||||
AddCharset ISO-8859-14 .iso8859-14 .latin8
|
||||
AddCharset ISO-8859-15 .iso8859-15 .latin9
|
||||
AddCharset ISO-8859-16 .iso8859-16 .latin10
|
||||
AddCharset ISO-2022-JP .iso2022-jp .jis
|
||||
AddCharset ISO-2022-KR .iso2022-kr .kis
|
||||
AddCharset ISO-2022-CN .iso2022-cn .cis
|
||||
AddCharset Big5.Big5 .big5 .b5
|
||||
AddCharset cn-Big5 .cn-big5
|
||||
# For russian, more than one charset is used (depends on client, mostly):
|
||||
AddCharset WINDOWS-1251 .cp-1251 .win-1251
|
||||
AddCharset CP866 .cp866
|
||||
AddCharset KOI8 .koi8
|
||||
AddCharset KOI8-E .koi8-e
|
||||
AddCharset KOI8-r .koi8-r .koi8-ru
|
||||
AddCharset KOI8-U .koi8-u
|
||||
AddCharset KOI8-ru .koi8-uk .ua
|
||||
AddCharset ISO-10646-UCS-2 .ucs2
|
||||
AddCharset ISO-10646-UCS-4 .ucs4
|
||||
AddCharset UTF-7 .utf7
|
||||
AddCharset UTF-8 .utf8
|
||||
AddCharset UTF-16 .utf16
|
||||
AddCharset UTF-16BE .utf16be
|
||||
AddCharset UTF-16LE .utf16le
|
||||
AddCharset UTF-32 .utf32
|
||||
AddCharset UTF-32BE .utf32be
|
||||
AddCharset UTF-32LE .utf32le
|
||||
AddCharset euc-cn .euc-cn
|
||||
AddCharset euc-gb .euc-gb
|
||||
AddCharset euc-jp .euc-jp
|
||||
AddCharset euc-kr .euc-kr
|
||||
#Not sure how euc-tw got in - IANA doesn't list it???
|
||||
AddCharset EUC-TW .euc-tw
|
||||
AddCharset gb2312 .gb2312 .gb
|
||||
AddCharset iso-10646-ucs-2 .ucs-2 .iso-10646-ucs-2
|
||||
AddCharset iso-10646-ucs-4 .ucs-4 .iso-10646-ucs-4
|
||||
AddCharset shift_jis .shift_jis .sjis
|
33
xampp/extra/httpd-manual.conf
Normal file
33
xampp/extra/httpd-manual.conf
Normal file
|
@ -0,0 +1,33 @@
|
|||
#
|
||||
# Provide access to the documentation on your server as
|
||||
# http://yourserver.example.com/manual/
|
||||
# The documentation is always available at
|
||||
# http://httpd.apache.org/docs/2.4/
|
||||
#
|
||||
# Required modules: mod_alias, mod_authz_core, mod_authz_host,
|
||||
# mod_setenvif, mod_negotiation
|
||||
#
|
||||
|
||||
AliasMatch ^/manual(?:/(?:da|de|en|es|fr|ja|ko|pt-br|ru|tr|zh-cn))?(/.*)?$ "/opt/lampp/manual$1"
|
||||
|
||||
<Directory "/opt/lampp/manual">
|
||||
Options Indexes
|
||||
AllowOverride None
|
||||
Require all granted
|
||||
|
||||
<Files *.html>
|
||||
SetHandler type-map
|
||||
</Files>
|
||||
# .tr is text/troff in mime.types!
|
||||
<Files *.html.tr.utf8>
|
||||
ForceType "text/html; charset=utf-8"
|
||||
</Files>
|
||||
|
||||
AddLanguage da .da
|
||||
|
||||
SetEnvIf Request_URI ^/manual/(da|de|en|es|fr|ja|ko|pt-br|ru|tr|zh-cn)/ prefer-language=$1
|
||||
RedirectMatch 301 ^/manual(?:/(da|de|en|es|fr|ja|ko|pt-br|ru|tr|zh-cn)){2,}(/.*)?$ /manual/$1$2
|
||||
|
||||
LanguagePriority en da de es fr ja ko pt-br ru tr
|
||||
ForceLanguagePriority Prefer Fallback
|
||||
</Directory>
|
119
xampp/extra/httpd-mpm.conf
Normal file
119
xampp/extra/httpd-mpm.conf
Normal file
|
@ -0,0 +1,119 @@
|
|||
#
|
||||
# Server-Pool Management (MPM specific)
|
||||
#
|
||||
|
||||
#
|
||||
# PidFile: The file in which the server should record its process
|
||||
# identification number when it starts.
|
||||
#
|
||||
# Note that this is the default PidFile for most MPMs.
|
||||
#
|
||||
<IfModule !mpm_netware_module>
|
||||
PidFile "logs/httpd.pid"
|
||||
</IfModule>
|
||||
|
||||
#
|
||||
# Only one of the below sections will be relevant on your
|
||||
# installed httpd. Use "apachectl -l" to find out the
|
||||
# active mpm.
|
||||
#
|
||||
|
||||
# prefork MPM
|
||||
# StartServers: number of server processes to start
|
||||
# MinSpareServers: minimum number of server processes which are kept spare
|
||||
# MaxSpareServers: maximum number of server processes which are kept spare
|
||||
# MaxRequestWorkers: maximum number of server processes allowed to start
|
||||
# MaxConnectionsPerChild: maximum number of connections a server process serves
|
||||
# before terminating
|
||||
<IfModule mpm_prefork_module>
|
||||
StartServers 5
|
||||
MinSpareServers 5
|
||||
MaxSpareServers 10
|
||||
MaxRequestWorkers 150
|
||||
MaxConnectionsPerChild 0
|
||||
</IfModule>
|
||||
|
||||
# worker MPM
|
||||
# StartServers: initial number of server processes to start
|
||||
# MinSpareThreads: minimum number of worker threads which are kept spare
|
||||
# MaxSpareThreads: maximum number of worker threads which are kept spare
|
||||
# ThreadsPerChild: constant number of worker threads in each server process
|
||||
# MaxRequestWorkers: maximum number of worker threads
|
||||
# MaxConnectionsPerChild: maximum number of connections a server process serves
|
||||
# before terminating
|
||||
<IfModule mpm_worker_module>
|
||||
StartServers 2
|
||||
MinSpareThreads 25
|
||||
MaxSpareThreads 75
|
||||
ThreadsPerChild 25
|
||||
MaxRequestWorkers 150
|
||||
MaxConnectionsPerChild 0
|
||||
</IfModule>
|
||||
|
||||
# event MPM
|
||||
# StartServers: initial number of server processes to start
|
||||
# MinSpareThreads: minimum number of worker threads which are kept spare
|
||||
# MaxSpareThreads: maximum number of worker threads which are kept spare
|
||||
# ThreadsPerChild: constant number of worker threads in each server process
|
||||
# MaxRequestWorkers: maximum number of worker threads
|
||||
# MaxConnectionsPerChild: maximum number of connections a server process serves
|
||||
# before terminating
|
||||
<IfModule mpm_event_module>
|
||||
StartServers 2
|
||||
MinSpareThreads 25
|
||||
MaxSpareThreads 75
|
||||
ThreadsPerChild 25
|
||||
MaxRequestWorkers 150
|
||||
MaxConnectionsPerChild 0
|
||||
</IfModule>
|
||||
|
||||
# NetWare MPM
|
||||
# ThreadStackSize: Stack size allocated for each worker thread
|
||||
# StartThreads: Number of worker threads launched at server startup
|
||||
# MinSpareThreads: Minimum number of idle threads, to handle request spikes
|
||||
# MaxSpareThreads: Maximum number of idle threads
|
||||
# MaxThreads: Maximum number of worker threads alive at the same time
|
||||
# MaxConnectionsPerChild: Maximum number of connections a thread serves. It
|
||||
# is recommended that the default value of 0 be set
|
||||
# for this directive on NetWare. This will allow the
|
||||
# thread to continue to service requests indefinitely.
|
||||
<IfModule mpm_netware_module>
|
||||
ThreadStackSize 65536
|
||||
StartThreads 250
|
||||
MinSpareThreads 25
|
||||
MaxSpareThreads 250
|
||||
MaxThreads 1000
|
||||
MaxConnectionsPerChild 0
|
||||
</IfModule>
|
||||
|
||||
# OS/2 MPM
|
||||
# StartServers: Number of server processes to maintain
|
||||
# MinSpareThreads: Minimum number of idle threads per process,
|
||||
# to handle request spikes
|
||||
# MaxSpareThreads: Maximum number of idle threads per process
|
||||
# MaxConnectionsPerChild: Maximum number of connections per server process
|
||||
<IfModule mpm_mpmt_os2_module>
|
||||
StartServers 2
|
||||
MinSpareThreads 5
|
||||
MaxSpareThreads 10
|
||||
MaxConnectionsPerChild 0
|
||||
</IfModule>
|
||||
|
||||
# WinNT MPM
|
||||
# ThreadsPerChild: constant number of worker threads in the server process
|
||||
# MaxConnectionsPerChild: maximum number of connections a server process serves
|
||||
<IfModule mpm_winnt_module>
|
||||
ThreadsPerChild 150
|
||||
MaxConnectionsPerChild 0
|
||||
</IfModule>
|
||||
|
||||
# The maximum number of free Kbytes that every allocator is allowed
|
||||
# to hold without calling free(). In threaded MPMs, every thread has its own
|
||||
# allocator. When not set, or when set to zero, the threshold will be set to
|
||||
# unlimited.
|
||||
<IfModule !mpm_netware_module>
|
||||
MaxMemFree 2048
|
||||
</IfModule>
|
||||
<IfModule mpm_netware_module>
|
||||
MaxMemFree 100
|
||||
</IfModule>
|
52
xampp/extra/httpd-multilang-errordoc.conf
Normal file
52
xampp/extra/httpd-multilang-errordoc.conf
Normal file
|
@ -0,0 +1,52 @@
|
|||
#
|
||||
# The configuration below implements multi-language error documents through
|
||||
# content-negotiation.
|
||||
#
|
||||
# Required modules: mod_alias, mod_authz_core, mod_authz_host,
|
||||
# mod_include, mod_negotiation
|
||||
#
|
||||
# We use Alias to redirect any /error/HTTP_<error>.html.var response to
|
||||
# our collection of by-error message multi-language collections. We use
|
||||
# includes to substitute the appropriate text.
|
||||
#
|
||||
# You can modify the messages' appearance without changing any of the
|
||||
# default HTTP_<error>.html.var files by adding the line:
|
||||
#
|
||||
# Alias /error/include/ "/your/include/path/"
|
||||
#
|
||||
# which allows you to create your own set of files by starting with the
|
||||
# /opt/lampp/error/include/ files and copying them to /your/include/path/,
|
||||
# even on a per-VirtualHost basis. The default include files will display
|
||||
# your Apache version number and your ServerAdmin email address regardless
|
||||
# of the setting of ServerSignature.
|
||||
|
||||
Alias /error/ "/opt/lampp/error/"
|
||||
|
||||
<Directory "/opt/lampp/error">
|
||||
AllowOverride None
|
||||
Options IncludesNoExec
|
||||
AddOutputFilter Includes html
|
||||
AddHandler type-map var
|
||||
Require all granted
|
||||
LanguagePriority en cs de es fr it ja ko nl pl pt-br ro sv tr
|
||||
ForceLanguagePriority Prefer Fallback
|
||||
</Directory>
|
||||
|
||||
ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
|
||||
ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
|
||||
ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
|
||||
ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
|
||||
ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
|
||||
ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
|
||||
ErrorDocument 410 /error/HTTP_GONE.html.var
|
||||
ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
|
||||
ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
|
||||
ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
|
||||
ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
|
||||
ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var
|
||||
ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
|
||||
ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
|
||||
ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
|
||||
ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
|
||||
ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var
|
||||
|
244
xampp/extra/httpd-ssl.conf
Normal file
244
xampp/extra/httpd-ssl.conf
Normal file
|
@ -0,0 +1,244 @@
|
|||
#
|
||||
# This is the Apache server configuration file providing SSL support.
|
||||
# It contains the configuration directives to instruct the server how to
|
||||
# serve pages over an https connection. For detailed information about these
|
||||
# directives see <URL:http://httpd.apache.org/docs/trunk/mod/mod_ssl.html>
|
||||
#
|
||||
# Do NOT simply read the instructions in here without understanding
|
||||
# what they do. They're here only as hints or reminders. If you are unsure
|
||||
# consult the online docs. You have been warned.
|
||||
#
|
||||
# Required modules: mod_log_config, mod_setenvif, mod_ssl,
|
||||
# socache_shmcb_module (for default value of SSLSessionCache)
|
||||
|
||||
#
|
||||
# Pseudo Random Number Generator (PRNG):
|
||||
# Configure one or more sources to seed the PRNG of the SSL library.
|
||||
# The seed data should be of good random quality.
|
||||
# WARNING! On some platforms /dev/random blocks if not enough entropy
|
||||
# is available. This means you then cannot use the /dev/random device
|
||||
# because it would lead to very long connection times (as long as
|
||||
# it requires to make more entropy available). But usually those
|
||||
# platforms additionally provide a /dev/urandom device which doesn't
|
||||
# block. So, if available, use this one instead. Read the mod_ssl User
|
||||
# Manual for more details.
|
||||
#
|
||||
#SSLRandomSeed startup file:/dev/random 512
|
||||
#SSLRandomSeed startup file:/dev/urandom 512
|
||||
#SSLRandomSeed connect file:/dev/random 512
|
||||
#SSLRandomSeed connect file:/dev/urandom 512
|
||||
|
||||
|
||||
#
|
||||
# When we also provide SSL we have to listen to the
|
||||
# standard HTTP port (see above) and to the HTTPS port
|
||||
#
|
||||
# Note: Configurations that use IPv6 but not IPv4-mapped addresses need two
|
||||
# Listen directives: "Listen [::]:443" and "Listen 0.0.0.0:443"
|
||||
#
|
||||
Listen 443
|
||||
|
||||
##
|
||||
## SSL Global Context
|
||||
##
|
||||
## All SSL configuration in this context applies both to
|
||||
## the main server and all SSL-enabled virtual hosts.
|
||||
##
|
||||
|
||||
# SSL Cipher Suite:
|
||||
# List the ciphers that the client is permitted to negotiate.
|
||||
# See the mod_ssl documentation for a complete list.
|
||||
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
|
||||
|
||||
# Speed-optimized SSL Cipher configuration:
|
||||
# If speed is your main concern (on busy HTTPS servers e.g.),
|
||||
# you might want to force clients to specific, performance
|
||||
# optimized ciphers. In this case, prepend those ciphers
|
||||
# to the SSLCipherSuite list, and enable SSLHonorCipherOrder.
|
||||
# Caveat: by giving precedence to RC4-SHA and AES128-SHA
|
||||
# (as in the example below), most connections will no longer
|
||||
# have perfect forward secrecy - if the server's key is
|
||||
# compromised, captures of past or future traffic must be
|
||||
# considered compromised, too.
|
||||
#SSLCipherSuite RC4-SHA:AES128-SHA:HIGH:MEDIUM:!aNULL:!MD5
|
||||
#SSLHonorCipherOrder on
|
||||
|
||||
# Pass Phrase Dialog:
|
||||
# Configure the pass phrase gathering process.
|
||||
# The filtering dialog program (`builtin' is an internal
|
||||
# terminal dialog) has to provide the pass phrase on stdout.
|
||||
SSLPassPhraseDialog builtin
|
||||
|
||||
# Inter-Process Session Cache:
|
||||
# Configure the SSL Session Cache: First the mechanism
|
||||
# to use and second the expiring timeout (in seconds).
|
||||
#SSLSessionCache "dbm:/opt/lampp/logs/ssl_scache"
|
||||
SSLSessionCache "shmcb:/opt/lampp/logs/ssl_scache(512000)"
|
||||
SSLSessionCacheTimeout 300
|
||||
|
||||
##
|
||||
## SSL Virtual Host Context
|
||||
##
|
||||
|
||||
<VirtualHost _default_:443>
|
||||
|
||||
# General setup for the virtual host
|
||||
DocumentRoot "/opt/lampp/htdocs"
|
||||
ServerName www.example.com:443
|
||||
ServerAdmin you@example.com
|
||||
ErrorLog "/opt/lampp/logs/error_log"
|
||||
TransferLog "/opt/lampp/logs/access_log"
|
||||
|
||||
# SSL Engine Switch:
|
||||
# Enable/Disable SSL for this virtual host.
|
||||
SSLEngine on
|
||||
|
||||
# Server Certificate:
|
||||
# Point SSLCertificateFile at a PEM encoded certificate. If
|
||||
# the certificate is encrypted, then you will be prompted for a
|
||||
# pass phrase. Note that a kill -HUP will prompt again. Keep
|
||||
# in mind that if you have both an RSA and a DSA certificate you
|
||||
# can configure both in parallel (to also allow the use of DSA
|
||||
# ciphers, etc.)
|
||||
# Some ECC cipher suites (http://www.ietf.org/rfc/rfc4492.txt)
|
||||
# require an ECC certificate which can also be configured in
|
||||
# parallel.
|
||||
SSLCertificateFile "/opt/lampp/etc/ssl.crt/server.crt"
|
||||
#SSLCertificateFile "/opt/lampp/etc/server-dsa.crt"
|
||||
#SSLCertificateFile "/opt/lampp/etc/server-ecc.crt"
|
||||
|
||||
# Server Private Key:
|
||||
# If the key is not combined with the certificate, use this
|
||||
# directive to point at the key file. Keep in mind that if
|
||||
# you've both a RSA and a DSA private key you can configure
|
||||
# both in parallel (to also allow the use of DSA ciphers, etc.)
|
||||
# ECC keys, when in use, can also be configured in parallel
|
||||
SSLCertificateKeyFile "/opt/lampp/etc/ssl.key/server.key"
|
||||
#SSLCertificateKeyFile "/opt/lampp/etc/server-dsa.key"
|
||||
#SSLCertificateKeyFile "/opt/lampp/etc/server-ecc.key"
|
||||
|
||||
# Server Certificate Chain:
|
||||
# Point SSLCertificateChainFile at a file containing the
|
||||
# concatenation of PEM encoded CA certificates which form the
|
||||
# certificate chain for the server certificate. Alternatively
|
||||
# the referenced file can be the same as SSLCertificateFile
|
||||
# when the CA certificates are directly appended to the server
|
||||
# certificate for convenience.
|
||||
#SSLCertificateChainFile "/opt/lampp/etc/server-ca.crt"
|
||||
|
||||
# Certificate Authority (CA):
|
||||
# Set the CA certificate verification path where to find CA
|
||||
# certificates for client authentication or alternatively one
|
||||
# huge file containing all of them (file must be PEM encoded)
|
||||
# Note: Inside SSLCACertificatePath you need hash symlinks
|
||||
# to point to the certificate files. Use the provided
|
||||
# Makefile to update the hash symlinks after changes.
|
||||
#SSLCACertificatePath "/opt/lampp/etc/ssl.crt"
|
||||
#SSLCACertificateFile "/opt/lampp/etc/ssl.crt/ca-bundle.crt"
|
||||
|
||||
# Certificate Revocation Lists (CRL):
|
||||
# Set the CA revocation path where to find CA CRLs for client
|
||||
# authentication or alternatively one huge file containing all
|
||||
# of them (file must be PEM encoded).
|
||||
# The CRL checking mode needs to be configured explicitly
|
||||
# through SSLCARevocationCheck (defaults to "none" otherwise).
|
||||
# Note: Inside SSLCARevocationPath you need hash symlinks
|
||||
# to point to the certificate files. Use the provided
|
||||
# Makefile to update the hash symlinks after changes.
|
||||
#SSLCARevocationPath "/opt/lampp/etc/ssl.crl"
|
||||
#SSLCARevocationFile "/opt/lampp/etc/ssl.crl/ca-bundle.crl"
|
||||
#SSLCARevocationCheck chain
|
||||
|
||||
# Client Authentication (Type):
|
||||
# Client certificate verification type and depth. Types are
|
||||
# none, optional, require and optional_no_ca. Depth is a
|
||||
# number which specifies how deeply to verify the certificate
|
||||
# issuer chain before deciding the certificate is not valid.
|
||||
#SSLVerifyClient require
|
||||
#SSLVerifyDepth 10
|
||||
|
||||
# Access Control:
|
||||
# With SSLRequire you can do per-directory access control based
|
||||
# on arbitrary complex boolean expressions containing server
|
||||
# variable checks and other lookup directives. The syntax is a
|
||||
# mixture between C and Perl. See the mod_ssl documentation
|
||||
# for more details.
|
||||
#<Location />
|
||||
#SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \
|
||||
# and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \
|
||||
# and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \
|
||||
# and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \
|
||||
# and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20 ) \
|
||||
# or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/
|
||||
#</Location>
|
||||
|
||||
# SSL Engine Options:
|
||||
# Set various options for the SSL engine.
|
||||
# o FakeBasicAuth:
|
||||
# Translate the client X.509 into a Basic Authorisation. This means that
|
||||
# the standard Auth/DBMAuth methods can be used for access control. The
|
||||
# user name is the `one line' version of the client's X.509 certificate.
|
||||
# Note that no password is obtained from the user. Every entry in the user
|
||||
# file needs this password: `xxj31ZMTZzkVA'.
|
||||
# o ExportCertData:
|
||||
# This exports two additional environment variables: SSL_CLIENT_CERT and
|
||||
# SSL_SERVER_CERT. These contain the PEM-encoded certificates of the
|
||||
# server (always existing) and the client (only existing when client
|
||||
# authentication is used). This can be used to import the certificates
|
||||
# into CGI scripts.
|
||||
# o StdEnvVars:
|
||||
# This exports the standard SSL/TLS related `SSL_*' environment variables.
|
||||
# Per default this exportation is switched off for performance reasons,
|
||||
# because the extraction step is an expensive operation and is usually
|
||||
# useless for serving static content. So one usually enables the
|
||||
# exportation for CGI and SSI requests only.
|
||||
# o StrictRequire:
|
||||
# This denies access when "SSLRequireSSL" or "SSLRequire" applied even
|
||||
# under a "Satisfy any" situation, i.e. when it applies access is denied
|
||||
# and no other module can change it.
|
||||
# o OptRenegotiate:
|
||||
# This enables optimized SSL connection renegotiation handling when SSL
|
||||
# directives are used in per-directory context.
|
||||
#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
|
||||
<FilesMatch "\.(cgi|shtml|phtml|php)$">
|
||||
SSLOptions +StdEnvVars
|
||||
</FilesMatch>
|
||||
<Directory "/opt/lampp/cgi-bin">
|
||||
SSLOptions +StdEnvVars
|
||||
</Directory>
|
||||
|
||||
# SSL Protocol Adjustments:
|
||||
# The safe and default but still SSL/TLS standard compliant shutdown
|
||||
# approach is that mod_ssl sends the close notify alert but doesn't wait for
|
||||
# the close notify alert from client. When you need a different shutdown
|
||||
# approach you can use one of the following variables:
|
||||
# o ssl-unclean-shutdown:
|
||||
# This forces an unclean shutdown when the connection is closed, i.e. no
|
||||
# SSL close notify alert is sent or allowed to be received. This violates
|
||||
# the SSL/TLS standard but is needed for some brain-dead browsers. Use
|
||||
# this when you receive I/O errors because of the standard approach where
|
||||
# mod_ssl sends the close notify alert.
|
||||
# o ssl-accurate-shutdown:
|
||||
# This forces an accurate shutdown when the connection is closed, i.e. a
|
||||
# SSL close notify alert is send and mod_ssl waits for the close notify
|
||||
# alert of the client. This is 100% SSL/TLS standard compliant, but in
|
||||
# practice often causes hanging connections with brain-dead browsers. Use
|
||||
# this only for browsers where you know that their SSL implementation
|
||||
# works correctly.
|
||||
# Notice: Most problems of broken clients are also related to the HTTP
|
||||
# keep-alive facility, so you usually additionally want to disable
|
||||
# keep-alive for those clients, too. Use variable "nokeepalive" for this.
|
||||
# Similarly, one has to force some clients to use HTTP/1.0 to workaround
|
||||
# their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and
|
||||
# "force-response-1.0" for this.
|
||||
BrowserMatch "MSIE [2-5]" \
|
||||
nokeepalive ssl-unclean-shutdown \
|
||||
downgrade-1.0 force-response-1.0
|
||||
|
||||
# Per-Server Logging:
|
||||
# The home of a custom SSL log file. Use this when you want a
|
||||
# compact non-error SSL logfile on a virtual host basis.
|
||||
CustomLog "/opt/lampp/logs/ssl_request_log" \
|
||||
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
|
||||
|
||||
</VirtualHost>
|
21
xampp/extra/httpd-userdir.conf
Normal file
21
xampp/extra/httpd-userdir.conf
Normal file
|
@ -0,0 +1,21 @@
|
|||
# Settings for user home directories
|
||||
#
|
||||
# Required module: mod_authz_core, mod_authz_host, mod_userdir
|
||||
|
||||
#
|
||||
# UserDir: The name of the directory that is appended onto a user's home
|
||||
# directory if a ~user request is received. Note that you must also set
|
||||
# the default access control for these directories, as in the example below.
|
||||
#
|
||||
#UserDir Sites
|
||||
|
||||
#
|
||||
# Control access to UserDir directories. The following is an example
|
||||
# for a site where these directories are restricted to read-only.
|
||||
#
|
||||
<Directory "/home/*/Sites">
|
||||
AllowOverride FileInfo AuthConfig Limit Indexes
|
||||
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
|
||||
Require method GET POST OPTIONS
|
||||
</Directory>
|
||||
|
30
xampp/extra/httpd-vhosts.conf
Normal file
30
xampp/extra/httpd-vhosts.conf
Normal file
|
@ -0,0 +1,30 @@
|
|||
# Virtual Hosts
|
||||
#
|
||||
# Required modules: mod_log_config
|
||||
|
||||
# If you want to maintain multiple domains/hostnames on your
|
||||
# machine you can setup VirtualHost containers for them. Most configurations
|
||||
# use only name-based virtual hosts so the server doesn't need to worry about
|
||||
# IP addresses. This is indicated by the asterisks in the directives below.
|
||||
#
|
||||
# Please see the documentation at
|
||||
# <URL:http://httpd.apache.org/docs/2.4/vhosts/>
|
||||
# for further details before you try to setup virtual hosts.
|
||||
#
|
||||
# You may use the command line option '-S' to verify your virtual host
|
||||
# configuration.
|
||||
|
||||
#
|
||||
# VirtualHost example:
|
||||
# Almost any Apache directive may go into a VirtualHost container.
|
||||
# The first VirtualHost section is used for all requests that do not
|
||||
# match a ServerName or ServerAlias in any <VirtualHost> block.
|
||||
#
|
||||
<VirtualHost *:80>
|
||||
ServerName test.local
|
||||
ServerAlias *.local
|
||||
VirtualDocumentRoot /home/jonathan/Sites/%-2/public_html
|
||||
CustomLog /home/jonathan/Sites/access.log vhost_combined
|
||||
ErrorLog /home/jonathan/Sites/error.log
|
||||
</VirtualHost>
|
||||
|
58
xampp/extra/httpd-xampp.conf
Normal file
58
xampp/extra/httpd-xampp.conf
Normal file
|
@ -0,0 +1,58 @@
|
|||
#<IfDefine PHP4>
|
||||
#LoadModule php4_module modules/libphp4.so
|
||||
#</IfDefine>
|
||||
#<IfDefine PHP7>
|
||||
#LoadModule php7_module modules/libphp7.so
|
||||
#</IfDefine>
|
||||
|
||||
# We will enable it by default
|
||||
#<IfDefine PHP>
|
||||
LoadModule php7_module modules/libphp7.so
|
||||
#</IfDefine>
|
||||
|
||||
LoadModule perl_module modules/mod_perl.so
|
||||
|
||||
Alias /phpmyadmin "/opt/lampp/phpmyadmin"
|
||||
Alias /phpsqliteadmin "/opt/lampp/phpsqliteadmin"
|
||||
|
||||
# since XAMPP 1.4.3
|
||||
<Directory "/opt/lampp/phpmyadmin">
|
||||
AllowOverride AuthConfig Limit
|
||||
Require local
|
||||
ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
|
||||
</Directory>
|
||||
|
||||
<Directory "/opt/lampp/phpsqliteadmin">
|
||||
AllowOverride AuthConfig Limit
|
||||
Require local
|
||||
ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
|
||||
</Directory>
|
||||
|
||||
# since LAMPP 1.0RC1
|
||||
AddType application/x-httpd-php .php .php3 .php4
|
||||
|
||||
XBitHack on
|
||||
|
||||
# since 0.9.8 we've mod_perl
|
||||
<IfModule mod_perl.c>
|
||||
AddHandler perl-script .pl
|
||||
PerlHandler ModPerl::PerlRunPrefork
|
||||
PerlOptions +ParseHeaders
|
||||
PerlSendHeader On
|
||||
</IfModule>
|
||||
|
||||
# demo for mod_perl responsehandler
|
||||
#PerlModule Apache::CurrentTime
|
||||
#<Location /time>
|
||||
# SetHandler modperl
|
||||
# PerlResponseHandler Apache::CurrentTime
|
||||
#</Location>
|
||||
|
||||
# AcceptMutex sysvsem is default but on some systems we need this
|
||||
# thanks to jeff ort for this hint
|
||||
#AcceptMutex flock
|
||||
#LockFile /opt/lampp/logs/accept.lock
|
||||
|
||||
# this makes mod_dbd happy - oswald, 02aug06
|
||||
# mod_dbd doesn't work in Apache 2.2.3: getting always heaps of "glibc detected *** corrupted double-linked list" on shutdown - oswald, 10sep06
|
||||
#DBDriver sqlite3
|
90
xampp/extra/proxy-html.conf
Normal file
90
xampp/extra/proxy-html.conf
Normal file
|
@ -0,0 +1,90 @@
|
|||
# Configuration example.
|
||||
#
|
||||
# For detailed information about these directives see
|
||||
# <URL:http://httpd.apache.org/docs/2.4/mod/mod_proxy_html.html>
|
||||
# and for mod_xml2enc see
|
||||
# <URL:http://httpd.apache.org/docs/2.4/mod/mod_xml2enc.html>
|
||||
#
|
||||
# First, to load the module with its prerequisites. Note: mod_xml2enc
|
||||
# is not always necessary, but without it mod_proxy_html is likely to
|
||||
# mangle pages in encodings other than ASCII or Unicode (utf-8).
|
||||
#
|
||||
# For Unix-family systems:
|
||||
# LoadFile /usr/lib/libxml2.so
|
||||
# LoadModule proxy_html_module modules/mod_proxy_html.so
|
||||
# LoadModule xml2enc_module modules/mod_xml2enc.so
|
||||
#
|
||||
# For Windows (I don't know if there's a standard path for the libraries)
|
||||
# LoadFile C:/path/zlib.dll
|
||||
# LoadFile C:/path/iconv.dll
|
||||
# LoadFile C:/path/libxml2.dll
|
||||
# LoadModule proxy_html_module modules/mod_proxy_html.so
|
||||
# LoadModule xml2enc_module modules/mod_xml2enc.so
|
||||
#
|
||||
# All knowledge of HTML links has been removed from the mod_proxy_html
|
||||
# code itself, and is instead read from httpd.conf (or included file)
|
||||
# at server startup. So you MUST declare it. This will normally be
|
||||
# at top level, but can also be used in a <Location>.
|
||||
#
|
||||
# Here's the declaration for W3C HTML 4.01 and XHTML 1.0
|
||||
|
||||
ProxyHTMLLinks a href
|
||||
ProxyHTMLLinks area href
|
||||
ProxyHTMLLinks link href
|
||||
ProxyHTMLLinks img src longdesc usemap
|
||||
ProxyHTMLLinks object classid codebase data usemap
|
||||
ProxyHTMLLinks q cite
|
||||
ProxyHTMLLinks blockquote cite
|
||||
ProxyHTMLLinks ins cite
|
||||
ProxyHTMLLinks del cite
|
||||
ProxyHTMLLinks form action
|
||||
ProxyHTMLLinks input src usemap
|
||||
ProxyHTMLLinks head profile
|
||||
ProxyHTMLLinks base href
|
||||
ProxyHTMLLinks script src for
|
||||
|
||||
# To support scripting events (with ProxyHTMLExtended On),
|
||||
# you'll need to declare them too.
|
||||
|
||||
ProxyHTMLEvents onclick ondblclick onmousedown onmouseup \
|
||||
onmouseover onmousemove onmouseout onkeypress \
|
||||
onkeydown onkeyup onfocus onblur onload \
|
||||
onunload onsubmit onreset onselect onchange
|
||||
|
||||
# If you need to support legacy (pre-1998, aka "transitional") HTML or XHTML,
|
||||
# you'll need to uncomment the following deprecated link attributes.
|
||||
# Note that these are enabled in earlier mod_proxy_html versions
|
||||
#
|
||||
# ProxyHTMLLinks frame src longdesc
|
||||
# ProxyHTMLLinks iframe src longdesc
|
||||
# ProxyHTMLLinks body background
|
||||
# ProxyHTMLLinks applet codebase
|
||||
#
|
||||
# If you're dealing with proprietary HTML variants,
|
||||
# declare your own URL attributes here as required.
|
||||
#
|
||||
# ProxyHTMLLinks myelement myattr otherattr
|
||||
#
|
||||
###########
|
||||
# EXAMPLE #
|
||||
###########
|
||||
#
|
||||
# To define the URL /my-gateway/ as a gateway to an appserver with address
|
||||
# http://some.app.intranet/ on a private network, after loading the
|
||||
# modules and including this configuration file:
|
||||
#
|
||||
# ProxyRequests Off <-- this is an important security setting
|
||||
# ProxyPass /my-gateway/ http://some.app.intranet/
|
||||
# <Location /my-gateway/>
|
||||
# ProxyPassReverse /
|
||||
# ProxyHTMLEnable On
|
||||
# ProxyHTMLURLMap http://some.app.intranet/ /my-gateway/
|
||||
# ProxyHTMLURLMap / /my-gateway/
|
||||
# </Location>
|
||||
#
|
||||
# Many (though not all) real-life setups are more complex.
|
||||
#
|
||||
# See the documentation at
|
||||
# http://apache.webthing.com/mod_proxy_html/
|
||||
# and the tutorial at
|
||||
# http://www.apachetutor.org/admin/reverseproxies
|
525
xampp/httpd.conf
Normal file
525
xampp/httpd.conf
Normal file
|
@ -0,0 +1,525 @@
|
|||
#
|
||||
# This is the main Apache HTTP server configuration file. It contains the
|
||||
# configuration directives that give the server its instructions.
|
||||
# See <URL:http://httpd.apache.org/docs/trunk/> for detailed information.
|
||||
# In particular, see
|
||||
# <URL:http://httpd.apache.org/docs/trunk/mod/directives.html>
|
||||
# for a discussion of each configuration directive.
|
||||
#
|
||||
# Do NOT simply read the instructions in here without understanding
|
||||
# what they do. They're here only as hints or reminders. If you are unsure
|
||||
# consult the online docs. You have been warned.
|
||||
#
|
||||
# Configuration and logfile names: If the filenames you specify for many
|
||||
# of the server's control files begin with "/" (or "drive:/" for Win32), the
|
||||
# server will use that explicit path. If the filenames do *not* begin
|
||||
# with "/", the value of ServerRoot is prepended -- so 'log/access_log'
|
||||
# with ServerRoot set to '/www' will be interpreted by the
|
||||
# server as '/www/log/access_log', where as '/log/access_log' will be
|
||||
# interpreted as '/log/access_log'.
|
||||
|
||||
#
|
||||
# ServerRoot: The top of the directory tree under which the server's
|
||||
# configuration, error, and log files are kept.
|
||||
#
|
||||
# Do not add a slash at the end of the directory path. If you point
|
||||
# ServerRoot at a non-local disk, be sure to specify a local disk on the
|
||||
# Mutex directive, if file-based mutexes are used. If you wish to share the
|
||||
# same ServerRoot for multiple httpd daemons, you will need to change at
|
||||
# least PidFile.
|
||||
#
|
||||
ServerRoot "/opt/lampp"
|
||||
|
||||
#
|
||||
# Mutex: Allows you to set the mutex mechanism and mutex file directory
|
||||
# for individual mutexes, or change the global defaults
|
||||
#
|
||||
# Uncomment and change the directory if mutexes are file-based and the default
|
||||
# mutex file directory is not on a local disk or is not appropriate for some
|
||||
# other reason.
|
||||
#
|
||||
# Mutex default:logs
|
||||
|
||||
#
|
||||
# Listen: Allows you to bind Apache to specific IP addresses and/or
|
||||
# ports, instead of the default. See also the <VirtualHost>
|
||||
# directive.
|
||||
#
|
||||
# Change this to Listen on specific IP addresses as shown below to
|
||||
# prevent Apache from glomming onto all bound IP addresses.
|
||||
#
|
||||
#Listen 12.34.56.78:80
|
||||
Listen 80
|
||||
|
||||
#
|
||||
# Dynamic Shared Object (DSO) Support
|
||||
#
|
||||
# To be able to use the functionality of a module which was built as a DSO you
|
||||
# have to place corresponding `LoadModule' lines at this location so the
|
||||
# directives contained in it are actually available _before_ they are used.
|
||||
# Statically compiled modules (those listed by `httpd -l') do not need
|
||||
# to be loaded here.
|
||||
#
|
||||
# Example:
|
||||
# LoadModule foo_module modules/mod_foo.so
|
||||
#
|
||||
LoadModule authn_file_module modules/mod_authn_file.so
|
||||
LoadModule authn_dbm_module modules/mod_authn_dbm.so
|
||||
LoadModule authn_anon_module modules/mod_authn_anon.so
|
||||
LoadModule authn_dbd_module modules/mod_authn_dbd.so
|
||||
LoadModule authn_socache_module modules/mod_authn_socache.so
|
||||
LoadModule authn_core_module modules/mod_authn_core.so
|
||||
LoadModule authz_host_module modules/mod_authz_host.so
|
||||
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
|
||||
LoadModule authz_user_module modules/mod_authz_user.so
|
||||
LoadModule authz_dbm_module modules/mod_authz_dbm.so
|
||||
LoadModule authz_owner_module modules/mod_authz_owner.so
|
||||
LoadModule authz_dbd_module modules/mod_authz_dbd.so
|
||||
LoadModule authz_core_module modules/mod_authz_core.so
|
||||
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
|
||||
LoadModule access_compat_module modules/mod_access_compat.so
|
||||
LoadModule auth_basic_module modules/mod_auth_basic.so
|
||||
LoadModule auth_form_module modules/mod_auth_form.so
|
||||
LoadModule auth_digest_module modules/mod_auth_digest.so
|
||||
LoadModule allowmethods_module modules/mod_allowmethods.so
|
||||
LoadModule file_cache_module modules/mod_file_cache.so
|
||||
LoadModule cache_module modules/mod_cache.so
|
||||
LoadModule cache_disk_module modules/mod_cache_disk.so
|
||||
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
|
||||
LoadModule socache_dbm_module modules/mod_socache_dbm.so
|
||||
LoadModule socache_memcache_module modules/mod_socache_memcache.so
|
||||
LoadModule dbd_module modules/mod_dbd.so
|
||||
LoadModule bucketeer_module modules/mod_bucketeer.so
|
||||
LoadModule dumpio_module modules/mod_dumpio.so
|
||||
LoadModule echo_module modules/mod_echo.so
|
||||
LoadModule case_filter_module modules/mod_case_filter.so
|
||||
LoadModule case_filter_in_module modules/mod_case_filter_in.so
|
||||
LoadModule buffer_module modules/mod_buffer.so
|
||||
LoadModule ratelimit_module modules/mod_ratelimit.so
|
||||
LoadModule reqtimeout_module modules/mod_reqtimeout.so
|
||||
LoadModule ext_filter_module modules/mod_ext_filter.so
|
||||
LoadModule request_module modules/mod_request.so
|
||||
LoadModule include_module modules/mod_include.so
|
||||
LoadModule filter_module modules/mod_filter.so
|
||||
LoadModule substitute_module modules/mod_substitute.so
|
||||
LoadModule sed_module modules/mod_sed.so
|
||||
LoadModule charset_lite_module modules/mod_charset_lite.so
|
||||
LoadModule deflate_module modules/mod_deflate.so
|
||||
LoadModule mime_module modules/mod_mime.so
|
||||
LoadModule ldap_module modules/mod_ldap.so
|
||||
LoadModule log_config_module modules/mod_log_config.so
|
||||
LoadModule log_debug_module modules/mod_log_debug.so
|
||||
LoadModule logio_module modules/mod_logio.so
|
||||
LoadModule env_module modules/mod_env.so
|
||||
LoadModule mime_magic_module modules/mod_mime_magic.so
|
||||
LoadModule cern_meta_module modules/mod_cern_meta.so
|
||||
LoadModule expires_module modules/mod_expires.so
|
||||
LoadModule headers_module modules/mod_headers.so
|
||||
LoadModule usertrack_module modules/mod_usertrack.so
|
||||
LoadModule unique_id_module modules/mod_unique_id.so
|
||||
LoadModule setenvif_module modules/mod_setenvif.so
|
||||
LoadModule version_module modules/mod_version.so
|
||||
LoadModule remoteip_module modules/mod_remoteip.so
|
||||
LoadModule proxy_module modules/mod_proxy.so
|
||||
LoadModule proxy_connect_module modules/mod_proxy_connect.so
|
||||
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
|
||||
LoadModule proxy_http_module modules/mod_proxy_http.so
|
||||
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
|
||||
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
|
||||
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
|
||||
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
|
||||
LoadModule proxy_express_module modules/mod_proxy_express.so
|
||||
LoadModule session_module modules/mod_session.so
|
||||
LoadModule session_cookie_module modules/mod_session_cookie.so
|
||||
LoadModule session_dbd_module modules/mod_session_dbd.so
|
||||
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
|
||||
LoadModule ssl_module modules/mod_ssl.so
|
||||
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
|
||||
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
|
||||
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
|
||||
LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
|
||||
LoadModule unixd_module modules/mod_unixd.so
|
||||
LoadModule dav_module modules/mod_dav.so
|
||||
LoadModule status_module modules/mod_status.so
|
||||
LoadModule autoindex_module modules/mod_autoindex.so
|
||||
LoadModule info_module modules/mod_info.so
|
||||
LoadModule suexec_module modules/mod_suexec.so
|
||||
LoadModule cgi_module modules/mod_cgi.so
|
||||
LoadModule cgid_module modules/mod_cgid.so
|
||||
LoadModule dav_fs_module modules/mod_dav_fs.so
|
||||
LoadModule vhost_alias_module modules/mod_vhost_alias.so
|
||||
LoadModule negotiation_module modules/mod_negotiation.so
|
||||
LoadModule dir_module modules/mod_dir.so
|
||||
LoadModule actions_module modules/mod_actions.so
|
||||
LoadModule speling_module modules/mod_speling.so
|
||||
LoadModule userdir_module modules/mod_userdir.so
|
||||
LoadModule alias_module modules/mod_alias.so
|
||||
LoadModule rewrite_module modules/mod_rewrite.so
|
||||
|
||||
<IfDefine JUSTTOMAKEAPXSHAPPY>
|
||||
LoadModule php4_module modules/libphp4.so
|
||||
LoadModule php5_module modules/libphp5.so
|
||||
</IfDefine>
|
||||
|
||||
<IfModule unixd_module>
|
||||
#
|
||||
# If you wish httpd to run as a different user or group, you must run
|
||||
# httpd as root initially and it will switch.
|
||||
#
|
||||
# User/Group: The name (or #number) of the user/group to run httpd as.
|
||||
# It is usually good practice to create a dedicated user and group for
|
||||
# running httpd, as with most system services.
|
||||
#
|
||||
User http
|
||||
Group http
|
||||
</IfModule>
|
||||
|
||||
# 'Main' server configuration
|
||||
#
|
||||
# The directives in this section set up the values used by the 'main'
|
||||
# server, which responds to any requests that aren't handled by a
|
||||
# <VirtualHost> definition. These values also provide defaults for
|
||||
# any <VirtualHost> containers you may define later in the file.
|
||||
#
|
||||
# All of these directives may appear inside <VirtualHost> containers,
|
||||
# in which case these default settings will be overridden for the
|
||||
# virtual host being defined.
|
||||
#
|
||||
|
||||
#
|
||||
# ServerAdmin: Your address, where problems with the server should be
|
||||
# e-mailed. This address appears on some server-generated pages, such
|
||||
# as error documents. e.g. admin@your-domain.com
|
||||
#
|
||||
ServerAdmin you@example.com
|
||||
|
||||
#
|
||||
# ServerName gives the name and port that the server uses to identify itself.
|
||||
# This can often be determined automatically, but we recommend you specify
|
||||
# it explicitly to prevent problems during startup.
|
||||
#
|
||||
# If your host doesn't have a registered DNS name, enter its IP address here.
|
||||
#
|
||||
#ServerName www.example.com:@@Port@@
|
||||
# XAMPP
|
||||
ServerName localhost
|
||||
|
||||
#
|
||||
# Deny access to the entirety of your server's filesystem. You must
|
||||
# explicitly permit access to web content directories in other
|
||||
# <Directory> blocks below.
|
||||
#
|
||||
<Directory />
|
||||
AllowOverride none
|
||||
Require all denied
|
||||
</Directory>
|
||||
|
||||
#
|
||||
# Note that from this point forward you must specifically allow
|
||||
# particular features to be enabled - so if something's not working as
|
||||
# you might expect, make sure that you have specifically enabled it
|
||||
# below.
|
||||
#
|
||||
|
||||
#
|
||||
# DocumentRoot: The directory out of which you will serve your
|
||||
# documents. By default, all requests are taken from this directory, but
|
||||
# symbolic links and aliases may be used to point to other locations.
|
||||
#
|
||||
DocumentRoot "/opt/lampp/htdocs"
|
||||
<Directory "/opt/lampp/htdocs">
|
||||
#
|
||||
# Possible values for the Options directive are "None", "All",
|
||||
# or any combination of:
|
||||
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
|
||||
#
|
||||
# Note that "MultiViews" must be named *explicitly* --- "Options All"
|
||||
# doesn't give it to you.
|
||||
#
|
||||
# The Options directive is both complicated and important. Please see
|
||||
# http://httpd.apache.org/docs/trunk/mod/core.html#options
|
||||
# for more information.
|
||||
#
|
||||
#Options Indexes FollowSymLinks
|
||||
# XAMPP
|
||||
Options Indexes FollowSymLinks ExecCGI Includes
|
||||
|
||||
#
|
||||
# AllowOverride controls what directives may be placed in .htaccess files.
|
||||
# It can be "All", "None", or any combination of the keywords:
|
||||
# Options FileInfo AuthConfig Limit
|
||||
#
|
||||
#AllowOverride None
|
||||
# since XAMPP 1.4:
|
||||
AllowOverride All
|
||||
|
||||
#
|
||||
# Controls who can get stuff from this server.
|
||||
#
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
#
|
||||
# DirectoryIndex: sets the file that Apache will serve if a directory
|
||||
# is requested.
|
||||
#
|
||||
<IfModule dir_module>
|
||||
#DirectoryIndex index.html
|
||||
# XAMPP
|
||||
DirectoryIndex index.html index.html.var index.php index.php3 index.php4
|
||||
</IfModule>
|
||||
|
||||
#
|
||||
# The following lines prevent .htaccess and .htpasswd files from being
|
||||
# viewed by Web clients.
|
||||
#
|
||||
<Files ".ht*">
|
||||
Require all denied
|
||||
</Files>
|
||||
|
||||
#
|
||||
# ErrorLog: The location of the error log file.
|
||||
# If you do not specify an ErrorLog directive within a <VirtualHost>
|
||||
# container, error messages relating to that virtual host will be
|
||||
# logged here. If you *do* define an error logfile for a <VirtualHost>
|
||||
# container, that host's errors will be logged there and not here.
|
||||
#
|
||||
ErrorLog "logs/error_log"
|
||||
|
||||
#
|
||||
# LogLevel: Control the number of messages logged to the error_log.
|
||||
# Possible values include: debug, info, notice, warn, error, crit,
|
||||
# alert, emerg.
|
||||
#
|
||||
LogLevel warn
|
||||
|
||||
<IfModule log_config_module>
|
||||
#
|
||||
# The following directives define some format nicknames for use with
|
||||
# a CustomLog directive (see below).
|
||||
#
|
||||
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
|
||||
LogFormat "%h %l %u %t \"%r\" %>s %b" common
|
||||
|
||||
<IfModule logio_module>
|
||||
# You need to enable mod_logio.c to use %I and %O
|
||||
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
|
||||
</IfModule>
|
||||
|
||||
#
|
||||
# The location and format of the access logfile (Common Logfile Format).
|
||||
# If you do not define any access logfiles within a <VirtualHost>
|
||||
# container, they will be logged here. Contrariwise, if you *do*
|
||||
# define per-<VirtualHost> access logfiles, transactions will be
|
||||
# logged therein and *not* in this file.
|
||||
#
|
||||
CustomLog "logs/access_log" common
|
||||
|
||||
#
|
||||
# If you prefer a logfile with access, agent, and referer information
|
||||
# (Combined Logfile Format) you can use the following directive.
|
||||
#
|
||||
#CustomLog "logs/access_log" combined
|
||||
</IfModule>
|
||||
|
||||
<IfModule alias_module>
|
||||
#
|
||||
# Redirect: Allows you to tell clients about documents that used to
|
||||
# exist in your server's namespace, but do not anymore. The client
|
||||
# will make a new request for the document at its new location.
|
||||
# Example:
|
||||
# Redirect permanent /foo http://www.example.com/bar
|
||||
|
||||
#
|
||||
# Alias: Maps web paths into filesystem paths and is used to
|
||||
# access content that does not live under the DocumentRoot.
|
||||
# Example:
|
||||
# Alias /webpath /full/filesystem/path
|
||||
#
|
||||
# If you include a trailing / on /webpath then the server will
|
||||
# require it to be present in the URL. You will also likely
|
||||
# need to provide a <Directory> section to allow access to
|
||||
# the filesystem path.
|
||||
|
||||
#
|
||||
# ScriptAlias: This controls which directories contain server scripts.
|
||||
# ScriptAliases are essentially the same as Aliases, except that
|
||||
# documents in the target directory are treated as applications and
|
||||
# run by the server when requested rather than as documents sent to the
|
||||
# client. The same rules about trailing "/" apply to ScriptAlias
|
||||
# directives as to Alias.
|
||||
#
|
||||
ScriptAlias /cgi-bin/ "/opt/lampp/cgi-bin/"
|
||||
|
||||
Alias /Sites /home/jonathan/Sites
|
||||
</IfModule>
|
||||
|
||||
<IfModule cgid_module>
|
||||
#
|
||||
# ScriptSock: On threaded servers, designate the path to the UNIX
|
||||
# socket used to communicate with the CGI daemon of mod_cgid.
|
||||
#
|
||||
#Scriptsock logs/cgisock
|
||||
</IfModule>
|
||||
|
||||
#
|
||||
# "/opt/lampp/cgi-bin" should be changed to whatever your ScriptAliased
|
||||
# CGI directory exists, if you have that configured.
|
||||
#
|
||||
<Directory "/opt/lampp/cgi-bin">
|
||||
AllowOverride None
|
||||
Options None
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
<IfModule mime_module>
|
||||
#
|
||||
# TypesConfig points to the file containing the list of mappings from
|
||||
# filename extension to MIME-type.
|
||||
#
|
||||
TypesConfig etc/mime.types
|
||||
|
||||
#
|
||||
# AddType allows you to add to or override the MIME configuration
|
||||
# file specified in TypesConfig for specific file types.
|
||||
#
|
||||
#AddType application/x-gzip .tgz
|
||||
#
|
||||
# AddEncoding allows you to have certain browsers uncompress
|
||||
# information on the fly. Note: Not all browsers support this.
|
||||
#
|
||||
#AddEncoding x-compress .Z
|
||||
#AddEncoding x-gzip .gz .tgz
|
||||
#
|
||||
# If the AddEncoding directives above are commented-out, then you
|
||||
# probably should define those extensions to indicate media types:
|
||||
#
|
||||
AddType application/x-compress .Z
|
||||
AddType application/x-gzip .gz .tgz
|
||||
|
||||
#
|
||||
# AddHandler allows you to map certain file extensions to "handlers":
|
||||
# actions unrelated to filetype. These can be either built into the server
|
||||
# or added with the Action directive (see below)
|
||||
#
|
||||
# To use CGI scripts outside of ScriptAliased directories:
|
||||
# (You will also need to add "ExecCGI" to the "Options" directive.)
|
||||
#
|
||||
#AddHandler cgi-script .cgi
|
||||
# XAMPP, since LAMPP 0.9.8:
|
||||
AddHandler cgi-script .cgi .pl
|
||||
|
||||
# For type maps (negotiated resources):
|
||||
#AddHandler type-map var
|
||||
|
||||
#
|
||||
# Filters allow you to process content before it is sent to the client.
|
||||
#
|
||||
# To parse .shtml files for server-side includes (SSI):
|
||||
# (You will also need to add "Includes" to the "Options" directive.)
|
||||
#
|
||||
# XAMPP
|
||||
AddType text/html .shtml
|
||||
AddOutputFilter INCLUDES .shtml
|
||||
</IfModule>
|
||||
|
||||
#
|
||||
# The mod_mime_magic module allows the server to use various hints from the
|
||||
# contents of the file itself to determine its type. The MIMEMagicFile
|
||||
# directive tells the module where the hint definitions are located.
|
||||
#
|
||||
#MIMEMagicFile etc/magic
|
||||
|
||||
#
|
||||
# Customizable error responses come in three flavors:
|
||||
# 1) plain text 2) local redirects 3) external redirects
|
||||
#
|
||||
# Some examples:
|
||||
#ErrorDocument 500 "The server made a boo boo."
|
||||
#ErrorDocument 404 /missing.html
|
||||
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
|
||||
#ErrorDocument 402 http://www.example.com/subscription_info.html
|
||||
#
|
||||
|
||||
#
|
||||
# MaxRanges: Maximum number of Ranges in a request before
|
||||
# returning the entire resource, or one of the special
|
||||
# values 'default', 'none' or 'unlimited'.
|
||||
# Default setting is to accept 200 Ranges.
|
||||
#MaxRanges unlimited
|
||||
|
||||
#
|
||||
# EnableMMAP and EnableSendfile: On systems that support it,
|
||||
# memory-mapping or the sendfile syscall may be used to deliver
|
||||
# files. This usually improves server performance, but must
|
||||
# be turned off when serving from networked-mounted
|
||||
# filesystems or if support for these functions is otherwise
|
||||
# broken on your system.
|
||||
# Defaults: EnableMMAP On, EnableSendfile Off
|
||||
#
|
||||
EnableMMAP off
|
||||
EnableSendfile off
|
||||
|
||||
# Supplemental configuration
|
||||
#
|
||||
# The configuration files in the etc/extra/ directory can be
|
||||
# included to add extra features or to modify the default configuration of
|
||||
# the server, or you may simply copy their contents here and change as
|
||||
# necessary.
|
||||
|
||||
# Server-pool management (MPM specific)
|
||||
#Include etc/extra/httpd-mpm.conf
|
||||
|
||||
# Multi-language error messages
|
||||
Include etc/extra/httpd-multilang-errordoc.conf
|
||||
|
||||
# Fancy directory listings
|
||||
Include etc/extra/httpd-autoindex.conf
|
||||
|
||||
# Language settings
|
||||
#Include etc/extra/httpd-languages.conf
|
||||
|
||||
# User home directories
|
||||
Include etc/extra/httpd-userdir.conf
|
||||
|
||||
# Real-time info on requests and configuration
|
||||
#Include etc/extra/httpd-info.conf
|
||||
|
||||
# Virtual hosts
|
||||
Include etc/extra/httpd-vhosts.conf
|
||||
|
||||
# Local access to the Apache HTTP Server Manual
|
||||
#Include etc/extra/httpd-manual.conf
|
||||
|
||||
# Distributed authoring and versioning (WebDAV)
|
||||
#Include etc/extra/httpd-dav.conf
|
||||
|
||||
# Various default settings
|
||||
Include etc/extra/httpd-default.conf
|
||||
|
||||
# Configure mod_proxy_html to understand HTML4/XHTML1
|
||||
<IfModule proxy_html_module>
|
||||
Include etc/extra/proxy-html.conf
|
||||
</IfModule>
|
||||
|
||||
# Secure (SSL/TLS) connections
|
||||
<IfModule ssl_module>
|
||||
# XAMPP
|
||||
<IfDefine SSL>
|
||||
Include etc/extra/httpd-ssl.conf
|
||||
</IfDefine>
|
||||
</IfModule>
|
||||
#
|
||||
# Note: The following must must be present to support
|
||||
# starting without SSL on platforms with no /dev/random equivalent
|
||||
# but a statically compiled-in mod_ssl.
|
||||
#
|
||||
<IfModule ssl_module>
|
||||
SSLRandomSeed startup builtin
|
||||
SSLRandomSeed connect builtin
|
||||
</IfModule>
|
||||
|
||||
# XAMPP
|
||||
Include etc/extra/httpd-xampp.conf
|
||||
Include "/opt/lampp/apache2/conf/httpd.conf"
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue