2023-04-04 20:16:50 -04:00
|
|
|
#!/bin/bash
|
|
|
|
|
2023-04-28 11:23:13 -04:00
|
|
|
WINDOW_NAME="active-sofi-window"
|
|
|
|
|
2023-04-04 20:16:50 -04:00
|
|
|
# Open search window or raise existing one
|
|
|
|
if [[ "$1" == "--launch" ]]; then
|
2023-04-28 11:23:13 -04:00
|
|
|
if existing="$(xdotool search $WINDOW_NAME)"; then
|
2023-04-04 20:16:50 -04:00
|
|
|
xdotool windowraise "$existing"
|
|
|
|
else
|
2023-04-28 11:23:13 -04:00
|
|
|
xfce4-terminal --role="$WINDOW_NAME" --title="$WINDOW_NAME" --startup-id="$WINDOW_NAME" -e "bash -c '$HOME/.sofi.sh'"
|
|
|
|
# xterm -e "bash -c '$HOME/.sofi.sh'"
|
2023-04-04 20:16:50 -04:00
|
|
|
fi
|
|
|
|
exit $?
|
|
|
|
fi
|
|
|
|
|
|
|
|
windows() {
|
|
|
|
xprop -root _NET_CLIENT_LIST |
|
|
|
|
pcregrep -o1 '# (.*)' |
|
|
|
|
sed 's/, /\n/g' |
|
|
|
|
xargs -I{} -n1 xprop -id {} _NET_WM_NAME |
|
|
|
|
grep -v '"Desktop"\|"xfce4-panel"' |
|
|
|
|
sed 's/_NET_WM_NAME(UTF8_STRING) = "/win /' | sed 's/"$//'
|
|
|
|
}
|
|
|
|
|
|
|
|
app_locations="/usr/share/applications $HOME/.local/share/applications "
|
|
|
|
|
|
|
|
read_apps() {
|
|
|
|
cat ~/.sofi-app-cache
|
|
|
|
# shellcheck disable=SC2086
|
|
|
|
nohup find $app_locations -name '*.desktop' -exec grep '^Name=' {} \; |
|
|
|
|
grep -v 'Firetools' |
|
|
|
|
sed 's/Name=/app /' > ~/.sofi-app-cache &
|
|
|
|
}
|
|
|
|
|
|
|
|
open_app() {
|
|
|
|
app="$(echo "$1" | cut -c 5-)"
|
|
|
|
# shellcheck disable=SC2086
|
|
|
|
find $app_locations -name '*.desktop' | while read -r f; do
|
|
|
|
if grep "Name=$app" "$f" &> /dev/null; then
|
2023-04-28 11:23:13 -04:00
|
|
|
setsid exo-open "$f" >/dev/null 2>&1 </dev/null &
|
2023-04-04 20:16:50 -04:00
|
|
|
return
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
file_locations="$HOME/Documents $HOME/Downloads"
|
|
|
|
list_files() {
|
|
|
|
find $file_locations -maxdepth 1 -not -name '.*' |
|
|
|
|
sed "s@$HOME@\~@" |
|
|
|
|
sed 's/^/fil /'
|
|
|
|
}
|
|
|
|
|
|
|
|
paste_emoji() {
|
|
|
|
emoji="$(echo -n "$1" | cut -c 5- | sed 's/ .*//')"
|
|
|
|
nohup xclip -selection clipboard <(echo -n $emoji) &> /dev/null &
|
|
|
|
}
|
|
|
|
|
|
|
|
# cat \
|
|
|
|
# <(windows) \
|
|
|
|
# <($HOME/.rofi-list-git-repos.py --no-icon) \
|
|
|
|
# <(read_apps) \
|
|
|
|
# <(list_files) \
|
|
|
|
# $HOME/.emojis
|
|
|
|
# exit 1
|
|
|
|
|
|
|
|
choice="$(cat \
|
|
|
|
<(windows) \
|
|
|
|
<("$HOME/.rofi-list-git-repos.py" --no-icon) \
|
|
|
|
<(read_apps) \
|
|
|
|
<(list_files) \
|
|
|
|
"$HOME/.emojis" \
|
|
|
|
| fzf)"
|
|
|
|
|
|
|
|
case $choice in
|
|
|
|
git*)
|
|
|
|
nohup "$HOME/.rofi-list-git-repos.py" "$choice" &> /dev/null &
|
|
|
|
;;
|
|
|
|
win*)
|
|
|
|
wmctrl -i -R "$(xwininfo -root -tree |
|
|
|
|
grep "$(echo "$choice" | cut -c 5-)" |
|
|
|
|
awk '{ print $1 }' |
|
|
|
|
sed 's/0x/0x00/')"
|
|
|
|
;;
|
|
|
|
app*)
|
|
|
|
open_app "$choice"
|
|
|
|
;;
|
|
|
|
emj*)
|
|
|
|
paste_emoji "$choice"
|
|
|
|
;;
|
|
|
|
fil*)
|
|
|
|
nohup xdg-open "$(echo $choice | cut -c 5- | sed "s@~@$HOME@")" &> /dev/null &
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
sleep 0.1
|