mirror of
https://github.com/ItsDrike/dotfiles.git
synced 2025-04-28 05:02:26 +00:00
Home directory cleanup, backups, vim config
This commit is contained in:
parent
f194e71dda
commit
b5a357f57b
7 changed files with 101 additions and 60 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,7 +1,7 @@
|
|||
# Contains wakatime API which should remain private
|
||||
files/.wakatime.cfg
|
||||
# Backup directory will get created by script, no need to push it
|
||||
backup/
|
||||
Backups/
|
||||
# Don't include file backups
|
||||
*.bak
|
||||
# todo list
|
||||
|
|
|
@ -1,12 +1,22 @@
|
|||
from lib import Input, Print, Install, Path
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
def make_backup(backup_floder):
|
||||
def make_backup(files_dir):
|
||||
if Input.yes_no('Do you wish to create a backup of current state of your dotfiles?'):
|
||||
Print.action('Creating dotfiles backup')
|
||||
Print.err('Backup is not yet implemented')
|
||||
# TODO: Create backup
|
||||
backup_dir = str(datetime.now()).replace(' ', '--')
|
||||
current_backup_dir = os.path.join(Path.get_parent(__file__), 'Backups', backup_dir)
|
||||
Path.ensure_dirs(current_backup_dir)
|
||||
for file in Path.get_all_files(files_dir):
|
||||
from_pos = os.path.join(
|
||||
Path.get_home(), file.replace(f'{files_dir}/', ''))
|
||||
to_pos = os.path.join(
|
||||
current_backup_dir, file.replace(f'{files_dir}/', ''))
|
||||
if os.path.isfile(from_pos):
|
||||
Path.copy(from_pos, to_pos)
|
||||
|
||||
Print.action('Backup complete')
|
||||
return True
|
||||
else:
|
||||
Print.warning('Proceeding without backup')
|
||||
|
@ -59,8 +69,16 @@ def init(symlink):
|
|||
Path.get_parent(__file__), 'files')
|
||||
# Create optional backup
|
||||
make_backup(files_dir)
|
||||
files_list, dirs_list = Path.get_all_dirs_and_files(files_dir)
|
||||
|
||||
# Create all dirs
|
||||
for directory in dirs_list:
|
||||
position = os.path.join(
|
||||
Path.get_home(), directory.replace(f'{files_dir}/', ''))
|
||||
Path.ensure_dirs(position)
|
||||
|
||||
# Go through all files
|
||||
for file in Path.get_all_files(files_dir):
|
||||
for file in files_list:
|
||||
# Make personalized changes to files
|
||||
personalized_changes(file)
|
||||
# Set symlink position ($HOME/filepath)
|
||||
|
|
|
@ -41,7 +41,7 @@ alias py2='python2'
|
|||
|
||||
# Config access shortcuts
|
||||
alias cfvim='vim ~/.vimrc'
|
||||
alias cfzsh='vim ~/config/zsh/.zsh_config'
|
||||
alias cfzsh='vim ~/.config/zsh/.zsh_config'
|
||||
alias cfzshrc='vim ~/.zshrc'
|
||||
|
||||
# Replacements
|
||||
|
@ -54,6 +54,9 @@ alias tty-clock='tty-clock -Ssc' # Terminal clock screensaver
|
|||
|
||||
|
||||
# Custom aliases
|
||||
|
||||
|
||||
alias nvidia='__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia' # Run app with nvidia (on hybrid mode with optimus)
|
||||
alias fhere='find . -name' # Find file/dir from currrent dir
|
||||
alias ssh-list='ss | grep ssh' # List all SSH connections
|
||||
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
|
||||
|
@ -72,7 +75,8 @@ alias pacman-extract='pacman -Syw --cachedir .' # Extract package/es into curren
|
|||
alias mount-table='df' # Show list of all mounted devices and their mount locations
|
||||
alias swapout='sudo swapoff -a; sudo swapon -a' # Reset swap (move everything to RAM)
|
||||
alias sound_control='alsamixer' # Sound control tool in alsa_utils package
|
||||
|
||||
alias md-to-pdf='pandoc -s -o' # Convert markdown to pdf
|
||||
alias pdf-reader='mupdf' # Open pdf file
|
||||
|
||||
# If user is not root, pass all commands via sudo
|
||||
if [ $UID -ne 0 ]; then
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
# Enable colors
|
||||
autoload -U colors && colors
|
||||
|
||||
|
||||
|
||||
# Basic auto/tab complete
|
||||
autoload -U compinit
|
||||
zstyle ':completion:*' menu select
|
||||
zmodload zsh/complist
|
||||
compinit
|
||||
_comp_options+=(globdots)
|
||||
|
||||
# Setup aliases
|
||||
if [ -f ~/.config/sh/.aliases ]; then
|
||||
source ~/.config/sh/.aliases
|
||||
fi
|
||||
|
||||
# Load zsh-syntax-highlighting (should be last)
|
||||
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
|
@ -24,6 +24,12 @@ set laststatus=2 " Always show status line
|
|||
set wildmode=longest,list,full " Enable autocompletion
|
||||
set splitbelow splitright " Split in more natural way
|
||||
|
||||
" SET VIM Locations
|
||||
set undodir=$XDG_DATA_HOME/vim/undo
|
||||
set directory=$XDG_DATA_HOME/vim/swap
|
||||
set backupdir=$XDG_DATA_HOME/vim/backup
|
||||
set viminfo+='1000,n$XDG_DATA_HOME/vim/viminfo
|
||||
set runtimepath=$XDG_CONFIG_HOME/vim,$VIMRUNTIME,$XDG_CONFIG_HOME/vim/after
|
||||
|
||||
"set nomodeline " Disable as a security precaution
|
||||
"set wildmenu " Enable wildmenu
|
55
files/.zshrc
55
files/.zshrc
|
@ -1,17 +1,19 @@
|
|||
#save_aliases=$(alias -L)
|
||||
ZSH_CACHE="$HOME/.cache/zsh"
|
||||
|
||||
# History in cache directory
|
||||
HISTSIZE=10000
|
||||
SAVEHIST=10000
|
||||
HISTFILE=~/.cache/zsh/history
|
||||
HISTFILE=$ZSH_CACHE/history
|
||||
|
||||
# Move .zsh-update to $ZSH_CACHE
|
||||
[ -f ~/.zsh-update ] && mv ~/.zsh-update $ZSH_CACHE/.zsh-update
|
||||
|
||||
|
||||
|
||||
# Export oh-my-zsh location as $ZSH
|
||||
export ZSH="$HOME/.config/oh-my-zsh"
|
||||
export ZSH="/usr/share/oh-my-zsh"
|
||||
|
||||
# Set theme
|
||||
#ZSH_THEME="agnoster"
|
||||
#ZSH_THEME="bira"
|
||||
#ZSH_THEME="gnzh"
|
||||
#ZSH_THEME="rkj-repos"i
|
||||
ZSH_THEME="af-magic"
|
||||
|
||||
# How often should zsh be updated
|
||||
|
@ -23,18 +25,33 @@ ENABLE_CORRECTION="false"
|
|||
# Run oh-my-zsh
|
||||
source $ZSH/oh-my-zsh.sh
|
||||
|
||||
# Load plugins
|
||||
plugins=(
|
||||
git
|
||||
python
|
||||
pylint
|
||||
pyenv
|
||||
autopep8
|
||||
zsh-autosuggestions
|
||||
)
|
||||
|
||||
if [ -f "$HOME/.config/sh/zsh/.zsh_config" ]; then
|
||||
source "$HOME/.config/sh/zsh/.zsh_config"
|
||||
fi
|
||||
# Enable colors
|
||||
autoload -U colors && colors
|
||||
|
||||
# Basic auto/tab complete
|
||||
autoload -U compinit
|
||||
zstyle ':completion:*' menu select
|
||||
zmodload zsh/complist
|
||||
compinit
|
||||
_comp_options+=(globdots)
|
||||
|
||||
# Setup aliases
|
||||
[ -f ~/.config/sh/.aliases ] && source ~/.config/sh/.aliases
|
||||
|
||||
# XDG Exports
|
||||
export XDG_CONFIG_HOME="$HOME/.config"
|
||||
export XDG_CACHE_HOME="$HOME/.cache"
|
||||
export XDG_DATA_HOME="$HOME/.local/share"
|
||||
|
||||
# ~/ Clean-up
|
||||
export XAUTHORITY="$XDG_RUNTIME_DIR/Xauthority" # Might break some DMs
|
||||
export WGETRC="$HOME/.config/wget/wgetrc"
|
||||
export LESSHISTFILE="-"
|
||||
export VIMINIT=":source $XDG_CONFIG_HOME"/vim/vimrc
|
||||
|
||||
|
||||
# Load zsh-syntax-highlighting (should be last)
|
||||
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||
|
||||
#neofetch --cpu_temp C --gtk2 off --gtk3 off --color_blocks on --pixterm
|
||||
|
|
43
lib.py
43
lib.py
|
@ -381,6 +381,8 @@ class Path:
|
|||
Returns:
|
||||
bool -- One of dirs exists/Single dir exists
|
||||
'''
|
||||
if type(paths) != str:
|
||||
paths = str(paths)
|
||||
paths = paths.split(' ')
|
||||
for dir_path in paths:
|
||||
dir_path = os.path.expanduser(dir_path)
|
||||
|
@ -416,7 +418,25 @@ class Path:
|
|||
files_found.append(os.path.join(subdir, file))
|
||||
return files_found
|
||||
|
||||
def ensure_dirs(path, file_end=False, absolute_path=True):
|
||||
def get_all_dirs_and_files(dir_path):
|
||||
'''Get list of all files and directories in specified directory (recursive)
|
||||
|
||||
Arguments:
|
||||
dir_path {str/Path} -- path to starting directory
|
||||
|
||||
Returns:
|
||||
list, list-- files, dirs found
|
||||
'''
|
||||
files_found = []
|
||||
dirs_found = []
|
||||
for subdir, dirs, files in os.walk(dir_path):
|
||||
for file in files:
|
||||
files_found.append(os.path.join(subdir, file))
|
||||
for directory in dirs:
|
||||
dirs_found.append(os.path.join(subdir, directory))
|
||||
return files_found, dirs_found
|
||||
|
||||
def ensure_dirs(path, absolute_path=True):
|
||||
'''Ensure existence of directories (usually before creating files in it)
|
||||
|
||||
Arguments:
|
||||
|
@ -428,17 +448,12 @@ class Path:
|
|||
'''
|
||||
if not absolute_path:
|
||||
path = pathlib.Path(path).absolute()
|
||||
parts = pathlib.Path(path).parts
|
||||
if file_end:
|
||||
parts = parts[:-1]
|
||||
cur_path = '/'
|
||||
# ignore first element (it is root (/), which was specified earlier)
|
||||
parts = parts[1:]
|
||||
for part in parts:
|
||||
cur_path = os.path.join(cur_path, part)
|
||||
if not Path.check_dir_exists(cur_path):
|
||||
Print.comment(f'Creating directory {cur_path}')
|
||||
os.mkdir(cur_path)
|
||||
if os.path.isfile(path):
|
||||
path = Path.get_parent(path)
|
||||
|
||||
if not Path.check_dir_exists(path):
|
||||
Command.execute(f'mkdir -p {path}')
|
||||
Print.comment(f'Creating directory {path}')
|
||||
|
||||
def get_home():
|
||||
'''Get home path
|
||||
|
@ -455,7 +470,7 @@ class Path:
|
|||
symlink_pointer {str} -- path where symlink should be pointing
|
||||
path {str} -- path in which the symlink should be created
|
||||
'''
|
||||
Path.ensure_dirs(path, file_end=True)
|
||||
Path.ensure_dirs(path)
|
||||
Command.execute(f'ln -sf {symlink_pointer} {path}')
|
||||
Print.comment(f'Created symlink: {path} -> {symlink_pointer}')
|
||||
|
||||
|
@ -466,6 +481,6 @@ class Path:
|
|||
path {str} -- path to original file
|
||||
copied_path {str} -- path to new file
|
||||
'''
|
||||
Path.ensure_dirs(copied_path, file_end=True)
|
||||
Path.ensure_dirs(copied_path)
|
||||
Command.execute(f'cp {path} {copied_path}')
|
||||
Print.comment(f'Copied {path} to {copied_path}')
|
||||
|
|
Loading…
Add table
Reference in a new issue