feat: +fastfetch/mediainfo/ouch, config+plugin Yazi (metadata media & arsip), greeting fastfetch
This commit is contained in:
1 parent
23f51898f1
commit
2541e539b1
2 files changed
+164
-31
No files matched your search
+130
-9
@@ -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
|
||||
|
||||
Reference in new issue
Block a user