initial commit

This commit is contained in:
Kendall Whitman 2025-01-12 19:54:41 -06:00
commit f637529a8d
52 changed files with 2190 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
/bash/.env
/tmux/.config/tmux/plugins/
__pycache__

2
Repos/.directory Normal file
View File

@ -0,0 +1,2 @@
[Desktop Entry]
Icon=folder-git

42
bash/.bash-prompt/main.py Normal file
View File

@ -0,0 +1,42 @@
import re
import subprocess
from utils import (
colors,
status_indicators,
)
BASH_PATH: str = fr"{colors.CYAN}{colors.BOLD}\w"
POINTER: str = f"{colors.YELLOW}-> {colors.RESET}"
def prompt() -> None:
git_status: subprocess.CompletedProcess[str] = subprocess.run(
['git', 'status'],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
)
if not git_status.stderr.strip():
git_branch: str = re.findall( r'([a-zA-Z0-9-\/()]+)', git_status.stdout.strip())[2]
for key in status_indicators.keys():
if key in git_status.stdout.strip():
color: str = status_indicators[key]['color']
icon: str = status_indicators[key]['icon']
git_branch_color: str = f"{color}({git_branch}{icon})"
print(f"{BASH_PATH} {git_branch_color} {POINTER}")
exit(0)
print(f"{BASH_PATH} {POINTER}")
exit(0)
def main():
prompt()
if __name__ == '__main__':
main()

View File

@ -0,0 +1,2 @@
from .colors import *
from .status_indicators import *

View File

@ -0,0 +1,16 @@
# ANSI color codes in bash format
def template(color_code: int) -> str:
return fr"\[\033[{color_code}m\]"
RESET = template(0)
BOLD = template(1)
RED = template(31)
GREEN = template(32)
YELLOW = template(33)
BLUE = template(34)
MAGENTA = template(35)
CYAN = template(36)
WHITE = template(37)
DEFAULT = template(39)

View File

@ -0,0 +1,29 @@
from utils import colors
from typing import Dict
status_indicators: Dict[str, Dict[str, str]] = {
'working tree clean': {
'color': colors.GREEN,
'icon': '',
},
'not staged': {
'color': colors.YELLOW,
'icon': ' *',
},
'to be committed': {
'color': colors.YELLOW,
'icon': ' +',
},
'is behind': {
'color': colors.YELLOW,
'icon': '',
},
'is ahead': {
'color': colors.YELLOW,
'icon': '',
},
'fix conflicts': {
'color': colors.RED,
'icon': '',
},
}

59
bash/.bash_aliases Normal file
View File

@ -0,0 +1,59 @@
#!/bin/bash
# General Aliases
alias ll='ls -la'
alias update='sudo apt update && sudo apt upgrade -y && flatpak update -y'
alias R='cd ~/Repos/'
# Git Config User
function gitConfigUser() {
git config user.email $1
git config user.name "Kendall Whitman"
}
alias gcp='gitConfigUser "kendall@kendallwhitman.dev"'
alias gcw='gitConfigUser "kendall.whitman@nbcuni.com"'
# Git Formatter
alias gft='python3 ~/.git-formatter/main.py'
# Git Aliases
alias ga='git add'
alias gaa='git add .'
alias gb='git branch'
alias gc='git clone'
alias gcb='git checkout -b'
alias gco='git checkout'
alias gcmsg='gft -m'
alias gd='git diff'
alias gf='git fetch'
alias gl='git pull'
alias gp='git push'
alias gpu='git push -u origin $(git branch --show-current)'
alias grs='git restore --staged'
alias gst='git status'
alias gwa='gft -i'
alias gwr='gft -r'
#NBC Aliases
alias nbc='tmuxp load phoenix ramen amp amped-up hfs omega'
alias p='cd ~/Repos/NBC/WEB.Phoenix.git/'
alias r='cd ~/Repos/NBC/nextjs-ramen.git/'
alias h='cd ~/Repos/NBC/header-footer-service.git/'
alias o='cd ~/Repos/NBC/omega-player.git/'
alias amp='cd ~/Repos/NBC/WEB.AMP.git/'
alias amped='cd ~/Repos/NBC/amped-up.git/'
# NPM Alias
alias ns='nvm use && npm start'
alias nd='nvm use && npm run dev'
# OpenRGB
alias rgb='sudo /media/kendall/1TB/AppImages/OpenRGB/OpenRGB.AppImage'
# Bash Prompt
function bashPrompt() {
PS1=$(python3 ~/.dotfiles/bash/.bash-prompt/main.py)
}
PROMPT_COMMAND=bashPrompt

View File

@ -0,0 +1,36 @@
NBC = {
'branch_format': "BRANCH_TYPE/BRANCH_ID",
'commit_format': "BRANCH_ID",
'types': {
'Feature': 'feature',
'Fix': 'fix',
'Refactor': 'refactor',
'Release': 'release',
'Documentation': 'docs',
}
}
DEFAULT = {
'branch_format': "BRANCH_TYPE(BRANCH_ID)",
'commit_format': "BRANCH_TYPE(BRANCH_ID)",
'types': {
'Feature': 'feat',
'Fix': 'fix',
'Refactor': 'refactor',
'Release': 'release',
'Documentation': 'docs',
}
}
REPO_FORMATS = {
'amped-up.git': NBC,
'nextjs-ramen.git': NBC,
'omega-player.git': DEFAULT,
'WEB.AMP.git': NBC,
'WEB.Phoenix.git': NBC,
'header-footer-service.git': NBC,
'ham-search': DEFAULT,
}
if __name__ == '__main__':
REPO_FORMATS

View File

@ -0,0 +1,98 @@
import argparse
import sys
from scripts import (
add_worktree,
remove_worktree,
add_commit,
new_branch,
)
def help_menu():
parser = argparse.ArgumentParser(
add_help=False,
description="Git Formatter",
prog="gft",
formatter_class=argparse.RawTextHelpFormatter
)
worktree_group = parser.add_argument_group('Worktree Options')
branch_group = parser.add_argument_group('Branch Options')
commit_group = parser.add_argument_group('Commit Options')
options_group = parser.add_argument_group('General Options')
worktree_group.add_argument(
'-a',
default=False,
metavar="worktree",
nargs='?',
help="Create a git worktree",
)
worktree_group.add_argument(
'-i',
default=False,
metavar="worktree",
nargs='?',
help="Create a git worktree and automatically install npm packages",
)
worktree_group.add_argument(
'-r',
default=False,
metavar="worktree",
nargs='?',
help="Remove a git worktree",
)
branch_group.add_argument(
'-b',
default=False,
metavar="branch",
nargs='?',
help="Create a branch",
)
commit_group.add_argument(
'-m',
default=False,
metavar="message",
nargs='?',
help="Commit changes with a formatted message",
)
options_group.add_argument(
'-h',
'--help',
action='help',
help='Show this help menu'
)
if len(sys.argv) == 1:
parser.print_help()
exit(0)
return parser.parse_args()
def main():
args = help_menu()
if args.a is not False:
add_worktree(args.a)
if args.i is not False:
add_worktree(args.i, True)
if args.r is not False:
remove_worktree(args.r)
if args.b is not False:
new_branch()
if args.m is not False:
add_commit(args.m)
if __name__ == '__main__':
main()

View File

@ -0,0 +1,8 @@
from .worktree import (
add_worktree,
remove_worktree,
)
from .commit import add_commit
from .branch import (
new_branch,
)

View File

@ -0,0 +1,9 @@
from utils.branch_details import branch_details
from utils.format import format_branch
from utils.git_commands import git_checkout_branch
def new_branch():
branch_type, branch_id = branch_details()
branch_name = format_branch(branch_type, branch_id)
git_checkout_branch(branch_name)

View File

@ -0,0 +1,19 @@
from utils.format import format_commit
from utils.git_commands import git_commit
from utils.messages import (
title,
instructions,
commit_instructions,
)
def add_commit(message=''):
commit_title = f"{format_commit()}: "
commit_message = message
if commit_message == '':
title("Commit Message")
instructions(commit_instructions)
commit_message = input(commit_title)
git_commit(f"{commit_title}{commit_message}")

View File

@ -0,0 +1,60 @@
import os
import subprocess
from .branch import branch_details
from utils.format import format_branch
from utils.git_commands import (
git_add_worktree,
git_remove_worktree,
)
from utils.messages import (
title,
instructions,
worktree_instructions,
)
def add_worktree(worktree=None, auto_install=False):
# Check for bare repo
try:
with open('config') as git_config:
content = ' '.join(git_config.readlines())
if 'bare = true' in content:
# Ask for worktree folder name
if worktree is None:
title('Create Worktree')
instructions(worktree_instructions)
worktree = input('Worktree Directory Name: ')
# Get branch details
branch_type, branch_id = branch_details()
# Format branch name
branch_name = format_branch(
branch_type,
branch_id,
worktree,
)
# Create worktree
git_add_worktree(worktree, branch_name)
# Install NPM packages after worktree creation
if auto_install:
os.chdir(f"./{worktree}")
subprocess.run(['/bin/bash', '-i', '-c', 'nvm use'])
subprocess.run(['npm', 'i'])
exit(0)
except Exception:
print('No worktree found')
exit(1)
def remove_worktree(worktree):
worktree_name = worktree if worktree else input('Worktree to remove: ')
git_remove_worktree(worktree_name)

View File

@ -0,0 +1,30 @@
from .repo_format import (
branch_format,
branch_types,
commit_format,
repo_format,
)
from .format import (
format_branch,
format_commit,
)
from .git_commands import (
git_add_worktree,
git_branches,
git_checkout_branch,
git_commit,
git_current_branch,
git_remove_worktree,
)
from .messages import (
title,
instructions,
worktree_instructions,
commit_instructions,
)
from .repo_name import repo_name
from .branch_details import branch_details

View File

@ -0,0 +1,24 @@
from utils.messages import (
title,
instructions,
worktree_instructions,
)
from utils.repo_format import branch_types
def branch_details():
# Ask for branch type
for idx, type in enumerate(branch_types):
print(f"[{idx + 1}] {type}")
title("Branch Types")
instructions(worktree_instructions)
branch_type: str = input('Branch Type: ')
branch_type_idx: int = int(branch_type) - 1
branch_type_value: str = list(branch_types.values())[branch_type_idx]
# Ask for branch id
branch_id: str = input('Branch ID: ').upper()
return branch_type_value, branch_id

View File

@ -0,0 +1,36 @@
import re
from .git_commands import git_current_branch
from .repo_format import (
branch_format,
commit_format,
)
def format_branch(branch_type, branch_id, worktree_name=''):
if branch_type != '' and branch_id != '':
return (
branch_format
.replace('BRANCH_TYPE', branch_type)
.replace('BRANCH_ID', branch_id)
)
if branch_type == '' and branch_id == '' and worktree_name != '':
return worktree_name
if branch_type == '' and branch_id != '':
return branch_id
return 'Error: Something went wrong'
def format_commit():
branch_list = re.findall(r'([a-zA-Z0-9-]+)', git_current_branch())
if len(branch_list) == 1:
return branch_list[0]
elif len(branch_list) > 1:
return (
commit_format
.replace('BRANCH_TYPE', branch_list[0])
.replace('BRANCH_ID', branch_list[1])
)

View File

@ -0,0 +1,53 @@
import subprocess
git_branches = subprocess.run(
['git', 'branch'],
stdout=subprocess.PIPE,
text=True,
).stdout.strip()
def git_add_worktree(worktree_name, branch_name, git_branches=git_branches):
# FIXME: This should check for the exact branch name.
# If NGAV-1000 already exists, an error is thrown when
# NGAV-100 tries to be created
existing_branch = branch_name in git_branches
subprocess.run([
'git',
'worktree',
'add',
worktree_name,
'--checkout' if existing_branch else '-b',
branch_name
])
def git_remove_worktree(worktree_name):
subprocess.run([
'git',
'worktree',
'remove',
worktree_name
])
def git_checkout_branch(branch_name):
subprocess.run([
'git',
'checkout',
'-b',
branch_name
])
def git_current_branch():
return subprocess.run(
['git', 'branch', '--show-current'],
stdout=subprocess.PIPE,
text=True,
).stdout
def git_commit(commit_message):
subprocess.run(['git', 'commit', '-m', commit_message])

View File

@ -0,0 +1,14 @@
def title(text) -> None:
border_char = '='
print(f"\n{text}\n{border_char * len(text)}")
def instructions(text) -> None:
print(f"{text}\n")
worktree_instructions = """Name the worktree directory.
This can be different than your branch name.
"""
commit_instructions = """Some great commit instructions..."""

View File

@ -0,0 +1,7 @@
from config import REPO_FORMATS
from .repo_name import repo_name
repo_format = REPO_FORMATS[repo_name()]
branch_types = repo_format['types']
branch_format = repo_format['branch_format']
commit_format = repo_format['commit_format']

View File

@ -0,0 +1,11 @@
import os
from config import REPO_FORMATS
def repo_name() -> str:
for repo in REPO_FORMATS:
if repo in os.getcwd():
return repo
print("Sorry, this repo isn't setup to use Git Formatter")
exit(1)

Binary file not shown.

Binary file not shown.

204
install.sh Normal file
View File

@ -0,0 +1,204 @@
APPS=(
barrier
cmake
curl
flatpak
g++
htop
neofetch
ninja-build
plasma-discover-backend-flatpak
ripgrep
rtorrent
scdaemon
steam
stow
tmux
tmuxp
virt-manager
xclip
)
FLATPAK_APPS=(
ch.protonmail.protonmail-bridge
com.logseq.Logseq
com.obsproject.Studio
com.protonvpn.www
com.ultimaker.cura
im.riot.Riot
org.blender.Blender
org.darktable.Darktable
org.freecadweb.FreeCAD
org.gimp.GIMP
org.inkscape.Inkscape
org.libreoffice.LibreOffice
org.mozilla.Thunderbird
org.mozilla.firefox
)
DOTFILES=(
bash
konsole
#menus
nvim
rtorrent
tmux
tmuxp
)
# Check if Snap is installed
if [ -x "$(command -v snap)" ]; then
echo "Remove Snap packages first before running this script!"
exit 1
fi
# Check for Debian installation. If yes, remove some default programs
while true; do
read -p "Is this a Debian installation? y/N: " osChoice
osChoice=$(echo "$osChoice" | tr '[:upper:]' '[:lower:]')
if [ "$osChoice" = "y" ]; then
sudo apt purge libreoffice-core libreoffice-base-core libreoffice-common libreoffice-style-breeze libreoffice-style-colibre firefox-esr gimp -y
sudo apt autoremove -y
break
elif [ "$osChoice" = "n" ]; then
break
else
echo "Invalid input. Please enter y or n."
fi
done
# Sym Link Home Folders To External Storage
while true; do
read -p "Do you want to link home folders with external storage? y/N: " storageChoice
storageChoice=$(echo "$storageChoice" | tr '[:upper:]' '[:lower:]')
sudo rm -rf ~/Public ~/Templates
if [ "$storageChoice" = "y" ]; then
read -p "Specify the path to the external storage device (full path must be used): " storagePath
sudo rm -rf ~/Documents ~/Pictures ~/Downloads
ln -s "$storagePath/Pictures/" ~/
ln -s "$storagePath/Repos/" ~/
ln -s "$storagePath/Documents/" ~/
ln -s "$storagePath/Downloads/" ~/
break
elif [ "$storageChoice" = "n" ]; then
echo "Skipping sym linking..."
cp -r ./Repos ~
break
else
echo "Invalid input. Please enter y or n."
fi
done
# Install Apt Apps
for i in "${APPS[@]}"
do
if [ -x "$(command -v $i)" ]; then
echo "$i already installed!"
else
sudo apt install $i -y
fi
done
# Add Flathub Repo
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# Install Flatpak Apps
for i in "${FLATPAK_APPS[@]}"
do
if [ -x "$(command -v $i)" ]; then
echo "$i already installed!"
else
flatpak install $i -y
fi
done
# NVM Setup
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
source ~/.bashrc
. ~/.nvm/nvm.sh
nvm install --lts
# Add Yubikey Support to bashrc
if grep -q '# Yubikey SSH Support' ~/.bashrc; then
echo "Yubikey support already added."
else
echo "
# Yubikey SSH Support
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
" >> ~/.bashrc
fi
# Link Config Files
for folder in ${DOTFILES[@]}
do
echo $folder
stow $folder --adopt
done
git restore .
# Font Install
sudo cp ./fonts/Fira_Code_Regular_Nerd_Font_Complete.ttf /usr/local/share/fonts
sudo cp ./fonts/FiraCodeNerdFont-Retina.ttf /usr/local/share/fonts
# Check if this is my profile
while true; do
read -p "Is this profile for Kendall? y/N: " profileChoice
profileChoice=$(echo "$profileChoice" | tr '[:upper:]' '[:lower:]')
if [ "$profileChoice" = "y" ]; then
# Add Profile Image
sudo rm ~/.face
cp ./profile/.face ~
# Add User To Group For Virtual Manager
sudo adduser kendall libvirt-qemu
break
elif [ "$profileChoice" = "n" ]; then
break
else
echo "Invalid input. Please enter y or n."
fi
done
# Add touchscreen scroll support to Firefox
while true; do
read -p "Does this device have a touchscreen? y/N: " touchscreenChoice
touchscreenChoice=$(echo "$touchscreenChoice" | tr '[:upper:]' '[:lower:]')
if [ "$touchscreenChoice" = "y" ]; then
sudo flatpak override --env="MOZ_USE_XINPUT2=1" org.mozilla.firefox
break
elif [ "$touchscreenChoice" = "n" ]; then
echo "Skipping touchscreen setup..."
break
else
echo "Invalid input. Please enter y or n."
fi
done
# Add filesystem override to Firefox
sudo flatpak override org.mozilla.firefox --filesystem=$HOME
# Install latest Neovim
if ! [ -x "$(command -v nvim)" ]; then
sudo apt remove gettext-base -y
sudo apt install gettext -y
source ~/.bashrc
git clone https://github.com/neovim/neovim
cd neovim
make CMAKE_BUILD_TYPE=RelWithDebInfo && cd build && cpack -G DEB && sudo dpkg -i nvim-linux64.deb
cd ~/.dotfiles/ && sudo rm -rf neovim
fi
# Install TPM
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

35
konsole/.config/konsolerc Normal file
View File

@ -0,0 +1,35 @@
[Desktop Entry]
DefaultProfile=Profile 1.profile
[General]
ConfigVersion=1
[KFileDialog Settings]
iconViewIconSize=64
[MainWindow]
1920x1080 screen: Height=554
1920x1080 screen: Width=911
1920x1080 screen: Window-Maximized=true
2 screens: Height=1041
2 screens: Width=1732
2 screens: Window-Maximized=true
2 screens: XPosition=0
2 screens: YPosition=30
2560x1440 screen: Height=690
2560x1440 screen: Width=1280
2560x1440 screen: Window-Maximized=true
2560x1440 screen: XPosition=0
2560x1440 screen: YPosition=30
3 screens: Height=900
3 screens: Width=1706
3 screens: Window-Maximized=true
DP-1=DP-1
DP-2=DP-2
DP-2 HDMI-0=DP-2
MenuBar=Disabled
State=AAAA/wAAAAD9AAAAAQAAAAAAAAAAAAAAAPwCAAAAAvsAAAAcAFMAUwBIAE0AYQBuAGEAZwBlAHIARABvAGMAawAAAAAA/////wAAARUBAAAD+wAAACIAUQB1AGkAYwBrAEMAbwBtAG0AYQBuAGQAcwBEAG8AYwBrAAAAAAD/////AAABfAEAAAMAAAeAAAAD7wAAAAQAAAAEAAAACAAAAAj8AAAAAQAAAAIAAAACAAAAFgBtAGEAaQBuAFQAbwBvAGwAQgBhAHIAAAAAAP////8AAAAAAAAAAAAAABwAcwBlAHMAcwBpAG8AbgBUAG8AbwBsAGIAYQByAAAAAAD/////AAAAAAAAAAA=
ToolBarsMovable=Disabled
[UiSettings]
ColorScheme=

View File

@ -0,0 +1,20 @@
[Appearance]
ColorScheme=Breeze
Font=FiraCode Nerd Font,11,-1,5,53,0,0,0,0,0,Retina
UseFontLineChararacters=false
[General]
Command=/bin/tmux
DimWhenInactive=false
Name=Profile 1
Parent=FALLBACK/
StartInCurrentSessionDir=false
[Scrolling]
HistoryMode=2
ScrollBarPosition=2
ScrollFullPage=false
[Terminal Features]
BellMode=3
BlinkingCursorEnabled=true

View File

@ -0,0 +1,310 @@
<!DOCTYPE Menu PUBLIC '-//freedesktop//DTD Menu 1.0//EN' 'http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd'>
<Menu>
<Menu>
<Name>Development</Name>
<Layout>
<Merge type="menus"/>
<Menuname>Translation</Menuname>
<Menuname>Web Development</Menuname>
</Layout>
<Exclude>
<Filename>org.kde.kate.desktop</Filename>
</Exclude>
<Deleted/>
</Menu>
<Menu>
<Name>Education</Name>
<Menu>
<Name>Mathematics</Name>
<Layout/>
<Exclude>
<Filename>org.libreoffice.LibreOffice.math.desktop</Filename>
</Exclude>
</Menu>
<Menu>
<Name>Science</Name>
<Layout/>
<Exclude>
<Filename>org.freecadweb.FreeCAD.desktop</Filename>
<Filename>org.libreoffice.LibreOffice.math.desktop</Filename>
</Exclude>
</Menu>
<Layout>
<Merge type="menus"/>
<Menuname>Languages</Menuname>
<Menuname>Mathematics</Menuname>
<Menuname>Miscellaneous</Menuname>
<Menuname>Science</Menuname>
<Menuname>Tools</Menuname>
</Layout>
</Menu>
<Menu>
<Name>Games</Name>
<Layout>
<Merge type="menus"/>
<Menuname>Arcade</Menuname>
<Menuname>Board</Menuname>
<Menuname>Card</Menuname>
<Menuname>Kidsgames</Menuname>
<Merge type="files"/>
<Filename>steam.desktop</Filename>
<Menuname>Logic</Menuname>
<Menuname>TacticStrategy</Menuname>
</Layout>
</Menu>
<Menu>
<Name>Graphics</Name>
<Exclude>
<Filename>org.kde.gwenview.desktop</Filename>
<Filename>display-im6.q16.desktop</Filename>
<Filename>org.kde.okular.desktop</Filename>
<Filename>org.kde.skanlite.desktop</Filename>
<Filename>org.libreoffice.LibreOffice.draw.desktop</Filename>
<Filename>org.kde.kontrast.desktop</Filename>
</Exclude>
<Layout>
<Merge type="files"/>
<Filename>org.blender.Blender.desktop</Filename>
<Filename>org.darktable.Darktable.desktop</Filename>
<Filename>org.freecadweb.FreeCAD.desktop</Filename>
<Filename>org.gimp.GIMP.desktop</Filename>
<Filename>Godot.desktop</Filename>
<Filename>org.inkscape.Inkscape.desktop</Filename>
<Separator/>
<Merge type="menus"/>
<Menuname>More</Menuname>
</Layout>
<Include>
<Filename>Godot.desktop</Filename>
</Include>
</Menu>
<Menu>
<Name>Internet</Name>
<Menu>
<Name>Terminal</Name>
<Deleted/>
</Menu>
<Exclude>
<Filename>org.kde.kdeconnect.app.desktop</Filename>
<Filename>org.kde.kdeconnect.sms.desktop</Filename>
<Filename>org.kde.kdeconnect_open.desktop</Filename>
<Filename>steam.desktop</Filename>
<Filename>remote-viewer.desktop</Filename>
<Filename>org.kde.akregator.desktop</Filename>
<Filename>org.kde.contactprintthemeeditor.desktop</Filename>
<Filename>org.kde.contactthemeeditor.desktop</Filename>
<Filename>org.kde.kmail2.desktop</Filename>
<Filename>org.kde.headerthemeeditor.desktop</Filename>
<Filename>konqbrowser.desktop</Filename>
<Filename>org.kde.ktnef.desktop</Filename>
<Filename>org.kde.pimdataexporter.desktop</Filename>
<Filename>org.kde.sieveeditor.desktop</Filename>
</Exclude>
<Include>
<Filename>ch.protonmail.protonmail-bridge.desktop</Filename>
</Include>
<Layout>
<Merge type="files"/>
<Filename>com.discordapp.Discord.desktop</Filename>
<Filename>im.riot.Riot.desktop</Filename>
<Filename>org.mozilla.firefox.desktop</Filename>
<Filename>org.kde.krdc.desktop</Filename>
<Filename>ch.protonmail.protonmail-bridge.desktop</Filename>
<Filename>com.slack.Slack.desktop</Filename>
<Filename>org.mozilla.Thunderbird.desktop</Filename>
<Separator/>
<Merge type="menus"/>
<Menuname>More</Menuname>
</Layout>
</Menu>
<Menu>
<Name>Multimedia</Name>
<Layout>
<Merge type="files"/>
<Filename>org.kde.haruna.desktop</Filename>
<Filename>pavucontrol-qt.desktop</Filename>
<Separator/>
<Merge type="menus"/>
<Menuname>More</Menuname>
</Layout>
</Menu>
<Menu>
<Name>Office</Name>
<Exclude>
<Filename>org.kde.contactprintthemeeditor.desktop</Filename>
<Filename>org.kde.contactthemeeditor.desktop</Filename>
<Filename>org.kde.kaddressbook.desktop</Filename>
<Filename>org.kde.kmail2.desktop</Filename>
<Filename>org.kde.headerthemeeditor.desktop</Filename>
<Filename>org.kde.korganizer.desktop</Filename>
<Filename>org.kde.ktnef.desktop</Filename>
<Filename>org.kde.sieveeditor.desktop</Filename>
<Filename>ch.protonmail.protonmail-bridge.desktop</Filename>
</Exclude>
<Layout>
<Merge type="files"/>
<Filename>org.libreoffice.LibreOffice.desktop</Filename>
<Filename>org.libreoffice.LibreOffice.base.desktop</Filename>
<Filename>org.libreoffice.LibreOffice.calc.desktop</Filename>
<Filename>org.libreoffice.LibreOffice.draw.desktop</Filename>
<Filename>org.libreoffice.LibreOffice.impress.desktop</Filename>
<Filename>org.libreoffice.LibreOffice.math.desktop</Filename>
<Filename>org.libreoffice.LibreOffice.writer.desktop</Filename>
<Filename>com.logseq.Logseq.desktop</Filename>
<Filename>org.kde.okular.desktop</Filename>
<Separator/>
<Merge type="menus"/>
<Menuname>More</Menuname>
</Layout>
<Include>
<Filename>com.logseq.Logseq.desktop</Filename>
</Include>
</Menu>
<Menu>
<Name>Utilities</Name>
<Menu>
<Name>Settingsmenu</Name>
<NotDeleted/>
<Layout>
<Merge type="files"/>
<Filename>im-config.desktop</Filename>
<Filename>pavucontrol-qt.desktop</Filename>
<Filename>systemsettings.desktop</Filename>
<Filename>kde_wacom_tabletfinder.desktop</Filename>
</Layout>
</Menu>
<Menu>
<Name>System</Name>
<NotDeleted/>
<Layout>
<Merge type="files"/>
<Filename>org.kde.discover.desktop</Filename>
<Filename>org.kde.dolphin.desktop</Filename>
<Filename>htop.desktop</Filename>
<Filename>org.kde.kinfocenter.desktop</Filename>
<Filename>org.kde.partitionmanager.desktop</Filename>
<Filename>org.kde.konsole.desktop</Filename>
<Filename>org.kde.ksystemlog.desktop</Filename>
<Filename>org.kde.kwalletmanager5.desktop</Filename>
<Filename>org.kde.kmenuedit.desktop</Filename>
<Filename>apport-kde.desktop</Filename>
<Merge type="menus"/>
<Menuname>ScreenSavers</Menuname>
<Filename>usb-creator-kde.desktop</Filename>
<Filename>org.kde.plasma-systemmonitor.desktop</Filename>
<Menuname>Terminal</Menuname>
<Filename>debian-uxterm.desktop</Filename>
<Filename>virt-manager.desktop</Filename>
<Filename>debian-xterm.desktop</Filename>
<Separator/>
<Menuname>More</Menuname>
</Layout>
</Menu>
<Include>
<Filename>org.kde.gwenview.desktop</Filename>
<Filename>display-im6.q16.desktop</Filename>
<Filename>org.kde.skanlite.desktop</Filename>
<Filename>remote-viewer.desktop</Filename>
<Filename>via.desktop</Filename>
</Include>
<Exclude>
<Filename>org.libreoffice.LibreOffice.draw.desktop</Filename>
<Filename>com.logseq.Logseq.desktop</Filename>
</Exclude>
<Layout>
<Merge type="files"/>
<Filename>org.kde.ark.desktop</Filename>
<Filename>barrier.desktop</Filename>
<Filename>org.kde.plasma.emojier.desktop</Filename>
<Filename>org.kde.gwenview.desktop</Filename>
<Filename>display-im6.q16.desktop</Filename>
<Filename>org.kde.kate.desktop</Filename>
<Filename>org.kde.kcalc.desktop</Filename>
<Filename>nvim.desktop</Filename>
<Filename>remote-viewer.desktop</Filename>
<Merge type="menus"/>
<Menuname>Settingsmenu</Menuname>
<Filename>org.kde.skanlite.desktop</Filename>
<Filename>org.kde.spectacle.desktop</Filename>
<Menuname>System</Menuname>
<Filename>info.desktop</Filename>
<Filename>com.ultimaker.cura.desktop</Filename>
<Menuname>XUtilities</Menuname>
<Separator/>
<Menuname>More</Menuname>
</Layout>
</Menu>
<Move>
<Old>System</Old>
<New>Utilities/System</New>
</Move>
<Move>
<Old>Settingsmenu</Old>
<New>Utilities/Settingsmenu</New>
</Move>
<Menu>
<Name>.hidden</Name>
<Include>
<Filename>org.kde.kate.desktop</Filename>
<Filename>org.freecadweb.FreeCAD.desktop</Filename>
<Filename>org.libreoffice.LibreOffice.math.desktop</Filename>
<Filename>org.kde.okular.desktop</Filename>
<Filename>org.libreoffice.LibreOffice.draw.desktop</Filename>
<Filename>org.kde.kdeconnect.app.desktop</Filename>
<Filename>org.kde.kdeconnect.sms.desktop</Filename>
<Filename>org.kde.kdeconnect_open.desktop</Filename>
<Filename>steam.desktop</Filename>
<Filename>org.kde.khelpcenter.desktop</Filename>
<Filename>org.kde.kontrast.desktop</Filename>
<Filename>org.kde.akregator.desktop</Filename>
<Filename>konqbrowser.desktop</Filename>
<Filename>org.kde.pimdataexporter.desktop</Filename>
<Filename>org.kde.contactprintthemeeditor.desktop</Filename>
<Filename>org.kde.contactthemeeditor.desktop</Filename>
<Filename>org.kde.kaddressbook.desktop</Filename>
<Filename>org.kde.kmail2.desktop</Filename>
<Filename>org.kde.headerthemeeditor.desktop</Filename>
<Filename>org.kde.korganizer.desktop</Filename>
<Filename>org.kde.ktnef.desktop</Filename>
<Filename>org.kde.sieveeditor.desktop</Filename>
</Include>
</Menu>
<Exclude>
<Filename>org.kde.khelpcenter.desktop</Filename>
</Exclude>
<Menu>
<Name>Applications</Name>
<Layout>
<Merge type="files"/>
<Filename>via.desktop</Filename>
</Layout>
<Exclude>
<Filename>via.desktop</Filename>
</Exclude>
<Deleted/>
</Menu>
<Layout>
<Merge type="menus"/>
<Menuname>Education</Menuname>
<Menuname>Games</Menuname>
<Menuname>Graphics</Menuname>
<Menuname>Internet</Menuname>
<Menuname>Multimedia</Menuname>
<Menuname>Office</Menuname>
<Menuname>Science</Menuname>
<Menuname>Utilities</Menuname>
</Layout>
<Menu>
<Name>Science</Name>
<Layout/>
<Menu>
<Name>Development</Name>
<Directory>Development.directory</Directory>
<Deleted/>
</Menu>
<Include/>
<Exclude>
<Filename>Godot.desktop</Filename>
</Exclude>
</Menu>
</Menu>

View File

@ -0,0 +1,277 @@
[ActionPlugins][0]
MiddleButton;NoModifier=org.kde.paste
RightButton;NoModifier=org.kde.contextmenu
wheel:Vertical;NoModifier=org.kde.switchdesktop
[ActionPlugins][1]
RightButton;NoModifier=org.kde.contextmenu
[Containments][1]
activityId=
formfactor=2
immutability=1
lastScreen=0
location=4
plugin=org.kde.panel
wallpaperplugin=org.kde.image
[Containments][1][Applets][19]
immutability=1
plugin=org.kde.plasma.digitalclock
[Containments][1][Applets][19][Configuration]
PreloadWeight=100
popupHeight=550
popupWidth=990
[Containments][1][Applets][19][Configuration][Appearance]
customDateFormat=dddd MMM, d
enabledCalendarPlugins=/usr/lib/x86_64-linux-gnu/qt5/plugins/plasmacalendarplugins/holidaysevents.so
use24hFormat=0
[Containments][1][Applets][19][Configuration][ConfigDialog]
DialogHeight=660
DialogWidth=880
[Containments][1][Applets][2]
immutability=1
plugin=org.kde.plasma.kickoff
[Containments][1][Applets][2][Configuration]
PreloadWeight=100
popupHeight=577
popupWidth=735
[Containments][1][Applets][2][Configuration][ConfigDialog]
DialogHeight=660
DialogWidth=880
[Containments][1][Applets][2][Configuration][Configuration/General]
showAppsByName=true
[Containments][1][Applets][2][Configuration][General]
alphaSort=true
compactMode=true
favoritesPortedToKAstats=true
systemFavorites=suspend\\,hibernate\\,reboot\\,shutdown
[Containments][1][Applets][2][Configuration][Shortcuts]
global=Alt+F1
[Containments][1][Applets][2][Shortcuts]
global=
[Containments][1][Applets][32]
immutability=1
plugin=org.kde.plasma.pager
[Containments][1][Applets][32][Configuration][ConfigDialog]
DialogHeight=660
DialogWidth=880
[Containments][1][Applets][4]
immutability=1
plugin=org.kde.plasma.icontasks
[Containments][1][Applets][4][Configuration][ConfigDialog]
DialogHeight=660
DialogWidth=880
[Containments][1][Applets][4][Configuration][General]
launchers=preferred://filemanager,file:///var/lib/flatpak/exports/share/applications/org.mozilla.firefox.desktop,file:///var/lib/flatpak/exports/share/applications/org.mozilla.Thunderbird.desktop,applications:org.kde.konsole.desktop,file:///var/lib/flatpak/exports/share/applications/im.riot.Riot.desktop,file:///var/lib/flatpak/exports/share/applications/com.slack.Slack.desktop,file:///var/lib/flatpak/exports/share/applications/com.logseq.Logseq.desktop,applications:Godot.desktop,file:///var/lib/flatpak/exports/share/applications/org.blender.Blender.desktop
[Containments][1][Applets][5]
immutability=1
plugin=org.kde.plasma.marginsseparator
[Containments][1][Applets][6]
immutability=1
plugin=org.kde.plasma.systemtray
[Containments][1][Applets][6][Configuration]
PreloadWeight=100
SystrayContainmentId=7
[Containments][1][ConfigDialog]
DialogHeight=93
DialogWidth=2560
[Containments][1][General]
AppletOrder=2;4;32;5;6;19
[Containments][100][Applets][101][Configuration]
PreloadWeight=100
popupHeight=574
popupWidth=729
[Containments][23]
ItemGeometries-2560x1440=
ItemGeometriesHorizontal=
activityId=da69c9c3-3ae2-43e4-8ff9-3d000803aa74
formfactor=0
immutability=1
lastScreen=0
location=0
plugin=org.kde.plasma.folder
wallpaperplugin=org.kde.image
[Containments][23][ConfigDialog]
DialogHeight=660
DialogWidth=880
[Containments][23][General]
ToolBoxButtonState=topcenter
ToolBoxButtonX=697
[Containments][23][Wallpaper][org.kde.image][General]
Image=/home/kendall/Pictures/Wallpapers/low-poly-planet.webp
SlidePaths=/usr/share/plasma/wallpapers/,/usr/share/wallpapers/
[Containments][33]
ItemGeometries-2560x1440=
ItemGeometriesHorizontal=
activityId=da69c9c3-3ae2-43e4-8ff9-3d000803aa74
formfactor=0
immutability=1
lastScreen=1
location=0
plugin=org.kde.plasma.folder
wallpaperplugin=org.kde.image
[Containments][33][ConfigDialog]
DialogHeight=660
DialogWidth=880
[Containments][33][Wallpaper][org.kde.image][General]
Image=/home/kendall/Pictures/Wallpapers/low-poly-planet.webp
SlidePaths=/usr/share/plasma/wallpapers/,/usr/share/wallpapers/
[Containments][34]
ItemGeometries-0x0=Applet-35:0,1104,336,80,0;Applet-36:336,1104,336,80,0;
ItemGeometries-2560x1440=Applet-35:0,1104,336,320,0;Applet-36:336,1104,336,320,0;
ItemGeometriesHorizontal=Applet-35:0,1104,336,80,0;Applet-36:336,1104,336,80,0;
activityId=da69c9c3-3ae2-43e4-8ff9-3d000803aa74
formfactor=0
immutability=1
lastScreen=2
location=0
plugin=org.kde.plasma.folder
wallpaperplugin=org.kde.image
[Containments][34][Applets][35]
immutability=1
plugin=org.kde.plasma.notes
[Containments][34][Applets][35][Configuration][General]
fontSize=10
noteId=9c7feb20-fbad-4171-bba4-92dcb46c87
[Containments][34][Applets][36]
immutability=1
plugin=org.kde.plasma.notes
[Containments][34][Applets][36][Configuration][General]
fontSize=10
noteId=d0cc9522-bccd-48ec-9571-f3d84abc60
[Containments][34][ConfigDialog]
DialogHeight=660
DialogWidth=880
[Containments][34][Wallpaper][org.kde.image][General]
Image=/home/kendall/Pictures/Wallpapers/low-poly-planet.webp
SlidePaths=/usr/share/plasma/wallpapers/,/usr/share/wallpapers/
[Containments][7]
activityId=
formfactor=2
immutability=1
lastScreen=0
location=4
plugin=org.kde.plasma.private.systemtray
popupHeight=528
popupWidth=528
wallpaperplugin=org.kde.image
[Containments][7][Applets][10][Configuration]
PreloadWeight=42
[Containments][7][Applets][11][Configuration]
PreloadWeight=42
[Containments][7][Applets][12][Configuration]
PreloadWeight=42
[Containments][7][Applets][13][Configuration]
PreloadWeight=42
[Containments][7][Applets][14][Configuration]
PreloadWeight=42
[Containments][7][Applets][15]
immutability=1
plugin=org.kde.plasma.volume
[Containments][7][Applets][15][Configuration]
PreloadWeight=100
[Containments][7][Applets][15][Configuration][General]
migrated=true
showVirtualDevices=true
[Containments][7][Applets][16][Configuration]
PreloadWeight=42
[Containments][7][Applets][17][Configuration]
PreloadWeight=42
[Containments][7][Applets][18][Configuration]
PreloadWeight=42
[Containments][7][Applets][22]
immutability=1
plugin=org.kde.plasma.networkmanagement
[Containments][7][Applets][22][Configuration]
PreloadWeight=100
[Containments][7][Applets][23]
immutability=1
plugin=org.kde.plasma.bluetooth
[Containments][7][Applets][23][Configuration]
PreloadWeight=100
[Containments][7][Applets][24]
immutability=1
plugin=org.kde.plasma.mediacontroller
[Containments][7][Applets][24][Configuration]
PreloadWeight=0
selectedConfig=0
[Containments][7][Applets][25][Configuration]
PreloadWeight=42
[Containments][7][Applets][8][Configuration]
PreloadWeight=42
[Containments][7][Applets][9]
immutability=1
plugin=org.kde.plasma.notifications
[Containments][7][Applets][9][Configuration]
PreloadWeight=75
[Containments][7][ConfigDialog]
DialogHeight=838
DialogWidth=1050
[Containments][7][General]
extraItems=org.kde.plasma.networkmanagement,org.kde.plasma.notifications,org.kde.plasma.volume,org.kde.plasma.bluetooth,org.kde.plasma.mediacontroller
hiddenItems=org.kde.plasma.notifications,org.kde.plasma.mediacontroller,indicator-solaar,Proton Mail Bridge,martchus.syncthingplasmoid
knownItems=org.kde.plasma.vault,org.kde.plasma.battery,org.kde.plasma.networkmanagement,org.kde.kupapplet,org.kde.plasma.notifications,org.kde.plasma.keyboardlayout,org.kde.kdeconnect,org.kde.plasma.keyboardindicator,org.kde.plasma.manage-inputmethod,org.kde.plasma.bluetooth,org.kde.plasma.devicenotifier,org.kde.plasma.volume,org.kde.plasma.nightcolorcontrol,org.kde.plasma.clipboard,org.kde.kscreen,org.kde.plasma.mediacontroller,org.kde.plasma.printmanager
[ScreenMapping]
itemsOnDisabledScreens=
screenMapping=

View File

@ -0,0 +1,84 @@
local g = vim.g
local o = vim.o
local keymap = vim.keymap.set
local cmd = vim.cmd
local fn = vim.fn
local api = vim.api
-- Leader Key
g.mapleader = " "
-- Disable netrw for Nvim Tree
g.loaded_netrw = 1
g.loaded_netrwPlugin = 1
-- Numbers
o.number = true
o.relativenumber = true
o.numberwidth = 1
-- Clipboard
cmd[[set clipboard+=unnamedplus]]
-- Files
o.swapfile = false
o.backup = false
-- Scroll Offset
o.scrolloff = 15
-- Cursor & Column Lines
o.colorcolumn = "80"
o.cursorline = true
-- Mouse
o.mouse = "a"
-- Spacing
o.tabstop = 2
o.shiftwidth = 2
o.expandtab = true
-- Update Time
o.updatetime = 50
-- Hide Highlighting
cmd[[set nohlsearch]]
-- Indent
keymap("n", "<S-Tab>", "<<")
keymap("n", "<Tab>", ">>")
keymap("v", "<S-Tab>", "<<")
keymap("v", "<Tab>", ">>")
keymap("i", "<S-Tab>", "<BS>")
-- Move Between Panels
keymap("", "<C-h>", ":wincmd h<CR>")
keymap("", "<C-j>", ":wincmd j<CR>")
keymap("", "<C-k>", ":wincmd k<CR>")
keymap("", "<C-l>", ":wincmd l<CR>")
-- Jump Up/Down A Half Page
keymap("n", "<C-d>", "<C-d>zz")
keymap("n", "<C-u>", "<C-u>zz")
-- Keep Copy/Paste Value
keymap("x", "<leader>p", "\"_dP")
-- Sort
keymap("v", "<C-s>", ":sort<CR>")
-- Disable F1 in Insert mode
keymap('i', '<F1>', '<nop>')
-- Close Neovim
cmd("command! Qa qa")
-- Remove trailing whitespace when focus is lost or the window is closed,
-- without moving the cursor
api.nvim_exec([[
autocmd FocusLost,WinLeave * if &modifiable | let w:save_cursor = getcurpos() | %s/\s\+$//e | call setpos('.', w:save_cursor) | endif
]], false)
-- Lazy.nvim
require("plugins")

View File

@ -0,0 +1,22 @@
{
"LuaSnip": { "branch": "master", "commit": "33b06d72d220aa56a7ce80a0dd6f06c70cd82b9d" },
"auto-save.nvim": { "branch": "main", "commit": "979b6c82f60cfa80f4cf437d77446d0ded0addf0" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" },
"copilot.vim": { "branch": "release", "commit": "87038123804796ca7af20d1b71c3428d858a9124" },
"gitsigns.nvim": { "branch": "main", "commit": "5f808b5e4fef30bd8aca1b803b4e555da07fc412" },
"gruvbox.nvim": { "branch": "main", "commit": "68c3460a5d1d1a362318960035c9f3466d5011f5" },
"indent-blankline.nvim": { "branch": "master", "commit": "259357fa4097e232730341fa60988087d189193a" },
"lazy.nvim": { "branch": "main", "commit": "7e6c863bc7563efbdd757a310d17ebc95166cef3" },
"lsp-zero.nvim": { "branch": "v3.x", "commit": "ab2a3413646fedd77aa0eab4214a6473e62f6a64" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "c6c686781f9841d855bf1b926e10aa5e19430a38" },
"mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" },
"nvim-autopairs": { "branch": "master", "commit": "b464658e9b880f463b9f7e6ccddd93fb0013f559" },
"nvim-cmp": { "branch": "main", "commit": "b555203ce4bd7ff6192e759af3362f9d217e8c89" },
"nvim-lspconfig": { "branch": "master", "commit": "ff2b85abaa810f6611233dbe6d31c07510ebf43d" },
"nvim-tree.lua": { "branch": "master", "commit": "68fc4c20f5803444277022c681785c5edd11916d" },
"nvim-treesitter": { "branch": "master", "commit": "eb3e850acff4d9f2f2dd8dacd75353043c899753" },
"nvim-web-devicons": { "branch": "master", "commit": "63f552a7f59badc6e6b6d22e603150f0d5abebb7" },
"plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" },
"telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }
}

View File

@ -0,0 +1,14 @@
require('gruvbox').setup({
priority = 1000,
config = true,
contrast = "hard",
transparent_mode = true,
overrides = {
NonText = { fg = "#666666" },
},
})
-- Colorscheme
vim.cmd("colorscheme gruvbox")

View File

@ -0,0 +1,9 @@
require('gitsigns').setup({
current_line_blame = true,
current_line_blame_opts = {
virt_text = true,
virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align'
delay = 0,
ignore_whitespace = false,
},
})

View File

@ -0,0 +1,12 @@
vim.cmd [[highlight IndentBlanklineColor guifg=#555555 gui=nocombine]]
local highlights = {
"CursorColumn",
"Whitespace",
}
require('ibl').setup({
indent = {
highlight = highlight,
}
})

View File

@ -0,0 +1,68 @@
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
-- Plugins
require("lazy").setup({
{ "windwp/nvim-autopairs" },
{ "Pocco81/auto-save.nvim" },
{ "ellisonleao/gruvbox.nvim" },
{ "lewis6991/gitsigns.nvim" },
{ "lukas-reineke/indent-blankline.nvim" },
{
"VonHeikemen/lsp-zero.nvim",
branch = "v3.x",
dependencies = {
"williamboman/mason.nvim",
"williamboman/mason-lspconfig.nvim",
"neovim/nvim-lspconfig",
"hrsh7th/nvim-cmp",
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-buffer",
"L3MON4D3/LuaSnip",
},
},
{
"nvim-telescope/telescope.nvim",
tag = "0.1.8",
dependencies = "nvim-lua/plenary.nvim",
},
{
"nvim-tree/nvim-tree.lua",
dependencies = "nvim-tree/nvim-web-devicons",
},
{
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
},
{
"github/copilot.vim",
config = function()
vim.g.copilot_no_tab_map = true
vim.api.nvim_set_keymap(
"i",
"<C-J>",
'copilot#Accept("<CR>")',
{ silent = true, expr = true }
)
end,
},
})
require('plugins.colorscheme')
require('plugins.gitsigns')
require('plugins.indent-blankline')
require('plugins.lsp-zero')
require('plugins.nvim-autopairs')
require('plugins.nvim-tree')
require('plugins.telescope')
require('plugins.treesitter')

View File

@ -0,0 +1,62 @@
local lsp_zero = require('lsp-zero')
local cmp = require('cmp')
local cmp_action = lsp_zero.cmp_action()
-- LSP Zero
lsp_zero.on_attach(function(client, bufnr)
lsp_zero.default_keymaps({buffer = bufnr})
end)
lsp_zero.set_sign_icons({
error = '',
warn = '',
hint = '',
info = '»'
})
-- CMP
cmp.setup({
source = {
{ name = 'nvim_lsp' },
{ name = 'buffer' },
},
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
preselect = 'item',
completion = {
completeopt = 'menu,menuone,noinsert'
},
mapping = {
['<Tab>'] = cmp_action.luasnip_supertab(),
['<S-Tab>'] = cmp_action.luasnip_shift_supertab(),
['<CR>'] = cmp.mapping.confirm({select = true}),
}
})
-- Mason
require('mason').setup({})
require('mason-lspconfig').setup({
ensure_installed = {
'lua_ls',
'ts_ls',
'html',
'cssls',
'jsonls',
'emmet_ls',
},
handlers = {
function(server_name)
require('lspconfig')[server_name].setup({})
end,
},
})
-- Show line diagnostics automatically in hover window
vim.diagnostic.config({
virtual_text = false,
})
vim.cmd [[autocmd CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, {focus=false})]]

View File

@ -0,0 +1,4 @@
require('nvim-autopairs').setup({
event = "InsertEnter",
config = true
})

View File

@ -0,0 +1,33 @@
local function custom_mapping(bufnr)
local api = require("nvim-tree.api")
local function opts(desc)
return {
desc = "nvim-tree: " .. desc,
buffer = bufnr,
noremap = true,
silent = true,
nowait = true
}
end
-- default mappings
api.config.mappings.default_on_attach(bufnr)
-- custom mappings
vim.keymap.set('n', 's', api.node.open.vertical, opts('Open: Vertical Split'))
vim.keymap.set('n', 'u', api.node.navigate.parent_close, opts('Close Directory'))
end
require("nvim-tree").setup({
view = {
width = {},
},
on_attach = custom_mapping,
})
-- Tree
vim.keymap.set("n", [[<C-\>]], ":NvimTreeToggle<CR>")
vim.keymap.set("n", [[<leader>\]], ":NvimTreeToggle<CR>")
vim.keymap.set("n", "<leader>ff", ":NvimTreeFindFile<CR>")

View File

@ -0,0 +1,10 @@
require('telescope').setup({})
-- Telescope
local builtin = require("telescope.builtin")
vim.keymap.set("n", "<leader>gf", builtin.git_files)
vim.keymap.set("n", "<leader>gs", builtin.git_status)
vim.keymap.set("n", "<leader>gg", builtin.live_grep)
vim.keymap.set("n", "<leader>b", builtin.buffers)

View File

@ -0,0 +1,31 @@
require('nvim-treesitter.configs').setup({
ensure_installed = {
"bash",
"css",
"graphql",
"html",
"javascript",
"jsdoc",
"json",
"lua",
"markdown",
"python",
"query",
"regex",
"scss",
"svelte",
"tmux",
"typescript",
"vim",
"vimdoc",
"yaml",
"tsx",
},
sync_install = false,
highlight = {
enable = true,
},
indent = {
enable = true,
},
})

View File

@ -0,0 +1,70 @@
{
"groups": {
"information:additional": { "fg": "white", "bg": "gray3", "attrs": [] },
"information:regular": { "fg": "white", "bg": "gray3", "attrs": ["bold"] },
"information:highlighted": { "fg": "white", "bg": "gray4", "attrs": [] },
"information:priority": { "fg": "brightyellow", "bg": "mediumorange", "attrs": [] },
"warning:regular": { "fg": "white", "bg": "brightred", "attrs": ["bold"] },
"critical:failure": { "fg": "white", "bg": "darkestred", "attrs": [] },
"critical:success": { "fg": "white", "bg": "darkestgreen", "attrs": [] },
"background": { "fg": "white", "bg": "gray0", "attrs": [] },
"background:divider": { "fg": "gray5", "bg": "gray0", "attrs": [] },
"session": { "fg": "black", "bg": "gray10", "attrs": ["bold"] },
"date": { "fg": "gray8", "bg": "gray2", "attrs": [] },
"time": { "fg": "gray10", "bg": "gray2", "attrs": ["bold"] },
"time:divider": { "fg": "gray5", "bg": "gray2", "attrs": [] },
"email_alert": "warning:regular",
"email_alert_gradient": { "fg": "white", "bg": "yellow_orange_red", "attrs": ["bold"] },
"hostname": { "fg": "black", "bg": "gray10", "attrs": ["bold"] },
"weather": { "fg": "gray8", "bg": "gray0", "attrs": [] },
"weather_temp_gradient": { "fg": "blue_red", "bg": "gray0", "attrs": [] },
"weather_condition_hot": { "fg": "khaki1", "bg": "gray0", "attrs": [] },
"weather_condition_snowy": { "fg": "skyblue1", "bg": "gray0", "attrs": [] },
"weather_condition_rainy": { "fg": "skyblue1", "bg": "gray0", "attrs": [] },
"uptime": { "fg": "gray8", "bg": "gray0", "attrs": [] },
"external_ip": { "fg": "gray8", "bg": "gray0", "attrs": [] },
"internal_ip": { "fg": "gray8", "bg": "gray0", "attrs": [] },
"network_load": { "fg": "gray8", "bg": "gray0", "attrs": [] },
"network_load_gradient": { "fg": "green_yellow_orange_red", "bg": "gray0", "attrs": [] },
"network_load_sent_gradient": "network_load_gradient",
"network_load_recv_gradient": "network_load_gradient",
"network_load:divider": "background:divider",
"system_load": { "fg": "gray8", "bg": "gray0", "attrs": [] },
"system_load_gradient": { "fg": "green_yellow_orange_red", "bg": "gray0", "attrs": [] },
"environment": { "fg": "gray8", "bg": "gray0", "attrs": [] },
"cpu_load_percent": { "fg": "gray8", "bg": "gray0", "attrs": [] },
"cpu_load_percent_gradient": { "fg": "green_yellow_orange_red", "bg": "gray0", "attrs": [] },
"battery": { "fg": "gray8", "bg": "gray0", "attrs": [] },
"battery_gradient": { "fg": "white_red", "bg": "gray0", "attrs": [] },
"battery_full": { "fg": "red", "bg": "gray0", "attrs": [] },
"battery_empty": { "fg": "white", "bg": "gray0", "attrs": [] },
"player": { "fg": "gray10", "bg": "black", "attrs": [] },
"user": { "fg": "white", "bg": "darkblue", "attrs": ["bold"] },
"branch": { "fg": "gray9", "bg": "gray2", "attrs": [] },
"branch_dirty": { "fg": "brightyellow", "bg": "gray2", "attrs": [] },
"branch_clean": { "fg": "gray9", "bg": "gray2", "attrs": [] },
"branch:divider": { "fg": "gray7", "bg": "gray2", "attrs": [] },
"stash": "branch_dirty",
"stash:divider": "branch:divider",
"cwd": "information:additional",
"cwd:current_folder": "information:regular",
"cwd:divider": { "fg": "gray7", "bg": "gray3", "attrs": [] },
"virtualenv": { "fg": "white", "bg": "darkcyan", "attrs": [] },
"attached_clients": { "fg": "gray8", "bg": "gray0", "attrs": [] },
"workspace": "information:regular",
"gitstatus": { "fg": "gray9", "bg": "gray2", "attrs": [] },
"gitstatus_branch": { "fg": "white", "bg": "gray2", "attrs": [] },
"gitstatus_branch_clean": { "fg": "green", "bg": "gray2", "attrs": [] },
"gitstatus_branch_dirty": { "fg": "gray9", "bg": "gray2", "attrs": [] },
"gitstatus_branch_detached": { "fg": "mediumpurple", "bg": "gray2", "attrs": [] },
"gitstatus_tag": { "fg": "darkcyan", "bg": "gray2", "attrs": [] },
"gitstatus_behind": { "fg": "gray10", "bg": "gray2", "attrs": [] },
"gitstatus_ahead": { "fg": "gray10", "bg": "gray2", "attrs": [] },
"gitstatus_staged": { "fg": "green", "bg": "gray2", "attrs": [] },
"gitstatus_unmerged": { "fg": "brightred", "bg": "gray2", "attrs": [] },
"gitstatus_changed": { "fg": "mediumorange", "bg": "gray2", "attrs": [] },
"gitstatus_untracked": { "fg": "brightestorange", "bg": "gray2", "attrs": [] },
"gitstatus_stashed": { "fg": "darkblue", "bg": "gray2", "attrs": [] },
"gitstatus:divider": { "fg": "gray8", "bg": "gray2", "attrs": [] }
}
}

View File

@ -0,0 +1,28 @@
{
"groups": {
"active_window_status": {"fg": "gray8", "bg": "gray0", "attrs": []},
"window_status": {"fg": "gray70", "bg": "gray0", "attrs": []},
"activity_status": {"fg": "yellow", "bg": "gray0", "attrs": []},
"bell_status": {"fg": "red", "bg": "gray0", "attrs": []},
"window": {"fg": "gray6", "bg": "gray0", "attrs": []},
"window:divider": {"fg": "gray4", "bg": "gray0", "attrs": []},
"window:current": {"fg": "gray8", "bg": "gray3", "attrs": []},
"window_name": {"fg": "white", "bg": "gray3", "attrs": ["bold"]},
"session": {"fg": "black", "bg": "gray90", "attrs": ["bold"]},
"session:prefix": {"fg": "gray90", "bg": "darkblue", "attrs": ["bold"]},
"gitstatus": { "fg": "gray9", "bg": "gray2", "attrs": [] },
"gitstatus_branch": { "fg": "white", "bg": "gray2", "attrs": [] },
"gitstatus_branch_clean": { "fg": "green", "bg": "gray2", "attrs": [] },
"gitstatus_branch_dirty": { "fg": "gray9", "bg": "gray2", "attrs": [] },
"gitstatus_branch_detached": { "fg": "mediumpurple", "bg": "gray2", "attrs": [] },
"gitstatus_tag": { "fg": "darkcyan", "bg": "gray2", "attrs": [] },
"gitstatus_behind": { "fg": "gray10", "bg": "gray2", "attrs": [] },
"gitstatus_ahead": { "fg": "gray10", "bg": "gray2", "attrs": [] },
"gitstatus_staged": { "fg": "green", "bg": "gray2", "attrs": [] },
"gitstatus_unmerged": { "fg": "brightred", "bg": "gray2", "attrs": [] },
"gitstatus_changed": { "fg": "mediumorange", "bg": "gray2", "attrs": [] },
"gitstatus_untracked": { "fg": "brightestorange", "bg": "gray2", "attrs": [] },
"gitstatus_stashed": { "fg": "darkblue", "bg": "gray2", "attrs": [] },
"gitstatus:divider": { "fg": "gray8", "bg": "gray2", "attrs": [] }
}
}

View File

@ -0,0 +1,31 @@
{
"segments": {
"left": [
{
"function": "powerline.segments.common.net.hostname"
},
{
"function": "powerline.segments.common.env.virtualenv"
},
{
"function": "powerline.segments.shell.cwd"
},
{
"function": "powerline_gitstatus.gitstatus",
"args": {
"formats": {
"branch": "\ue0a0 {}",
"tag": " ★ {} ",
"behind": " ↓ {}",
"ahead": " ↑ {}",
"staged": " ● {}",
"unmerged": " ✖ {} ",
"changed": " ✚ {} ",
"untracked": " … {}",
"stashed": " ⚑ {}"
}
}
}
]
}
}

View File

@ -0,0 +1,29 @@
{
"segments": {
"right": [
{
"function": "powerline.segments.common.net.network_load"
},
{
"function": "powerline.segments.common.net.internal_ip"
},
{
"function": "powerline_gitstatus.gitstatus",
"args": {
"formats": {
"branch": "\ue0a0 {}",
"tag": " ★ {} ",
"behind": " ↓ {}",
"ahead": " ↑ {}",
"staged": " ● {}",
"unmerged": " ✖ {} ",
"changed": " ✚ {} ",
"untracked": " … {}",
"stashed": " ⚑ {}"
}
}
}
],
"left": []
}
}

BIN
profile/.face Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 918 KiB

View File

@ -0,0 +1,122 @@
#############################################################################
# A minimal rTorrent configuration that provides the basic features
# you want to have in addition to the built-in defaults.
#
# See https://github.com/rakshasa/rtorrent/wiki/CONFIG-Template
# for an up-to-date version.
#############################################################################
## Instance layout (base paths)
method.insert = cfg.basedir, private|const|string, (cat,"/home/kendall/Downloads/")
method.insert = cfg.download, private|const|string, (cat,(cfg.basedir))
method.insert = cfg.logs, private|const|string, (cat,(cfg.basedir),".rtorrent/log/")
method.insert = cfg.logfile, private|const|string, (cat,(cfg.logs),"rtorrent-",(system.time),".log")
method.insert = cfg.session, private|const|string, (cat,(cfg.basedir),".rtorrent/session/")
method.insert = cfg.watch, private|const|string, (cat,(cfg.basedir))
## Create instance directories
execute.throw = sh, -c, (cat,\
"mkdir -p \"",(cfg.download),"\" ",\
"\"",(cfg.logs),"\" ",\
"\"",(cfg.session),"\" ",\
"\"",(cfg.watch),".rtorrent/load\" ",\
"\"",(cfg.watch),".rtorrent/start\" ")
## Listening port for incoming peer traffic (fixed; you can also randomize it)
network.port_range.set = 50000-50000
network.port_random.set = no
## Tracker-less torrent and UDP tracker support
## (conservative settings for 'private' trackers, change for 'public')
dht.mode.set = disable
protocol.pex.set = no
trackers.use_udp.set = yes
## Peer settings
throttle.max_uploads.set = 100
throttle.max_uploads.global.set = 250
throttle.min_peers.normal.set = 20
throttle.max_peers.normal.set = 60
throttle.min_peers.seed.set = 30
throttle.max_peers.seed.set = 80
trackers.numwant.set = 80
protocol.encryption.set = allow_incoming,try_outgoing,enable_retry
## Limits for file handle resources, this is optimized for
## an `ulimit` of 1024 (a common default). You MUST leave
## a ceiling of handles reserved for rTorrent's internal needs!
network.http.max_open.set = 50
network.max_open_files.set = 600
network.max_open_sockets.set = 300
## Memory resource usage (increase if you have a large number of items loaded,
## and/or the available resources to spend)
pieces.memory.max.set = 1800M
network.xmlrpc.size_limit.set = 4M
## Basic operational settings (no need to change these)
session.path.set = (cat, (cfg.session))
directory.default.set = (cat, (cfg.download))
log.execute = (cat, (cfg.logs), "execute.log")
#log.xmlrpc = (cat, (cfg.logs), "xmlrpc.log")
execute.nothrow = sh, -c, (cat, "echo >",\
(session.path), "rtorrent.pid", " ",(system.pid))
## Other operational settings (check & adapt)
encoding.add = utf8
system.umask.set = 0027
system.cwd.set = (directory.default)
network.http.dns_cache_timeout.set = 25
schedule2 = monitor_diskspace, 15, 60, ((close_low_diskspace, 1000M))
#pieces.hash.on_completion.set = no
#view.sort_current = seeding, greater=d.ratio=
#keys.layout.set = qwerty
#network.http.capath.set = "/etc/ssl/certs"
#network.http.ssl_verify_peer.set = 0
#network.http.ssl_verify_host.set = 0
## Some additional values and commands
method.insert = system.startup_time, value|const, (system.time)
method.insert = d.data_path, simple,\
"if=(d.is_multi_file),\
(cat, (d.directory), /),\
(cat, (d.directory), /, (d.name))"
method.insert = d.session_file, simple, "cat=(session.path), (d.hash), .torrent"
## Watch directories (add more as you like, but use unique schedule names)
## Add torrent
schedule2 = watch_load, 11, 10, ((load.verbose, (cat, (cfg.watch), "*.torrent")))
## Add & download straight away
schedule2 = watch_start, 10, 10, ((load.start_verbose, (cat, (cfg.watch), "*.torrent")))
## Run the rTorrent process as a daemon in the background
## (and control via XMLRPC sockets)
#system.daemon.set = true
#network.scgi.open_local = (cat,(session.path),rpc.socket)
#execute.nothrow = chmod,770,(cat,(session.path),rpc.socket)
## Logging:
## Levels = critical error warn notice info debug
## Groups = connection_* dht_* peer_* rpc_* storage_* thread_* tracker_* torrent_*
print = (cat, "Logging to ", (cfg.logfile))
log.open_file = "log", (cfg.logfile)
log.add_output = "info", "log"
#log.add_output = "tracker_debug", "log"
### END of rtorrent.rc ###

View File

@ -0,0 +1,55 @@
BG=default
COLOR1=#16A085
COLOR2=#fabd2f
# Global Settings
set -g default-terminal "screen-256color"
set -ga terminal-overrides ",*256col*:Tc"
# Bar Position
set -g status-position bottom
# Bar Background Color
set -g status-style 'bg=#{BG}'
# Command Bar Color
set -g message-style 'fg=#{COLOR2}'
# Session Selector Background Color
set -g mode-style 'bg=#{COLOR1}'
# Border
set -g pane-border-style '#{fg=#{COLOR1}}'
set -g pane-active-border-style '#{fg=#{COLOR2}}'
# Extra Space On Top
# set -g status 2
# set -Fg status-format[1] '#{status-format[0]}'
# set -g status-format[0] ''
# Left
set -g status-left '#[fg=#{COLOR1} bold]  '
# Window Status
set -g window-status-current-format '#[fg=#{COLOR2} bold]#I󰧟#W '
set -g window-status-format '#[fg=#{COLOR1} bold]#I󰧟#W '
# Right
set -g status-right-length 200
set -g status-right '#[fg=#{COLOR1} bold]  %l:%M%p 󰃭 %m/%d/%Y 󰖐 #{forecast}  '
# Movement Keybindings
bind-key -r -T prefix C-k select-pane -U
bind-key -r -T prefix C-j select-pane -D
bind-key -r -T prefix C-h select-pane -L
bind-key -r -T prefix C-l select-pane -R
# Plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'aaronpowell/tmux-weather'
set -g @forecast-location 75025
set -g @forecast-format '%C+%t'
run '~/.tmux/plugins/tpm/tpm'

View File

@ -0,0 +1,17 @@
session_name: Amp
windows:
- window_name: Amp
panes:
- shell_command:
- cmd: cd ~/Repos/NBC/WEB.AMP.git/
- cmd: clear
- window_name: Server
layout: even-horizontal
panes:
- shell_command:
- cmd: cd ~/Repos/NBC/WEB.AMP.git/
- cmd: clear
- shell_command:
- cmd: cd ~/Repos/NBC/WEB.AMP.git/
- cmd: clear

View File

@ -0,0 +1,17 @@
session_name: Amped
windows:
- window_name: Amped
panes:
- shell_command:
- cmd: cd ~/Repos/NBC/amped-up.git/
- cmd: clear
- window_name: Server
layout: even-horizontal
panes:
- shell_command:
- cmd: cd ~/Repos/NBC/amped-up.git/
- cmd: clear
- shell_command:
- cmd: cd ~/Repos/NBC/amped-up.git/
- cmd: clear

View File

@ -0,0 +1,17 @@
session_name: HFS
windows:
- window_name: HFS
panes:
- shell_command:
- cmd: cd ~/Repos/NBC/header-footer-service.git/
- cmd: clear
- window_name: Server
layout: even-horizontal
panes:
- shell_command:
- cmd: cd ~/Repos/NBC/header-footer-service.git/
- cmd: clear
- shell_command:
- cmd: cd ~/Repos/NBC/header-footer-service.git/
- cmd: clear

View File

@ -0,0 +1,17 @@
session_name: Omega
windows:
- window_name: Omega
panes:
- shell_command:
- cmd: cd ~/Repos/NBC/omega-player.git/
- cmd: clear
- window_name: Server
layout: even-horizontal
panes:
- shell_command:
- cmd: cd ~/Repos/NBC/omega-player.git/
- cmd: clear
- shell_command:
- cmd: cd ~/Repos/NBC/omega-player.git/
- cmd: clear

View File

@ -0,0 +1,17 @@
session_name: Phoenix
windows:
- window_name: Phoenix
panes:
- shell_command:
- cmd: cd ~/Repos/NBC/WEB.Phoenix.git/
- cmd: clear
- window_name: Server
layout: even-horizontal
panes:
- shell_command:
- cmd: cd ~/Repos/NBC/WEB.Phoenix.git/
- cmd: clear
- shell_command:
- cmd: cd ~/Repos/NBC/WEB.Phoenix.git/
- cmd: clear

View File

@ -0,0 +1,17 @@
session_name: Ramen
windows:
- window_name: Ramen
panes:
- shell_command:
- cmd: cd ~/Repos/NBC/nextjs-ramen.git/
- cmd: clear
- window_name: Server
layout: even-horizontal
panes:
- shell_command:
- cmd: cd ~/Repos/NBC/nextjs-ramen.git/
- cmd: clear
- shell_command:
- cmd: cd ~/Repos/NBC/nextjs-ramen.git/
- cmd: clear