# Linux & CLI Commands

# FFMPEG Commands

# Cropping

**Center Crop for Instagram:**

`ffmpeg -i ParticleSensor.mp4 -vf "scale=(iw*sar)*max(1080/(iw*sar)\,1080/ih):ih*max(1080/(iw*sar)\,1080/ih), crop=1080:1080" ParticleSensor_ig.mp4`

# Web Convert

##### **OGV:**

```bash
in_old = "path_to_vid.mp4"
new = ${in_old%.*}.ogv
ffmpeg -i $in_old -codec:v libtheora -qscale:v 6 -codec:a libvorbis -qscale:a 6 $new
```

##### MP4:  


```bash
ffmpeg -i Web*.mov -an \
  -vf "scale=1920:-2:flags=lanczos,fps=30" \
  -c:v libx264 -preset slow -crf 22 \
  -pix_fmt yuv420p -profile:v high -level 4.1 \
  -g 120 -bf 2 \
  -movflags +faststart \
  frontvideo01.mp4
```

# Convert entire folder

```bash
for i in *.mov;
  do name=`echo "$i" | cut -d'.' -f1`
  echo "$name"
  ffmpeg -i "$i" "${name}.mp4"
done
```

# Hardware encoding

#### **Intel example command:**

ffmpeg -hwaccel vaapi -hwaccel\_output\_format vaapi -vaapi\_device /dev/dri/renderD128 -i "${invid}" -codec:v h264\_vaapi ${invid%.}\_testHW.mp4

# For Website Looping Video

`ffmpeg -ss 10 -i $INPUT -t 5 -<span class="hljs-string">'min(350,ih)':force_original_aspect_ratio=decrease,pad=550:350:(550-iw)/2:(350-ih)/2"</span> -c:v libx264 -an -preset veryfast -crf 28 output.mp4`

# Images and PDFs

# Convert PNG to Icon

first convert to 256

```shell
convert input.png -resize 256x256 output.png
```

last convert to icns

```shell
png2icns output.icns input.png
```

# New Page



# PDF to one image

```bash
convert in.pdf +append out%d.png
```

sudo apt install imagemagick

If convert is broken, update policy:

```
# Open the file 
sudo nano /etc/ImageMagick-6/policy.xml

# find and edit the line
<policy domain="coder" rights="none" pattern="PDF" />
# to :
<policy domain="coder" rights="read|write" pattern="PDF" />
```

# Raw to JPG

```
ufraw-batch --out-type jpeg *

```

# DistroBox

# Install Ubuntu in distrobox

##### Install Docker first:  


```bash
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
```

##### Post Docker install:

```bash
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "$HOME/.docker" -R

sudo systemctl enable docker.service
sudo systemctl enable containerd.service
```

##### Then setup Distrobox and Container:

```bash
sudo apt install distrobox && distrobox create --image ubuntu:22.04 --name ubuntu && distrobox enter ubuntu
```

# NixOS

# Tailscale

```c++
 services.tailscale = {
    enable = true;
    openFirewall = true;
    authKeyFile = path-to-key;
    extraUpFlags = [
      "--login-server=https://your-instance" # if you use a non-default tailscale coordinator
      "--accept-dns=false" # if its' a server you prolly dont need magicdns
    ];
  };
```

# Tidal-dl-ng Shell

`nix-shell tidal.nix` (or whatever you call this file)

```bash
{ pkgs ? import <nixpkgs> {} }:

let
  pythonEnv = pkgs.python3.withPackages (ps: with ps; [
    pip
  ]);
in
pkgs.mkShell {
  name = "tidal-dl-ng-shell";

  buildInputs = [
    pythonEnv
    pkgs.ffmpeg
  ];

  shellHook = ''
    python -m venv .venv
    source .venv/bin/activate
    echo "🎵 Tidal-dl-ng environment ready."
    pip install python-ffmpeg
    pip install tidal-dl-ng
    echo "Ready to rock. Available command: tidal-dl-ng"
  '';
}
```

# Take Screenshot of Remote Machine

nix-shell -p xorg.xwd imagemagick --run 'sudo DISPLAY=:0 XAUTHORITY=/run/lightdm/root/:0 xwd -root -silent | magick xwd:- /tmp/screen.png'

# Admin