feat: +fastfetch/mediainfo/ouch, config+plugin Yazi (metadata media & arsip), greeting fastfetch

This commit is contained in:
oxpoe committed 2026-10-15 03:26:42 +07:00
1 parent 23f51898f1
commit 2541e539b1
2 files changed
+164 -31

No files matched your search

+130 -9
View File
@@ -56,7 +56,7 @@ log "Paket dasar (curl/unzip/tar)"; install_base || warn "sebagian paket dasar g
# ---------------------------------------------------------------- distro pkgs
distro_install() {
local want=(fish starship yazi micro lazydocker) got=() p
local want=(fish starship yazi micro lazydocker fastfetch mediainfo ouch) got=() p
case "$PM" in
apt-get)
for p in "${want[@]}"; do apt-cache show "$p" >/dev/null 2>&1 && got+=("$p"); done
@@ -125,31 +125,143 @@ ensure_lazydocker() {
has lazydocker || die "lazydocker gagal dipasang"
}
ensure_ouch() {
has ouch && return 0
log "Install ouch (release GitHub -> $BIN)"
local tag target url tmp
tag="$(curl -fsSL -o /dev/null -w '%{url_effective}' https://github.com/ouch-org/ouch/releases/latest | sed 's#.*/tag/##')"
[ -n "$tag" ] || die "gagal menentukan versi ouch"
case "$ARCH" in
x86_64) target=x86_64-unknown-linux-musl ;;
aarch64) target=aarch64-unknown-linux-musl ;;
*) target="${ARCH}-unknown-linux-musl" ;;
esac
url="https://github.com/ouch-org/ouch/releases/download/${tag}/ouch-${target}.tar.gz"
tmp="$(mktemp -d)"
curl -fsSL "$url" -o "$tmp/ouch.tgz" || die "gagal unduh $url"
tar xzf "$tmp/ouch.tgz" -C "$tmp"
cp -f "$tmp/ouch-${target}/ouch" "$BIN/ouch"; chmod 0755 "$BIN/ouch"
rm -rf "$tmp"
has ouch || die "ouch gagal dipasang"
}
log "Pastikan tool terpasang"
ensure_fish
ensure_micro
ensure_starship
ensure_yazi
ensure_lazydocker
ensure_ouch
has fastfetch || warn "fastfetch tak ada di repo distro (greeting dilewati)"
has mediainfo || warn "mediainfo tak ada di repo distro (metadata media Yazi dilewati)"
# ---------------------------------------------------------------- config yazi
run_as_user() { # jalankan perintah sebagai user target (HOME-nya benar)
local u="$1"; shift
if [ "$u" = root ]; then bash -lc "$*" 2>/dev/null
else su -l "$u" -c "$*" 2>/dev/null; fi
}
write_yazi() {
local home="$1" user="$2" file
local home="$1" user="$2" dir
[ -d "$home" ] || return 0
file="$home/.config/yazi/yazi.toml"
mkdir -p "$home/.config/yazi"
[ -f "$file" ] && cp -a "$file" "${file}.bak-$(date +%Y%m%d%H%M%S)"
cat > "$file" <<'EOF'
dir="$home/.config/yazi"
mkdir -p "$dir"
local f; for f in yazi.toml keymap.toml init.lua; do
[ -f "$dir/$f" ] && cp -a "$dir/$f" "$dir/$f.bak-$(date +%Y%m%d%H%M%S)"
done
cat > "$dir/yazi.toml" <<'EOF'
# Editor default: micro (bukan vim)
[opener]
edit = [
{ run = 'micro %s', block = true, desc = "Edit (micro)", for = "unix" },
]
# Ekstrak arsip pakai ouch
extract = [
{ run = 'ouch d -y "$@"', desc = "Ekstrak di sini (ouch)", for = "unix" },
]
[plugin]
prepend_preloaders = [
{ mime = "{audio,video,image}/*", run = "mediainfo" },
{ mime = "application/{subrip,postscript,illustrator,dvb.ait,vnd.adobe.illustrator,eps}", run = "mediainfo" },
{ url = "*.{ai,eps,ait}", run = "mediainfo" },
]
prepend_previewers = [
{ mime = "{audio,video,image}/*", run = "mediainfo" },
{ mime = "application/{subrip,postscript,illustrator,dvb.ait,vnd.adobe.illustrator,eps}", run = "mediainfo" },
{ url = "*.{ai,eps,ait}", run = "mediainfo" },
{ mime = "application/{*zip,tar,bzip2,7z*,rar,xz,zstd,java-archive}", run = "ouch" },
]
# Batas memori decode gambar (untuk file media besar)
[tasks]
image_alloc = 2147483648
image_bound = [12000, 12000]
EOF
chown -R "$user:$user" "$home/.config/yazi" 2>/dev/null || true
cat > "$dir/keymap.toml" <<'EOF'
# fg.yazi: cari isi / nama file (ripgrep + fzf)
[[mgr.prepend_keymap]]
on = [ "f", "g" ]
run = "plugin fg"
desc = "Cari file by isi (fuzzy)"
[[mgr.prepend_keymap]]
on = [ "f", "G" ]
run = "plugin fg -- rg"
desc = "Cari file by isi (ripgrep)"
[[mgr.prepend_keymap]]
on = [ "f", "f" ]
run = "plugin fg -- fzf"
desc = "Cari file by nama"
# zoxide (plugin bawaan Yazi): lompat direktori
[[mgr.prepend_keymap]]
on = "Z"
run = "plugin zoxide"
desc = "Lompat direktori (zoxide)"
# ouch: kompres (format ikut ekstensi nama)
[[mgr.prepend_keymap]]
on = "C"
run = "plugin ouch"
desc = "Kompres dengan ouch (zip/tar.gz/7z/xz/zst)"
# chmod: ubah permission
[[mgr.prepend_keymap]]
on = [ "c", "h" ]
run = "plugin chmod"
desc = "Ubah permission (chmod)"
EOF
cat > "$dir/init.lua" <<'EOF'
require("full-border"):setup { type = ui.Border.ROUNDED }
require("fg"):setup { default_action = "menu" }
require("zoxide"):setup { update_db = true }
EOF
chown -R "$user:$user" "$dir" 2>/dev/null || true
}
log "Config Yazi (editor=micro) untuk $TARGET_USER"
install_yazi_plugins() {
local home="$1" user="$2" ya p cmd
ya="$(command -v ya || command -v yazi || true)"
[ -n "$ya" ] || { warn "ya/yazi tak ada — plugin Yazi dilewati"; return 0; }
for p in yazi-rs/plugins:full-border yazi-rs/plugins:smart-filter yazi-rs/plugins:chmod ndtoan96/ouch boydaihungst/mediainfo; do
run_as_user "$user" "'$ya' pkg add '$p'" || true
done
# fg.yazi: nama tak kebab-case -> clone manual
if [ ! -d "$home/.config/yazi/plugins/fg.yazi" ]; then
run_as_user "$user" "git clone --depth 1 https://github.com/DreamMaoMao/fg.yazi.git '$home/.config/yazi/plugins/fg.yazi'" || true
fi
}
log "Config Yazi (editor=micro, metadata media, arsip) untuk $TARGET_USER"
write_yazi "$TARGET_HOME" "$TARGET_USER"
install_yazi_plugins "$TARGET_HOME" "$TARGET_USER"
if [ "$TARGET_USER" != root ]; then
write_yazi "/root" "root"
fi
@@ -170,6 +282,12 @@ if status is-interactive
if command -q starship
starship init fish | source
end
# Greeting pembuka: fastfetch
if command -q fastfetch
function fish_greeting
fastfetch
end
end
end
EOF
@@ -188,9 +306,12 @@ cat <<EOF
$(printf "${BLUE}==>${NC}") Selesai.
fish : $(command -v fish)
starship : $(command -v starship) (polos)
yazi : $(command -v yazi) (editor default: micro)
yazi : $(command -v yazi) (editor default: micro, plugin+metadata siap)
micro : $(command -v micro)
lazydocker: $(command -v lazydocker)
fastfetch : $(command -v fastfetch || echo '-') (greeting fish)
mediainfo : $(command -v mediainfo || echo '-') (metadata media di Yazi)
ouch : $(command -v ouch || echo '-') (arsip zip/tar/7z)
Logout/login (atau buka terminal baru) agar shell fish aktif.
Konfigurasi fish global: /etc/fish/conf.d/temp-own.fish