Skip to content
/ dotfiles Public template

Collection of all my configuration files for utilities & tools I use. Oh and did I mention I use Arch btw!

Notifications You must be signed in to change notification settings

Evangelospro/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

【 Evangelospro's dotfiles 】

ELARCH ((E)vangelos (L)ioudakis (ARCH))

Showcase (may be outdated)

Hyprland
submission.mp4

Breakdown

There are a few main components to this project:

  • chezmoi - Chezmoi takes cares of the dotfiles and the configuration of the system. It is a tool that helps you manage your personal configuration files across multiple machines. Chezmoi is needed to apply the dotfiles and this repo follows chezmois structure

  • rebos - Rebos (Re)(B)uild(Os) is a neat command line tool that essentially adds nix-like reproduction to arch-based systems. It is a tool that helps you manage your system and install packages. To see the full list of packages that are installed and managed by rebos, you can check the packages

How to apply

Warning

I highly recommend that you use it as template and edit the files to your liking before applying them (using your own GitHub username). Don't forget to come back here and star the project if you liked it!

Cloning

GITHUB_USERNAME=Evangelospro # preferably change this to your own template and github username
git clone https://github.com/$GITHUB_USERNAME/dotfiles ~/.local/share/chezmoi

Basic configuration

Important

Open up your local .chezmoi.jsonc.tmpl and edit all aplicable fields:

Warning

The below are a must to change, if you don't change them, you will probably not get what you want and have to spend a lot of time troubleshooting!

  • isPersonal: This is kind of a setting you have to change or else you will receive some configurations that I deemed too personal, if I deemed that, then they will probably install some personal packages or configurations that you might not want
  • isHeadless: This is whether the machine is running headless(No GUI) or not(e.g. a server), this is used to determine whether to install GUI packages or not
  • isLaptop: This is whether the machine is a laptop or not, this is used to determine whether to install laptop specific packages or not
  • isHacking: Personally, I like to play a lot of CTFs(capture the flag competitions), so I have A LOT of hacking tools installed for all the occasions, if you are not into that, you can set this to false, or at least check the hacking setup section to see if you want to install those tools or not.
  • isAsus: This is whether the machine has Asus hardware or not, this is used to determine whether to install Asus specific packages or not(e.g. asusctl, rog-control-center ...)

Graphics (If hybrid graphics, set both to true)

  • isNvidiaGPU: This is whether the machine has Nvidia hardware or not, this is used to determine whether to install Nvidia specific packages or not(e.g. nvidia drivers, cuda...)
  • isAmdGPU: This is whether the machine has AMD gpu or not, this is used to determine whether to install AMD specific packages or not(e.g. amdgpu drivers...)
  • isIntelGPU: This is whether the machine has Intel gpu or not, this is used to determine whether to install Intel specific packages or not(e.g. intel gpu drivers...)

Applying

bash install.sh

Keybindings

Modifiers

$MOD = SUPER

Hyprland

Keybinding Action
$MOD + M Exit Hyprland
$MOD + Shift + R Reload the window manager(hyprland)

Launch / Reload Applications

Keybinding Action
$MOD + T Launch Terminal
$MOD + L Lock Screen (swaylock)
$MOD + Space Launch launcher (walker)
$MOD + V Open clipboard manager (clipse)
$MOD + C Select color from screen (hyprpicker) and copy it
$MOD + E Open file manager (Nemo)
$MOD + R Resize window with slurp

Close / Fullscreen / Kill Applications / Arrange monitors

Keybinding Action
ALT + F4 Close focused window
CTRL + SHIFT + ESC Kill window clicked on (xkill or windows taskmanager like functionality)
$MOD + F Toggle fullscreen on focused window
$MOD + Shift + F Toggle floating on focused window
$MOD + P Arrange monitors (extend / duplicate)

Screenshot / OCR

Keybinding Action
prtsc Take screenshot interactively (flameshot)
$MOD + O Copy text from screen with OCR (tesseract)

Move focus between windows in the current workspace

Keybinding Action
$MOD + AWSD Move focus to the direction of the AWSD keys

Rearrange windows in the current workspace

Keybinding Action
$MOD + Arrow keys Move focused window to the direction of the arrow keys

Move Windows Between Monitors

Keybinding Action
$MOD + SHIFT + Arrow keys Move focused window to the monitor in the direction of the arrow key

Move Windows Between Workspaces

Keybinding Action
$MOD + SHIFT + 1-9 Move focused window to the workspace with the number pressed
$MOD + 1-9 Move to the workspace with the number pressed

Cycle through workspaces

Keybinding Action
$MOD + TAB Cycle through workspaces forward
$MOD + SHIFT + TAB Cycle through workspaces backward

Move window with mouse

Keybinding Action
$MOD + Click and drag Move window with mouse(you can even move across monitors)

Linux Setup

System:

Kernel: Linux-g14 and fallback to Linux

Display Server: Wayland

GUI:

Color Scheme: Dracula

Notification Center: SwayNotificationCenter

Window Manager: Hyprland

Bar: Waybar

Application Launcher: Walker

Clipboard Managegment: wl-clipboard

  • clipboard manager - A dmenu based clipboard manager that uses wl-clipboard and fuzzy finding to paste from clipboard history clipboard-manager.png

Color Picker: Hyprpicker

OSD: swayosd - An on-screen display for capslock, numlock, volume, brightness and more

osd.png!

Terminal and Shell:

Terminal: Wezterm

Shell ZSH

Bindings: binds.zsh

Aliases: aliases.sh

Functions: functions.zsh

Plugins:

zsh-smartcache - Caches the output of commands such as $(eval program init) to speed up shell startup
thefuck - a magnificent app, that corrects errors in previous console commands.
direnv - It can load and unload environment variables depending on the current directory. (usually loads an adjacent .env from your local directory)
atuin - Stores shell history and allows you to search it with fuzzy finding and very quick shortcuts, significantly speeding up the proccess of you finding that one command that you typed a year ago.
highlighter - Essentially it allows you to highlight output of commands in the terminal (e.g echo "evangelospro" | h "pro")
dirhistory - Navigate directory history using ALT-LEFT and ALT-RIGHT
zoxide - A smarter cd command that remember and adjusts to your habbits allowing you to navigate directories faster
zsh-mask - Masks secrets in your zsh history, so you don't accidentally leak them
zsh-autopair - A zsh plugin that automatically inserts closing brackets, parens, quotes, etc.
zsh-navi - A zsh plugin for navi - An interactive cheatsheet tool for the command-line
zsh-you-should-use - Simple zsh plugin that reminds you that you should use one of your existing aliases for a command you just typed.
zsh-auto-notify - ⏰ ZSH plugin that automatically sends out a notification when a long running task has completed.
zsh-autosuggestions - Suggests commands as you type based on history and completions
fast-syntax-highlighting - Highlights commands as you type based on syntax
zsh-completions - Additional completion definitions for zsh
zsh-autocomplete - A fast, asynchronous autocomplete plugin for Zsh
zsh-autosuggestions - Fish-like autosuggestions for zsh
modern-unix-commands - Essentially replaces many well known unix commands and utilities with better or superior alternatives
  • lsd - This project is a rewrite of GNU ls with lots of added features like colors, icons, tree-view, more formatting options etc...
  • bat - A cat(1) clone with wings. With syntax highlighting and many more features while being a cat(1) drop in replacement
  • format - A collection of additional utilities for bat(1) like prettyprinting / formatting with format
  • rigprep - ripgrep recursively searches directories for a regex pattern while respecting your gitignore (aliased to rg and boosted by batgrep for syntax highlighting)
  • fd - A simple, fast and user-friendly alternative to 'find'
  • procs - A modern replacement for ps written in Rust
  • hyperfine - A command-line benchmarking tool.
  • btm - A cross-platform graphical process/system monitor with a customizable interface and a multitude of features (aliased to top)
  • tealdeer - A collection of simplified, example based and community-driven man pages. (aliased to tldr or help)
  • dust - A more intuitive version of du written in Rust (aliased to du)
  • delta - A viewer for git and diff output (aliased to diff)

Development Setup

Windows Setup (Mostly manual)

On windows I use GlazeWM with the Win key remapped using PowerToys

winget install Microsoft.PowerToys --source winget

SO WIN -> ALT ALT -> WIN

Hacking Utilities and Setup

Shell functions

Function Action
update-burp Update burp to the latest version
angr Run angr in a docker container
extract-base64 Extract base64 encoded strings from a file
extract-urls Extract urls from a file
frida-init Initialize frida server on android device
frida-kill Kill frida server on android device
pwnenv Create a pwn environment in a docker container
pwnsetup Setup a pwn template in the current directory
scan Use rustscan to scan a host
curl Normal curl but uses the burp proxy if it's running
ferox-* Feroxbust a host with a specific wordlist
ffuf-* Fuzz a host with a specific wordlist
get-wordlist Return a wordlist of either dns or dir according to the argument passed

Burp

Installation and updates

Burp is setup to auto update with the update zsh function above. As I like to use the jar file with my own loaders for obvious reasons, the latest jar file is fetched and placed in $HOME/.config/Burp/Burp-Loader and symlinked to burpsuite_pro.jar

Config

Android Emulator

An already setup android emulator can be started from the launcher using the android_emulator desktop file

Contributing

Bug Reports, Feature Requests and questions

  • Please use the issue tracker to report any bugs, file feature requests or ask questions.

Pull Requests

  • Feel free to fork and contribute to this project. If you feel like you can add something to it or fix a bug, go for it.
  • If you want to contribute to the project, please open a pull request.
  • If you want to add a new feature, please create an issue first to discuss if it is a good idea or not.
  • If you want to fix a bug, please also create an issue first.

🌟 Stars 🌟

  • Consider leaving a star if you liked the project! Thanks!

Stars

Thanks to these awesome projects and many more!!!