Shell Geçişi, Catppuccin Macchiato Teması ve Yardımcı Scriptler

Fish’ten zsh’e geçiş, tüm terminal araçlarını Catppuccin Macchiato (Blue accent) temasına uyumlama ve iki yardımcı shell scriptinin kurulumu.

Shell Geçişi: Fish → Zsh

Neden: Fish POSIX uyumlu değil, çok satırlı komut yapıştırmaları (örn. for ... end blokları, uzun find -exec zincirleri) sürekli parse hatası veriyordu. İnternetten kopyalanan her bash komutu için “tek satıra sıkıştır” dansı yapmak gerekiyordu.

sudo pacman -S zsh zsh-completions zsh-syntax-highlighting zsh-autosuggestions
chsh -s /usr/bin/zsh

Konsole profili fish’e sabitlenmişti, onu da düzelttik:

  • Dosya: ~/.local/share/konsole/Fish.profile
  • Command=/usr/bin/fish/usr/bin/zsh

CachyOS zsh ile Powerlevel10k gelir. Starship kullandığımız için wizard’ı atladık:

~/.zshrc

# Powerlevel10k sihirbazını devre dışı bırak
POWERLEVEL9K_DISABLE_CONFIGURATION_WIZARD=true
 
# CachyOS zsh config (oh-my-zsh + aliases)
source /usr/share/cachyos-zsh-config/cachyos-config.zsh
 
# Starship prompt
eval "$(starship init zsh)"
 
# Fish tarzı otomatik öneriler
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh 2>/dev/null
 
# Syntax highlighting (en sonda olmalı)
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh 2>/dev/null
source ~/.config/zsh/themes/catppuccin_macchiato-zsh-syntax-highlighting.zsh 2>/dev/null
 
# fzf Catppuccin Macchiato
export FZF_DEFAULT_OPTS=" \
--color=bg+:#363a4f,bg:#24273a,spinner:#f4dbd6,hl:#ed8796 \
--color=fg:#cad3f5,header:#ed8796,info:#c6a0f6,pointer:#f4dbd6 \
--color=marker:#b7bdf8,fg+:#cad3f5,prompt:#c6a0f6,hl+:#ed8796 \
--color=selected-bg:#494d64 \
--color=border:#8aadf4,label:#cad3f5"
 
export EZA_CONFIG_DIR=~/.config/eza
 
# Aliaslar
alias ll='eza -lah --icons --group-directories-first'
alias la='eza -a --icons'
alias ls='eza --icons --group-directories-first'
alias cat='bat --paging=never'

Catppuccin Macchiato + Blue Accent

Kurulan yerler:

KatmanDosya / YerNot
Konsole arka plan~/.local/share/konsole/catppuccin-macchiato.colorschemeProfilde ColorScheme=catppuccin-macchiato
Starship prompt~/.config/starship.tomlpalette = 'catppuccin_macchiato', segmentler blue/sapphire/sky/teal/lavender
zsh-syntax-highlighting~/.config/zsh/themes/catppuccin_macchiato-zsh-syntax-highlighting.zshzshrc’den source edilir
bat~/.config/bat/config + $(bat --config-dir)/themes/--theme="Catppuccin Macchiato"
btop~/.config/btop/btop.conf + ~/.config/btop/themes/catppuccin_macchiato.themecolor_theme = "catppuccin_macchiato"
fzfzshrc’deki FZF_DEFAULT_OPTS

Hata simgesi: Starship error_symbol hâlâ #ed8796 (macchiato red) — görünürlük için kasıtlı.

Tema indirme komutları (referans)

# Konsole
curl -fsSL -o ~/.local/share/konsole/catppuccin-macchiato.colorscheme \
  https://raw.githubusercontent.com/catppuccin/konsole/main/themes/catppuccin-macchiato.colorscheme
 
# zsh-syntax-highlighting
mkdir -p ~/.config/zsh/themes
curl -fsSL -o ~/.config/zsh/themes/catppuccin_macchiato-zsh-syntax-highlighting.zsh \
  https://raw.githubusercontent.com/catppuccin/zsh-syntax-highlighting/main/themes/catppuccin_macchiato-zsh-syntax-highlighting.zsh
 
# bat
mkdir -p "$(bat --config-dir)/themes"
curl -fsSL -o "$(bat --config-dir)/themes/Catppuccin Macchiato.tmTheme" \
  https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Macchiato.tmTheme
bat cache --build
 
# btop
mkdir -p ~/.config/btop/themes
curl -fsSL -o ~/.config/btop/themes/catppuccin_macchiato.theme \
  https://raw.githubusercontent.com/catppuccin/btop/main/themes/catppuccin_macchiato.theme

Yardımcı Scriptler

1. sort-wallpapers.sh

~/.local/bin/sort-wallpapers.sh — Bir dizindeki görselleri 4K/, QHD/, FHD/, Ultrawide/, Portrait/, Kucuk/, Bozuk/ klasörlerine ayırır. ImageMagick identify kullanır.

#!/bin/sh
set -e
DIR="${1:-$HOME/Pictures/Wallpapers/r-wallpaper}"
cd "$DIR"
mkdir -p 4K QHD FHD Ultrawide Portrait Kucuk Bozuk
 
find . -maxdepth 1 -type f \( -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' -o -iname '*.webp' -o -iname '*.gif' \) -print0 |
while IFS= read -r -d '' f; do
  dims=$(identify -format '%w %h' "$f" 2>/dev/null | head -1) || dims=""
  if [ -z "$dims" ]; then mv -- "$f" Bozuk/; continue; fi
  w=$(echo "$dims" | cut -d' ' -f1)
  h=$(echo "$dims" | cut -d' ' -f2)
  if [ "$h" -gt "$w" ]; then
    target=Portrait
  else
    ratio=$((w * 100 / h))
    if [ "$ratio" -ge 210 ]; then target=Ultrawide
    elif [ "$w" -ge 3840 ]; then target=4K
    elif [ "$w" -ge 2560 ]; then target=QHD
    elif [ "$w" -ge 1920 ]; then target=FHD
    else target=Kucuk; fi
  fi
  mv -- "$f" "$target/"
done

Kategori kuralları:

  • Portrait: boy > en (oranı önemsiz)
  • Ultrawide: en/boy >= 2.1
  • 4K: en >= 3840
  • QHD: en >= 2560
  • FHD: en >= 1920
  • Kucuk: geri kalan

2. sort-tg-export.sh

~/.local/bin/sort-tg-export.sh~/Downloads/tg_export/ altındaki her alt klasörde dosyaları Fotograflar/ ve Videolar/ şeklinde ikiye ayırır.

#!/bin/bash
set -e
BASE="${1:-$HOME/Downloads/tg_export}"
for d in "$BASE"/*/; do
  [ -d "$d" ] || continue
  mkdir -p "$d/Fotograflar" "$d/Videolar"
  find "$d" -maxdepth 1 -type f \( \
    -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' \
    -o -iname '*.webp' -o -iname '*.gif' -o -iname '*.heic' \
  \) -exec mv -t "$d/Fotograflar/" {} +
  find "$d" -maxdepth 1 -type f \( \
    -iname '*.mp4' -o -iname '*.mov' -o -iname '*.mkv' \
    -o -iname '*.webm' -o -iname '*.avi' -o -iname '*.m4v' \
  \) -exec mv -t "$d/Videolar/" {} +
done

r/wallpaper Top All-Time İndirme (bdfr)

gallery-dl Reddit’in bot korumasına takıldı (IP ban riski). BDFR (Bulk Downloader for Reddit) alternatif çalıştı — ama güncel praw ile uyumsuz:

pipx install bdfr
pipx inject bdfr 'praw<7.8' --force
bdfr download ~/Pictures/Wallpapers/r-wallpaper \
  --subreddit wallpaper --sort top --time all --limit 1000 --no-dupes

İndirme sonrası:

cd ~/Pictures/Wallpapers/r-wallpaper
mv -n wallpaper/* . 2>/dev/null
rmdir wallpaper 2>/dev/null
~/.local/bin/sort-wallpapers.sh

İlk çalıştırmada sonuç: 469 görsel → 4K: 169, FHD: 208, QHD: 68, Kucuk: 18, Ultrawide: 4, Portrait: 2, Bozuk: 0.

Öğrenilen / Dikkat

  • Fish çok satırlı komutları bozar: bundan böyle shell scriptleri dosyaya yazılıp çağrılıyor, veya bash -c '...' ile sarılıyor.
  • Reddit scraper’ları: gallery-dl bot korumasına yakalanıyor, bdfr daha sağlam ama eski praw gerektiriyor (pipx inject 'praw<7.8' --force).
  • Konsole profil Command alanı chsh değişikliğini override eder — profil dosyasını elle güncellemek şart.
  • CachyOS zsh default olarak Powerlevel10k ile gelir — starship kullanılacaksa wizard’ı POWERLEVEL9K_DISABLE_CONFIGURATION_WIZARD=true ile devre dışı bırak.

İlgili yazılar