diff --git a/.github/README.md b/.github/README.md index f1aa36a..4dc56d1 100644 --- a/.github/README.md +++ b/.github/README.md @@ -8,17 +8,16 @@ - [Introduction to Dotfiles](#intro) - [What are dotfiles?](#what-are-dotfiles) - [Dotfile Management Systems](#dotfile-management-systems) - - [So copy paste, right?](#so-copy-paste-right) - [XDG Directories](#xdg-directories) - - [Applying Dotfiles](#applying-dotfiles) - [Containerized Userspace](#containerized-userspace) - [Security](#security) + - [So copy paste, right?](#so-copy-paste-right) - [My Dots](#my-dots) - [Setup](#setup) - [Directory Structure](#directory-structure) + - [Install Script](#install-script) - [Configuring](#configuring) - [Aliases](#aliases) - - [Utilities](#utilities) - [Packages](#packages) - [System Preferences](#system-preferences) - [ZSH](#zsh) @@ -26,6 +25,7 @@ - [Tmux](#tmux) - [Git](#git) - [Dependencies](#dependencies) + - [Utilities](#utilities) --- @@ -41,51 +41,13 @@ Once everything's setup, you'll be able to SSH into a fresh system or reinstall It's not hard to create your own dotfile repo, it's great fun and you'll learn a ton along the way! - --- ### Dotfile Management Systems -You can make things simple, or complex as you like. +In terms of managing and applying your dotfiles, you can make things simple, or complex as you like. -The two most common methods are either symlinking, or using a git bare repo, these are explained in more detail in the [Applying Dotfiles](#applying-dotfiles) section. You can either do things manually, write a simple script, or use a pre-build dotfile management system (like [dotbot](https://github.com/anishathalye/dotbot), [chezmoi](https://github.com/twpayne/chezmoi), [yadm](https://github.com/TheLocehiliosan/yadm) or [GNU Stow](https://www.gnu.org/software/stow/)). - -In terms of managing dependencies, using either [git submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules) or [git subtree](https://github.com/git/git/blob/master/contrib/subtree/git-subtree.txt) will let you keep dependencies in your project, while also separate from your own code and easily updatable. - ---- - -### So copy paste, right? - -Zach Holman wrote a great article titled [Dotfiles Are Meant to Be Forked](https://zachholman.com/2010/08/dotfiles-are-meant-to-be-forked/). I personally disagree with this, since your dotfiles are ususally highly personalized, so what's right for one developer, likely won't be what someone else is looking for. They're also usually something you build up over time, and althgouh some repos may provide a great starting point, it's really important to know what everything does, and how it works. - -By all means feel free to take what you want from mine. I've taken care to ensure that each file is standalone, and well documented so that certain files can just be dropped into any system. But I cannot stress enough the importance of reading through files to ensure it's actually what you want. - -If you're looking for some more example dotfile repos to get you started, I can highly recomend taking a look at: [holman](https://github.com/holman/dotfiles). - -There's even more to check out at [webpro/awesome-dotfiles](https://github.com/webpro/awesome-dotfiles), [dotfiles.github.io](https://dotfiles.github.io/) and [r/unixporn](https://www.reddit.com/r/unixporn/). - ---- - -### XDG Directories - -One of my goals was to try and keep the top-level user home directory as clean as possible by honouring the [XDG base directory specification](https://specifications.freedesktop.org/basedir-spec), which lets you specify the locations for config, cache, data, log and other files. This is done by setting environmental variables within [`.zshenv`](https://github.com/Lissy93/dotfiles/blob/master/zsh/.zshenv). - -You can modify any of these values, but by default the following paths are used: - -Variable | Location ---- | --- -`XDG_CONFIG_HOME` | `~/.config` -`XDG_DATA_HOME` | `~/.local/share` -`XDG_BIN_HOME` | `~/.local/bin` -`XDG_LIB_HOME` | `~/.local/lib` -`XDG_CACHE_HOME` | `~/.local/var/cache` - ---- - - -### Applying Dotfiles - -There are several different approaches to managing dotfiles. The two most common would be either symlinking, or git bare repo. +The two most common approaches are be either symlinking, or using git bare repo, but you could also do things manually by writing a simple script. #### Option 1 - Symlinking @@ -130,6 +92,25 @@ Both [Chezmoi](https://github.com/twpayne/chezmoi/) and [YADM](https://github.co To learn more, DistroTube made an excellent [video about bare git repos](https://www.youtube.com/watch?v=tBoLDpTWVOM), and Marcel Krčah has written [a post](https://marcel.is/managing-dotfiles-with-git-bare-repo/) outlining the benefits. +#### Dotfile Dependencies + +In terms of managing dependencies, using either [git submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules) or [git subtree](https://github.com/git/git/blob/master/contrib/subtree/git-subtree.txt) will let you keep dependencies in your project, while also separate from your own code and easily updatable. + +--- + +### XDG Directories + +One of my goals was to try and keep the top-level user home directory as clean as possible by honouring the [XDG base directory specification](https://specifications.freedesktop.org/basedir-spec), which lets you specify the locations for config, cache, data, log and other files. This is done by setting environmental variables within [`.zshenv`](https://github.com/Lissy93/dotfiles/blob/master/zsh/.zshenv). + +You can modify any of these values, but by default the following paths are used: + +Variable | Location +--- | --- +`XDG_CONFIG_HOME` | `~/.config` +`XDG_DATA_HOME` | `~/.local/share` +`XDG_BIN_HOME` | `~/.local/bin` +`XDG_LIB_HOME` | `~/.local/lib` +`XDG_CACHE_HOME` | `~/.local/var/cache` --- @@ -151,6 +132,17 @@ Something that is important to keep in mind, is security. Often you may have som Another solution, is to encrypt sensitive info. A great tool for this is [`pass`](https://www.passwordstore.org/) as it makes GPG-encrypting passwords very easy ([this article](https://www.outcoldman.com/en/archive/2015/09/17/keep-sensitive-data-encrypted-in-dotfiles/) outlines how), or you could also just use plain old GPG (as outlined in [this article](https://www.abdullah.today/encrypted-dotfiles/)). +--- + +### So copy paste, right? + +Zach Holman wrote a great article titled [Dotfiles Are Meant to Be Forked](https://zachholman.com/2010/08/dotfiles-are-meant-to-be-forked/). I personally disagree with this, since your dotfiles are usually highly personalized, so what's right for one developer, likely won't be what someone else is looking for. They're also typically something you build up over time, and although some repos may provide a great starting point, it's really important to know what everything does, and how it works. + +By all means feel free to take what you want from mine. I've taken care to ensure that each file is standalone, and well documented so that certain files can just be dropped into any system. But I cannot stress enough the importance of reading through files to ensure it's actually what you want. + +If you're looking for some more example dotfile repos to get you started, I can highly recommend taking a look at: [holman](https://github.com/holman/dotfiles). + +There's even more to check out at [webpro/awesome-dotfiles](https://github.com/webpro/awesome-dotfiles), [dotfiles.github.io](https://dotfiles.github.io/) and [r/unixporn](https://www.reddit.com/r/unixporn/). --- @@ -213,6 +205,49 @@ Once the repo is cloned, you can modify whatever files you like before running t --- +### Install Script + +The install script will do the following: + +- **Setup** + - Set variables by reading any passed parameters, or fallback to sensible defaults + - Print welcome message, and a summary of proposed changes, and prompt user to continue + - Ensure that core dependencies are met (git, zsh, vim) +- **Dotfiles** + - If dotfiles not yet present, will clone from git, otherwise pulls latest changes + - Symlinks each file to it's correct location on disk +- **System Config** + - Checks default shell, if not yet set, will prompt to set to zsh + - Installs Vim plugins via Plug + - Installs Tmux plugins via TPM + - Installs ZSH plugins via Antigen + - Prompts to apply system preferences (for compatible OS / DE) + - On MacOS arranges apps into folders within the Launchpad view + - On MacOS prompts to set essential privacy + security settings + - On MacOS prompts to set system preferences and app settings +- **App Installations** + - On MacOS if Homebrew is not yet installed, will prompt to install it + - On MacOS will prompt to install user apps listed in Brewfile, via Homebrew + - On Linux will prompt to install listed CLI apps via native package manager (pacman or apt) + - On Linux desktop systems, will prompt to istall desktop apps via Flatpak + - Checks OS is up-to-date, prompts to install updates if available +- **Finishing up** + - Outputs time taken and a summary of changes applied + - Re-sources ZSH and refreshes current session + - Prints a pretty Tux ASCII picture + - Exits + +The install script can accept several flags and environmental variables to configure installation: +- **Flags** + - `--help` - Prints help menu / shows info, without making any changes + - `--auto-yes` - Doesn't prompt for any user input, always assumes Yes (use with care!) + - `--no-clear` - Doesn't clear the screen before starting (useful if being run by another app) +- **Env Vars** + - `REPO_NAME` - The repository name to pull, e.g. `Lissy93/Dotfiles` + - `DOTFILES_DIR` - The directory to clone source dotfiles into + +--- + ### Configuring The locations for all symlinks are defined in [`symlinks.yaml`](https://github.com/Lissy93/dotfiles/blob/master/symlinks.yaml). These are managed using [Dotbot](https://github.com/anishathalye/dotbot), and will be applied whenever you run the [`install.sh`](https://github.com/Lissy93/dotfiles/blob/master/install.sh) script. The symlinks set locations based on XDG paths, all of which are defined in [`.zshenv`](https://github.com/Lissy93/dotfiles/blob/master/zsh/.zshenv). @@ -541,89 +576,6 @@ Alias | Description ---- - -### Utilities - - -The dotfiles also contains several handy bash scripts to carry out useful tasks with slightly more ease. - -Each of these scripts is standalone, without any dependencies, and can be executed directly to use. -Alternatively, they can be sourced from within a .zshrc / .bashrc, for use anywhere via their alias. - -For usage instructions about any of them, just append the `--help` flag. - -- [Transfer]() - Quickly transfer files or folders to the internet -- [Web Search]() - Open a specific search engine with a given query -- [QR Code]() - Generates a QR code for a given string, to transfer data to mobile device -- [Weather]() - Shows current and forecasted weather for your location -- [Color Map]() - Just outputs your terminal emulators supported color pallete -- [Welcome]() - Used for first login, prints personalised greeting, system info, and other handy info -- [Online]() - Checks if you are connected to the internet - - - -#### Transfer - -Quickly transfer a file, group of files or directory via the transfer.sh service.
-To get started, run `transfer `, for more info, run `transfer --help` - -If multiple files are passed in, they will automatically be compressed into an archive. -You can change the file transfer service, or use a self-hosted instance by setting the URL in `FILE_TRANSFER_SERVICE` -The file can be either run directly, or sourced in your `.zshrc` and used via the `transfer` alias. - -> For info, run `transfer --help`
-> Source: [`utils/transfer.sh`](https://github.com/Lissy93/dotfiles/blob/master/utils/transfer.sh) - -#### Web Search - -Quickly open web search results for a given query using a selected search engine. To get started, run `web-search`, or `web-search --help` for more info. - -Usage: - -All parameters are optional, to get started just run `web-search` or `web-search `, the `ws` alias can also be used. If a search engine isn't specified, you'll be prompted to select one from the list. Similarly, if a query hasn't been included you'll be asked for that too. - -- `web-search` - Opens interactive menu, you'll be prompted to select a search engine from the list then enter your query -- `web-search ` - Specify a search term, and you'll be prompted to select the search engine - - For example, `web-search Hello World!` -- `web-search ` - Specify a search engine, and you'll be prompted for your search term - - For example, `web-search duckduckgo` -- `web-search ` - Specify both a search engine and query, and results will open immediately - - For example, `web-search wikipedia Matrix Defense` - -
- -Supported Search Providers - -The following search engines are supported by default: -- DuckDuckGo: `ws duckduckgo` (or `wsddg`) -- Wikipedia: `ws wikipedia` or (`wswiki`) -- GitHub: `ws github` (or `wsgh`) -- StackOverflow: `ws stackoverflow` (or `wsso`) -- Wolframalpha: `ws wolframalpha` (or `wswa`) -- Reddit: `ws reddit` (or `wsrdt`) -- Maps: `ws maps` (or `wsmap`) -- Google: `ws google` (or `wsggl`) -- Grep App: `ws grepapp` (or `wsgra`) - -
- -The alias `ws` will also resolve to `web-search`, if it's not already in use. You can either run the script directly, e.g.`~/.config/utils/web-search.sh` (don't forget to `chmod +x` the file first, to make it executable), or use the `web-search` / `ws` alias anywhere, once it has been source'd from your .zshrc. - -> For info, run `web-search --help`
-> Source: [`utils/web-search.sh`](https://github.com/Lissy93/dotfiles/blob/master/utils/web-search.sh) - -
- -Try now! - -```bash -bash <(curl -s https://raw.githubusercontent.com/Lissy93/dotfiles/master/utils/web-search.sh) -``` - -
- - --- ### Packages @@ -636,7 +588,7 @@ You will be prompted before anything is installed. Be sure to remove / comment o - Linux (desktop): [`flatpak.sh`](https://github.com/Lissy93/dotfiles/blob/master/installs/flatpak.sh) - Desktop apps can be installed on Linux systems via [Flatpack](https://flatpak.org/) - Mac OS: [`.Brewfile`](https://github.com/Lissy93/dotfiles/blob/master/installs/Brewfile) - Mac apps installed via [Homebrew](https://brew.sh/) -- Arch (and Arch-based systems, like Manjaro): [`pacman.sh`](https://github.com/Lissy93/dotfiles/blob/master/installs/pacman.sh) - Arch CLI apps installed via [pacman](https://wiki.archlinux.org/title/Pacman) +- Arch (and Arch-based systems, like Manjaro): [`arch-pacman.sh`](https://github.com/Lissy93/dotfiles/blob/master/installs/arch-pacman.sh) - Arch CLI apps installed via [pacman](https://wiki.archlinux.org/title/Pacman) - Debian (and Debian-based systems, like Ubuntu): [`apt.sh`](https://github.com/Lissy93/dotfiles/blob/master/installs/apt.sh) - Debian CLI apps installed via [apt](https://wiki.debian.org/Apt) - Alpine: [`apk.sh`](https://github.com/Lissy93/dotfiles/blob/master/installs/apk.sh) - Alpine CLI apps installed via [apk](https://docs.alpinelinux.org/user-handbook/0.1a/Working/apk.html) @@ -647,96 +599,97 @@ The following section lists different apps that may be installed for each catego
CLI Essentials -- `git` - Version controll -- `neovim` - Text editor -- `ranger` - Directory browser -- `tmux` - Term multiplexer +- [`git`](https://git-scm.com/) - Version controll +- [`neovim`](https://neovim.io/) - Text editor +- [`ranger`](https://ranger.github.io/) - Directory browser +- [`tmux`](https://github.com/tmux/tmux/wiki) - Term multiplexer
CLI Basics -- `aria2` - Resuming download util _(better wget)_ -- `bat` - Output highlighting _(better cat)_ -- `ctags` - Indexing of file info + headers -- `diff-so-fancy` -# Readable file compares _(better diff)_ -- `exa` - Listing files with info _(better ls)_ -- `fzf` - Fuzzy file finder and filtering -- `hyperfine` - Benchmarking for arbitrary commands -- `jq` - JSON parser -- `lfs` - Get info on mounted disks _(better df)_ -- `procs` - Advanced process viewer _(better ps)_ -- `ripgrep` - Searching within files _(better grep)_ -- `scc` - Count lines of code _(better cloc)_ -- `sd` - RegEx find and replace _(better sed)_ -- `thefuck` - Auto-correct miss-typed commands -- `tldr` - Community-maintained docs _(better man)_ -- `tree` - Directory listings as tree -- `trash-cli` - Record + restore removed files -- `xsel` - Copy paste access to X clipboard -- `zoxide` - Easy navigation _(better cd)_ +- [`aria2`](https://github.com/aria2/aria2) - Resuming download util _(better wget)_ +- [`bat`](https://github.com/sharkdp/bat) - Output highlighting _(better cat)_ +- [`ctags`](https://github.com/universal-ctags/ctags) - Indexing of file info + headers +- [`diff-so-fancy`](https://github.com/so-fancy/diff-so-fancy) - Readable file compares _(better diff)_ +- [`duf`](https://github.com/muesli/duf) - Get info on mounted disks _(better df)_ +- [`exa`](https://github.com/ogham/exa) - Listing files with info _(better ls)_ +- [`fzf`](https://github.com/junegunn/fzf) - Fuzzy file finder and filtering +- [`hyperfine`](https://github.com/sharkdp/hyperfine) - Benchmarking for arbitrary commands +- [`jq`](https://github.com/stedolan/jq) - JSON parser +- [`most`](https://www.jedsoft.org/most/) - Multi-window scroll pager _(better less)_ +- [`procs`](https://github.com/dalance/procs) - Advanced process viewer _(better ps)_ +- [`ripgrep`](https://github.com/BurntSushi/ripgrep) - Searching within files _(better grep)_ +- [`scc`](https://github.com/boyter/scc) - Count lines of code _(better cloc)_ +- [`sd`](https://github.com/chmln/sd) - RegEx find and replace _(better sed)_ +- [`thefuck`](https://github.com/nvbn/thefuck) - Auto-correct miss-typed commands +- [`tldr`](https://github.com/tldr-pages/tldr) - Community-maintained docs _(better man)_ +- [`tree`](https://gitlab.com/OldManProgrammer/unix-tree) - Directory listings as tree +- [`trash-cli`](https://github.com/andreafrancia/trash-cli) - Record + restore removed files +- [`xsel`](https://github.com/kfish/xsel) - Copy paste access to X clipboard +- [`zoxide`](https://github.com/ajeetdsouza/zoxide) - Easy navigation _(better cd)_
CLI Monitoring and Performance Apps -- `bandwhich` - Bandwidth utilization monitor -- `ctop` - Container metrics and monitoring -- `bpytop` - Resource monitoring _(like htop)_ -- `glances` - Resource monitor + web and API -- `gping` - Interactive ping tool, with graph -- `ncdu` - Disk usage analyzer and monitor _(better du)_ -- `speedtest-cli` -# Command line speed test utility +- [`bandwhich`](https://github.com/imsnif/bandwhich) - Bandwidth utilization monitor +- [`ctop`](https://github.com/bcicen/ctop) - Container metrics and monitoring +- [`bpytop`](https://github.com/aristocratos/bpytop) - Resource monitoring _(like htop)_ +- [`glances`](https://github.com/nicolargo/glances) - Resource monitor + web and API +- [`gping`](https://github.com/orf/gping) - Interactive ping tool, with graph +- [`ncdu`](https://dev.yorhel.nl/ncdu) - Disk usage analyzer and monitor _(better du)_ +- [`speedtest-cli`](https://github.com/sivel/speedtest-cli) - Command line speed test utility
CLI Productivity Apps -- `browsh` - CLI web browser -- `buku` - Bookmark manager -- `cmus` - Music browser / player -- `khal` - Calendar client -- `mutt` - Email client -- `newsboat` - RSS / ATOM news reader -- `rclone` - Manage cloud storage -- `task` - Todo + task management +- [`browsh`](https://github.com/browsh-org/browsh) - CLI web browser +- [`buku`](https://github.com/jarun/buku) - Bookmark manager +- [`cmus`](https://github.com/cmus/cmus) - Music browser / player +- [`khal`](https://github.com/pimutils/khal) - Calendar client +- [`mutt`](https://gitlab.com/muttmua/mutt) - Email client +- [`newsboat`](https://github.com/newsboat/newsboat) - RSS / ATOM news reader +- [`rclone`](https://github.com/rclone/rclone) - Manage cloud storage +- [`task`](https://github.com/GothenburgBitFactory/taskwarrior) - Todo + task management
CLI Dev Suits -- `httpie` - HTTP / API testing testing client -- `lazydocker` - Full Docker management app -- `lazygit` - Full Git managemtne app +- [`httpie`]() - HTTP / API testing testing client +- [`lazydocker`]() - Full Docker management app +- [`lazygit`]() - Full Git managemtne app
CLI External Sercvices -- `ngrok` - Reverse proxy for sharing localhost -- `tmate` - Share a terminal session via internet -- `pbgopy` - Cross-device copy and paste service -- `asciinema` - Recording + sharing terminal sessions -- `googler` - Fetch search results from Google -- `gotty` - Expose terminal sessaion via browser -- `navi` - Browse, search, read cheat sheets +- [`ngrok`]() - Reverse proxy for sharing localhost +- [`tmate`]() - Share a terminal session via internet +- [`pbgopy`]() - Cross-device copy and paste service +- [`asciinema`]() - Recording + sharing terminal sessions +- [`googler`]() - Fetch search results from Google +- [`gotty`]() - Expose terminal sessaion via browser +- [`navi`]() - Browse, search, read cheat sheets
CLI Fun -- `cowsay` - Have an ASCII cow say your message -- `figlet` - Output text as big ASCII art text -- `lolcat` - Make console output raibow colored -- `neofetch` - Show system data and ditstro info -- `pipes-sh` - Cool terminal pipe screen saver -- `pv` - Pipe viewer, with animation options +- [`cowsay`]() - Have an ASCII cow say your message +- [`figlet`]() - Output text as big ASCII art text +- [`lolcat`]() - Make console output raibow colored +- [`neofetch`]() - Show system data and ditstro info +- [`pipes-sh`]() - Cool terminal pipe screen saver +- [`pv`]() - Pipe viewer, with animation options
@@ -904,12 +857,13 @@ The installation script can also prompt you to confiture system settings and use #### MacOS -MacOS includes a utility named [`defaults`](https://real-world-systems.com/docs/defaults.1.html), which lets you configure all system and app preferences programatically through the command line. This is very powerful, as you can write a script that configures every aspect of your system enabling you to setup a brand new machine in seconds. +MacOS includes a built-in utility named [`defaults`](https://real-world-systems.com/docs/defaults.1.html), which lets you configure all system and app preferences programatically through the command line. This is very powerful, as you can write a script that configures every aspect of your system enabling you to setup a brand new machine in seconds. All settings are then updated in the `.plist` files stored in `~/Library/Preferences`. This can also be used to configure preferences for any installed app on your system, where the application is specified by its domain identifier - you can view a full list of your configurable apps by running `defaults domains`. -In my dotfiles, the MacOS preferences will configure everything from system security to launchpad layout. The Mac settings are located in [`system-specific/macos/system-settings/`](https://github.com/Lissy93/dotfiles/tree/master/system-specific/macos/system-settings), and are split into three files: +In my dotfiles, the MacOS preferences will configure everything from system security to launchpad layout. +The Mac settings are located in [`system-specific/macos/system-settings/`](https://github.com/Lissy93/dotfiles/tree/master/system-specific/macos/system-settings), and are split into three files: - [`macos-security.sh`](https://github.com/Lissy93/dotfiles/blob/master/system-specific/macos/system-settings/macos-security.sh) - Sets essential security settings, disables telementry, disconnects unused ports, enforces signing, sets logout timeouts, and much more - [`macos-preferences.sh`](https://github.com/Lissy93/dotfiles/blob/master/system-specific/macos/system-settings/macos-preferences.sh) - Configures all user preferences, including computer name, highlight color, finder options, spotlight settings, hardware preferences and more - [`macos-apps.sh`](https://github.com/Lissy93/dotfiles/blob/master/system-specific/macos/system-settings/macos-apps.sh) - Applies preferences to any installed desktop apps, such as Terminal, Time Machine, Photos, Spotify, and many others @@ -1060,3 +1014,88 @@ They can be easily installed/ updated with your package manger, e.g: Depending on your setup, the following utils may also be required: `make`, `ctags`, `fzf` and `python3-pip` +--- + + +### Utilities + + +The dotfiles also contains several handy bash scripts to carry out useful tasks with slightly more ease. + +Each of these scripts is standalone, without any dependencies, and can be executed directly to use. +Alternatively, they can be sourced from within a .zshrc / .bashrc, for use anywhere via their alias. + +For usage instructions about any of them, just append the `--help` flag. + +- [Transfer]() - Quickly transfer files or folders to the internet +- [Web Search]() - Open a specific search engine with a given query +- [QR Code]() - Generates a QR code for a given string, to transfer data to mobile device +- [Weather]() - Shows current and forecasted weather for your location +- [Color Map]() - Just outputs your terminal emulators supported color pallete +- [Welcome]() - Used for first login, prints personalised greeting, system info, and other handy info +- [Online]() - Checks if you are connected to the internet + + + +#### Transfer + +Quickly transfer a file, group of files or directory via the transfer.sh service.
+To get started, run `transfer `, for more info, run `transfer --help` + +If multiple files are passed in, they will automatically be compressed into an archive. +You can change the file transfer service, or use a self-hosted instance by setting the URL in `FILE_TRANSFER_SERVICE` +The file can be either run directly, or sourced in your `.zshrc` and used via the `transfer` alias. + +> For info, run `transfer --help`
+> Source: [`utils/transfer.sh`](https://github.com/Lissy93/dotfiles/blob/master/utils/transfer.sh) + +#### Web Search + +Quickly open web search results for a given query using a selected search engine. To get started, run `web-search`, or `web-search --help` for more info. + +Usage: + +All parameters are optional, to get started just run `web-search` or `web-search `, the `ws` alias can also be used. If a search engine isn't specified, you'll be prompted to select one from the list. Similarly, if a query hasn't been included you'll be asked for that too. + +- `web-search` - Opens interactive menu, you'll be prompted to select a search engine from the list then enter your query +- `web-search ` - Specify a search term, and you'll be prompted to select the search engine + - For example, `web-search Hello World!` +- `web-search ` - Specify a search engine, and you'll be prompted for your search term + - For example, `web-search duckduckgo` +- `web-search ` - Specify both a search engine and query, and results will open immediately + - For example, `web-search wikipedia Matrix Defense` + +
+ +Supported Search Providers + +The following search engines are supported by default: +- DuckDuckGo: `ws duckduckgo` (or `wsddg`) +- Wikipedia: `ws wikipedia` or (`wswiki`) +- GitHub: `ws github` (or `wsgh`) +- StackOverflow: `ws stackoverflow` (or `wsso`) +- Wolframalpha: `ws wolframalpha` (or `wswa`) +- Reddit: `ws reddit` (or `wsrdt`) +- Maps: `ws maps` (or `wsmap`) +- Google: `ws google` (or `wsggl`) +- Grep App: `ws grepapp` (or `wsgra`) + +
+ +The alias `ws` will also resolve to `web-search`, if it's not already in use. You can either run the script directly, e.g.`~/.config/utils/web-search.sh` (don't forget to `chmod +x` the file first, to make it executable), or use the `web-search` / `ws` alias anywhere, once it has been source'd from your .zshrc. + +> For info, run `web-search --help`
+> Source: [`utils/web-search.sh`](https://github.com/Lissy93/dotfiles/blob/master/utils/web-search.sh) + +
+ +Try now! + +```bash +bash <(curl -s https://raw.githubusercontent.com/Lissy93/dotfiles/master/utils/web-search.sh) +``` + +
+ + +--- diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 7636242..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "makefile.extensionOutputFolder": "./.vscode" -} diff --git a/bash/.bashrc b/bash/.bashrc index ba49034..2962d8e 100644 --- a/bash/.bashrc +++ b/bash/.bashrc @@ -1,6 +1,13 @@ -# A simple Bash PS1 prompt, that displays directory, git status and arrow -# Availible on GitHub: https://github.com/Lissy93/minimal-terminal-prompt -# Licensed under MIT - (C) Alicia Sykes, 2022 + +####################################################################### +# ~/.bashrc - Custom PS1 Prompt for Bash Shell # +####################################################################### +# I don't much use Bash me, prefer ZSH of Fish... # +# When that's not availible, let's at least make things look half ok # +####################################################################### +# Originated from: https://github.com/Lissy93/minimal-terminal-prompt # +# Licensed under MIT (C) Alicia Sykes 2022 # +####################################################################### ## Define all the colors COL_USER_HOST='\e[35m' # The color of 'user@host.ext' diff --git a/configs/.gitconfig b/configs/.gitconfig index c74c7dd..264a97d 100644 --- a/configs/.gitconfig +++ b/configs/.gitconfig @@ -268,3 +268,9 @@ smudge = git-lfs smudge -- %f process = git-lfs filter-process required = true +[difftool "sourcetree"] + cmd = opendiff \"$LOCAL\" \"$REMOTE\" + path = +[mergetool "sourcetree"] + cmd = /Users/alicia/Applications/Sourcetree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\" + trustExitCode = true diff --git a/install.sh b/install.sh index 25c2f13..c8ba52b 100755 --- a/install.sh +++ b/install.sh @@ -252,9 +252,14 @@ function install_packages () { echo -e "${PURPLE}Skipping package installs${RESET}" return fi - # Mac OS if [ "$system_type" = "Darwin" ]; then + # Mac OS intall_macos_packages + elif [ -f "/etc/arch-release" ]; then + # Arch Linux + arch_pkg_install_script="${DOTFILES_DIR}/installs/arch-pacman.sh" + chmod +x $arch_pkg_install_script + $arch_pkg_install_script fi # If running in Linux desktop mode, prompt to install desktop apps via Flatpak flatpak_script="${DOTFILES_DIR}/installs/flatpak.sh" diff --git a/installs/Brewfile b/installs/Brewfile index c18b14e..3d075a2 100644 --- a/installs/Brewfile +++ b/installs/Brewfile @@ -39,12 +39,13 @@ brew 'bat' # Output highlighting (better cat) brew 'broot' # Interactive directory navigation brew 'ctags' # Indexing of file info + headers brew 'diff-so-fancy'# Readable file compares (better diff) +brew 'duf' # Get info on mounted disks (better df) brew 'exa' # Listing files with info (better ls) brew 'fzf' # Fuzzy file finder and filtering brew 'hyperfine' # Benchmarking for arbitrary commands brew 'just' # Powerful command runner (better make) brew 'jq' # JSON parser, output and query files -brew 'duf' # Get info on mounted disks (better df) +brew 'most' # Multi-window scroll pager (better less) brew 'procs' # Advanced process viewer (better ps) brew 'ripgrep' # Searching within files (better grep) brew 'scc' # Count lines of code (better cloc) diff --git a/installs/arch-pacman.sh b/installs/arch-pacman.sh new file mode 100644 index 0000000..189a7bd --- /dev/null +++ b/installs/arch-pacman.sh @@ -0,0 +1,165 @@ +#!/usr/bin/env bash + +################################################################ +# 📜 Arch Linux, Pacman Package Install / Update Script # +################################################################ +# Installs listed packages on Arch-based systems via Pacman # +# Also updates the cache database and existing applications # +# Confirms apps arn't installed via different package manager # +# Doesn't include desktop apps, that're managed via Flatpak # +# Apps are sorted by category, and arranged alphabetically # +# Be sure to delete / comment out anything you do not need # +# For more info, see: https://wiki.archlinux.org/title/Pacman # +################################################################ +# MIT Licensed (C) Alicia Sykes 2022 # +################################################################ + +# Apps to be installed via Pacman +pacman_apps=( + # Essentials + 'git' # Version controll + 'neovim' # Text editor + 'ranger' # Directory browser + 'tmux' # Term multiplexer + 'wget' # Download files + + # CLI Power Basics + 'aria2' # Resuming download util (better wget) + 'bat' # Output highlighting (better cat) + 'broot' # Interactive directory navigation + 'cloc' # Count lines of code in file / dir + 'ctags' # Indexing of file info + headers + 'diff-so-fancy' # Readable file compares (better diff) + 'duf' # Get info on mounted disks (better df) + 'exa' # Listing files with info (better ls) + 'fzf' # Fuzzy file finder and filtering + 'hyperfine' # Benchmarking for arbitrary commands + 'just' # Powerful command runner (better make) + 'jq' # JSON parser, output and query files + 'most' # Multi-window scroll pager (better less) + 'procs' # Advanced process viewer (better ps) + 'ripgrep' # Searching within files (better grep) + 'scrot' # Screenshots programmatically via CLI + 'sd' # RegEx find and replace (better sed) + 'thefuck' # Auto-correct miss-typed commands + 'tealdeer' # Reader for command docs (better man) + 'tree' # Directory listings as tree structure + 'trash-cli' # Record and restore removed files + 'xsel' # Copy paste access to the X clipboard + 'zoxide' # Auto-learning navigation (better cd) + + # Security Utilities + 'clamav' # Open source virus scanning suite + 'cryptsetup' # Reading / writing encrypted volumes + 'gnupg' # PGP encryption, signing and verifying + 'git-crypt' # Transparent encryption for git repos + 'lynis' # Scan system for common security issues + 'openssl' # Cryptography and SSL/TLS Toolkit + 'rkhunter' # Search / detect potential root kits + + # Monitoring, management and stats + 'btop' # Live system resource monitoring + 'bmon' # Bandwidth utilization monitor + 'ctop' # Container metrics and monitoring + 'gping' # Interactive ping tool, with graph + 'glances' # Resource monitor + web and API + 'goaccess' # Web log analyzer and viewer + 'speedtest-cli' # Command line speed test utility + + # CLI Fun + 'cowsay' # Outputs message with ASCII art cow + 'figlet' # Outputs text as 3D ASCII word art + 'lolcat' # Rainbow coloured terminal output + 'neofetch' # Show off distro and system info +) + +# Colors +PURPLE='\033[0;35m' +YELLOW='\033[0;93m' +CYAN_B='\033[1;96m' +LIGHT='\x1b[2m' +RESET='\033[0m' + +PROMPT_TIMEOUT=15 # When user is prompted for input, skip after x seconds + +# If set to auto-yes - then don't wait for user reply +if [[ $* == *"--auto-yes"* ]]; then + PROMPT_TIMEOUT=0 + REPLY='Y' +fi + +# Print intro message +echo -e "${PURPLE}Starting Arch package install / update script" +echo -e "${LIGHT}The following script is for Arch / Arch-based headless systems, and will" +echo -e "update database, upgrade packages, clear cache then install all listed CLI apps." +echo -e "${YELLOW}Before proceeding, ensure your happy with all the packages listed in \e[4m${0##*/}" +echo -e "${RESET}" + +# Check if running as root, and prompt for password if not +if [ "$EUID" -ne 0 ]; then + echo -e "${PURPLE}Elevated permissions are required to adjust system settings." + echo -e "${CYAN_B}Please enter your password...${RESET}" + sudo -v + if [ $? -eq 1 ]; then + echo -e "${YELLOW}Exiting, as not being run as sudo${RESET}" + exit 1 + fi +fi + +# Check pacman actually installed +if ! hash pacman 2> /dev/null; then + echo "${YELLOW_B}Pacman doesn't seem to be present on your system. Exiting...${RESET}" + exit 1 +fi + +# Prompt user to update package database +echo -e "${CYAN_B}Would you like to update package database? (y/N)${RESET}\n" +read -t $PROMPT_TIMEOUT -n 1 -r +echo +if [[ $REPLY =~ ^[Yy]$ ]]; then + echo -e "${PURPLE}Updating dadatbase...${RESET}" + sudo pacman -Syy --noconfirm +fi + +# Prompt user to upgrade currently installed packages +echo -e "${CYAN_B}Would you like to upgrade currently installed packages? (y/N)${RESET}\n" +read -t $PROMPT_TIMEOUT -n 1 -r +echo +if [[ $REPLY =~ ^[Yy]$ ]]; then + echo -e "${PURPLE}Upgrading installed packages...${RESET}" + sudo pacman -Syu --noconfirm +fi + +# Prompt user to clear old package caches +echo -e "${CYAN_B}Would you like to clear unused package caches? (y/N)${RESET}\n" +read -t $PROMPT_TIMEOUT -n 1 -r +echo +if [[ $REPLY =~ ^[Yy]$ ]]; then + echo -e "${PURPLE}Freeing up disk space...${RESET}" + sudo pacman -Sc --noconfirm + paccache -r +fi + +# Prompt user to install all listed apps +echo -e "${CYAN_B}Would you like to install listed apps? (y/N)${RESET}\n" +read -t $PROMPT_TIMEOUT -n 1 -r +echo +if [[ $REPLY =~ ^[Yy]$ ]]; then + echo -e "${PURPLE}Starting install...${RESET}" + for app in ${pacman_apps[@]}; do + if hash "${app}" 2> /dev/null; then + echo -e "${YELLOW}[Skipping]${LIGHT} ${app} is already installed${RESET}" + elif [[ $(echo $(pacman -Qk $(echo $app | tr 'A-Z' 'a-z') 2> /dev/null )) == *"total files"* ]]; then + echo -e "${YELLOW}[Skipping]${LIGHT} ${app} is already installed via Pacman${RESET}" + elif hash flatpak 2> /dev/null && [[ ! -z $(echo $(flatpak list --columns=ref | grep $app)) ]]; then + echo -e "${YELLOW}[Skipping]${LIGHT} ${app} is already installed via Flatpak${RESET}" + else + echo -e "${PURPLE}[Installing]${LIGHT} Downloading ${app}...${RESET}" + sudo pacman -S ${app} --needed --noconfirm + fi + done +fi + +echo -e "${PURPLE}Finished installing / updating Arch packages.${RESET}" + +# EOF diff --git a/installs/arch.sh b/installs/arch.sh deleted file mode 100644 index 168706d..0000000 --- a/installs/arch.sh +++ /dev/null @@ -1,164 +0,0 @@ -#!/usr/bin/env bash - -############################################################### -# Installs listed packages on Arch-based systems via Pacman # -# Doesn't include desktop apps, that're managed via Flatpak # -# Apps are sorted by category, and arranged alphabetically # -# Be sure to delete / comment out anything you do not need # -# For more info, see: https://wiki.archlinux.org/title/Pacman # -############################################################### -# MIT Licensed (C) Alicia Sykes 2022 # -############################################################### - -# Apps to be installed via Pacman -pacman_apps=( - # Essentials - 'git' # Version controll - 'neovim' # Text editor - 'ranger' # Directory browser - 'tmux' # Term multiplexer - - # Basics - 'aria2' # Resuming download util (better wget) - 'bat' # Output highlighting (better cat) - 'broot' # Interactive directory navigation - 'ctags' # Indexing of file info + headers - 'diff-so-fancy'# Readable file compares (better diff) - 'exa' # Listing files with info (better ls) - 'fzf' # Fuzzy file finder and filtering - 'hyperfine' # Benchmarking for arbitrary commands - 'just' # Powerful command runner (better make) - 'jq' # JSON parser, output and query files - 'duf' # Get info on mounted disks (better df) - 'procs' # Advanced process viewer (better ps) - 'ripgrep' # Searching within files (better grep) - 'scc' # Count lines of code (better cloc) - 'sd' # RegEx find and replace (better sed) - 'thefuck' # Auto-correct miss-typed commands - 'tldr' # Community-maintained docs (better man) - 'tree' # Directory listings as tree structure - 'trash-cli' # Record and restore removed files - 'xsel' # Copy paste access to the X clipboard - 'zoxide' # Auto-learning navigation (better cd) - - # Monitoring - 'bmon' # Bandwidth utilization monitor - 'ctop' # Container metrics and monitoring - 'bpytop' # Resource monitoring (like htop) - 'glances' # Resource monitor + web and API - 'goaccess' # Web log analyzer and viewer - 'gping' # Interactive ping tool, with graph - 'ncdu' # Disk usage analyzer and monitor (better du) - 'speedtest-cli'# Command line speed test utility - - # Productivity Apps - 'browsh' # Web browser, in terminal - 'buku' # Bookmark manager - 'cmus' # Music player - 'khal' # Calendar client - 'mutt' # Email client - 'newsboat' # RSS / ATOM reader - 'pass' # Password store - 'rclone' # Manage cloud storage - 'task' # Todo + task management - - # Development Suits - 'httpie' # HTTP / API testing testing client - 'lazydocker' # Full Docker management app - 'lazygit' # Full Git managemtne app - - # External Sercvices - 'ngrok' # Reverse proxy for sharing localhost - 'tmate' # Share a terminal session via internet - 'asciinema' # Recording + sharing terminal sessions - 'navi' # Browse, search, read cheat sheets - - # Fun - 'cowsay' # Have an ASCII cow say your message - 'figlet' # Output text as big ASCII art text - 'lolcat' # Make console output raibow colored - 'neofetch' # Show system data and ditstro info - 'pipes-sh' # Cool terminal pipe screen saver - 'pv' # Pipe viewer, with animation options -) - -# Colors -CYAN_B='\033[1;96m' -YELLOW='\033[0;93m' -RESET='\033[0m' -GREEN='\033[0;32m' -PURPLE='\033[0;35m' -LIGHT='\x1b[2m' - -PROMPT_TIMEOUT=15 # When user is prompted for input, skip after x seconds - -# Print intro message -echo -e "${PURPLE}Starting Arch app install / update script" -echo -e "${LIGHT}The following script is for Arch / Arch-based headless systems, and will" -echo -e "update database, upgrade packages, clear cache then install all listed CLI apps." -echo -e "${YELLOW}Before proceeding, ensure your happy with all the packages listed in \e[4m${0##*/}" -echo -e "${RESET}" - -# Check if running as root, and prompt for password if not -if [ "$EUID" -ne 0 ]; then - echo -e "${PURPLE}Elevated permissions are required to adjust system settings." - echo -e "${CYAN_B}Please enter your password...${RESET}" - sudo -v - if [ $? -eq 1 ]; then - echo -e "${YELLOW}Exiting, as not being run as sudo${RESET}" - exit 1 - fi -fi - -# Check pacman actually installed -if ! hash pacman 2> /dev/null; then - echo "${YELLOW_B}Pacman doesn't seem to be present on your system. Exiting...${RESET}" - exit 1 -fi - -# Prompt user to update package database -echo -e "${CYAN_B}Would you like to update package database? (y/N)${RESET}\n" -read -t $PROMPT_TIMEOUT -n 1 -r -echo -if [[ $REPLY =~ ^[Yy]$ ]]; then - echo -e "${PURPLE}Updating dadatbase...${RESET}" - sudo pacman -Syy --noconfirm -fi - -# Prompt user to upgrade currently installed packages -echo -e "${CYAN_B}Would you like to upgrade currently installed packages? (y/N)${RESET}\n" -read -t $PROMPT_TIMEOUT -n 1 -r -echo -if [[ $REPLY =~ ^[Yy]$ ]]; then - echo -e "${PURPLE}Upgrading installed packages...${RESET}" - sudo pacman -Syu --noconfirm -fi - -# Prompt user to clear old package caches -echo -e "${CYAN_B}Would you like to clear unused package caches? (y/N)${RESET}\n" -read -t $PROMPT_TIMEOUT -n 1 -r -echo -if [[ $REPLY =~ ^[Yy]$ ]]; then - echo -e "${PURPLE}Freeing up disk space...${RESET}" - sudo pacman -Sc --noconfirm -fi - -# Prompt user to install all listed apps -echo -e "${CYAN_B}Would you like to install listed apps? (y/N)${RESET}\n" -read -t $PROMPT_TIMEOUT -n 1 -r -echo -if [[ $REPLY =~ ^[Yy]$ ]]; then - echo -e "${PURPLE}Starting install...${RESET}" - for app in ${pacman_apps[@]}; do - if hash "${app}" 2> /dev/null; then - echo -e "${YELLOW}[Skipping]${LIGHT} ${app} is already installed${RESET}" - elif hash flatpak 2> /dev/null && [[ ! -z $(echo $(flatpak list --columns=ref | grep $app)) ]]; then - echo -e "${YELLOW}[Skipping]${LIGHT} ${app} is already installed via Flatpak${RESET}" - else - echo -e "${PURPLE}[Installing]${LIGHT} Downloading ${app}...${RESET}" - # pacman -S ${app} --noconfirm - fi - done -fi - -echo -e "${PURPLE}Finished installing / updating Arch packages.${RESET}" diff --git a/lets-go.sh b/lets-go.sh index 666f0ae..32b4ad0 100755 --- a/lets-go.sh +++ b/lets-go.sh @@ -2,8 +2,7 @@ ###################################################################### # Lissy93/dotfiles - Remote Runnable Dotfile Setup and Update Script # -# Licensed under MIT (C) Alicia Sykes 2022 # -# # +###################################################################### # This script will clone + install, or update dotfiles from git # # Be sure to read through the repo before running anything here # # For more info, read docs: https://github.com/Lissy93/dotfiles # @@ -12,6 +11,8 @@ # - DOTFILES_REPO - Optionally sets the source repo to be cloned # # - DOTFILES_DIR - Optionally sets the local destination directory # ###################################################################### +# Licensed under MIT (C) Alicia Sykes 2022 # +###################################################################### # If not already set, specify dotfiles destination directory and source repo DOTFILES_DIR="${DOTFILES_DIR:-$HOME/Documents/config/dotfiles}" @@ -19,10 +20,10 @@ DOTFILES_REPO="${DOTFILES_REPO:-https://github.com/lissy93/dotfiles.git}" # Print starting message echo -e "\033[1;35m""Lissy93/Dotfiles Installation Script 🧰 -\033[0;35mThis script will install or update dotfiles from \033[4;35m\ -${DOTFILES_REPO}\033[0;35m into \033[4;35m${DOTFILES_DIR}\033[0;35m\n\ -Be sure that you have read and understood config which will be applied. -If you don't want to proceed, press Ctrl+C to cancel now...\033[0m\n" +\033[0;35mThis script will install or update specified dotfiles: +- From \033[4;35m${DOTFILES_REPO}\033[0;35m +- Into \033[4;35m${DOTFILES_DIR}\033[0;35m +Be sure you've read and understood the what will be applied.\033[0m\n" # If dotfiles not yet present then clone if [[ ! -d "$DOTFILES_DIR" ]]; then @@ -33,6 +34,6 @@ fi # Execute setup or update script cd "${DOTFILES_DIR}" && \ chmod +x ./install.sh && \ -./install.sh +./install.sh --no-clear # EOF diff --git a/symlinks.yaml b/symlinks.yaml index 12f4b93..5dca57a 100644 --- a/symlinks.yaml +++ b/symlinks.yaml @@ -21,9 +21,7 @@ ${XDG_CONFIG_HOME}/tmux/tmux.conf: tmux/tmux.conf ${XDG_CONFIG_HOME}/utils: utils ${XDG_CONFIG_HOME}/git/.gitconfig: configs/.gitconfig - # ~/.gitconfig: configs/.gitconfig ${XDG_CONFIG_HOME}/.gitignore_global: configs/.gitignore_global - # ${XDG_CONFIG_HOME}/curl/.curlrc: configs/.curlrc $XDG_CONFIG_HOME/yabai/yabairc: if: '[ `uname` = Darwin ]' path: system-specific/macos/app-configs/yabairc diff --git a/system-specific/macos/.macos b/system-specific/macos/.macos index 2776039..92bf1c3 100755 --- a/system-specific/macos/.macos +++ b/system-specific/macos/.macos @@ -1,11 +1,28 @@ #!/usr/bin/env bash -# ~/.macos - -DIR="$(cd "$(dirname "$0")" && pwd)/system-settings" - -$DIR/macos-security.sh -$DIR/macos-preferences.sh -$DIR/macos-apps.sh +######################################################################## +# Initiates the applying of MacOS-specific settings and preferences # +# Will use local files if available, otherwise run directly from git # +# IMPORTANT: Be sure to read files through thoughouly before executing # +######################################################################## +# Licensed under MIT (C) Alicia Sykes 2022 # +######################################################################## +macos_scripts=( + "macos-security.sh" # Applies security settings + "macos-preferences.sh" # Sets user preferences + "macos-apps.sh" # Configures app options +) +if [ ! -z $0 ]; then # Use local files + DIR="$(cd "$(dirname "$0")" && pwd)/system-settings" + for mac_script in ${macos_scripts[@]}; do + $DIR/$mac_script + done +else # Run from remote origin + REMOTE_DIR="https://raw.githubusercontent.com/Lissy93/dotfiles" + REMOTE_DIR+="/master/system-specific/macos/system-settings" + for mac_script in ${macos_scripts[@]}; do + bash <(curl -s "${REMOTE_DIR}/${mac_script}") + done +fi diff --git a/tmux/tmux.conf b/tmux/tmux.conf index 24fd44d..92d77b5 100644 --- a/tmux/tmux.conf +++ b/tmux/tmux.conf @@ -1,30 +1,76 @@ -# To copy, left click and drag to highlight text in yellow, -# once you release left click yellow text will disappear and will automatically be available in clibboard + +###################################################################### +# Tmux Configuration File (~/.tmux.conf) # +###################################################################### +# Config for Tmux multiplexer (requires version >= v2.4) # +# Sets preferences, keybindings and configures plugins # +# For docs and more info, see: https://github.com/lissy93/dotfiles # +# # +# Licensed under MIT (C) Alicia Sykes 2022 # +###################################################################### + + +###################################################################### +# Basics # +###################################################################### + +# Add a secondary prefix key (Ctrl+A as well as Ctrl+B) + +# Set Tmux prefix keys (Ctrl+B or `) +set-option -g prefix C-b +set-option -g prefix2 ` # Use vim keybindings in copy mode setw -g mode-keys vi +# Allow mouse support +set -g mouse on + +# Use wider color pallete +set -g default-terminal screen-256color + +# Set bigger history limit +set -g history-limit 20000 + +# Set Esc delay after prefix +set -sg escape-time 20 + +# Keep Tmux alive when the initial command is finished +set -g remain-on-exit off + +# Sets parent terminal title, same as current Tmux window +set -g set-titles on +set -g set-titles-string "#I:#W" + # Update default binding of `Enter` to also use copy-pipe unbind -T copy-mode-vi Enter bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -selection c" bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard" + +###################################################################### +# Navigation # +###################################################################### + # Allow Alt+Arrow to switch pains bind -n M-Left select-pane -L bind -n M-Right select-pane -R bind -n M-Up select-pane -U bind -n M-Down select-pane -D -# Allow mouse support -set -g mouse on +# Split window horizontally (h) / veritcally (v) +bind v split-window -v +bind h split-window -h # Activity Monitoring (for when something happens in another pain) set -g monitor-activity on set -g visual-activity on -# Use wider color pallete -set -g default-terminal screen-256color + +###################################################################### +# Plugin Imports and Configurations # +###################################################################### # Set install location for plugins set-environment -g TMUX_PLUGIN_MANAGER_PATH "${XDG_DATA_HOME}/tmux/plugins" diff --git a/zsh/aliases/general.zsh b/zsh/aliases/general.zsh index f315052..edde455 100644 --- a/zsh/aliases/general.zsh +++ b/zsh/aliases/general.zsh @@ -180,3 +180,4 @@ alias gtfo='exit' # Alias for install script alias dotfiles="${DOTFILES_DIR:-$HOME/Documents/config/dotfiles}/install.sh" +alias dots="dotfiles" diff --git a/zsh/aliases/git.zsh b/zsh/aliases/git.zsh index a2bced4..bd65d27 100644 --- a/zsh/aliases/git.zsh +++ b/zsh/aliases/git.zsh @@ -26,7 +26,7 @@ alias gcl="git clone" # Downloads repo from alias gch="git checkout" # Switch the HEAD to alias gb="git branch" # Create a new from HEAD alias gd="git diff" # Show all changes to untracked files -alias gtree="git log --graph --oneline --decorate" # Show branch tree +alias gtree="git log --graph --oneline --decorate --abbrev-commit" # Show branch tree alias gl='git log' # Tags