# Paws

This repo holds most of my random small scripts, configs, paws(blobs)

```Logo
     _                    _        ____             __ _       _
    / \   _ __ ___  _   _( )___   / ___|___  _ __  / _(_) __ _( )___
   / _ \ | '__/ _ \| | | |/ __|  | |   / _ \| '_ \| |_| |/ _` |/ __|
  / ___ \| | | (_) | |_| | \__ \ | |__| (_) | | | |  _| | (_| | \__ \
 /_/   \_\_|  \___/ \__, | |___/  \____\___/|_| |_|_| |_|\__, | |___/
                    |___/                                |___/

  ,-.       _,---._ __  / \
 /  )    .-'       `./ /   \
(  (   ,'            `/    /|
 \  `-"             \'\   / |
  `.              ,  \ \ /  |
   /`.          ,'-`----Y   |
  (            ;        |   '
  |  ,-.    ,-'         |  /
  |  | (   |            | /
  )  |  \\  `.__________|/
  `--'   `--'

```

---

## Contents

* [Configs](#configs)
  * [Cura](#cura)
    * [Materials](#materials)
      * [Clas Ohlsson's PLA](#clas-ohlsson-s-pla)
  * [Tmux](#tmux)
* [Docker](#docker)
  * [Docker Compose](#docker-compose)
* [Python Scripts](#python-scripts)
  * [rename_backslash.py](#rename_backslash-py)
* [Shell Scripts](#shell-scripts)
  * [24-bit-color.sh](#24-bit-color-sh)
  * [reinstall-packages-with-missing-files.sh](#reinstall-packages-with-missing-files-sh)
  * [rsync-incremental-backups.sh](#rsync-incremental-backups-sh)
  * [set_dns_search_domain.sh](#set_dns_search_domain-sh)

---

## [Configs](Configs/)

### [Cura](Configs/Cura/)

#### [Materials](Configs/Cura/Materials/)

##### [Clas Ohlsson's PLA](Configs/Cura/Materials/ClasOhlssonPLA.xml.fdm_material)

The material config file for Clas Ohlsson's PLA Materials

---

### [Tmux](Configs/Tmux/tmux.conf)

My tmux config file. Some note worthy changes are:

* `prefix` + `r` for quick reloading the config
* higher history limit
* `alt + arrow keys` to quickly change active panel

## [Docker](Docker/)

### [Docker Compose](Docker/Docker-Compose/)

README's are in there respectively docker compose folders

## [Python Scripts](PythonScripts/)

### [rename_backslash.py](PythonScripts/rename_backslash.py)

A script to replace backslashes(\\) with ⧹ in filenames within a directory and its sub-directories.

Run with ether of the commands below and replace `<path>` your actual path to the folder where the files are located that you want to rename.

```Bash
python PythonScripts/rename_backslash.py <path>
```

or

```Bash
PythonScripts/rename_backslash.py <path>
```

## [Shell Scripts](ShellScripts/)

This folder has a loot of different shell scripts for everything from automating stuff to toys.

### [24-bit-color.sh](ShellScripts/24-bit-color.sh)

This script echoes a bunch of 24-bit color codes to the terminal to demonstrate its functionality and test color support of terminals.  
![An image showing four lines the first is fading black to red, second black to green, third black to blue, and the last is all rainbow colours](Docs/img/24-bit-color.png)

---

### [reinstall-packages-with-missing-files.sh](ShellScripts/reinstall-packages-with-missing-files.sh)

Reinstall all packages with missing files  
This script uses the `pacman` package manager to check for packages with
missing files. It then iterates over each package and reinstalls it using
`pacman`. The `--overwrite` flag is used to ensure that any conflicting
files are overwritten. Finally, the `--noconfirm` flag is used to avoid
confirmation prompts for each package.

> Warning: This script overwrites any modified files on the system with the original files from the packages.

Usage:  
> Note needs to be run as root.

```Bash
./ShellScripts/reinstall-packages-with-missing-files.sh
```

### [rsync-incremental-backups.sh](ShellScripts/rsync-incremental-backups.sh)

This script performs incremental backups of the specified source directory using rsync, and it keeps a symbolic link called 'latest' pointing to the most recent backup for easy reference. The script also logs backup details in a log file with a timestamp. Make sure to replace `<input folder>` and `<output folder>` with your actual source and backup directories.

---

### [set_dns_search_domain.sh](ShellScripts/set_dns_search_domain.sh)

Is a small script that runs the resolvectl domain command when the specific a Wi-Fi network is gets connected.

* **To configure the system to run the script:**  
You can configure your system to execute the script whenever the Wi-Fi connection event occurs. This typically involves using network manager scripts or similar mechanisms provided by your Linux distribution.  
replace the `<Your_Targeted_WiFi_SSID>`, `<interface>` and  `<domain>` with the actual values you have.  
For example, with NetworkManager, you can place the script in the /etc/NetworkManager/dispatcher.d directory. Scripts in this directory are executed when network events occur.

```Bash
sudo cp set_dns_search_domain.sh /etc/NetworkManager/dispatcher.d/
```

Ensure that the script has execute permissions:

```Bash
sudo chmod +x /etc/NetworkManager/dispatcher.d/set_dns_search_domain.sh
```

The script will be automatically executed whenever the Wi-Fi connection event occurs. When the targeted Wi-Fi network is connected, the DNS search domain will be set for the specified interface.