In launcher after 1.22
we switch TWM to Awesome for global notification window and prevent focus-stealing and maybe other features
This is an introduction to the pre-trial. if you are not good at linux console
Later, there will be an official release.
So do it on your own risk
![]()
Manually, you need ssh into gameshell
make sure you have launcher >= 1.21 running with bluetooth support(sudo apt-get install bluez bluetooth)
Upgrade launcher
currently there is no release hash for launcher ,so you just need to
cd /home/cpi/apps/launcher
git pull
then move launcher out of /home/cpi/apps/ to /home/cpi/
The launcher will become more independent so that we can backup the user data easier in the future
mkdir /home/cpi/apps/Menu
Create a folder named Menu , this folder is for games/apps
We can put our games/apps, which was previously needed to place in the /home/cpi/apps/launcher/Menu/GameShell , into this directory (not belong to launcher`s)
and the games/apps folder is the all-in-one style
the icon ,the startup script, and others be in one simple folder, no need to put icon and script apart like before(
scripts in /home/cpi/apps/launcher/Menu/GameShell and icons in /home/cpi/apps/launcher/skin/default/Menu/GameShell/)
games/apps folder examples:
All of the above examples come from the forum players, thank you all, I just borrowed , I hope you wouldn’t mind
![]()
Then change the bottom of /home/cpi/.bashrc to point X to use new .xinitrc inside launcher
if [ -f /tmp/autologin ]
then
rm -f /tmp/autologin
mpd ~/.mpd.conf
startx /home/cpi/launcher/.xinitrc -- -nocursor > /dev/null 2>&1
fi
.xinitrc
feh --bg-center ~/launcher/sys.py/gameshell/wallpaper/loading.png
exec ~/launcher/load.sh &
exec ~/launcher/sys.py/gsnotify/gsnotify-arm &
exec awesome -c ~/launcher/awesome/rc.lua
Here is , new .xinitrc invoked a small widget called gsnotify
Though the readme of gsnotify ,there are 3 examples
one of them is the battery notify script
#!/bin/bash
BAT_PNT=`upower -i $(upower -e | grep 'battery') | grep -E "state|to\ full|percentage" | awk '/perc/{print $2}' | cut -d % -f1 `
if [ "$BAT_PNT" -lt "20" ]; then
if [ "$BAT_PNT" -lt "15" ]; then
echo '{"type":"once","content":"Power<15%"}'
fi
if [ "$BAT_PNT" -lt "10" ]; then
echo "keydown" | socat - UNIX-CONNECT:/tmp/gameshell
echo '{"type":"repeat","content":"Power<10%,will poweroff soon"}'
fi
echo "keydown" | socat - UNIX-CONNECT:/tmp/gameshell
echo '{"type":"once","content":"Power<20%"}'
else
echo $BAT_PNT
fi
the script use upower to check the battery ,get percent
and use socat to communicate launcher’s unix socket under /tmp/ to light the screen if the screen is in dark
and of cause ,print the message to gsnotify to show up
you can put the script into /home/cpi/launcher/sys.py/gsnotify/Jobs now
The gsnotify will do a round-robin check every 30s for the scripts under /home/cpi/launcher/sys.py/gsnotify/Jobs directory in simple json return formatted and
show a small window that slides down from the top, reminding the battery that it is nearly exhausted, etc.
and freely configurable
Install awesome and upower
sudo apt-get install awesome socat upower
--reboot--
Fix RetroArch issue
Even All is done ,you will not see any notifications while retroarch is running,because
the retroarch in GS ,is kind a wild window for X11 currently now
so change config to fix this issue by two lines:
in top of /home/cpi/.config/retroarch/retroarch.cfg
video_fullscreen = "false"
...
video_windowed_fullscreen = "true"
–reboot–
Options
upgrade to debian buster to get newer software
in /etc/apt/source.list
change all source to buster
then upgrade the debian system
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install awesome socat upower
--reboot--
At end:
In the new launcher , we use Awesome to deal on-top windows ,even the battery monitor widget can work better , no need to kill and re-launch it time by time
I apologize for my bad English. If you have any accidents during the actual operation or do not understand my explanation, please let me know, let’s do more tests together.