aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShivesh Mandalia <mail@shivesh.org>2021-09-26 18:59:31 +0100
committerShivesh Mandalia <mail@shivesh.org>2021-09-26 18:59:31 +0100
commit5d2b8abdddd969977e12b356d060b2dc2d6f616b (patch)
treed9080c9e804b0f44ffb7c8ddf7c597ad4c610043
parent3c1c56380a82116e7f22a395e2b7a3febbbecd18 (diff)
downloadsway-launcher-desktop-5d2b8abdddd969977e12b356d060b2dc2d6f616b.tar.gz
sway-launcher-desktop-5d2b8abdddd969977e12b356d060b2dc2d6f616b.zip
Configure with files/folders support
-rwxr-xr-xsway-launcher-desktop.sh32
1 files changed, 22 insertions, 10 deletions
diff --git a/sway-launcher-desktop.sh b/sway-launcher-desktop.sh
index 6c795be..1d06933 100755
--- a/sway-launcher-desktop.sh
+++ b/sway-launcher-desktop.sh
@@ -12,9 +12,12 @@ trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR
IFS=$'\n\t'
DEL=$'\34'
-TERMINAL_COMMAND="${TERMINAL_COMMAND:="$TERM -e"}"
-GLYPH_COMMAND="${GLYPH_COMMAND- }"
-GLYPH_DESKTOP="${GLYPH_DESKTOP- }"
+TERMINAL_COMMAND="st -e"
+# TERMINAL_COMMAND="${TERMINAL_COMMAND:="$TERM -e"}"
+GLYPH_COMMAND="${GLYPH_COMMAND-📟 }"
+GLYPH_DESKTOP="${GLYPH_DESKTOP-🖥️ }"
+GLYPH_FILES="${GLYPH_FILES-📄 }"
+GLYPH_FOLDERS="${GLYPH_FOLDERS-📂 }"
CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/sway-launcher-desktop"
PROVIDERS_FILE="${PROVIDERS_FILE:=providers.conf}"
if [[ "${PROVIDERS_FILE#/}" == "${PROVIDERS_FILE}" ]]; then
@@ -26,7 +29,7 @@ fi
# list_cmd,preview_cmd,launch_cmd
declare -A PROVIDERS
if [ -f "${PROVIDERS_FILE}" ]; then
- eval "$(awk -F= '
+ eval "$(gawk -F= '
BEGINFILE{ provider=""; }
/^\[.*\]/{sub("^\\[", "");sub("\\]$", "");provider=$0}
/^(launch|list|preview)_cmd/{st = index($0,"=");providers[provider][$1] = substr($0,st+1)}
@@ -47,6 +50,7 @@ if [ -f "${PROVIDERS_FILE}" ]; then
else
PROVIDERS['desktop']="${0} list-entries${DEL}${0} describe-desktop \"{1}\"${DEL}${0} run-desktop '{1}' {2}"
PROVIDERS['command']="${0} list-commands${DEL}${0} describe-command \"{1}\"${DEL}${TERMINAL_COMMAND} {1}"
+ PROVIDERS['files']="${0} list-files${DEL}${0} describe-files \"{1}\"${DEL}xdg-open {1}"
if [[ ! -v HIST_FILE ]]; then
HIST_FILE="${XDG_CACHE_HOME:-$HOME/.cache}/${0##*/}-history.txt"
fi
@@ -76,6 +80,9 @@ function describe-command() {
echo -e "\033[33m${1}\033[0m"
echo "${description:-No description}"
}
+function describe-files() {
+ echo -e "\033[33m${1}\033[0m"
+}
function provide() {
# shellcheck disable=SC2086
@@ -86,7 +93,7 @@ function list-commands() {
IFS=: read -ra path <<<"$PATH"
for dir in "${path[@]}"; do
printf '%s\n' "$dir/"* |
- awk -F / -v pre="$GLYPH_COMMAND" '{print $NF "\034command\034\033[31m" pre "\033[0m" $NF;}'
+ gawk -F / -v pre="$GLYPH_COMMAND" '{print $NF "\034command\034\033[31m" pre "\033[0m" $NF;}'
done | sort -u
}
function list-entries() {
@@ -97,7 +104,8 @@ function list-entries() {
if [[ ! -d "${DIRS[i]}" ]]; then
unset -v 'DIRS[$i]'
else
- DIRS[$i]="${DIRS[i]}/applications/**/*.desktop"
+ # DIRS[$i]="${DIRS[i]}/applications/**/*.desktop"
+ DIRS[$i]=$(find ${DIRS[i]}/applications -type f -name "*.desktop" | tr -s '/')
fi
done
# shellcheck disable=SC2068
@@ -105,7 +113,7 @@ function list-entries() {
}
function entries() {
# shellcheck disable=SC2068
- awk -v pre="$GLYPH_DESKTOP" -F= '
+ gawk -v pre="$GLYPH_DESKTOP" -F= '
function desktopFileID(filename){
sub("^.*applications/", "", filename);
sub("/", "-", filename);
@@ -155,6 +163,10 @@ function entries() {
$@ </dev/null
# the empty stdin is needed in case no *.desktop files
}
+function list-files() {
+ find $HOME -maxdepth 5 -path '*/\.*' -prune -o -type d -print | gawk -F / -v pre="$GLYPH_FOLDERS" '{print $0 "\034files\034\033[31m" pre "\033[0m" $NF;}'
+ find $HOME -maxdepth 5 -path '*/\.*' -prune -o -type f -print | gawk -F / -v pre="$GLYPH_FILES" '{print $0 "\034files\034\033[31m" pre "\033[0m" $NF;}'
+}
function run-desktop() {
CMD="$("${0}" generate-command "$@" 2>&3)"
echo "Generated Launch command from .desktop file: ${CMD}" >&3
@@ -172,7 +184,7 @@ function generate-command() {
# 3. We see an Exec= line during search: remove field codes and set variable
# 3. We see a Path= line during search: set variable
# 4. Finally, build command line
- awk -v pattern="${PATTERN}" -v terminal_cmd="${TERMINAL_COMMAND}" -F= '
+ gawk -v pattern="${PATTERN}" -v terminal_cmd="${TERMINAL_COMMAND}" -F= '
BEGIN{a=0;exec=0;path=0}
/^\[Desktop/{
if(a){ a=0 }
@@ -218,7 +230,7 @@ function list-autostart() {
done
# shellcheck disable=SC2068
- awk -v pre="$GLYPH_DESKTOP" -F= '
+ gawk -v pre="$GLYPH_DESKTOP" -F= '
function desktopFileID(filename){
sub("^.*autostart/", "", filename);
sub("/", "-", filename);
@@ -250,7 +262,7 @@ function list-autostart() {
}
case "$1" in
-describe | describe-desktop | describe-command | entries | list-entries | list-commands | list-autostart | generate-command | autostart | run-desktop | provide)
+describe | describe-desktop | describe-command | describe-files | entries | list-entries | list-commands | list-files | list-autostart | generate-command | autostart | run-desktop | provide)
"$@"
exit
;;