Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Karmenzind/dotfiles-and-scripts

:pill: dotfiles and scripts for my Linux and Windows
https://github.com/Karmenzind/dotfiles-and-scripts

arch archlinux python tmux vim

Last synced: 21 days ago
JSON representation

:pill: dotfiles and scripts for my Linux and Windows

Awesome Lists containing this project

README

        

# 🐝 dotfiles and scripts for my Linux/Win

> The ArchLinux installation scripts has been migrated to [this repo](https://github.com/Karmenzind/arch-installation-scripts) and is no longer maintained.

|[简体中文](./README_CN.md)|









🎨
Linux
Windows




Shell
Editor
Vim / Neovim (compatible with vscode-neovim)



Terminal

Alacritty + Tmux + Zsh

WindowsTerminal + pwsh(OMPosh)


Font

Monaco Nerd



Dict
kd


Others
fzf / fd / ranger / lf / pistol / rg etc.


GUI
Desktop
i3wm
-


Statusbar
polybar


Launcher
rofi


Notice
dunst


Enhancement
picom


Input
fcitx5


Screenshot
flameshot

> Check [file tree](./TREE.md)

## TOC

* [:gear: usage](#gear-usage)
* [apply all configurations](#apply-all-configurations)
* [(Neo)Vim configuration and setup](#neovim-configuration-and-setup)
* [install recommanded apps](#install-recommanded-apps)
* [Linux](#linux)
* [Windows](#windows)
* [:toolbox: toolbox scripts](#toolbox-toolbox-scripts)
* [manage Aria2 and auto update bt-trackers](#manage-aria2-and-auto-update-bt-trackers)
* [fetch advertisement domain list for Chinese users](#fetch-advertisement-domain-list-for-chinese-users)
* [:eyes: screenshots](#eyes-screenshots)
* [:bulb: create your own Dotfile repo](#bulb-create-your-own-dotfile-repo)

## :gear: usage

Firstly, **clone** this repo.

### apply all configurations

To apply everything in form of creating symbolic links for them (there will be prompt and backup before overwriting files):

```bash
python symlink.py
```

script parameters:
- -h show this help message and exit
- -i, --interactive Let me determine each file
- -d, --delete remove all symlink files
- --nogui only for terminal apps
- --vimonly only for vim related apps

### (Neo)Vim configuration and setup

Here are two sets of **full-featured** configuration for Vim and Neovim (compatible with vscode-neovim). Spent years optimizing them. There are many plugin differences, but the basic behaviors and keybindings are pretty much the same. Mainly for everyday **Python/Golang/Java/Javascript/Typescript** development, as well as whipping up **VimL/Lua/Bash** scripts.

Simply run:

```bash
bash scripts/setup_vim.sh
```

This script will take care of everything included:

- ensure Vim/Neovim installed
- created symlinks for configuraion files
- setup plugin and the manager
- install related apps (lsp, linters, fixers, fuzzy finders, etc.)

Or if you only need the configuration files, run symlink.py with `vimonly` specified:

```bash
python symlink.py --vimonly
```

Launch Vim/Neovim and the plugin setup will start automatically.

> Syncing Vim configurations directory under **root** might run into issues. I prefer not to create unique configuration for root user. FYI, I will create symlinks for .vimrc and .vim unser /root, sharing the same files with normal user.

### install recommanded apps

These are the apps I use for pretty much everything – work, development, and everyday life.

#### Linux

[This script](./scripts/install_apps.sh) supports both Arch Linux-based and Debian/Ubuntu-based distributions.

```bash
bash scripts/install_apps.sh
```

#### Windows

```bash
./dotfiles-and-scripts/scripts/setup.ps1
```

## :toolbox: toolbox scripts

> the description about some scripts that are no longer maintained can [be found here](./scripts/deprecated/README.md)

### manage Aria2 and auto update bt-trackers

- [myaria2](./local_bin/myaria2)

Function:

- launch, restart, stop, check status, check log
- update bt-tracker(from ngosang/trackerslist) periodically. Or via `update` subcommand
- backup old log files
- other trivials

Better combine with cron.

More details can be found in comments of the script.

### fetch advertisement domain list for Chinese users

- [update-adblock-list](./scripts/tools/update-adblock-list.sh)

Mainly for Pi-hole use. Alternatively you can add domain lists directly to Pi-hole's adlists, but Pi-hole updates often get stuck (possibly due to the performance of older Raspberry Pi models). So, I decided to create a manual handling script instead.

I've mixed together domain lists from a bunch of popular repos, got rid of duplicates, and set it to run weekly in crontab. After that, just add local file link to Pi-hole.

## :eyes: screenshots

- i3 Desktop on ArchLinux:
![](https://raw.githubusercontent.com/Karmenzind/i/master/dotfiles-and-scripts/float.png)
![](https://raw.githubusercontent.com/Karmenzind/i/master/dotfiles-and-scripts/desktop.png)

- (N)Vim:
![](https://raw.githubusercontent.com/Karmenzind/i/master/dotfiles-and-scripts/vim.png)

- Windows Terminal & pwsh7:
![](https://raw.githubusercontent.com/Karmenzind/i/master/dotfiles-and-scripts/winterminal.png)

## :bulb: create your own Dotfile repo

You can fork this repo and symlink your configuration files with [symlink.py](./symlink.py).