diff --git a/fake_home/.sofi.sh b/fake_home/.sofi.sh index 254c74b..e884a28 100755 --- a/fake_home/.sofi.sh +++ b/fake_home/.sofi.sh @@ -1,41 +1,51 @@ #!/bin/bash WINDOW_NAME="active-sofi-window" +CACHE_FILE="$HOME/.app-cache-sofi" + +IGNORED_APPS="Firetools|cmatrix" +APP_LOCATIONS="/usr/share/applications $HOME/.local/share/applications " +FILE_LOCATIONS="$HOME/Documents $HOME/Downloads" + +! [[ "$XDG_SESSION_TYPE" = "x11" ]] +IS_X11="$?" # Open search window or raise existing one if [[ "$1" == "--launch" ]]; then - if existing="$(xdotool search $WINDOW_NAME)"; then + if (($IS_X11)) && existing="$(xdotool search $WINDOW_NAME)"; then xdotool windowraise "$existing" else - 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'" + # xfce4-terminal --role="$WINDOW_NAME" --title="$WINDOW_NAME" --startup-id="$WINDOW_NAME" -e "bash -c '$HOME/.sofi.sh'" + xterm -fa 'Monospaced' -fs 10 -e "bash -c '$HOME/.sofi.sh'" + # st -e bash -c '$HOME/.sofi.sh'" fi exit $? fi windows() { + if ! (($IS_X11)); then + return + fi xprop -root _NET_CLIENT_LIST | pcregrep -o1 '# (.*)' | sed 's/, /\n/g' | - xargs -I{} -n1 xprop -id {} _NET_WM_NAME | + 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 + cat "$CACHE_FILE" # shellcheck disable=SC2086 - nohup find $app_locations -name '*.desktop' -exec grep '^Name=' {} \; | - grep -v 'Firetools' | - sed 's/Name=/app /' > ~/.sofi-app-cache & + nohup find $APP_LOCATIONS -name '*.desktop' -exec grep '^Name=' {} \; | + egrep -iv "$IGNORED_APPS" | + sed 's/Name=/app /' > "$CACHE_FILE" & } open_app() { app="$(echo "$1" | cut -c 5-)" # shellcheck disable=SC2086 - find $app_locations -name '*.desktop' | while read -r f; do + find $APP_LOCATIONS -name '*.desktop' | while read -r f; do if grep "Name=$app" "$f" &> /dev/null; then setsid exo-open "$f" >/dev/null 2>&1 /dev/null & } -# cat \ -# <(windows) \ -# <($HOME/.rofi-list-git-repos.py --no-icon) \ -# <(read_apps) \ -# <(list_files) \ -# $HOME/.emojis -# exit 1 +if [[ "$1" == "--print-only" ]]; then + cat \ + <(windows) \ + <($HOME/.rofi-list-git-repos.py --no-icon) \ + <(read_apps) \ + <(list_files) \ + $HOME/.emojis + exit 1 +fi choice="$(cat \ <(windows) \ - <("$HOME/.rofi-list-git-repos.py" --no-icon) \ + <("$HOME/.rofi-list-git-repos.py") \ <(read_apps) \ <(list_files) \ "$HOME/.emojis" \ @@ -73,7 +84,7 @@ choice="$(cat \ case $choice in git*) - nohup "$HOME/.rofi-list-git-repos.py" "$choice" &> /dev/null & + setsid "$HOME/.rofi-list-git-repos.py" "$choice" &> /dev/null & ;; win*) wmctrl -i -R "$(xwininfo -root -tree | @@ -88,7 +99,7 @@ case $choice in paste_emoji "$choice" ;; fil*) - nohup xdg-open "$(echo $choice | cut -c 5- | sed "s@~@$HOME@")" &> /dev/null & + setsid xdg-open "$(echo $choice | cut -c 5- | sed "s@~@$HOME@")" &> /dev/null & ;; esac sleep 0.1