From 25f5234b5ac8109f2d4d91747a30b9c2358aa41b Mon Sep 17 00:00:00 2001 From: Botspot Date: Fri, 27 Nov 2020 15:54:12 -0600 Subject: [PATCH] xlunch new gui --- etc/setting-params/App List Style | 3 ++ gui | 87 ++++++++++++++++++++++-------- icons/logo-128.png | Bin 0 -> 2891 bytes icons/logo-trans.svg | 45 ++++++++++++++++ icons/proglogo.png | Bin 0 -> 4611 bytes icons/proglogo.svg | 46 ++++++++++++++++ preload | 34 +++++++++--- settings | 3 +- 8 files changed, 186 insertions(+), 32 deletions(-) create mode 100644 etc/setting-params/App List Style create mode 100644 icons/logo-128.png create mode 100644 icons/logo-trans.svg create mode 100644 icons/proglogo.png create mode 100644 icons/proglogo.svg diff --git a/etc/setting-params/App List Style b/etc/setting-params/App List Style new file mode 100644 index 0000000..dc87b1d --- /dev/null +++ b/etc/setting-params/App List Style @@ -0,0 +1,3 @@ +#Pi-Apps may use a new dialog program for tue app list in the future. To preview this feature now, switch to 'xlunch'. +yad +xlunch diff --git a/gui b/gui index 241c965..0b1ffa7 100755 --- a/gui +++ b/gui @@ -76,8 +76,15 @@ uninstall() { motd="$(echo -e "$(wget -qO- https://raw.githubusercontent.com/Botspot/pi-apps-announcements/main/message | shuf -n 1)")" + + +#app list mode. Allowed values: 'yad', 'xlunch' +guimode="$(cat "${DIRECTORY}/data/settings/App List Style")" +[ -z "$guimode" ] && guimode=yad +#mode=yad + while true;do - LIST="$("${DIRECTORY}/preload")" + LIST="$("${DIRECTORY}/preload" $guimode)" #LIST="$(cat "${DIRECTORY}/data/preload/LIST")" #echo "$LIST" @@ -86,31 +93,67 @@ while true;do while [ -z "$output" ];do - output="$(echo -e "$LIST" | yad --center --title='Pi-Apps' --width=310 --height=400 --no-headers \ - --text="$motd" --image="${DIRECTORY}/icons/logo-64.png" --image-on-top \ - --list --multiple --separator='\n' --window-icon="${DIRECTORY}/icons/logo.png" \ - --column=:IMG --column=:IMG --column=Name --column=tip:HD --print-column=3 --tooltip-column=4 \ - --button=Install!"${DIRECTORY}/icons/install.png":4 \ - --button=Uninstall!"${DIRECTORY}/icons/uninstall.png":2 \ - --button=Details!"${DIRECTORY}/icons/info.png"!'View more about the selected software:0' \ - )" - - button=$? #get exit code to determine which button was pressed - echo "Button: ${button}" - if [ $button -eq 252 ];then #if window manager x was pressed - exit 0 + if [ $guimode == yad ];then + output="$(echo -e "$LIST" | yad --center --title='Pi-Apps' --width=310 --height=400 --no-headers \ + --text="$motd" --image="${DIRECTORY}/icons/logo-64.png" --image-on-top \ + --list --multiple --separator='\n' --window-icon="${DIRECTORY}/icons/logo.png" \ + --column=:IMG --column=:IMG --column=Name --column=tip:HD --print-column=3 --tooltip-column=4 \ + --button=Install!"${DIRECTORY}/icons/install.png":4 \ + --button=Uninstall!"${DIRECTORY}/icons/uninstall.png":2 \ + --button=Details!"${DIRECTORY}/icons/info.png"!'View more about the selected software:0' \ + )" + + button=$? #get exit code to determine which button was pressed + echo "Button: ${button}" + if [ $button -eq 252 ];then #if window manager x was pressed + exit 0 + fi + if [ -z "$output" ];then + echo "output variable empty!" + yad --center --title='Pi-Apps' --width=310 \ + --window-icon="${DIRECTORY}/icons/logo.png" \ + --text="Mind reading is not supported. + (You didn"\'"t select an App)" \ + --button=OK:0 + fi + elif [ $guimode == xlunch ];then + if [ ! -d "${DIRECTORY}/xlunch" ] || [ ! -f /usr/bin/xlunch ];then + sudo rm -f /usr/bin/xlunch 2>/dev/null + cd "$DIRECTORY" + git clone https://github.com/Tomas-M/xlunch + cd "$DIRECTORY/xlunch" + make -j8 + sudo make install + sudo rm -f /usr/share/applications/genentries.desktop + cd $HOME + if [ ! -f /usr/bin/xlunch ];then + error "xlunch should be installed now, but /usr/bin/xlunch does not exist!" + fi + fi + screen_width="$(xdpyinfo | grep 'dimensions:' | tr 'x' '\n' | tr ' ' '\n' | sed -n 7p)" + screen_height="$(xdpyinfo | grep 'dimensions:' | tr 'x' '\n' | tr ' ' '\n' | sed -n 8p)" + height=700 + width=800 + xposition=$(((screen_width/2)-(width/2))) + yposition=$(((screen_height/2)-(height/2))) + scrot -a "$((xposition+1)),$((yposition+33)),${width},${height}" blur.png #blur_init.png + convert -blur 10x5 ~/blur.png ~/blur.png + output="$(echo -e "$LIST" | xlunch -WoCS -s 64 --bc 000000A0 --tc ffffffff --pc 6060ffff --hc 60606010 \ + -p "Search: " -a -c 2 --title "Pi-Apps: Raspberry Pi app store" \ + --icon "${DIRECTORY}/icons/logo.png" --scrollbarcolor ffffff40 --scrollindicatorcolor 0000ff80\ + --width $width --height $height --xposition $xposition --yposition $yposition \ + --button "${DIRECTORY}/icons/logo-128.png;;$((($width/2)-(128/2))),0;" + -g ~/blur.png)" + button=0 + + if [ -z "$output" ];then + exit 0 + fi fi output="$(echo "$output" | sed '/^$/d')" echo "Output: ${output}EOO" - if [ -z "$output" ];then - echo "output variable empty!" - yad --center --title='Pi-Apps' --width=310 \ - --window-icon="${DIRECTORY}/icons/logo.png" \ - --text="Mind reading is not supported. - (You didn"\'"t select an App)" \ - --button=OK:0 - fi + done case $button in diff --git a/icons/logo-128.png b/icons/logo-128.png new file mode 100644 index 0000000000000000000000000000000000000000..93f1dc6b787da8f77c963d896ddfad0207b051d3 GIT binary patch literal 2891 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/icons/proglogo.png b/icons/proglogo.png new file mode 100644 index 0000000000000000000000000000000000000000..1290a7d09525e85271da70595852b422cae9bb4c GIT binary patch literal 4611 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 G@c#n9c2?d1 literal 0 HcmV?d00001 diff --git a/icons/proglogo.svg b/icons/proglogo.svg new file mode 100644 index 0000000..81dcc90 --- /dev/null +++ b/icons/proglogo.svg @@ -0,0 +1,46 @@ + + + + + + + logo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pi-Apps + \ No newline at end of file diff --git a/preload b/preload index a08d60e..393310e 100755 --- a/preload +++ b/preload @@ -19,6 +19,12 @@ else error "Failed to detect OS CPU architecture! Something is very wrong." fi +#yad or xlunch format +format="$1" + +if [ -z "$format" ];then + format=yad +fi mkdir -p "${DIRECTORY}/data/preload" @@ -92,18 +98,30 @@ if [ $reloadlist == 1 ];then APPS="$(echo "$APPS" | shuf)" fi - PREIFS="$IFS" - IFS=$'\n' - LIST='' - for i in $APPS - do - LIST="$LIST$(echo "${DIRECTORY}/icons/$(cat "${DIRECTORY}/data/status/${i}" 2>/dev/null || echo "none").png") + if [ "$format" == yad ];then + PREIFS="$IFS" + IFS=$'\n' + LIST='' + for i in $APPS + do + LIST="$LIST$(echo "${DIRECTORY}/icons/$(cat "${DIRECTORY}/data/status/${i}" 2>/dev/null || echo "none").png") ${DIRECTORY}/apps/${i}/icon-24.png $i "\("$(cat "${DIRECTORY}/data/status/${i}" 2>/dev/null || echo "uninstalled")"\)" $(echo "$(cat "${DIRECTORY}/apps/${i}/description" || echo "Description unavailable")" | head -n1) " - done - IFS="$PREIFS" + done + IFS="$PREIFS" + elif [ "$format" == xlunch ];then + PREIFS="$IFS" + IFS=$'\n' + LIST='' + for i in $APPS + do + LIST="$LIST +${i} "\("$(cat "${DIRECTORY}/data/status/${i}" 2>/dev/null || echo "uninstalled")"\)";${DIRECTORY}/apps/${i}/icon-64.png;${i}" + done + IFS="$PREIFS" + fi LIST="$(echo -e "$LIST")" #save entire list string to file for future use diff --git a/settings b/settings index 5611d1c..ee95a1a 100755 --- a/settings +++ b/settings @@ -15,7 +15,7 @@ while [ -z $exitloop ];do #create default files inside echo '' > "${DIRECTORY}/data/settings/reinstall-after-update" fi - + #$1 is usually left blank. If it equals 'refresh', then empty settings will be created and then the script will exit. if [ "$1" == 'refresh' ];then #set default settings, if they don't exist @@ -46,7 +46,6 @@ while [ -z $exitloop ];do exit 0 fi - if [ ! -f ~/.local/share/applications/pi-apps-settings.desktop ];then echo "Creating Settings menu button" echo "[Desktop Entry]