New scripts: sxmo_{youtube,weather,rss,camera}.sh; Implement screenlock
Various minor script bugfixes
This commit is contained in:
parent
9beef511af
commit
ed09f2b8b3
20 changed files with 33534 additions and 122 deletions
9
Makefile
9
Makefile
|
@ -6,7 +6,10 @@ programs/sxmo_setpineled:
|
||||||
programs/sxmo_setpinebacklight:
|
programs/sxmo_setpinebacklight:
|
||||||
gcc -o programs/sxmo_setpinebacklight programs/sxmo_setpinebacklight.c
|
gcc -o programs/sxmo_setpinebacklight programs/sxmo_setpinebacklight.c
|
||||||
|
|
||||||
install: programs/sxmo_setpineled programs/sxmo_setpinebacklight
|
programs/sxmo_screenlock:
|
||||||
|
gcc -o programs/sxmo_screenlock programs/sxmo_screenlock.c -lX11
|
||||||
|
|
||||||
|
install: programs/sxmo_setpineled programs/sxmo_setpinebacklight programs/sxmo_screenlock
|
||||||
mkdir -p $(PREFIX)/usr/share/sxmo
|
mkdir -p $(PREFIX)/usr/share/sxmo
|
||||||
cp configs/* $(PREFIX)/usr/share/sxmo
|
cp configs/* $(PREFIX)/usr/share/sxmo
|
||||||
|
|
||||||
|
@ -23,3 +26,7 @@ install: programs/sxmo_setpineled programs/sxmo_setpinebacklight
|
||||||
chown root programs/sxmo_setpinebacklight
|
chown root programs/sxmo_setpinebacklight
|
||||||
chmod u+s programs/sxmo_setpinebacklight
|
chmod u+s programs/sxmo_setpinebacklight
|
||||||
cp programs/sxmo_setpinebacklight $(PREFIX)/usr/bin
|
cp programs/sxmo_setpinebacklight $(PREFIX)/usr/bin
|
||||||
|
|
||||||
|
chown root programs/sxmo_screenlock
|
||||||
|
chmod u+s programs/sxmo_screenlock
|
||||||
|
cp programs/sxmo_screenlock $(PREFIX)/usr/bin
|
||||||
|
|
32
configs/sxmo_sfeedrc
Normal file
32
configs/sxmo_sfeedrc
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
#sfeedpath="$HOME/.sfeed/feeds"
|
||||||
|
USERAGENT="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Safari/537.36"
|
||||||
|
|
||||||
|
#[ -z "$https_proxy" ] && echo "Please set https_proxy" 2>&1 && exit 1
|
||||||
|
#[ -z "$http_proxy" ] && echo "Please set http_proxy" 2>&1 && exit 1
|
||||||
|
|
||||||
|
# fetch a feed via HTTP/HTTPS etc.
|
||||||
|
# fetch(name, url, feedfile)
|
||||||
|
fetch() {
|
||||||
|
# fail on redirects, hide User-Agent, timeout is 15 seconds.
|
||||||
|
curl -L --max-redirs 2 -H "User-Agent: $USERAGENT" -f -s -m 15 \
|
||||||
|
"$2" 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
# list of feeds to fetch:
|
||||||
|
feeds() {
|
||||||
|
# feed <name> <feedurl> [basesiteurl] [encoding]
|
||||||
|
feed 'Tech/HN' 'https://news.ycombinator.com/rss'
|
||||||
|
feed 'Tech/Lobsters' 'https://lobste.rs/rss'
|
||||||
|
feed 'Tech/Pine64' 'https://www.pine64.org/blog/'
|
||||||
|
feed 'Tech/Slashdot' 'http://feeds.feedburner.com/SlashdotSitenews'
|
||||||
|
feed 'Tech/Suckless' 'http://git.suckless.org/sites/atom.xml'
|
||||||
|
|
||||||
|
feed 'Yt/Distrotube' 'https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg'
|
||||||
|
feed 'Yt/Budlabs' 'https://www.youtube.com/feeds/videos.xml?channel_id=UCi8XrDg1bK_MJ0goOnbpTMQ'
|
||||||
|
feed 'Yt/LukeSmith' 'https://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA'
|
||||||
|
feed 'Yt/Rossman' 'https://www.youtube.com/feeds/videos.xml?channel_id=UCl2mFZoRqjw_ELax4Yisf6w'
|
||||||
|
|
||||||
|
feed 'MSM/CNN' 'http://rss.cnn.com/rss/cnn_topstories.rss'
|
||||||
|
feed 'MSM/Fox' 'http://feeds.foxnews.com/foxnews/latest'
|
||||||
|
}
|
||||||
|
|
33146
configs/zipcodes_for_weather.csv
Normal file
33146
configs/zipcodes_for_weather.csv
Normal file
File diff suppressed because it is too large
Load diff
148
programs/sxmo_screenlock.c
Normal file
148
programs/sxmo_screenlock.c
Normal file
|
@ -0,0 +1,148 @@
|
||||||
|
#include <X11/XF86keysym.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <X11/keysym.h>
|
||||||
|
#include <X11/Xlib.h>
|
||||||
|
|
||||||
|
static int running = 1;
|
||||||
|
static int lastkeysym = NULL;
|
||||||
|
static int lastkeyn = 0;
|
||||||
|
static int oldbrightness = 10;
|
||||||
|
static int screenon = 1;
|
||||||
|
static char screentogglecommand[100];
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
updatescreen() {
|
||||||
|
sprintf(
|
||||||
|
screentogglecommand,
|
||||||
|
"sh -c 'echo %d > /sys/devices/platform/backlight/backlight/backlight/brightness'",
|
||||||
|
screenon ? oldbrightness : 0
|
||||||
|
);
|
||||||
|
if (screenon) {
|
||||||
|
system("sh -c 'echo 1 > /sys/devices/platform/leds/leds/pinephone:blue:user/brightness'");
|
||||||
|
system("sh -c 'echo 0 > /sys/devices/platform/leds/leds/pinephone:red:user/brightness'");
|
||||||
|
} else {
|
||||||
|
system("sh -c 'echo 0 > /sys/devices/platform/leds/leds/pinephone:blue:user/brightness'");
|
||||||
|
system("sh -c 'echo 1 > /sys/devices/platform/leds/leds/pinephone:red:user/brightness'");
|
||||||
|
}
|
||||||
|
system(screentogglecommand);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cleanupscreen() {
|
||||||
|
screenon = 1;
|
||||||
|
updatescreen();
|
||||||
|
system("sh -c 'echo 0 > /sys/devices/platform/leds/leds/pinephone:red:user/brightness'");
|
||||||
|
system("sh -c 'echo 0 > /sys/devices/platform/leds/leds/pinephone:blue:user/brightness'");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void die(const char *err, ...) {
|
||||||
|
fprintf(stderr, "Error: %s", err);
|
||||||
|
cleanupscreen();
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
static void usage(void) {
|
||||||
|
die("usage: slock [-v] [cmd [arg ...]]\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Loosely derived from suckless' slock's lockscreen binding logic but
|
||||||
|
// alot more coarse, intentionally so can be triggered while grab_key
|
||||||
|
// for dwm multikey path already holding..
|
||||||
|
void lockscreen(Display *dpy, int screen) {
|
||||||
|
int i, ptgrab, kbgrab;
|
||||||
|
//XSetWindowAttributes wa;
|
||||||
|
Window root;
|
||||||
|
//win,
|
||||||
|
root = RootWindow(dpy, screen);
|
||||||
|
//wa.override_redirect = 1;
|
||||||
|
//win = XCreateWindow(dpy, root, 0, 0,
|
||||||
|
// DisplayWidth(dpy, screen),
|
||||||
|
// DisplayHeight(dpy, screen),
|
||||||
|
// 0, DefaultDepth(dpy, screen),
|
||||||
|
// CopyFromParent,
|
||||||
|
// DefaultVisual(dpy, screen),
|
||||||
|
// CWOverrideRedirect | CWBackPixel, &wa);
|
||||||
|
for (i = 0, ptgrab = kbgrab = -1; i < 9999999; i++) {
|
||||||
|
if (ptgrab != GrabSuccess) {
|
||||||
|
ptgrab = XGrabPointer(dpy, root, False,
|
||||||
|
ButtonPressMask | ButtonReleaseMask |
|
||||||
|
PointerMotionMask, GrabModeAsync,
|
||||||
|
GrabModeAsync, None, None, CurrentTime);
|
||||||
|
}
|
||||||
|
if (kbgrab != GrabSuccess) {
|
||||||
|
kbgrab = XGrabKeyboard(dpy, root, True,
|
||||||
|
GrabModeAsync, GrabModeAsync, CurrentTime);
|
||||||
|
}
|
||||||
|
if (ptgrab == GrabSuccess && kbgrab == GrabSuccess) {
|
||||||
|
XSelectInput(dpy, root, SubstructureNotifyMask);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
usleep(100000);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
readinputloop(Display *dpy, int screen) {
|
||||||
|
KeySym keysym;
|
||||||
|
XEvent ev;
|
||||||
|
char buf[32];
|
||||||
|
|
||||||
|
while (running && !XNextEvent(dpy, &ev)) {
|
||||||
|
if (ev.type == KeyPress) {
|
||||||
|
XLookupString(&ev.xkey, buf, sizeof(buf), &keysym, 0);
|
||||||
|
if (lastkeysym == keysym) {
|
||||||
|
lastkeyn++;
|
||||||
|
} else {
|
||||||
|
lastkeysym = keysym;
|
||||||
|
lastkeyn = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lastkeyn < 3)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
lastkeyn = 0;
|
||||||
|
lastkeysym = NULL;
|
||||||
|
|
||||||
|
switch (keysym) {
|
||||||
|
case XF86XK_AudioRaiseVolume:
|
||||||
|
screenon = !screenon;
|
||||||
|
updatescreen();
|
||||||
|
|
||||||
|
break;
|
||||||
|
case XF86XK_AudioLowerVolume:
|
||||||
|
screenon = !screenon;
|
||||||
|
updatescreen();
|
||||||
|
break;
|
||||||
|
case XF86XK_PowerOff:
|
||||||
|
cleanupscreen();
|
||||||
|
running = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char **argv) {
|
||||||
|
Display *dpy;
|
||||||
|
Screen *screen;
|
||||||
|
|
||||||
|
|
||||||
|
if (setuid(0))
|
||||||
|
die("setuid(0) failed\n");
|
||||||
|
if (!(dpy = XOpenDisplay(NULL)))
|
||||||
|
die("Cannot open display\n");
|
||||||
|
|
||||||
|
updatescreen();
|
||||||
|
screen = XDefaultScreen(dpy);
|
||||||
|
XSync(dpy, 0);
|
||||||
|
lockscreen(dpy, screen);
|
||||||
|
XSync(dpy, 0);
|
||||||
|
readinputloop(dpy, screen);
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -6,33 +6,61 @@ programchoicesinit() {
|
||||||
|
|
||||||
# Default
|
# Default
|
||||||
CHOICES="$(echo "
|
CHOICES="$(echo "
|
||||||
Push window tag → ^ 0 ^ sxmo_lowpowermode.sh
|
Scripts ^ 0 ^ sxmo_appmenu.sh scripts
|
||||||
Tag focus → ^ 0 ^ sxmo_lowpowermode.sh
|
Apps ^ 0 ^ sxmo_appmenu.sh applications
|
||||||
Applications ^ 0 ^ sxmo_appmenu.sh applications
|
|
||||||
Volume ↑ ^ 1 ^ sxmo_vol.sh up
|
Volume ↑ ^ 1 ^ sxmo_vol.sh up
|
||||||
Volume ↓ ^ 1 ^ sxmo_vol.sh down
|
Volume ↓ ^ 1 ^ sxmo_vol.sh down
|
||||||
Brightesss ↑ ^ 1 ^ sxmo_brightness.sh up
|
Camera ^ 0 ^ sxmo_camera.sh
|
||||||
Brightness ↓ ^ 1 ^ sxmo_brightness.sh down
|
|
||||||
Wifi ^ 0 ^ st -e "nmtui"
|
Wifi ^ 0 ^ st -e "nmtui"
|
||||||
Rotate ^ 1 ^ rotate
|
System Config ^ 0 ^ sxmo_appmenu.sh control
|
||||||
Upgrade Pkgs ^ 0 ^ st -e sxmo_upgrade.sh
|
|
||||||
Logout ^ 0 ^ pkill -9 dwm
|
Logout ^ 0 ^ pkill -9 dwm
|
||||||
Close Menu ^ 0 ^ quit
|
Close Menu ^ 0 ^ quit
|
||||||
")" && WINNAME=sys
|
")" && WINNAME=Sys
|
||||||
|
|
||||||
echo $WMCLASS | grep -i "applications" && CHOICES="$(echo "
|
echo $WMCLASS | grep -i "applications" && CHOICES="$(echo "
|
||||||
Surf ^ 0 ^ surf
|
Surf ^ 0 ^ surf
|
||||||
NetSurf ^ 0 ^ netsurf
|
NetSurf ^ 0 ^ netsurf
|
||||||
|
Sacc ^ 0 ^ st -e sacc i-logout.cz/1/bongusta
|
||||||
|
W3M ^ 0 ^ st -e w3m duck.com
|
||||||
St ^ 0 ^ st
|
St ^ 0 ^ st
|
||||||
Firefox ^ 0 ^ firefox
|
Firefox ^ 0 ^ firefox
|
||||||
Foxtrotgps ^ 0 ^ foxtrotgps
|
Foxtrotgps ^ 0 ^ foxtrotgps
|
||||||
Timer ^ 0 ^ sxmo_timermenu.sh
|
|
||||||
Close Menu ^ 0 ^ quit
|
Close Menu ^ 0 ^ quit
|
||||||
")" && WINNAME=Apps
|
")" && WINNAME=Apps
|
||||||
|
|
||||||
|
echo $WMCLASS | grep -i "scripts" && CHOICES="$(echo "
|
||||||
|
Timer ^ 0 ^ sxmo_timermenu.sh
|
||||||
|
Youtube ^ 0 ^ sxmo_youtube.sh
|
||||||
|
Youtube (Audio) ^ 0 ^ sxmo_youtube.sh
|
||||||
|
Weather ^ 0 ^ sxmo_weather.sh
|
||||||
|
RSS ^ 0 ^ sxmo_rss.sh
|
||||||
|
Close Menu ^ 0 ^ quit
|
||||||
|
")" && WINNAME=Scripts
|
||||||
|
|
||||||
|
echo $WMCLASS | grep -i "control" && CHOICES="$(echo "
|
||||||
|
Volume ↑ ^ 1 ^ sxmo_vol.sh up
|
||||||
|
Volume ↓ ^ 1 ^ sxmo_vol.sh down
|
||||||
|
Brightesss ↑ ^ 1 ^ sxmo_brightness.sh up
|
||||||
|
Brightness ↓ ^ 1 ^ sxmo_brightness.sh down
|
||||||
|
Rotate ^ 1 ^ rotate
|
||||||
|
Wifi ^ 0 ^ st -e "nmtui"
|
||||||
|
Upgrade Pkgs ^ 0 ^ st -e sxmo_upgrade.sh
|
||||||
|
Close Menu ^ 0 ^ quit
|
||||||
|
")" && WINNAME=Control
|
||||||
|
|
||||||
echo $WMCLASS | grep -i "mpv" && CHOICES="$(echo "
|
echo $WMCLASS | grep -i "mpv" && CHOICES="$(echo "
|
||||||
Pause ^ 0 ^ key space
|
Pause ^ 0 ^ key space
|
||||||
|
Seek ← ^ 1 ^ key Left
|
||||||
|
Seek → ^ 1 ^ key Right
|
||||||
|
App Volume ↑ ^ 1 ^ key 0
|
||||||
|
App Volume ↓ ^ 1 ^ key 9
|
||||||
|
Speed ↑ ^ 1 ^ key bracketright
|
||||||
|
Speed ↓ ^ 1 ^ key bracketleft
|
||||||
|
Screenshot ^ 1 ^ key s
|
||||||
|
Loopmark ^ 1 ^ key l
|
||||||
|
Info ^ 1 ^ key i
|
||||||
|
Seek Info ^ 1 ^ key o
|
||||||
|
Close Menu ^ 0 ^ quit
|
||||||
")" && WINNAME=Mpv
|
")" && WINNAME=Mpv
|
||||||
|
|
||||||
# St
|
# St
|
||||||
|
@ -44,6 +72,7 @@ programchoicesinit() {
|
||||||
Zoom - ^ 1 ^ key Ctrl+Shift+Next
|
Zoom - ^ 1 ^ key Ctrl+Shift+Next
|
||||||
Scroll ↑ ^ 1 ^ key Shift+Prior
|
Scroll ↑ ^ 1 ^ key Shift+Prior
|
||||||
Scroll ↓ ^ 1 ^ key Shift+Next
|
Scroll ↓ ^ 1 ^ key Shift+Next
|
||||||
|
Invert ^ 1 ^ key Ctrl+Shift+x
|
||||||
Hotkeys ^ 0 ^ sxmo_appmenu.sh sthotkeys
|
Hotkeys ^ 0 ^ sxmo_appmenu.sh sthotkeys
|
||||||
Close Menu ^ 0 ^ quit
|
Close Menu ^ 0 ^ quit
|
||||||
")" && WINNAME=st
|
")" && WINNAME=st
|
||||||
|
|
3
scripts/sxmo_camera.sh
Executable file
3
scripts/sxmo_camera.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
media-ctl -d /dev/media1 --set-v4l2 '"ov5640 3-004c":0[fmt:UYVY8_2X8/1280x720]'
|
||||||
|
mpv --video-rotate=90 av://v4l2:/dev/video1
|
|
@ -1,33 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
power_1() {
|
|
||||||
pgrep -f sxmo_appmenu.sh || sxmo_keyboard.sh
|
|
||||||
}
|
|
||||||
power_2() {
|
|
||||||
st
|
|
||||||
}
|
|
||||||
power_3() {
|
|
||||||
surf
|
|
||||||
}
|
|
||||||
|
|
||||||
voldown_1() {
|
|
||||||
pgrep -f sxmo_appmenu.sh && xdotool key Control+n || xdotool key Alt+Ctrl+period
|
|
||||||
}
|
|
||||||
voldown_2() {
|
|
||||||
xdotool key Alt+Shift+c
|
|
||||||
}
|
|
||||||
voldown_3() {
|
|
||||||
xdotool key Alt+Return
|
|
||||||
}
|
|
||||||
|
|
||||||
volup_1() {
|
|
||||||
pgrep -f sxmo_appmenu.sh && xdotool key Control+p || sxmo_appmenu.sh
|
|
||||||
}
|
|
||||||
volup_2() {
|
|
||||||
echo nop
|
|
||||||
}
|
|
||||||
volup_3() {
|
|
||||||
echo nop
|
|
||||||
}
|
|
||||||
|
|
||||||
$@
|
|
6
scripts/sxmo_dimscreentoggle.sh
Executable file
6
scripts/sxmo_dimscreentoggle.sh
Executable file
|
@ -0,0 +1,6 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
OLDB=$(cat /tmp/oldscreenb || echo 10)
|
||||||
|
DIMB=2
|
||||||
|
CURB=$(cat /sys/devices/platform/backlight/backlight/backlight/brightness)
|
||||||
|
|
||||||
|
[[ $CURB == $DIMB ]] && sxmo_setpinebacklight $OLDB || sxmo_setpinebacklight $DIMB
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
sxmo_keyboard.sh on &
|
pidof svkbd-sxmo || svkbd-sxmo &
|
||||||
OUTPUT="$(cat | dmenu -t $@)"
|
OUTPUT="$(cat | dmenu -t $@)"
|
||||||
sxmo_keyboard.sh off
|
pkill svkbd-sxmo
|
||||||
echo "$OUTPUT"
|
echo "$OUTPUT"
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
P=/tmp/KEYTOG
|
|
||||||
|
|
||||||
keyoff() {
|
|
||||||
kill -9 $(cat $P)
|
|
||||||
pgrep -f sxmo_keyboard.sh | grep -Ev "^${$}$" | xargs kill -9
|
|
||||||
pkill -9 svkbd-en
|
|
||||||
pkill -9 svkbd-symbols
|
|
||||||
rm $P
|
|
||||||
}
|
|
||||||
|
|
||||||
keyon() {
|
|
||||||
echo $$ >> $P
|
|
||||||
while :
|
|
||||||
do
|
|
||||||
svkbd-en -d
|
|
||||||
svkbd-symbols -d
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ "$1" == "on" ]; then
|
|
||||||
[ -f $P ] && keyoff
|
|
||||||
keyon
|
|
||||||
elif [ "$1" == "off" ]; then
|
|
||||||
[ -f $P ] && keyoff
|
|
||||||
else
|
|
||||||
# Default toggle
|
|
||||||
[ -f $P ] && keyoff || keyon
|
|
||||||
fi
|
|
|
@ -1,18 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
TOUCHSCREENID=$(
|
|
||||||
xinput |
|
|
||||||
grep -i touchscreen |
|
|
||||||
grep pointer |
|
|
||||||
grep -oE 'id=[0-9]+' |
|
|
||||||
cut -d= -f2
|
|
||||||
)
|
|
||||||
|
|
||||||
xinput disable $TOUCHSCREENID
|
|
||||||
sxmo_setpineled blue 1
|
|
||||||
OLDB="$(cat /sys/class/backlight/backlight/brightness)"
|
|
||||||
sxmo_setpinebacklight 0
|
|
||||||
echo "Dragons?" | dmenu
|
|
||||||
|
|
||||||
sxmo_setpinebacklight $OLDB
|
|
||||||
sxmo_setpineled blue 0
|
|
||||||
xinput enable $TOUCHSCREENID
|
|
|
@ -1,16 +1,23 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
sxmo_keyboard.sh on &
|
INPUT="$(cat)"
|
||||||
|
|
||||||
cat |\
|
pidof svkbd-sxmo || svkbd-sxmo &
|
||||||
grep -Eo '\\S+' |\
|
|
||||||
|
RESULT="$(
|
||||||
|
echo "$(
|
||||||
|
echo "Close Menu" &&
|
||||||
|
echo "$INPUT" |\
|
||||||
|
grep -Eo '\S+' |\
|
||||||
tr -d '[:blank:]' |\
|
tr -d '[:blank:]' |\
|
||||||
sort |\
|
sort |\
|
||||||
uniq |\
|
uniq
|
||||||
dmenu -p Type -l 10 -i -c -fn Terminus-20
|
)" | dmenu -p Type -l 10 -i -c -fn Terminus-20
|
||||||
|
)"
|
||||||
|
|
||||||
sxmo_keyboard.sh off
|
pkill svkbd-sxmo
|
||||||
|
|
||||||
if [[ "$RESULT" = "Close Menu" ]]; then
|
if [[ "$RESULT" = "Close Menu" ]]; then
|
||||||
|
exit 0
|
||||||
else
|
else
|
||||||
xargs -I CC xdotool type "$RESULT"
|
xdotool type "$RESULT"
|
||||||
fi
|
fi
|
||||||
|
|
53
scripts/sxmo_rss.sh
Executable file
53
scripts/sxmo_rss.sh
Executable file
|
@ -0,0 +1,53 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
SFEEDCONF=/usr/share/sxmo/sxmo_sfeedrc
|
||||||
|
|
||||||
|
tflt() {
|
||||||
|
# Date with feature like "1 day ago" etc main reason
|
||||||
|
# coreutils is a dep...
|
||||||
|
TIME=$(eval date -d \""$TIMESPAN"\" +%s)
|
||||||
|
cat | gawk "\$1 > $TIME"
|
||||||
|
}
|
||||||
|
|
||||||
|
prep_temp_folder_with_items() {
|
||||||
|
mkdir -p $FOLDER
|
||||||
|
rm -rf $FOLDER/*
|
||||||
|
cd ~/.sfeed/feeds/
|
||||||
|
for f in $(ls)
|
||||||
|
do
|
||||||
|
cat $f | tflt $@ > $FOLDER/$f
|
||||||
|
[ -s $FOLDER/$f ] || rm $FOLDER/$f
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
list_items() {
|
||||||
|
cd $FOLDER
|
||||||
|
gawk -F'\t' '{print $1 " " FILENAME " | " $2 ": " $3}' * |\
|
||||||
|
grep -E '^[0-9]{5}' |\
|
||||||
|
sort -nk1 |\
|
||||||
|
sort -r |\
|
||||||
|
gawk -F' ' '{printf strftime("%y/%m/%d %H:%M",$1); $1=""; print $0}'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Update Sfeed
|
||||||
|
st -e sh -c "echo Syncing Feeds && sfeed_update $SFEEDCONF"
|
||||||
|
|
||||||
|
# Dmenu prompt for timespan
|
||||||
|
TIMESPAN=$(
|
||||||
|
echo "1 hour ago
|
||||||
|
3 hours ago
|
||||||
|
12 hours ago
|
||||||
|
1 day ago
|
||||||
|
2 day ago
|
||||||
|
1970-01-01" | dmenu -p "RSS Timespan" -c -l 10 -fn Terminus-20
|
||||||
|
)
|
||||||
|
|
||||||
|
# Make folder like /tmp/sfeed_1_day_ago
|
||||||
|
FOLDER="/tmp/sfeed_$(echo "$TIMESPAN" | sed 's/ /_/g')"
|
||||||
|
prep_temp_folder_with_items
|
||||||
|
|
||||||
|
# Show list of items
|
||||||
|
PICKED=$(echo "$(list_items)" | dmenu -p "RSS" -c -l 20 -fn Terminus-15)
|
||||||
|
|
||||||
|
# Handle picked item
|
||||||
|
URL="$(echo "$PICKED" | gawk -F " " '{print $NF}')"
|
||||||
|
sxmo_urlhandler.sh "$URL"
|
|
@ -73,4 +73,9 @@ function link_select() {
|
||||||
link_normalize $(xprop -id $SURF_WINDOW _SURF_URI | cut -d '"' -f 2)
|
link_normalize $(xprop -id $SURF_WINDOW _SURF_URI | cut -d '"' -f 2)
|
||||||
}
|
}
|
||||||
|
|
||||||
link_select
|
xset r off
|
||||||
|
pidof svkbd-sxmo || svkbd-sxmo &
|
||||||
|
VAL="$(link_select)"
|
||||||
|
pkill svkbd-sxmo
|
||||||
|
xset r on
|
||||||
|
echo "$VAL"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
sxmo_keyboard.sh on &
|
pidof svkbd-sxmo || svkbd-sxmo &
|
||||||
TIMEINPUT=$(
|
TIMEINPUT=$(
|
||||||
echo "1h
|
echo "1h
|
||||||
10m
|
10m
|
||||||
|
@ -15,7 +15,7 @@ echo "1h
|
||||||
30s
|
30s
|
||||||
Close Menu" | dmenu -p Timer -c -fn "Terminus-30" -l 20
|
Close Menu" | dmenu -p Timer -c -fn "Terminus-30" -l 20
|
||||||
)
|
)
|
||||||
sxmo_keyboard.sh off &
|
pkill svkbd-sxmo
|
||||||
[ "Close Menu" = $TIMEINPUT ] && exit 0
|
[ "Close Menu" = $TIMEINPUT ] && exit 0
|
||||||
|
|
||||||
st -f Monospace-50 -e sxmo_timer.sh $TIMEINPUT
|
st -f Monospace-50 -e sxmo_timer.sh $TIMEINPUT
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
# URL test passed from $1
|
if [[ ! -z "$1" ]]
|
||||||
URL=${1:-$URL}
|
then
|
||||||
|
# E.g. passed liked: sxmo_urlhandler.sh http://foo.com
|
||||||
|
URL=$1
|
||||||
|
else
|
||||||
# Surf
|
# Surf
|
||||||
WINDOW="$(xprop -root | sed -n '/^_NET_ACTIVE_WINDOW/ s/.* //p')"
|
WINDOW="$(xprop -root | sed -n '/^_NET_ACTIVE_WINDOW/ s/.* //p')"
|
||||||
SURFURL=`xprop -id $WINDOW | grep URI | awk '{print $3}' | sed 's/\"//g'`
|
SURFURL=`xprop -id $WINDOW | grep URI | awk '{print $3}' | sed 's/\"//g'`
|
||||||
|
@ -19,6 +21,7 @@ then
|
||||||
sleep 0.2
|
sleep 0.2
|
||||||
URL="$(xclip -o)"
|
URL="$(xclip -o)"
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
COMMAND=$(
|
COMMAND=$(
|
||||||
echo "
|
echo "
|
||||||
|
|
|
@ -10,3 +10,10 @@ decvol() {
|
||||||
|
|
||||||
echo $1 | grep up && echo 1 > /tmp/sxmo_bar && incvol
|
echo $1 | grep up && echo 1 > /tmp/sxmo_bar && incvol
|
||||||
echo $1 | grep down && echo 1 > /tmp/sxmo_bar && decvol
|
echo $1 | grep down && echo 1 > /tmp/sxmo_bar && decvol
|
||||||
|
sxmo_notify.sh 200 "Volume $(
|
||||||
|
amixer sget Headphone |
|
||||||
|
grep -oE '([0-9]+)%' |
|
||||||
|
tr -d ' %' |
|
||||||
|
awk '{ s += $1; c++ } END { print s/c }' |
|
||||||
|
xargs printf %.0f
|
||||||
|
)"
|
||||||
|
|
23
scripts/sxmo_weather.sh
Executable file
23
scripts/sxmo_weather.sh
Executable file
|
@ -0,0 +1,23 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
pidof svkbd-sxmo || svkbd-sxmo &
|
||||||
|
ZIP=$(
|
||||||
|
echo -e "
|
||||||
|
10025 - NYC
|
||||||
|
60007 - Chicago
|
||||||
|
94016 - San Francisco
|
||||||
|
97035 - Portland, OR
|
||||||
|
" |
|
||||||
|
awk 'NF' |
|
||||||
|
awk '{$1=$1};1' |
|
||||||
|
dmenu -fn Terminus-20 -i -c -l 10 -p "US Zipcode" |
|
||||||
|
awk -F " " '{print $1}'
|
||||||
|
)
|
||||||
|
pkill svkbd-sxmo
|
||||||
|
|
||||||
|
LATLON=$(cat /usr/share/sxmo/zipcodes_for_weather.csv | grep "^$ZIP")
|
||||||
|
LAT=$(echo $LATLON | cut -d, -f2 | tr -d ' ')
|
||||||
|
LON=$(echo $LATLON | cut -d, -f3 | tr -d ' ')
|
||||||
|
URL="https://forecast.weather.gov/MapClick.php?lat=${LAT}&lon=${LON}&unit=0&lg=english&FcstType=text&TextType=1"
|
||||||
|
|
||||||
|
st -f Monospace-20 -e w3m "$URL"
|
|
@ -7,6 +7,7 @@ xsetroot -mod 3 2 -fg '#000000' -bg '#888888'
|
||||||
conky -c /usr/share/sxmo/conky.conf -d
|
conky -c /usr/share/sxmo/conky.conf -d
|
||||||
|
|
||||||
sxmo_statusbar.sh &
|
sxmo_statusbar.sh &
|
||||||
|
xset s off -dpms
|
||||||
xset r off
|
xset r off
|
||||||
alsactl --file /usr/share/sxmo/default_alsa_sound.conf restore
|
alsactl --file /usr/share/sxmo/default_alsa_sound.conf restore
|
||||||
exec dbus-run-session dwm 2> ~/.dwm.log
|
exec dbus-run-session dwm 2> ~/.dwm.log
|
||||||
|
|
23
scripts/sxmo_youtube.sh
Executable file
23
scripts/sxmo_youtube.sh
Executable file
|
@ -0,0 +1,23 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
pidof svkbd-sxmo || svkbd-sxmo &
|
||||||
|
SEARCHTERMS="$(
|
||||||
|
echo "Search term" |
|
||||||
|
dmenu -p "Yt Search" -c -l 10 -fn Terminus-20
|
||||||
|
)"
|
||||||
|
pkill svkbd-sxmo
|
||||||
|
|
||||||
|
IDIOTRESULTS="$(idiotbox-cli $SEARCHTERMS)"
|
||||||
|
RESULT="$(
|
||||||
|
echo "$IDIOTRESULTS" |
|
||||||
|
grep -Ev '^(Channelid|Atom feed|Channel title|Published|Viewcount|Userid):' |
|
||||||
|
sed -E 's/^(URL|Duration):\s+/\t/g' |
|
||||||
|
tr -d '\n' |
|
||||||
|
sed 's/===/\n/g' |
|
||||||
|
gawk -F'\t' '{ print $3 " " $1 " " $2}' |
|
||||||
|
dmenu -c -l 10 -fn Terminus-20
|
||||||
|
)"
|
||||||
|
|
||||||
|
[[ "CLOSE_MENU" == "$RESULT" ]] && exit 0
|
||||||
|
|
||||||
|
URL=$(echo "$RESULT" | awk -F " " '{print $NF}')
|
||||||
|
st -e mpv --ytdl-format='[height<420]' "$URL"
|
Loading…
Add table
Add a link
Reference in a new issue