-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathaliases
More file actions
170 lines (133 loc) Β· 5.05 KB
/
aliases
File metadata and controls
170 lines (133 loc) Β· 5.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# Easier navigation: .., ..., ~ and -
alias ..="cd .."
alias cd..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias .....="cd ../../../.."
alias ~="cd ~" # `cd` is probably faster to type though
alias -- -="cd -"
# Vim
alias vim="nvim"
# Colors
alias ls="ls --color --group-directories-first"
alias grep="grep --color=auto"
# be nice
alias please=sudo
alias hosts='sudo $EDITOR /etc/hosts'
# Shortcuts
alias g="git"
alias v="vim"
alias t="todo"
alias bigterm="xterm -fa 'Monospace' -fs 20"
# xclip
alias xclip="xclip -selection c"
# Pomodoro
alias pomo="sleep `echo '60 * 25' | bc`; say 'End of pomodoro my friend! Stop Working!'"
function drun () {
docker run -i -t --rm --user $(id -u):$(id -g) -v `pwd`:`pwd` -w `pwd` $@
}
function dsrun () {
docker run -i -t --rm -v `pwd`:`pwd` -w `pwd` $@
}
function cd_to_dir () {
local selected_dir
selected_dir=$(fd -t d . "$1" | fzf +m --height 50% --preview 'tree -C {}')
if [[ -n "$selected_dir" ]]; then
# Change to the selected directory
cd "$selected_dir" || return 1
fi
}
alias sd='cd_to_dir .'
function gif2webp() {
local -A opts
zparseopts -E -D -A opts s: q: f:
[[ -z "$1" ]] && echo "Usage: gif2webp <file> [out] [-s size] [-q quality] [-f fps]" && return 1
local input="$1"
local output="${2:-${1%.*}.webp}"
[[ -d "$output" ]] && output="${output%/}/$(basename "${1%.*}.webp")"
local size="${opts[-s]:-1080}"
local quality="${opts[-q]:-40}"
local fps="${opts[-f]}"
local fps_cmd=()
# For GIFs, we use -resample to change FPS effectively
[[ -n "$fps" ]] && fps_cmd=(-resample "$fps")
echo "π¨ GIF -> WebP [${size}px, Q:${quality}${fps:+, ${fps}fps}]..."
magick "$input" -coalesce "${fps_cmd[@]}" -resize "${size}x${size}>" \
-quality "$quality" -define webp:method=6 -layers optimize "$output"
[[ $? -eq 0 ]] && echo "β
Done: $output ($(du -h "$output" | cut -f1))"
}
function mov2gif() {
local -A opts
zparseopts -E -D -A opts s: f:
[[ -z "$1" ]] && echo "Usage: mov2gif <file> [out] [-s size] [-f fps]" && return 1
local input="$1"
local output="${2:-${1%.*}.gif}"
[[ -d "$output" ]] && output="${output%/}/$(basename "${1%.*}.gif")"
local size="${opts[-s]:-1080}"
local fps="${opts[-f]:-12}"
echo "ποΈ MOV -> GIF [${size}px, ${fps}fps]..."
ffmpeg -v warning -i "$input" \
-vf "fps=${fps},scale=${size}:${size}:force_original_aspect_ratio=decrease:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=128[p];[s1][p]paletteuse" \
-y "$output"
[[ $? -eq 0 ]] && echo "β
Done: $output ($(du -h "$output" | cut -f1))"
}
function mov2webp() {
local -A opts
zparseopts -E -D -A opts s: q: f:
[[ -z "$1" ]] && echo "Usage: mov2webp <file> [out] [-s size] [-q quality] [-f fps]" && return 1
local input="$1"
local output="$2"
local size="${opts[-s]:-1080}"
local quality="${opts[-q]:-40}"
local fps="${opts[-f]:-12}"
local tmp_gif=$(mktemp -t intermediate.XXXXXX.gif)
trap "rm -f '$tmp_gif'" EXIT INT TERM
# Chain with specific parameters
mov2gif "$input" "$tmp_gif" -s "$size" -f "$fps" && \
gif2webp "$tmp_gif" "$output" -s "$size" -q "$quality"
}
function webp2webp() {
local -A opts
# The -E flag is the key to reading flags placed at the end of the command
zparseopts -E -D -A opts s: q: f:
[[ -z "$1" ]] && echo "Usage: webp2webp <file> [out] [-s size] [-q quality] [-f fps]" && return 1
local input="$1"
local output="${2:-${1%.*}_min.webp}"
[[ -d "$output" ]] && output="${output%/}/$(basename "${1%.*}.webp")"
local size="${opts[-s]:-1080}"
local quality="${opts[-q]:-40}"
local fps="${opts[-f]}"
local delay_cmd=()
if [[ -n "$fps" ]]; then
local delay=$(( 100 / fps ))
delay_cmd=(-set delay "$delay")
echo "π Optimizing WebP [${size}px, Q:${quality}, ${fps}fps]..."
else
echo "π Optimizing WebP [${size}px, Q:${quality}, Original FPS]..."
fi
magick "$input" -coalesce "${delay_cmd[@]}" \
-resize "${size}x${size}>" -quality "$quality" \
-define webp:method=6 -layers optimize "$output"
[[ $? -eq 0 ]] && echo "β
Done: $output ($(du -h "$output" | cut -f1))"
}
function png2webp() {
local -A opts
zparseopts -E -D -A opts s: q:
[[ -z "$1" ]] && echo "Usage: png2webp <file> [out] [-s size] [-q quality]" && return 1
local input="$1"
local output="${2:-${1%.*}.webp}"
[[ -d "$output" ]] && output="${output%/}/$(basename "${1%.*}.webp")"
local size="${opts[-s]:-1080}"
local quality="${opts[-q]:-40}"
echo "πΌοΈ Static PNG -> WebP [${size}px, Q:${quality}]..."
# -strip: Removes metadata (ICC profiles, EXIF) to save space
# -define webp:lossless=false: Ensures the quality flag is respected
magick "$input" \
-strip \
-resize "${size}x${size}>" \
-quality "$quality" \
-define webp:lossless=false \
-define webp:method=6 \
"$output"
[[ $? -eq 0 ]] && echo "β
Done: $output ($(du -h "$output" | cut -f1))"
}