8 Commits

Author SHA1 Message Date
0b3ce90e74 sxmo_rotate: don't restart lisgd on sway
AFAICT we restart lisgd because it learns the orientation via its
`-o <orientation>` CLI argument. but we only pass that flag on dwm/x11,
not sway. restarting it on sway is wasteful, and potentially racy (i'm
able to get multiple lisgd's running just by enabling autorotate and
flipping the phone rapidly), so don't do that.
2023-07-16 12:45:54 +00:00
bf00570117 sxmo_wmmenu: respect SXMO_WORKSPACE_WRAPPING
sxmo_wm.sh uses the `SXMO_WORKSPACE_WRAPPING` variable to control
relative movements. for example, set this to "5" and then the "Next
Workspace" option in the switch menu will cycle WS 1 -> 2 ... -> 5 -> 1.
same for one- and two-finger left/right swipe to switch/move workspaces.

however, absolute movements (via the move menu) only allowed moving to
WS 1-4. a user with non-default `SXMO_WORKSPACE_WRAPPING` could move a
window from WS 5 to WS 4 with this menu, but not from WS 4 back to WS 5.
this patch brings consistency by using `SXMO_WORKSPACE_WRAPPING`
anywhere we would otherwise assume the number of possible workspaces.
2023-07-15 21:36:58 +00:00
0cffdeafab sxmo_hook_rotate.sh: update docs for CLI args
see `swayrotinvert()` in sxmo_rotate.sh, which calls this hook with "invert"
2023-07-12 00:30:26 +00:00
e2d0cedd21 sxmo_hook_apps: add a few 2023-07-09 22:13:14 +00:00
021462a4a5 sxmo_autorotate: allow all four orientations 2023-07-09 07:25:31 +00:00
6027263770 sxmo_swayinitconf: fix xkb paths
the xkb files were moved in 6a529751 but not all references were updated
2023-07-09 07:25:31 +00:00
2e8504c5e0 NOT FOR UPSTREAM: sxmo_hook_start: don't start audio daemons
these are managed by the OS
2023-07-09 07:25:31 +00:00
c2cf64e7ca NOT FOR UPSTREAM: remove explicit busybox calls 2023-07-09 07:25:31 +00:00
245 changed files with 2615 additions and 5040 deletions

View File

@@ -3,12 +3,17 @@ packages:
- shellcheck
- editorconfig-checker
- shellspec
- gojq
- jq
- icu-dev
- linux-headers
sources:
- https://git.sr.ht/~mil/sxmo-utils
tasks:
- test: |
- shellcheck: |
cd sxmo-utils
make test
find . -type f -name '*.sh' -print0 | xargs -0 shellcheck -x --shell=sh
- shellspec: |
cd sxmo-utils
shellspec
- editorconfig-check: |
cd sxmo-utils
ec

1
.gitattributes vendored
View File

@@ -1 +0,0 @@
Makefile export-subst

View File

@@ -1,3 +0,0 @@
tracker https://todo.sr.ht/~mil/sxmo-tickets
development-mailing-list ~mil/sxmo-devel@lists.sr.ht
patch-prefix true

122
Makefile
View File

@@ -1,110 +1,45 @@
DESTDIR=
PREFIX:=/usr
SYSCONFDIR:=/etc
SHAREDIR=$(PREFIX)/share
MANDIR=$(SHAREDIR)/man
CFLAGS := -Wall -std=c99 -D_POSIX_C_SOURCE=200809L $(CFLAGS)
# use $(PREFIX)/lib/systemd/user for systemd integration
SERVICEDIR:=$(PREFIX)/share/superd/services
# Install services for packages outside sxmo
EXTERNAL_SERVICES:=1
SCDOC=scdoc
SCD2HTML=scd2html
SCD2HTMLFLAGS =
.PHONY: install test shellcheck shellspec test_legacy_nerdfont docs html-docs \
install-docs install-html-docs install-sway install-dwm install-scripts
.PHONY: install shellcheck
VERSION ?= unknown
VERSION:=1.13.0
# git archive will expand $Format:true$ to just true, so we can use it to check
# if we should use the version from the tarball, or to generate it now.
ifeq "$Format:true$" "true"
VERSION := $Format:%(describe:tags)$
else
VERSION := $(shell git -c safe.directory="*" describe --tags)
endif
GITVERSION:=$(shell git describe --tags)
OPENRC:=1
CC ?= $(CROSS_COMPILE)gcc
PROGRAMS = \
programs/sxmo_aligned_sleep \
programs/sxmo_sleep \
programs/sxmo_vibrate \
programs/sxmo_status_led
programs/sxmo_vibrate
DOCS = \
docs/sxmo.7 \
docs/sxmo_wakelock.sh.1 \
docs/sxmo_migrate.sh.1 \
docs/sxmo_files.sh.1 \
docs/sxmo_contacts.sh.1 \
HTMLDOCS := $(DOCS:%=%.html)
all: $(PROGRAMS) $(DOCS)
# We convert from SCDOC to HTML , the HTML conversion
# we apply some postprocessing for better internal hyperlinks and styling.
docs/%.html: docs/%.scd
$(SCD2HTML) $(SCD2HTMLFLAGS) < "$<" | \
sed -E -e 's/Georgia/Sans/g' \
-e 's/Menlo/FiraMono Nerd Font, Sxmo, Menlo/g' \
-e 's/See ([A-Z ]+)\./See <a href="#\1">\1<\/a>./g' \
-e 's/\(see ([A-Z ]+)\)/(see <a href="#\1">\1<\/a>)/g' \
-e 's/<u>sxmo_([a-z_\.]+)<\/u>\(([1-9])\)/<a href="sxmo_\1.\2.html"><u>sxmo_\1<\/u><\/a>(\2)/g' | \
sed -e ':loop' \
-e 's/\(href="[^" ]*\) \([^"]*"\)/\1_\2/' \
-e 't loop' > "$@" #this last sed statement replace spaces in href attributes with underscores
docs/sxmo.7
docs/%: docs/%.scd
$(SCDOC) <$< >$@
docs: $(DOCS)
all: $(PROGRAMS) $(DOCS)
html-docs: $(HTMLDOCS)
test: shellcheck shellspec test_legacy_nerdfont test_status_led
test: shellcheck
shellcheck:
find . -type f -name '*.sh' -print0 | xargs -0 shellcheck -x --shell=sh
shellspec: ${PROGRAMS}
shellspec
test_status_led: programs/sxmo_status_led.test
./programs/sxmo_status_led.test
test_legacy_nerdfont: programs/test_legacy_nerdfont
programs/test_legacy_nerdfont < configs/default_hooks/sxmo_hook_icons.sh
programs/sxmo_status_led: LDLIBS := -lm
programs/sxmo_status_led.test: LDLIBS := -lm
programs/test_legacy_nerdfont: LDLIBS := $(shell pkg-config --cflags --libs icu-io)
programs/%: programs/%.c
$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $< $(LOADLIBES) $(LDLIBS) -o $@
# only used for sxmo_status_led
programs/%.test: programs/%.c
$(CC) $(CPPFLAGS) $(CFLAGS) -DTEST $(LDFLAGS) $< $(LOADLIBES) $(LDLIBS) -o $@
$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $<
clean:
rm -f ${PROGRAMS} ${DOCS} ${HTMLDOCS} programs/test_legacy_nerdfont programs/sxmo_status_led.test
rm -f programs/sxmo_aligned_sleep programs/sxmo_vibrate
install: install-sway install-dwm install-scripts install-docs
install-docs: $(DOCS)
cd docs && find . -type f -name '*.7' -exec install -D -m 0644 "{}" "$(DESTDIR)$(MANDIR)/man7/{}" \; && find . -type f -name '*.1' -exec install -D -m 0644 "{}" "$(DESTDIR)$(MANDIR)/man1/{}" \; && cd ..
install-html-docs: $(HTMLDOCS)
cd docs && find . -type f -name '*.html' -exec install -D -m 0644 "{}" "$(DESTDIR)$(PREFIX)/share/doc/sxmo/html/{}" \; && cd ..
cd docs && find . -type f -name '*.7' -exec install -D -m 0644 "{}" "$(DESTDIR)$(MANDIR)/man7/{}" \; && cd ..
install-sway:
install -D -m 0644 -t $(DESTDIR)$(PREFIX)/share/wayland-sessions/ configs/applications/swmo.desktop
@@ -113,31 +48,34 @@ install-dwm:
install -D -m 0644 -t $(DESTDIR)$(PREFIX)/share/xsessions/ configs/applications/sxmo.desktop
install-scripts: $(PROGRAMS)
cd configs && find . -type f -not -exec install -D -m 0644 "{}" "$(DESTDIR)$(PREFIX)/share/sxmo/{}" \; && cd ..
cd configs && find . -type f -not -name sxmo-setpermissions -exec install -D -m 0644 "{}" "$(DESTDIR)$(PREFIX)/share/sxmo/{}" \; && cd ..
rm -rf "$(DESTDIR)$(PREFIX)/share/sxmo/default_hooks/"
cd configs && find default_hooks -type f -exec install -D -m 0755 "{}" "$(DESTDIR)$(PREFIX)/share/sxmo/{}" \; && cd ..
cd configs && find default_hooks -type l -exec cp -R "{}" "$(DESTDIR)$(PREFIX)/share/sxmo/{}" \; && cd ..
echo "$(VERSION)" > "$(DESTDIR)$(PREFIX)/share/sxmo/version"
[ -n "$(GITVERSION)" ] && echo "$(GITVERSION)" > "$(DESTDIR)$(PREFIX)/share/sxmo/version" || echo "$(VERSION)" > "$(DESTDIR)$(PREFIX)/share/sxmo/version"
cd resources && find . -type f -exec install -D -m 0644 "{}" "$(DESTDIR)$(PREFIX)/share/sxmo/{}" \; && cd ..
install -D -m 0644 -t $(DESTDIR)$(PREFIX)/lib/udev/rules.d/ configs/udev/*.rules
# Configs
if [ "$(OPENRC)" = "1" ]; then \
install -D -m 0755 -t $(DESTDIR)/etc/init.d configs/openrc/sxmo-setpermissions; \
fi
install -D -m 0644 -t $(DESTDIR)/usr/lib/udev/rules.d/ configs/udev/*.rules
install -D -m 0644 -t $(DESTDIR)$(PREFIX)/share/applications/ configs/xdg/mimeapps.list
install -D -m 0644 -t $(DESTDIR)$(SYSCONFDIR)/polkit-1/rules.d/ configs/polkit/01-sensor-claim.rules
install -D -m 0640 -t $(DESTDIR)$(SYSCONFDIR)/doas.d/ configs/doas/sxmo.conf
install -D -m 0640 -t $(DESTDIR)/etc/doas.d/ configs/doas/sxmo.conf
install -D -m 0644 -T configs/xorg/monitor.conf $(DESTDIR)$(PREFIX)/share/X11/xorg.conf.d/90-monitor.conf
mkdir -p $(DESTDIR)$(SYSCONFDIR)/NetworkManager/dispatcher.d
mkdir -p $(DESTDIR)/etc/NetworkManager/dispatcher.d
install -D -m 0644 -T configs/appcfg/mpv_input.conf $(DESTDIR)$(SYSCONFDIR)/mpv/input.conf
install -D -m 0644 -T configs/appcfg/mpv_input.conf $(DESTDIR)/etc/mpv/input.conf
install -D -m 0755 -T configs/profile.d/sxmo_init.sh $(DESTDIR)$(SYSCONFDIR)/profile.d/sxmo_init.sh
install -D -m 0755 -T configs/profile.d/sxmo_init.sh $(DESTDIR)/etc/profile.d/sxmo_init.sh
# Migrations
install -D -t $(DESTDIR)$(PREFIX)/share/sxmo/migrations migrations/*
@@ -145,8 +83,8 @@ install-scripts: $(PROGRAMS)
# Bin
install -D -t $(DESTDIR)$(PREFIX)/bin scripts/*/*.sh
install -t $(DESTDIR)$(PREFIX)/bin/ ${PROGRAMS}
setcap 'cap_wake_alarm=ep' $(DESTDIR)$(PREFIX)/bin/sxmo_sleep
install -D programs/sxmo_aligned_sleep $(DESTDIR)$(PREFIX)/bin/
install -D programs/sxmo_vibrate $(DESTDIR)$(PREFIX)/bin/
find $(DESTDIR)$(PREFIX)/share/sxmo/default_hooks/ -type f -exec ./setup_config_version.sh "{}" \;
find $(DESTDIR)$(PREFIX)/share/sxmo/appcfg/ -type f -exec ./setup_config_version.sh "{}" \;
@@ -155,12 +93,12 @@ install-scripts: $(PROGRAMS)
mkdir -p "$(DESTDIR)$(PREFIX)/share/sxmo/appscripts"
cd scripts/appscripts && find . -name 'sxmo_*.sh' | xargs -I{} ln -fs "$(PREFIX)/bin/{}" "$(DESTDIR)$(PREFIX)/share/sxmo/appscripts/{}" && cd ../..
mkdir -p "$(DESTDIR)$(SERVICEDIR)"
install -m 0644 -t "$(DESTDIR)$(SERVICEDIR)" configs/services/*
if [ "$(EXTERNAL_SERVICES)" = "1" ]; then \
install -m 0644 -t "$(DESTDIR)$(SERVICEDIR)" configs/external-services/*; \
fi
mkdir -p "$(DESTDIR)$(PREFIX)/share/superd/services"
install -m 0644 -t $(DESTDIR)$(PREFIX)/share/superd/services configs/superd/services/*
@echo "-------------------------------------------------------------------">&2
@echo "NOTICE: After an upgrade, it is recommended you reboot and when prompted run sxmo_migrate.sh to check and upgrade your configuration files and custom hooks against the defaults (it will not make any changes unless explicitly told to)" >&2
@echo "NOTICE 1: Do not forget to add sxmo-setpermissions to your init system, e.g. for openrc: rc-update add sxmo-setpermissions default && rc-service sxmo-setpermissions start" >&2
@echo "-------------------------------------------------------------------">&2
@echo "NOTICE 2: After an upgrade, it is recommended you reboot and when prompted run sxmo_migrate.sh to check and upgrade your configuration files and custom hooks against the defaults (it will not make any changes unless explicitly told to)" >&2
@echo "-------------------------------------------------------------------">&2

View File

@@ -8,11 +8,11 @@ conky.config = {
draw_shades = true,
font = 'Sxmo:size=13',
use_xft = true,
update_interval = 15,
update_interval = 5,
}
conky.text = [[
${alignc}${font Sxmo:size=50:style=Bold}${time %H}${font Sxmo:size=50}:${time %M}${font}
${alignc}${font Sxmo:size=50:style=Bold}${exec date +"%H"}${font Sxmo:size=50}:${exec date +"%M"}${font}
${font Sxmo:size=20}${time %a %d %b %Y}${font}
${font Sxmo:size=20}${exec date +"%a %d %b %Y"}${font}
]]

View File

@@ -5,7 +5,6 @@ text-color=#000000
border-color=#000000
layer=overlay
group-by=app-name
on-touch=invoke-default-action
[urgency=low]
default-timeout=10000

View File

@@ -3474,26 +3474,6 @@ Palivere, Estonia 58.9702778 23.9033337
Aravete, Estonia 59.1416667 25.7613888
Kiili, Estonia 59.3069444 24.8377781
Lagedi, Estonia 59.4055556 24.9422226
Manzini, Eswatini -26.4833333 31.3666668
Mbabane, Eswatini -26.3166667 31.1333332
Big Bend, Eswatini -26.8166667 31.9333324
Malkerns, Eswatini -26.5666667 31.1833324
Mhlume, Eswatini -26.0333333 31.8500004
Hluti, Eswatini -27.2166667 31.6166668
Siteki, Eswatini -26.4500000 31.9500008
Piggs Peak, Eswatini -25.9666667 31.2500000
Lobamba, Eswatini -26.4666667 31.2000008
Kwaluseni, Eswatini -26.4833333 31.3333340
Bhunya, Eswatini -26.5500000 31.0166664
Mhlambanyatsi, Eswatini -26.4500000 31.0166664
Hlatikulu, Eswatini -26.9666667 31.3166676
Bulembu, Eswatini -25.9666667 31.1333332
Kubuta, Eswatini -26.8833333 31.4833336
Tshaneni, Eswatini -25.9833333 31.7166672
Sidvokodvo, Eswatini -26.6166667 31.4500008
Lavumisa, Eswatini -27.3166667 31.8999996
Darkton, Eswatini -26.2333333 31.0333328
Nsoko, Eswatini -27.0333333 31.9500008
Addis Ababa, Ethiopia 9.0333333 38.7000008
Dire Dawa, Ethiopia 9.5930556 41.8661118
Nazret, Ethiopia 8.5500000 39.2666664
@@ -9260,6 +9240,26 @@ Onverwacht, Suriname 5.5833333 -55.1833344
Totness, Suriname 5.8833333 -56.3166656
Benzdorp (Monte Hermon), Suriname 3.6720670 -54.1035461
Kabana-vo, Suriname 3.6741067 -54.0848846
Manzini, Swaziland -26.4833333 31.3666668
Mbabane, Swaziland -26.3166667 31.1333332
Big Bend, Swaziland -26.8166667 31.9333324
Malkerns, Swaziland -26.5666667 31.1833324
Mhlume, Swaziland -26.0333333 31.8500004
Hluti, Swaziland -27.2166667 31.6166668
Siteki, Swaziland -26.4500000 31.9500008
Piggs Peak, Swaziland -25.9666667 31.2500000
Lobamba, Swaziland -26.4666667 31.2000008
Kwaluseni, Swaziland -26.4833333 31.3333340
Bhunya, Swaziland -26.5500000 31.0166664
Mhlambanyatsi, Swaziland -26.4500000 31.0166664
Hlatikulu, Swaziland -26.9666667 31.3166676
Bulembu, Swaziland -25.9666667 31.1333332
Kubuta, Swaziland -26.8833333 31.4833336
Tshaneni, Swaziland -25.9833333 31.7166672
Sidvokodvo, Swaziland -26.6166667 31.4500008
Lavumisa, Swaziland -27.3166667 31.8999996
Darkton, Swaziland -26.2333333 31.0333328
Nsoko, Swaziland -27.0333333 31.9500008
Stockholm, Sweden 59.3325765 18.0649033
Goteborg, Sweden 57.7071623 11.9667931
Malmoe, Sweden 55.6058691 13.0007315
Can't render this file because it has a wrong number of fields in line 2.

View File

@@ -28,10 +28,7 @@ command -v firefox >/dev/null && export BROWSER=firefox
#export SXMO_SUBREDDITS="postmarketos pinephoneOfficial pinephone unixporn"
# Change the default terminal command
export TERMCMD="sxmo_terminal.sh"
# Change the used terminal command
# export SXMO_TERMINAL="st"
# export TERMCMD="st -e"
# When scrolling past the beginning or end of a menu, wrap it around:
#export DMENU_WRAP_AROUND=1
@@ -68,3 +65,6 @@ export SXMO_RINGNUMBER=10
#Set to the default text for a new text message.
export SXMO_DEFAULT_DRAFT="Enter new message here."
#Set background image
export SXMO_BG_IMG="$(xdg_data_path sxmo/background.jpg)"

View File

@@ -20,47 +20,28 @@ set $term sxmo_terminal.sh
# on the original workspace that the command was run on.
set $menu bemenu-run
font "Sxmo 11"
font "Sxmo 10"
exec_always sxmo_swayinitconf.sh
exec_always dbus-update-activation-environment WAYLAND_DISPLAY DISPLAY XDG_CURRENT_DESKTOP
exec_always dbus-update-activation-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
mode "menu" {
# This is slower than remapping the keys using a keymap, but we don't need
# to know the device names, so use it as a fallback so this functionality
# keeps working if a deviceprofile doesn't exist.
# TODO: the correct way to do this is to implement custom keybindings in
# bemenu & wofi
bindsym XF86PowerOff exec wtype -k Return
bindsym XF86AudioRaiseVolume exec wtype -k Up
bindsym XF86AudioLowerVolume exec wtype -k Down
bindsym --input-device=1:1:1c21800.lradc XF86AudioMute exec nothing # just a placeholder for "menu" mode
}
### Key bindings
#
# Basics:
#
input * xkb_options compose:ralt
# Nokia N900 hardware keyboard
input "1:1:TWL4030_Keypad" {
xkb_model "nokiarx51"
xkb_layout "us"
# ralt has special meaning on N900 keyboard so do not use as
# compose key
xkb_options compose:rwin
}
# Start a terminal
bindsym $mod+Return exec $term
# Launch appmenu
bindsym $mod+p exec sxmo_appmenu.sh
bindsym $mod+Shift+p exec sxmo_appmenu.sh sys
# Wm menu switcher
bindsym $mod+i exec sxmo_wmmenu.sh windowswitcher
# Launch scripts menu
bindsym $mod+i exec sxmo_appmenu.sh scripts
# Kill focused window
bindsym $mod+Shift+q kill
@@ -152,7 +133,7 @@ mode "menu" {
bindsym $mod+e layout toggle split
# Make the current focus fullscreen
bindsym $mod+f fullscreen
# bindsym $mod+f fullscreen
# Toggle the current focus between tiling and floating mode
bindsym $mod+Shift+space floating toggle
@@ -162,13 +143,6 @@ mode "menu" {
# Move focus to the parent container
bindsym $mod+a focus parent
# Manual locker
bindsym $mod+g exec sxmo_state.sh set locker
# Shutdown
bindsym $mod+t exec sxmo_appmenu.sh power
#
# Scratchpad:
#
@@ -189,16 +163,16 @@ mode "resize" {
# right will grow the containers width
# up will shrink the containers height
# down will grow the containers height
bindsym $left resize shrink width 30px
bindsym $down resize grow height 30px
bindsym $up resize shrink height 30px
bindsym $right resize grow width 30px
bindsym $left resize shrink width 10px
bindsym $down resize grow height 10px
bindsym $up resize shrink height 10px
bindsym $right resize grow width 10px
# Ditto, with arrow keys
bindsym Left resize shrink width 30px
bindsym Down resize grow height 30px
bindsym Up resize shrink height 30px
bindsym Right resize grow width 30px
bindsym Left resize shrink width 10px
bindsym Down resize grow height 10px
bindsym Up resize shrink height 10px
bindsym Right resize grow width 10px
# Return to default mode
bindsym Return mode "default"
@@ -222,36 +196,18 @@ bar {
colors {
statusline #ffffff
background #323232
inactive_workspace #323232 #323232 #ffffff
font "Sxmo 11"
inactive_workspace #32323200 #32323200 #5c5c5c
font "Sxmo"
}
}
for_window [app_id="pinentry-.*"] floating true
for_window [app_id="foot" title=".*sxmo/modem/.*/draft.txt.*"] resize set height 25
for_window [title="megapixels"] inhibit_idle open
for_window [title="ep[yr].*"] inhibit_idle visible
default_border pixel 3
titlebar_border_thickness 3
hide_edge_borders smart
# Need playerctl installed and running
bindsym XF86AudioPlay exec playerctl play-pause
bindsym XF86AudioStop exec playerctl stop
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous
bindsym XF86MonBrightnessUp exec sxmo_brightness.sh up
bindsym XF86MonBrightnessDown exec sxmo_brightness.sh down
bindsym Print exec sxmo_screenshot.sh
bindsym button2 kill
bindswitch lid:on exec sxmo_wm.sh dpms on
bindswitch lid:off exec sxmo_wm.sh dpms off
include /etc/sway/config.d/*
exec 'printf %s "$SWAYSOCK" > "$XDG_RUNTIME_DIR"/sxmo.swaysock'

View File

@@ -1,10 +0,0 @@
# Space to setup configversion
single_click=true
dynamic_lines=true
line_wrap=word
width=80%
height=60%
allow_images=true
allow_markup=true
show=dmenu
no_actions=true

View File

@@ -1,46 +0,0 @@
/* Space to setup configversion */
window {
margin: 5px;
border: 3px solid #005577;
background-color: #222222;
font-family: Sxmo;
font-size: 14pt;
}
#input {
margin: 5px;
border: 2px solid #005577;
background-color: #444444;
color: white;
}
#inner-box {
margin: 5px;
}
#outer-box {
margin: 5px;
}
#scroll {
color: yellow;
}
#text {
margin: 5px;
color: white;
}
#img {
padding-right: 25px;
}
#entry {
padding-top: 8px;
}
#entry:selected {
background-color: #005577;
}
#entry #entry {
background-color: #444444;
}

3
configs/appcfg/xob_styles.cfg Executable file → Normal file
View File

@@ -1,8 +1,7 @@
# Space to setup configversion
default = {
x = {relative = 0.5; offset = 0;};
y = {relative = 0.05; offset = 0;};
y = {relative = 0.15; offset = 0;};
length = {relative = 0.75; offset = 0;};
thickness = 50;
outline = 3;

View File

@@ -1,6 +1,6 @@
[Desktop Entry]
Name=nsxiv Image Viewer
Exec=nsxiv
Name=sxiv Image Viewer
Exec=sxiv
Terminal=false
Type=Application
MimeType=image/jpeg;image/png;image/gif

View File

@@ -2,7 +2,7 @@
# SPDX-License-Identifier: AGPL-3.0-only
# Copyright 2022 Sxmo Contributors
sxmo_jobs.sh start idle_locker sxmo_idle.sh -w \
sxmo_daemons.sh start idle_locker sxmo_idle.sh -w \
timeout 10 'sxmo_wm.sh dpms on' \
resume 'sxmo_wm.sh dpms off'
@@ -15,5 +15,4 @@ case "$SXMO_WM" in
;;
esac
# need & cause we are still holding flock
sxmo_state.sh set unlock &
sxmo_hook_unlock.sh

View File

@@ -0,0 +1,13 @@
#!/bin/sh
# SPDX-License-Identifier: AGPL-3.0-only
# Copyright 2022 Sxmo Contributors
sxmo_wakelock.sh lock not_screenoff infinite
# Go to locker after 5 minutes of inactivity
if [ -e "$XDG_CACHE_HOME/sxmo/sxmo.noidle" ]; then
sxmo_daemons.sh stop idle_locker
else
sxmo_daemons.sh start idle_locker sxmo_idle.sh -w \
timeout 300 'sxmo_hook_locker.sh'
fi

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -0,0 +1,299 @@
#!/bin/sh
# SPDX-License-Identifier: AGPL-3.0-only
# Copyright 2022 Sxmo Contributors
# This script handles input actions, it is called by lisgd for gestures
# and by dwm for button presses
ACTION="$1"
# include common definitions
# shellcheck source=scripts/core/sxmo_common.sh
. sxmo_common.sh
XPROPOUT="$(sxmo_wm.sh focusedwindow)"
WMCLASS="$(printf %s "$XPROPOUT" | grep app: | cut -d" " -f2- | tr '[:upper:]' '[:lower:]')"
WMNAME="$(printf %s "$XPROPOUT" | grep title: | cut -d" " -f2- | tr '[:upper:]' '[:lower:]')"
sxmo_debug "ACTION: $ACTION WMNAME: $WMNAME WMCLASS: $WMCLASS XPROPOUT: $XPROPOUT"
#special context-sensitive handling
case "$WMCLASS" in
*"mpv"*)
case "$ACTION" in
"oneright")
sxmo_type.sh -k Left
exit 0
;;
"oneleft")
sxmo_type.sh -k Right
exit 0
;;
"oneup")
sxmo_type.sh m
exit 0
;;
"onedown")
sxmo_type.sh p
exit 0
;;
esac
;;
*"foot"*|*"st"*)
# First we try to handle the app running inside st:
case "$WMNAME" in
*"weechat"*)
case "$ACTION" in
*"oneleft")
sxmo_type.sh -M Alt -k a
exit 0
;;
*"oneright")
sxmo_type.sh -M Alt -k less
exit 0
;;
*"oneup")
sxmo_type.sh -k Page_Down
exit 0
;;
*"onedown")
sxmo_type.sh -k Page_Up
exit 0
;;
esac
;;
*" sms")
case "$ACTION" in
*"upbottomedge")
number="$(printf %s "$WMNAME" | sed -e 's|^\"||' -e 's|\"$||' | cut -f1 -d' ')"
sxmo_terminal.sh sxmo_modemtext.sh conversationloop "$number" &
exit 0
;;
esac
;;
*"tuir"*)
if [ "$ACTION" = "rightbottomedge" ]; then
sxmo_type.sh o
exit 0
elif [ "$ACTION" = "leftbottomedge" ]; then
sxmo_type.sh s
exit 0
fi
;;
*"less"*)
case "$ACTION" in
"leftbottomedge")
sxmo_type.sh q
exit 0
;;
"leftrightedge_short")
sxmo_type.sh q
exit 0
;;
*"onedown")
sxmo_type.sh u
exit 0
;;
*"oneup")
sxmo_type.sh d
exit 0
;;
*"oneleft")
sxmo_type.sh ":n" -k Return
exit 0
;;
*"oneright")
sxmo_type.sh ":p" -k Return
exit 0
;;
esac
;;
*"amfora"*)
case "$ACTION" in
"downright")
sxmo_type.sh -k Tab
exit 0
;;
"upleft")
sxmo_type.sh -M Shift -k Tab
exit 0
;;
*"onedown")
sxmo_type.sh u
exit 0
;;
*"oneup")
sxmo_type.sh d
exit 0
;;
*"oneright")
sxmo_type.sh -k Return
exit 0
;;
"upright")
sxmo_type.sh -M Ctrl t
exit 0
;;
*"oneleft")
sxmo_type.sh b
exit 0
;;
"downleft")
sxmo_type.sh -M Ctrl w
exit 0
;;
esac
;;
esac
# Now we try generic actions for terminal
case "$ACTION" in
*"onedown")
case "$WMCLASS" in
*"foot"*)
sxmo_type.sh -M Shift -k Page_Up
exit 0
;;
*"st"*)
sxmo_type.sh -M Ctrl -M Shift -k b
exit 0
;;
esac
;;
*"oneup")
case "$WMCLASS" in
*"foot"*)
sxmo_type.sh -M Shift -k Page_Down
exit 0
;;
*"st"*)
sxmo_type.sh -M Ctrl -M Shift -k f
exit 0
;;
esac
;;
esac
esac
#standard handling
case "$ACTION" in
"powerbutton_one")
if echo "$WMCLASS" | grep -i "megapixels"; then
sxmo_type.sh -k space
fi
# swallow: postwake calls sxmo_hook_unlock.sh
exit 0
;;
"powerbutton_two")
sxmo_keyboard.sh toggle
exit 0
;;
"powerbutton_three")
sxmo_killwindow.sh
exit 0
;;
"rightleftedge")
sxmo_wm.sh previousworkspace
exit 0
;;
"leftrightedge")
sxmo_wm.sh nextworkspace
exit 0
;;
"twoleft")
sxmo_wm.sh movepreviousworkspace
exit 0
;;
"tworight")
sxmo_wm.sh movenextworkspace
exit 0
;;
"righttopedge")
sxmo_brightness.sh up
exit 0
;;
"lefttopedge")
sxmo_brightness.sh down
exit 0
;;
"upleftedge")
sxmo_audio.sh vol up
exit 0
;;
"downleftedge")
sxmo_audio.sh vol down
exit 0
;;
"upbottomedge")
sxmo_keyboard.sh open
exit 0
;;
"downbottomedge")
sxmo_keyboard.sh close
exit 0
;;
"downtopedge")
sxmo_dmenu.sh isopen || sxmo_appmenu.sh &
exit 0
;;
"twodowntopedge")
sxmo_dmenu.sh isopen || sxmo_appmenu.sh sys &
exit 0
;;
"uptopedge")
sxmo_dmenu.sh close
if pgrep mako >/dev/null; then
makoctl dismiss --all
elif pgrep dunst >/dev/null; then
dunstctl close-all
fi
exit 0
;;
"twodownbottomedge")
sxmo_killwindow.sh
exit 0
;;
"uprightedge")
sxmo_type.sh -k Up
exit 0
;;
"downrightedge")
sxmo_type.sh -k Down
exit 0
;;
"leftrightedge_short")
sxmo_type.sh -k Left
exit 0
;;
"rightrightedge_short")
sxmo_type.sh -k Right
exit 0
;;
"rightbottomedge")
sxmo_type.sh -k Return
exit 0
;;
"leftbottomedge")
sxmo_type.sh -k BackSpace
exit 0
;;
"topleftcorner")
sxmo_appmenu.sh sys &
exit 0
;;
"toprightcorner")
sxmo_appmenu.sh scripts &
exit 0
;;
"bottomleftcorner")
# could go into suspend? leaving blank for now.
exit 0
;;
"bottomrightcorner")
if [ "$(sxmo_rotate.sh isrotated)" = "right" ]; then
sxmo_rotate.sh rotinvert
else
sxmo_rotate.sh rotright
fi
exit 0
;;
esac

View File

@@ -6,12 +6,6 @@
# shellcheck source=scripts/core/sxmo_common.sh
. sxmo_common.sh
if [ -z "$SXMO_NO_MODEM" ]; then
MMCLI="$(mmcli -m any -J 2>/dev/null)"
if [ -z "$MMCLI" ]; then
sxmo_notify_user.sh "Modem crashed! 30s recovery."
sxmo_wakelock.sh lock sxmo_modem_crashed 30s
fi
fi
sxmo_wakelock.sh lock stay_awake "${SXMO_UNLOCK_IDLE_TIME:-120}s"
# Add here whatever you want to do

View File

@@ -0,0 +1,28 @@
#!/bin/sh
# SPDX-License-Identifier: AGPL-3.0-only
# Copyright 2022 Sxmo Contributors
# This hook is called when the system becomes unlocked again
# include common definitions
# shellcheck source=scripts/core/sxmo_common.sh
. sxmo_common.sh
sxmo_log "transitioning to stage unlock"
printf unlock > "$SXMO_STATE"
sxmo_wakelock.sh lock stay_awake "${SXMO_UNLOCK_IDLE_TIME:-120}s"
sxmo_hook_statusbar.sh state_change &
sxmo_wm.sh dpms off
sxmo_wm.sh inputevent touchscreen on
sxmo_wm.sh inputevent stylus on
superctl start sxmo_hook_lisgd
# suspend after if no activity after 120s
sxmo_daemons.sh start idle_locker sxmo_idle.sh -w \
timeout "1" '' \
resume "sxmo_wakelock.sh lock stay_awake \"${SXMO_UNLOCK_IDLE_TIME:-120}s\""
wait

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -0,0 +1 @@
three_button_touchscreen/

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -0,0 +1 @@
one_button_e_reader

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -0,0 +1 @@
three_button_touchscreen/

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -0,0 +1 @@
three_button_touchscreen

View File

@@ -1,5 +0,0 @@
#!/bin/sh
# This script is executed after the last call finished
sxmo_playerctl.sh resume_all

View File

@@ -21,159 +21,105 @@ write_line_app() {
}
write_line_app jami-qt "$icon_msg Jami" "jami-qt"
[ -n "$PLAN9" ] && write_line_app acme "$icon_edt Acme" "acme -c 1 -f $PLAN9/font/pelm/ascii.16.font"
write_line_app adventure "$icon_trm Adventure" "sxmo_terminal.sh adventure"
write_line_app aerc "$icon_eml Aerc" "sxmo_terminal.sh aerc"
write_line_app alacritty "$icon_trm Alacritty" "alacritty"
write_line_app amberol "$icon_mus Amberol" "amberol $XDG_MUSIC_DIR"
write_line_app harbour-amazfish-ui "$icon_wat Amazfish" "harbour-amazfish-ui"
write_line_app geary "$icon_eml Geary" "geary"
write_line_app amfora "$icon_glb Amfora" "sxmo_terminal.sh amfora"
write_line_app angelfish "$icon_glb Angelfish" "angelfish"
write_line_app animatch "$icon_gam Animatch" "animatch"
write_line_app alpine "$icon_eml Alpine" "sxmo_terminal.sh alpine"
write_line_app anbox-launch "$icon_and Anbox" "anbox"
write_line_app anki "$icon_str Anki" "anki"
write_line_app audacity "$icon_mic Audacity" "audacity"
write_line_app badwolf "$icon_glb Badwolf" "badwolf"
write_line_app gnome-calculator "$icon_clc Calculator" "gnome-calculator"
write_line_app calcurse "$icon_clk Calcurse" "sxmo_terminal.sh calcurse"
write_line_app chatty "$icon_msg Chatty" "chatty"
([ "$SXMO_WM" = dwm ] && command -v clipmenu >/dev/null) && \
write_line_app clipmenu "$icon_bok Clipmenu" "clipmenu"
write_line_app cmus "$icon_mus Cmus" "sxmo_terminal.sh cmus"
write_line_app com.github.geigi.cozy "$icon_mus Cozy" "com.github.geigi.cozy"
write_line_app cpupower-gui "$icon_cfg Cpupower-gui" "cpupower-gui"
write_line_app cozy "$icon_mus Cozy" "com.github.geigi.cozy"
write_line_app dino "$icon_msg Dino" "GDK_SCALE=1 dino"
write_line_app dolphin "$icon_dir Dolphin" "dolphin"
write_line_app eartag "$icon_mus Eartag" "eartag"
write_line_app elinks "$icon_glb ELinks" "sxmo_terminal.sh elinks"
write_line_app emacs "$icon_edt Emacs (Terminal)" "sxmo_terminal.sh emacs -nw"
write_line_app emacs "$icon_edt Emacs (X)" "emacs"
write_line_app eog "$icon_img Eye of Gnome" "eog"
write_line_app epiphany "$icon_glb Epiphany" "epiphany"
write_line_app epy "$icon_bok Epy" "sxmo_terminal.sh epy"
write_line_app epr "$icon_bok Epr" "sxmo_terminal.sh epr"
write_line_app evince "$icon_bok Evince" "evince"
write_line_app falkon "$icon_flk Falkon" "falkon"
write_line_app firefox "$icon_ffx Firefox" "firefox"
write_line_app firefox-esr "$icon_ffx Firefox ESR" "firefox-esr"
write_line_app flare "$icon_msg Flare" "flare"
write_line_app foliate "$icon_bok Foliate" "foliate"
( [ "$SXMO_WM" = sway ] && command -v foot >/dev/null) && \
write_line "$icon_trm Foot" "foot $SHELL"
write_line_app foxtrotgps "$icon_gps Foxtrotgps" "foxtrotgps"
write_line_app fractal "$icon_msg Fractal" "fractal"
write_line_app g4music "$icon_mus G4Music" "g4music"
write_line_app geany "$icon_eml Geany" "geany"
write_line_app geary "$icon_eml Geary" "geary"
write_line_app gedit "$icon_edt Gedit" "gedit"
write_line_app geeqie "$icon_img Geeqie" "geeqie"
write_line_app geopard "$icon_glb Geopard" "geopard"
write_line_app gerbil "$icon_glb Gerbil" "gerbil"
write_line_app giara "$icon_red Giara" "giara"
write_line_app gnome-2048 "$icon_mvi Gnome-2048" "gnome-2048"
write_line_app gnome-chess "$icon_chs Gnome Chess" "gnome-chess"
write_line_app gnome-firmware "$icon_cfg Gnome Firmware" "gnome-firmware"
write_line_app gnome-weather "$icon_wtr Gnome Weather" "gnome-weather"
write_line_app gnome-disks "$icon_cfg Gnome Disks" "gnome-disks"
write_line_app gomuks "$icon_msg Gomuks" "sxmo_terminal.sh gomuks"
write_line_app gpodder "$icon_rss gPodder" "gpodder"
write_line_app gthumb "$icon_img gThumb" "gthumb"
write_line_app gucharmap "$icon_inf Gucharmap" "gucharmap"
write_line_app hexchat "$icon_msg Hexchat" "hexchat"
write_line_app htop "$icon_cfg Htop" "sxmo_terminal.sh htop"
write_line_app iamb "$icon_msg Iamb" "sxmo_terminal.sh iamb"
write_line_app irssi "$icon_msg Irssi" "sxmo_terminal.sh irssi"
write_line_app ii "$icon_msg Ii" "sxmo_terminal.sh ii"
write_line_app ipython "$icon_trm IPython" "sxmo_terminal.sh ipython"
write_line_app index "$icon_dir Index" "index"
write_line_app itinerary "$icon_map Itinerary" "itinerary"
write_line_app jellyfinmediaplayer "$icon_mvi Jellyfin" "jellyfinmediaplayer"
write_line_app kasts "$icon_rss Kasts" "kasts"
write_line_app kcalc "$icon_clc KCalc" "kcalc"
write_line_app kmail "$icon_eml KMail" "kmail"
write_line_app komikku "$icon_bok Komikku" "komikku"
write_line_app kontact "$icon_msg Kontact" "kontact"
write_line_app konversation "$icon_msg Konversation" "konversation"
write_line_app koreader "$icon_bok KOReader" "koreader"
write_line_app krita "$icon_img Krita" "krita --nosplash"
write_line_app kwrite "$icon_edt Kwrite" "kwrite"
write_line_app lagrange "$icon_glb Lagrange" "lagrange"
write_line_app lemoa "$icon_grp Lemoa" "lemoa"
write_line_app lf "$icon_dir Lf" "sxmo_terminal.sh lf"
write_line_app librewolf "$icon_glb Librewolf" "librewolf"
write_line_app links "$icon_glb Links" "sxmo_terminal.sh links"
write_line_app links "$icon_glb Links (GUI)" "links -g"
write_line_app lollypop "$icon_mus Lollypop" "lollypop"
write_line_app lpa-gtk "$icon_sim Lpa Gtk" "lpa-gtk"
write_line_app luakit "$icon_glb Luakit" "luakit"
write_line_app marble "$icon_map Marble" "marble"
write_line_app gnome-maps "$icon_map Maps" "gnome-maps"
write_line_app megapixels "$icon_cam Megapixels" "megapixels"
write_line_app mepo "$icon_map Mepo" "mepo"
write_line_app metronome "$icon_mtr Metronome" "metronome"
write_line_app micro "$icon_edt Micro" "sxmo_terminal.sh micro"
write_line_app midori "$icon_glb Midori" "midori"
write_line_app moment "$icon_msg Moment" "moment"
write_line_app mupdf "$icon_bok Mupdf" "mupdf"
write_line_app mupdf-gl "$icon_bok Mupdf-gl" "mupdf-gl"
write_line_app mutt "$icon_eml Mutt" "sxmo_terminal.sh mutt"
write_line_app mumble "$icon_grp Mumble" mumble
write_line_app nano "$icon_edt Nano" "sxmo_terminal.sh nano"
write_line_app nautilus "$icon_dir Nautilus" "nautilus"
write_line_app navit "$icon_gps Navit" "navit"
write_line_app ncmpcpp "$icon_mus Ncmpcpp" "sxmo_terminal.sh ncmpcpp"
write_line_app neomutt "$icon_eml Neomutt" "sxmo_terminal.sh neomutt"
write_line_app nethack "$icon_trm Nethack" "sxmo_terminal.sh nethack"
write_line_app nheko "$icon_msg Nheko" "nheko"
write_line_app nvim "$icon_nvi Neovim" "sxmo_terminal.sh nvim"
write_line_app nvim "$icon_vim Neovim" "sxmo_terminal.sh nvim"
write_line_app netsurf "$icon_glb Netsurf" "netsurf"
write_line_app newsboat "$icon_rss Newsboat" "sxmo_terminal.sh newsboat"
write_line_app com.gitlab.newsflash "$icon_rss Newsflash" com.gitlab.newsflash
write_line_app newsraft "$icon_rss Newsraft" "sxmo_terminal.sh newsraft"
write_line_app nnn "$icon_dir Nnn" "sxmo_terminal.sh nnn"
write_line_app numberstation "$icon_clc Numberstation" "numberstation"
write_line_app nyxt "$icon_glb Nyxt" "nyxt"
write_line_app offpunk "$icon_glb Offpunk" "sxmo_terminal.sh offpunk"
write_line_app osmin "$icon_map Osmin" "osmin"
write_line_app papers "$icon_bok Papers" "papers"
write_line_app pavucontrol "$icon_mus Pavucontrol" "pavucontrol"
write_line_app pidgin "$icon_msg Pidgin" "pidgin"
write_line_app podboat "$icon_rss Podboat" "sxmo_terminal.sh podboat"
write_line_app dev.tchx84.Portfolio "$icon_dir Portfolio" "dev.tchx84.Portfolio"
write_line_app profanity "$icon_msg Profanity" "sxmo_terminal.sh profanity"
write_line_app pulsemixer "$icon_mus Pulsemixer" "sxmo_terminal.sh pulsemixer"
write_line_app pure-maps "$icon_map Pure Maps" "pure-maps"
write_line_app qalc "$icon_clc Qalc" "sxmo_terminal.sh qalc"
write_line_app pure-maps "$icon_map Pure-Maps" "pure-maps"
write_line_app mepo "$icon_map mepo" "mepo"
write_line_app podboat "$icon_rss Podboat" "sxmo_terminal.sh podboat"
write_line_app profanity "$icon_msg Profanity" "sxmo_terminal.sh profanity"
write_line_app qutebrowser "$icon_glb Qutebrowser" "qutebrowser"
write_line_app ranger "$icon_dir Ranger" "sxmo_terminal.sh ranger"
write_line_app sacc "$icon_glb Sacc" "sxmo_terminal.sh sacc i-logout.cz/1/bongusta"
write_line_app secrets "$icon_lck Secrets" "secrets"
write_line_app screen "$icon_msg Screen" "sxmo_terminal.sh screen"
write_line_app seahorse "$icon_key Seahorse" "seahorse"
write_line_app senpai "$icon_msg Senpai" "sxmo_terminal.sh senpai"
write_line_app sic "$icon_msg Sic" "sxmo_terminal.sh sic"
write_line_app siglo "$icon_clk Siglo" "siglo"
write_line_app simple-scan "$icon_scn Simple Scan" "simple-scan"
write_line_app snapshot "$icon_cam Snapshot" "snapshot"
([ "$SXMO_WM" = dwm ] && command -v st >/dev/null) && \
write_line "$icon_trm St" "st -e $SHELL"
write_line_app sublime-music "$icon_mus Sublime Music" "sublime-music"
write_line_app surf "$icon_glb Surf" "surf"
write_line_app syncthing "$icon_rld Syncthing" "syncthing"
write_line_app syncthing-gtk "$icon_rld Syncthing GTK" "syncthing-gtk"
([ "$SXMO_WM" = dwm ] && command -v tabbed >/dev/null) && \
write_line_app tabbed "$icon_grd Tabbed" "sxmo_tabbed.sh"
write_line_app telegram-desktop "$icon_tgm Telegram" "telegram-desktop"
write_line_app termite "$icon_trm Termite" "termite -e $SHELL"
write_line_app thunar "$icon_dir Thunar" "sxmo_terminal.sh thunar"
write_line_app thunderbird "$icon_eml Thunderbird" "thunderbird"
write_line_app tilix "$icon_trm Tilix" "tilix"
write_line_app com.github.bleakgrey.tootle "$icon_msg Tootle" "com.github.bleakgrey.tootle"
write_line_app re.sonny.Tangram "$icon_glb Tangram" "re.sonny.Tangram"
write_line_app totem "$icon_mvi Totem" "totem"
write_line_app dev.geopjr.Tuba "$icon_msg Tuba" "dev.geopjr.Tuba"
write_line_app dev.geopjr.Tuba "$icon_grp Tuba" "dev.geopjr.Tuba"
write_line_app tuir "$icon_red Tuir" "sxmo_terminal.sh tuir"
write_line_app tut "$icon_msg Tut" "sxmo_terminal.sh tut"
write_line_app waydroid "$icon_and Waydroid" "waydroid show-full-ui"
write_line_app weechat "$icon_msg Weechat" "sxmo_terminal.sh weechat"
write_line_app wike "$icon_bok Wike" "wike"
write_line_app pavucontrol "$icon_mus Pavucontrol" "pavucontrol"
write_line_app w3m "$icon_glb W3m" "sxmo_terminal.sh w3m duck.com"
write_line_app vim "$icon_vim Vim" "sxmo_terminal.sh vim"
write_line_app vimb "$icon_glb Vimb" "vimb"
@@ -183,7 +129,7 @@ write_line_app vte-2.91 "$icon_trm VTE 3" "vte-2.91"
write_line_app vte-2.91-gtk4 "$icon_trm VTE 3 (GTK-4)" "vte-2.91-gtk4"
([ "$SXMO_WM" = dwm ] && command -v xcalc >/dev/null) && \
write_line "$icon_clc Xcalc" "xcalc"
write_line_app xfce4-terminal "$icon_trm XFCE4 Terminal" "xfce4-terminal"
write_line_app xournal "$icon_bok Xournal" "xournal"
write_line_app xournalpp "$icon_bok Xournalpp" "xournalpp"
write_line_app zathura "$icon_bok Zathura" "zathura"
write_line_app j4-dmenu-desktop "$icon_grd All apps" "j4-dmenu-desktop --dmenu=sxmo_dmenu.sh --term=sxmo_terminal.sh"

View File

@@ -1,51 +0,0 @@
#!/bin/sh
load_data() {
data="$(upower -i "$1" | grep . | sed -e 's|^ \+||' -e 's|: \+|:|')"
type="$(printf "%b" "$data" | grep -m1 -v : | sed -e 's|^ \+||')"
}
data_get() {
printf "%b" "$data" | grep "^$1:" | cut -d: -f2
}
SET_LED_PATH="$XDG_RUNTIME_DIR/sxmo_hook_battery_set_led"
device_changed() {
name="$(data_get "native-path")"
state="$(data_get "state")"
percentage="$(data_get "percentage" | cut -d% -f1)"
if [ -z "$name" ] || [ -z "$state" ]; then
return
fi
if [ "$state" = unknown ]; then
return
fi
if [ "$percentage" -lt 25 ] && [ ! -f "$SET_LED_PATH" ]; then
touch "$SET_LED_PATH"
sxmo_led.sh set red 100
elif [ -f "$SET_LED_PATH" ]; then
rm "$SET_LED_PATH"
sxmo_led.sh set red 0
fi
sxmo_hook_statusbar.sh battery "$name" "$state" "$percentage"
}
object="$1"
event="$2"
load_data "$object"
if [ "$type" != "battery" ]; then
exit
fi
case "$event" in
"device changed")
device_changed "$object"
;;
esac

View File

@@ -1,8 +0,0 @@
#!/bin/sh
# This hook is executed to check if a call should be blocked
# If the hook return 0 the call will be blocked
INCOMINGNUMBER="$1"
cut -f1 "$SXMO_BLOCKFILE" 2>/dev/null | grep -q "^$INCOMINGNUMBER$"

View File

@@ -30,7 +30,6 @@ delay() {
wait_item() {
delay_time=1
while $1 > /dev/null 2>&1; do
sxmo_log "Blocking suspend for $1"
waited=1
${2:-delay}
done
@@ -48,10 +47,6 @@ in_call() {
pgrep -f sxmo_modemcall.sh
}
in_call_dino() {
command -v pw-link && [ -n "$(pw-link -o Dino)" ]
}
hotspot_active() {
nmcli -t c show --active | grep -q ^Hotspot
}
@@ -68,12 +63,8 @@ active_mosh() {
command -v mosh-server && pgrep -f mosh-server
}
active_mpc() {
if ! command -v mpc; then
return 1
fi
mpc status | grep -q '\[playing\]\|Updating'
playing_mpc() {
command -v mpc && mpc status | grep -q '\[playing\]'
}
playing_mpris() {
@@ -91,11 +82,10 @@ while [ "$waited" != "0" ]; do
waited=0
wait_item suspend_disabled
wait_item in_call
wait_item in_call_dino
wait_item hotspot_active
wait_item ssh_connected
wait_item active_mosh
wait_item active_mpc
wait_item playing_mpc
wait_item playing_mpris
wait_item photos_processing
done

View File

@@ -9,3 +9,25 @@
# shellcheck source=scripts/core/sxmo_common.sh
. sxmo_common.sh
# Phonecall started
if [ "$1" = "enable" ]; then
sxmo_log "Attempting hack to get things just right."
# fixes bug where sometimes we start with speaker on and mic off
sxmo_modemaudio.sh enable_speaker
sxmo_modemaudio.sh disable_speaker
sxmo_modemaudio.sh mute_mic
sxmo_modemaudio.sh unmute_mic
# Add other things here, e.g., volume boosters
# Phonecall ended
elif [ "$1" = "disable" ]; then
sxmo_log "Attempting hack to get things just right."
# fixes bug where sometimes we leave call with speaker off
sxmo_modemaudio.sh disable_speaker
sxmo_modemaudio.sh enable_speaker
# Add other things here, e.g., volume boosters
fi

View File

@@ -19,7 +19,7 @@ superd_service_isrunning() {
}
sxmo_service_isrunning() {
sxmo_jobs.sh running "$1" > /dev/null
sxmo_daemons.sh running "$1" > /dev/null
}
if [ -z "$XPROPOUT" ]; then
@@ -74,37 +74,32 @@ case "$WMCLASS" in
$icon_cfg Gestures $(
superd_service_isrunning "sxmo_hook_lisgd" &&
printf "%s" "$icon_ton" || printf "%s" "$icon_tof"
) ^ 1 ^ supertoggle_daemon 'sxmo_hook_lisgd' && (rm $XDG_CACHE_HOME/sxmo/sxmo.nogesture 2>/dev/null || touch $XDG_CACHE_HOME/sxmo/sxmo.nogesture)
) ^ 1 ^ supertoggle_daemon 'sxmo_hook_lisgd'
$icon_cfg Toggle Bar ^ 0 ^ sxmo_wm.sh togglebar
$icon_bth Bluetooth $(
rfkill list bluetooth -no ID,SOFT,HARD | grep -vq " blocked" &&
printf %b "$icon_ton" || printf %b "$icon_tof";
rfkill list bluetooth | grep -q "yes" &&
printf %b "$icon_tof" || printf %b "$icon_ton";
printf %b "^ 1 ^ doas sxmo_bluetoothtoggle.sh && sxmo_hook_statusbar.sh bluetooth"
)
$(test "$SXMO_WM" = dwm && printf %b "$icon_cfg Invert Colors ^ 1 ^ xcalib -a -invert")
$icon_clk Change Timezone ^ 1 ^ sxmo_timezonechange.sh
$icon_zzz Auto-suspend $(
[ -e "$XDG_CACHE_HOME"/sxmo/sxmo.nosuspend ] && printf "%s" "$icon_tof" || printf "%s" "$icon_ton"
) ^ 1 ^ (rm $XDG_CACHE_HOME/sxmo/sxmo.nosuspend 2>/dev/null || touch $XDG_CACHE_HOME/sxmo/sxmo.nosuspend)
) ^ 1 ^ (rm $XDG_CACHE_HOME/sxmo/sxmo.nosuspend || touch $XDG_CACHE_HOME/sxmo/sxmo.nosuspend)
$icon_zzz Auto-screen-off $(
[ -e "$XDG_CACHE_HOME/sxmo/sxmo.noidle" ] && printf "%s" "$icon_tof" || printf "%s" "$icon_ton"
) ^ 1 ^ (rm $XDG_CACHE_HOME/sxmo/sxmo.noidle 2>/dev/null || touch $XDG_CACHE_HOME/sxmo/sxmo.noidle) && sxmo_state.sh set unlock
) ^ 1 ^ (rm $XDG_CACHE_HOME/sxmo/sxmo.noidle || touch $XDG_CACHE_HOME/sxmo/sxmo.noidle) && sxmo_hook_unlock.sh
$icon_ror Autorotate $(
sxmo_jobs.sh running autorotate -q &&
sxmo_daemons.sh running autorotate -q &&
printf "%s" "$icon_ton" || printf "%s" "$icon_tof"
) ^ 1 ^ toggle_daemon 'Autorotate' autorotate sxmo_autorotate.sh
$([ -n "$SXMO_KEYBOARD_SLIDER_EVENT_DEVICE" ] && echo "$icon_ror Autorotate on Keyboard Open/Close $(
sxmo_jobs.sh running kb_autorotate -q &&
printf "%s" "$icon_ton" || printf "%s" "$icon_tof"
) ^ 1 ^ toggle_daemon 'Keyboard Autorotate' kb_autorotate sxmo_keyboard_autorotate.sh")
$icon_ror Rotate ^ 1 ^ sxmo_rotate.sh rotate
$icon_trm Hooks ^ 0 ^ sxmo_hookmenu.sh
$icon_upc Upgrade Pkgs ^ 0 ^ sxmo_terminal.sh sxmo_upgrade.sh
$icon_sfl Migrate configuration ^ 0 ^ sxmo_terminal.sh sxmo_migrate.sh
$icon_cfg Edit configuration ^ 0 ^ sxmo_terminal.sh $EDITOR $XDG_CONFIG_HOME/sxmo/$(test "$SXMO_WM" = sway && printf sway || printf xinit)
$(command -v pmos-tweaks >/dev/null && echo "$icon_cfg PostmarketOS Tweaks ^ 0 ^ GDK_SCALE=1 pmos-tweaks")
$icon_cfg Suspend Blockers ^ 0 ^ sxmo_terminal.sh sxmo_debug_suspend.sh
$icon_inf Log ^ 0 ^ sxmo_terminal.sh tail -n 100 -f ${XDG_STATE_HOME:-$HOME}/sxmo.log
$icon_cfg Suspend Blockers ^ 0 ^ sxmo_terminal.sh sxmo_wakelock.sh debug watch
$icon_inf Version ^ 0 ^ sxmo_terminal.sh sxmo_version.sh --block
"
WINNAME=Config
@@ -112,8 +107,8 @@ case "$WMCLASS" in
power)
# Power menu
CHOICES="
$icon_lck Lock ^ 0 ^ sxmo_state.sh set lock
$icon_lck Lock (Screen off) ^ 0 ^ sxmo_state.sh set screenoff
$icon_lck Lock ^ 0 ^ sxmo_hook_lock.sh
$icon_lck Lock (Screen off) ^ 0 ^ sxmo_hook_screenoff.sh
$icon_out Logout ^ 0 ^ confirm Logout && sxmo_power.sh logout
$([ -f "$(xdg_data_path xsessions/sxmo.desktop)" ] &&
[ -f "$(xdg_data_path wayland-sessions/swmo.desktop)" ] &&
@@ -141,14 +136,6 @@ case "$WMCLASS" in
"
WINNAME=Mpv
;;
io.bassi.amberol)
CHOICES="
$icon_pau Play/Pause ^ 0 ^ playerctl play-pause
$icon_prv Previous Track ^ 1 ^ playerctl previous
$icon_nxt Next Track ^ 1 ^ playerctl next
"
WINNAME=Amberol
;;
*feh*)
# Feh
CHOICES="
@@ -217,18 +204,9 @@ case "$WMCLASS" in
WINNAME=St
;;
*foot*|*st*|*terminal*|org.gnome.vte.application|*alacritty*)
WMNAME="${1:-$(printf %s "$XPROPOUT" | grep title: | cut -d" " -f2- | tr '[:upper:]' '[:lower:]')}"
# These git commands only launch the editor.
case "$WMNAME" in
*"git add"*|*"git bugreport"*|*"git commit"*|*"git merge"*|*"git notes"*|*"git rebase"*|*"git replace"*|*"git send-email"*|*"git svn"*)
WMNAME="$WMCLASS $EDITOR"
;;
esac
# First we try to handle the app running inside the terminal:
case " $WMNAME " in
*" vi "*|*" vim "*|*" vis "*|*" nvim "*|*neovim*|*kakoune*)
WMNAME="${1:-$(printf %s "$XPROPOUT" | grep title: | cut -d" " -f2- | tr '[:upper:]' '[:lower:]')}"
if printf %s "$WMNAME" | grep -qi -E -w "(vi|vim|vis|nvim|neovim|kakoune)"; then
#Vim in foot
CHOICES="
$icon_cls Save and Quit ^ 0 ^ sxmo_type -k Escape -s 300 ':wq' -k Return
@@ -247,8 +225,7 @@ case "$WMCLASS" in
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
"
WINNAME=Vim
;;
*nano*)
elif printf %s "$WMNAME" | grep -qi -w "nano"; then
#Nano in foot
CHOICES="
$icon_aru Scroll up ^ 1 ^ sxmo_type -k Prior
@@ -263,8 +240,7 @@ case "$WMCLASS" in
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
"
WINNAME=Nano
;;
*micro*)
elif printf %s "$WMNAME" | grep -qi -w "micro"; then
#Micro
CHOICES="
$icon_aru Scroll up ^ 1 ^ sxmo_type -k Prior
@@ -282,8 +258,7 @@ case "$WMCLASS" in
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
"
WINNAME=Micro
;;
*tuir*)
elif printf %s "$WMNAME" | grep -qi -w "tuir"; then
#tuir (reddit client) in foot
CHOICES="
$icon_aru Previous ^ 1 ^ sxmo_type k
@@ -301,8 +276,7 @@ case "$WMCLASS" in
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
"
WINNAME=tuir
;;
*w3m*)
elif printf %s "$WMNAME" | grep -qi -w "w3m"; then
#w3m
CHOICES="
$icon_arl Back ^ 1 ^ sxmo_type b
@@ -318,8 +292,7 @@ case "$WMCLASS" in
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
"
WINNAME=w3m
;;
*ncmpcpp*)
elif printf %s "$WMNAME" | grep -qi -w "ncmpcpp"; then
#ncmpcpp
CHOICES="
$icon_lst Playlist ^ 0 ^ sxmo_type 1
@@ -335,8 +308,7 @@ case "$WMCLASS" in
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
"
WINNAME=ncmpcpp
;;
*aerc*)
elif printf %s "$WMNAME" | grep -qi -w "aerc"; then
#aerc
CHOICES="
$icon_pau Archive ^ 1 ^ sxmo_type ':archive flat' -k Return
@@ -347,8 +319,7 @@ case "$WMCLASS" in
$icon_trm xdg-open Part ^ 0 ^ sxmo_type ':open' -k Return
"
WINNAME=aerc
;;
*less*|*"git blame"*|*"git diff"*|*"git grep"*|*"git help"*|*"git log"*|*"git stash"*|*"git tag"*|*"git var"*)
elif printf %s "$WMNAME" | grep -qi -E -w "(less|mless)"; then
#less
CHOICES="
$icon_arr Page next ^ 1 ^ sxmo_type ':n' -k Return
@@ -361,8 +332,13 @@ case "$WMCLASS" in
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
"
WINNAME=less
;;
*git*)
elif printf %s "$WMNAME" | grep -qi -w "git \(blame\|diff\|grep\|help\|log\|stash\|tag\|var\)"; then
# These git commands only launch the pager.
exec "$0" "$WMCLASS ${PAGER:-less}"
elif printf %s "$WMNAME" | grep -qi -w "git \(add\|bugreport\|commit\|merge\|notes\|rebase\|replace\|send-email\|svn\)"; then
# These git commands only launch the editor.
exec "$0" "$WMCLASS $EDITOR"
elif printf %s "$WMNAME" | grep -qi -w "git"; then
# git am, branch, config, tag (and other commands which launch both).
CHOICES="
$icon_fil ${PAGER:-less} menu ^ 0 ^ sxmo_appmenu.sh '$WMCLASS ${PAGER:-less}'
@@ -370,8 +346,7 @@ case "$WMCLASS" in
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
"
WINNAME=git
;;
*senpai*)
elif printf %s "$WMNAME" | grep -qi -w "senpai"; then
CHOICES="
$icon_aru Scroll up ^ 1 ^ sxmo_type -k Prior
$icon_ard Scroll down ^ 1 ^ sxmo_type -k Next
@@ -381,8 +356,7 @@ case "$WMCLASS" in
$icon_usr Toggle Members ^ 0 ^ sxmo_type -k F8
"
WINNAME=senpai
;;
*weechat*)
elif printf %s "$WMNAME" | grep -qi -w "weechat"; then
#weechat
CHOICES="
$icon_msg Hotlist Next ^ 1 ^ sxmo_type -M Alt a
@@ -394,8 +368,7 @@ case "$WMCLASS" in
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
"
WINNAME=weechat
;;
*" sms "*|*"missed call"*)
elif printf %s "$WMNAME" | grep -qi -w "sms\|missed call"; then
number="$(printf "%s\n" "$WMNAME" | xargs -0 pnc find | tr -d '\n')"
#sms
CHOICES="
@@ -420,8 +393,7 @@ case "$WMCLASS" in
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
"
WINNAME=phone
;;
*cmus*)
elif printf %s "$WMNAME" | grep -qi -w "cmus"; then
# cmus
# requires `:set set_term_title=false` in cmus to match the application
CHOICES="
@@ -435,29 +407,7 @@ case "$WMCLASS" in
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
"
WINNAME=cmus
;;
*iamb*)
CHOICES="
$icon_aru Page Up ^ 1 ^ sxmo_type.sh -k Escape -M Ctrl -k b
$icon_tab Toggle Selection ^ 0 ^ sxmo_type.sh -k Escape -M Ctrl -k W m
$icon_ard Page Down ^ 1 ^ sxmo_type.sh -k Escape -M Ctrl -k f
$icon_ret Reply To Message ^ 0 ^ sxmo_type.sh -k Escape :reply -k Return
$icon_tab New Tab ^ 0 ^ sxmo_type.sh -k Escape :tab rooms -k Return
$icon_arl Previous Tab ^ 0 ^ sxmo_type.sh -k Escape :tabp -k Return
$icon_arr Next Tab ^ 0 ^ sxmo_type.sh -k Escape :tabn -k Return
$icon_cls Close Tab ^ 0 ^ sxmo_type.sh -k Escape :tabclose -k Return
$icon_win Split View ^ 0 ^ sxmo_type.sh -k Escape :split -k Return
$icon_win Split View Vertical ^ 0 ^ sxmo_type.sh -k Escape :vsplit -k Return
$icon_msg All Chats ^ 0 ^ sxmo_type.sh -k Escape :chats -k Return
$icon_msg Direct Messages ^ 0 ^ sxmo_type.sh -k Escape :dms -k Return
$icon_grp Rooms ^ 0 ^ sxmo_type.sh -k Escape :rooms -k Return
$icon_glb Spaces ^ 0 ^ sxmo_type.sh -k Escape :spaces -k Return
$icon_sav Download ^ 0 ^ sxmo_type.sh -k Escape :download -k Return
$icon_cls Close View/Quit ^ 0 ^ sxmo_type.sh -k Escape :quit -k Return
"
WINNAME=iamb
;;
*)
else
# Now we fallback to the default terminal menu
case "$WMCLASS" in
*st*)
@@ -519,7 +469,7 @@ case "$WMCLASS" in
WINNAME=Alacritty
;;
esac
esac
fi
;;
*okular*)
# Okular
@@ -574,7 +524,6 @@ case "$WMCLASS" in
# Netsurf
CHOICES="
$icon_flt Pipe URL ^ 0 ^ sxmo_urlhandler.sh
$icon_lnk Enter URL ^ 0 ^ sxmo_type.sh -M Ctrl -k l
$icon_zmi Zoom ^ 1 ^ sxmo_type -M Ctrl -k plus
$icon_zmo Zoom ^ 1 ^ sxmo_type -M Ctrl -k minus
$icon_arl History ^ 1 ^ sxmo_type -M Alt -k Left
@@ -635,26 +584,9 @@ case "$WMCLASS" in
"
WINNAME=Firefox
;;
*krita*)
# Krita
CHOICES="
$icon_fnd Open ^ 0 ^ sxmo_type -M Ctrl o
$icon_sav Save ^ 0 ^ sxmo_type -M Ctrl s
$icon_pst Paste ^ 0 ^ sxmo_type -M Ctrl v
$icon_del Delete ^ 0 ^ sxmo_type -k Delete
$icon_win Select ^ 0 ^ sxmo_type -M Ctrl r
$icon_modem_disabled Deselect ^ 0 ^ sxmo_type -M Ctrl -M Shift a
$icon_wn2 Crop ^ 0 ^ sxmo_type c
$icon_flt Fill ^ 0 ^ sxmo_type f
$icon_modem_connected Gradient ^ 0 ^ sxmo_type g
$icon_dof HSV Adjust ^ 0 ^ sxmo_type -M Ctrl u
$icon_cls Close Image ^ 0 ^ sxmo_type -M Ctrl w
"
WINNAME=Krita
;;
*vimb*)
CHOICES="
$icon_glb Navigate ^ 0 ^ sxmo_type -k Escape o
$icon_glb Navigate ^ 0 ^ sxmo_type -k Escape o && sxmo_keyboard.sh open
$icon_zmi Zoom ^ 1 ^ sxmo_type -k Escape zi
$icon_zmo Zoom ^ 1 ^ sxmo_type -k Escape zo
$icon_arl History ^ 1 ^ sxmo_type -M Ctrl o
@@ -666,17 +598,16 @@ case "$WMCLASS" in
*geopard*)
# Geopard
CHOICES="
$icon_flt Pipe URL ^ 0 ^ sxmo_urlhandler.sh
$icon_pls New Tab ^ 0 ^ sxmo_type -M Ctrl t
$icon_cls Close Tab ^ 0 ^ sxmo_type -M Ctrl w
$icon_bok Open Bookmarks ^ 0 ^ sxmo_type -M Ctrl b
$icon_pls Add Bookmark ^ 0 ^ sxmo_type -M Ctrl d
$icon_edt Edit Bookmarks ^ 0 ^ sxmo_terminal.sh $EDITOR ~/.local/share/geopard/bookmarks.gemini
$icon_edt Edit Bookmarks ^ 0 ^ sxmo_keyboard.sh open && sxmo_terminal.sh $EDITOR ~/.local/share/geopard/bookmarks.gemini
$icon_zmi Increase Font Size ^ 1 ^ sxmo_type -M Ctrl -k plus
$icon_zmo Decrease Font Size ^ 1 ^ sxmo_type -M Ctrl -k minus
$icon_arl History Back ^ 1 ^ sxmo_type -M Alt -k Left
$icon_arr History Forward ^ 1 ^ sxmo_type -M Alt -k Right
$icon_fnd URL Bar ^ 0 ^ sxmo_type -k F6
$icon_fnd URL Bar ^ 0 ^ sxmo_keyboard.sh open && sxmo_type -k F6
$icon_rld Refresh ^ 0 ^ sxmo_type -k F6 -k Return
"
WINNAME=Geopard
@@ -696,19 +627,6 @@ case "$WMCLASS" in
"
WINNAME=Lagrange
;;
org.gnome.maps)
CHOICES="
$icon_gps Toggle Geoclue ^ 0 ^ superctl status geoclue-agent |grep started >/dev/null && superctl stop geoclue-agent || superctl start geoclue-agent
$icon_zmi Zoom in ^ 1 ^ sxmo_type -M ctrl =
$icon_zmo Zoom out ^ 1 ^ sxmo_type -M ctrl -k minus
$icon_fnd Explore POI ^ 0 ^ sxmo_type -M ctrl -M Shift F
$icon_fnd Search ^ 0 ^ sxmo_type -M ctrl f
$icon_lst Show last results ^ 0 ^ sxmo_type -M ctrl r
$icon_map Toggle route planner ^ 0 ^ sxmo_type -M ctrl d
$icon_gps Show current location ^ 0 ^ sxmo_type -M ctrl l
"
WINNAME=Maps
;;
*mepo*)
# Mepo
# The choices / hotkeys for the contextmenu are generated through mepo's
@@ -727,119 +645,33 @@ case "$WMCLASS" in
"
WINNAME=Maps
;;
*badwolf*)
# Badwolf Browser
CHOICES="
$icon_tab New Tab ^ 0 ^ sxmo_type -M Ctrl -k t
$icon_cls Close Tab ^ 0 ^ sxmo_type -M Alt -k d
$icon_fnd Reset Zoom ^ 0 ^ sxmo_type -M Ctrl -k 0
$icon_arr History ^ 1 ^ sxmo_type -M Ctrl ]
$icon_arl History ^ 1 ^ sxmo_type -M Ctrl [
$icon_arr Next Tab ^ 1 ^ sxmo_type -M Alt -k Right
$icon_arl Previous Tab ^ 1 ^ sxmo_type -M Alt -k Left
$icon_rld Refresh ^ 0 ^ sxmo_type -M Shift -M Ctrl -k r
$icon_fnd Search ^ 0 ^ sxmo_type -M Shift -M Ctrl -k f
$icon_arr Next (Search) ^ 0 ^ sxmo_type -M Shift -M Ctrl -k g
$icon_arl Previous (Search) ^ 0 ^ sxmo_type -M Shift -M Ctrl -M Shift -k g
$icon_flt URL Bar ^ 0 ^ sxmo_type -M Shift -M Ctrl l
$icon_fnd Open Web Inspector ^ 0 ^ sxmo_type -k F12
"
WINNAME=Badwolf
;;
*acme*)
# Acme
CHOICES="
$icon_mse 2 (Right) [2s delay] ^ 0 ^ sleep 2 && xdotool click 3
$icon_mse 3 (Middle) [2s delay] ^ 0 ^ sleep 2 && xdotool click 2
$icon_itm Autocomplete ^ 0 ^ sxmo_type.sh -M Ctrl -k f
$icon_exp Select Last Typed Text ^ 0 ^ sxmo_type.sh -M Escape
$icon_del Delete To Start Of Line ^ 0 ^ sxmo_type.sh -M Ctrl -k U
$icon_arl Move To Start Of Line ^ 0 ^ sxmo_type.sh -M Ctrl -k A
$icon_arr Move To End Of Line ^ 0 ^ sxmo_type.sh -M Ctrl -k E
"
WINNAME=Acme
;;
*mupdf*)
# Mupdf
CHOICES="
$icon_nxt Next Page ^ 0 ^ sxmo_type -k Space
$icon_prv Previous Page ^ 0 ^ sxmo_type -k b
$icon_chk Mark Page ^ 0 ^ sxmo_type -k m
$icon_ret Pop To Last Mark ^ 0 ^ sxmo_type -k t
$icon_zmi Zoom In ^ 1 ^ sxmo_type -k +
$icon_zmo Zoom Out ^ 1 ^ sxmo_type -k -
$icon_fnd Fit Width ^ 0 ^ sxmo_type -k W
$icon_fnd Fit Height ^ 0 ^ sxmo_type -k H
$icon_fnd Zoom To Fit ^ 0 ^ sxmo_type -k Z
$icon_fnd Reset Zoom ^ 0 ^ sxmo_type -k z
$icon_rol Rotate Counterclockwise ^ 0 ^ sxmo_type -k [
$icon_ror Rotate Clockwise ^ 0 ^ sxmo_type -k ]
$icon_fnd Search ^ 0 ^ sxmo_type -k /
"
WINNAME=Mupdf
;;
*tabbed*)
# Tabbed
CHOICES="
$icon_tab New Tab ^ 0 ^ sxmo_type.sh -M Ctrl -M Shift -M Enter
$icon_arl Previous Tab ^ 1 ^ sxmo_type.sh -M Ctrl -M Shift -k h
$icon_arr Next Tab ^ 1 ^ sxmo_type.sh -M Ctrl -M Shift -k l
$icon_arl Move Tab Left ^ 1 ^ sxmo_type.sh -M Ctrl -M Shift -k j
$icon_arr Move Tab Right ^ 1 ^ sxmo_type.sh -M Ctrl -M Shift -k k
$icon_mnu Menu Prompt ^ 0 ^ sxmo_type.sh -M Ctrl -k U0060
$icon_cls Close Tab ^ 0 ^ sxmo_type.sh -M Ctrl -k q
"
WINNAME=Tabbed
;;
*links*)
# Links Browser
CHOICES="
$icon_mnu Menu ^ 0 ^ sxmo_type.sh -k Escape
$icon_ret Follow Link ^ 0 ^ sxmo_type.sh -k Enter
$icon_arl History ^ 1 ^ sxmo_type.sh -k z
$icon_arr History ^ 1 ^ sxmo_type.sh -k x
$icon_glb Enter URL ^ 0 ^ sxmo_type.sh -k g
$icon_glb Edit Current URL ^ 0 ^ sxmo_type.sh -k G
$icon_glb View Highlighted URL ^ 0 ^ sxmo_type.sh -M Ctrl -k g
$icon_cam Toggle Images ^ 0 ^ sxmo_type.sh -k U002A
$icon_aru Scroll Up ^ 1 ^ sxmo_type.sh -k p
$icon_ard Scroll Down ^ 1 ^ sxmo_type.sh -k l
$icon_arl Scroll Left ^ 1 ^ sxmo_type.sh -k U005B
$icon_arr Scroll Right ^ 1 ^ sxmo_type.sh -k U005D
"
WINNAME=Links
;;
*)
# Default system menu (no matches)
CHOICES="
$icon_grd Scripts ^ 0 ^ sxmo_appmenu.sh scripts
$icon_grd Apps ^ 0 ^ sxmo_appmenu.sh applications
$([ "$SXMO_MENU" = "wofi" ] && echo "$icon_grd All Apps ^ 0 ^ wofi -O alphabetical -i --show drun")
$([ "$SXMO_MENU" != "wofi" ] && command -v j4-dmenu-desktop > /dev/null && echo "$icon_grd All Apps ^ 0 ^ j4-dmenu-desktop --dmenu=sxmo_dmenu.sh --term=sxmo_terminal.sh")
$icon_grd Binaries ^ 0 ^ sxmo_brun.sh
$icon_dir Files ^ 0 ^ sxmo_files.sh
$icon_phn Dialer ^ 0 ^ sxmo_modemdial.sh
$icon_msg Texts ^ 0 ^ sxmo_modemtext.sh
$icon_usr Contacts ^ 0 ^ sxmo_contactmenu.sh
$(
rfkill list bluetooth -no ID,SOFT,HARD | grep -vq " blocked" &&
rfkill list bluetooth | grep -q "yes" ||
printf %b "$icon_bth Bluetooth ^ 1 ^ sxmo_bluetoothmenu.sh"
)
$(command -v megapixels >/dev/null && echo "$icon_cam Camera ^ 0 ^ GDK_SCALE=2 megapixels")
$(
if brightness="$(brightnessctl -d "white:flash" get)"; then
if [ -z "$SXMO_DISABLE_LEDS" ]; then
printf "%s Flashlight " "$icon_fll"
[ "$brightness" -gt 0 ] &&
printf %b "$icon_ton" || printf %b "$icon_tof";
sxmo_led.sh get white | grep -vq ^100$ &&
printf %b "$icon_tof" || printf %b "$icon_ton";
printf %b "^ 1 ^ sxmo_flashtoggle.sh"
fi
)
$icon_net Networks ^ 0 ^ sxmo_networks.sh
$icon_mus Audio ^ 0 ^ sxmo_audio.sh
$icon_phn Modem ^ 0 ^ sxmo_appmenu.sh modem
$icon_win Windows ^ 0 ^ sxmo_wmmenu.sh
$icon_cfg Config ^ 0 ^ sxmo_appmenu.sh config
$icon_inf Help ^ 0 ^ sxmo_terminal.sh man sxmo
$icon_pwr Power ^ 0 ^ sxmo_appmenu.sh power
"
WINNAME=Sys

View File

@@ -7,6 +7,10 @@
# up the call).
# kill existing ring playback
sxmo_jobs.sh stop ringing
if [ -e "$XDG_RUNTIME_DIR/sxmo.ring.pid" ]; then
MPVID="$(cat "$XDG_RUNTIME_DIR/sxmo.ring.pid")"
kill "$MPVID"
rm "$XDG_RUNTIME_DIR/sxmo.ring.pid"
fi
sxmo_playerctl.sh resume_all

View File

@@ -1,3 +1,5 @@
#!/bin/sh
# This script is executed (asynchronously) when you hangup an incoming call
sxmo_playerctl.sh resume_all

View File

@@ -57,7 +57,7 @@ icon_fil="" #file
icon_flk="" #falkon
icon_fll="󰉄" #flashlight
icon_flt="" #filter/pipe
icon_fnd="󰍉" #search/find
icon_fnd="" #search/find
icon_gam="󰊴" # gaming controller (🎮)
icon_glb="" #globe
icon_gps='' #gps
@@ -65,7 +65,6 @@ icon_grd="󰀻"
icon_grp="" #group
icon_hdp="" #headphones
icon_hom=""
icon_hst="󰋎" #headset🗣
icon_img="󰏜"
icon_inf="" #info
icon_itm="" #item (default)
@@ -83,13 +82,11 @@ icon_mod="" # modem
icon_mov="󰁁"
icon_mse="󰍽" # computer mouse (🖱️)
icon_msg="󰍦" #text
icon_mtr="󰟚" # metronome
icon_mus="󰎈"
icon_mut="" #mute
icon_mvi="󰎁" #movie
icon_net="󰀂"
icon_nto="" #no touch
icon_nvi="" # neovim
icon_nxt="" #next
icon_out="󰍃" #logout
icon_pau=""
@@ -109,10 +106,8 @@ icon_rol="" #rotate left
icon_ror="" #rotate right
icon_rss=""
icon_sav="󰆓" #save
icon_scn="󰚫" #scanner
icon_sfl="" #shuffle, random
icon_shr="󰁄" #shrink
icon_sim="󰒧" # sim card
icon_snd="" #send
icon_spk="" #speaker
icon_spl=""
@@ -140,8 +135,8 @@ icon_wn2=""
icon_wrh=""
icon_wtr="" #weather
icon_ytb="" #youtube
icon_zmi="󰛭" # Zoom in/magnify
icon_zmo="󰛬" # Zoom out/demagnify
icon_zmi=""
icon_zmo=""
icon_zzz="" #sleep/suspend/crust
# modem states

View File

@@ -8,7 +8,7 @@
LISGD_THRESHOLD="${SXMO_LISGD_THRESHOLD:-125}"
LISGD_THRESHOLD_PRESSED="${SXMO_LISGD_THRESHOLD_PRESSED:-60}"
LISGD_INPUT_DEVICE="${SXMO_LISGD_INPUT_DEVICE:-"/dev/input/by-path/first-touchscreen"}"
LISGD_INPUT_DEVICE="${SXMO_LISGD_INPUT_DEVICE:-"/dev/input/touchscreen"}"
if [ dwm = "$SXMO_WM" ]; then
case "$(xrandr | grep primary | cut -d' ' -f 5)" in
@@ -23,7 +23,7 @@ fi
# fingers,swipe,edge,distance,command
#order matters, only the first match gets executed
lisgd "$@" -d "$LISGD_INPUT_DEVICE" ${orientation:+-o $orientation} \
-s "${LISGD_EDGE_SIZE:-1.0}" -t "$LISGD_THRESHOLD" -T "$LISGD_THRESHOLD_PRESSED" \
-t "$LISGD_THRESHOLD" -T "$LISGD_THRESHOLD_PRESSED" \
-g "1,DRUL,BR,*,setsid -f sxmo_hook_inputhandler.sh bottomrightcorner" \
-g "1,DLUR,BL,*,setsid -f sxmo_hook_inputhandler.sh bottomleftcorner" \
-g "1,ULDR,TL,*,setsid -f sxmo_hook_inputhandler.sh topleftcorner" \

View File

@@ -1,12 +0,0 @@
#!/bin/sh
# SPDX-License-Identifier: AGPL-3.0-only
# Copyright 2022 Sxmo Contributors
# For use with peanutbutter (peanutbutter --font Sxmo --statuscommand sxmo_hook_lockstatusbar.sh)
# This filters out the last component (which is usually the time and is already displayed more prominently
# make sure status bar icons are suited for peanutbutter
sxmo_hook_statusbar.sh state_change
# obtain status output to pass to peanutbutter (this keeps running and updating to stdout)
exec sxmo_status_watch.sh -o pango

View File

@@ -9,4 +9,10 @@
# $1 = Contact Name or Number (if not in contacts)
# kill existing ring playback
sxmo_jobs.sh stop ringing
if [ -e "$XDG_RUNTIME_DIR/sxmo.ring.pid" ]; then
MPVID="$(cat "$XDG_RUNTIME_DIR/sxmo.ring.pid")"
kill "$MPVID"
rm "$XDG_RUNTIME_DIR/sxmo.ring.pid"
fi
sxmo_playerctl.sh resume_all

View File

@@ -24,6 +24,7 @@ case "$newstate" in
"enabling")
sxmo_log "State is enabling. Clearing stale call files."
rm "$XDG_RUNTIME_DIR"/sxmo_calls/* 2>/dev/null
rm -f "$XDG_RUNTIME_DIR"/sxmo.ring.pid 2>/dev/null
rm -f "$SXMO_NOTIFDIR"/incomingcall* 2>/dev/null
;;
"registered")

View File

@@ -6,6 +6,8 @@
# incoming call, i.e., ignore the call ringing in.
# kill existing ring playback
sxmo_jobs.sh stop ringing
sxmo_playerctl.sh resume_all
if [ -e "$XDG_RUNTIME_DIR/sxmo.ring.pid" ]; then
MPVID="$(cat "$XDG_RUNTIME_DIR/sxmo.ring.pid")"
kill "$MPVID"
rm "$XDG_RUNTIME_DIR/sxmo.ring.pid"
fi

View File

@@ -2,19 +2,15 @@
# SPDX-License-Identifier: AGPL-3.0-only
# Copyright 2022 Sxmo Contributors
# Runs when a notification arrives,
# Arguments:
# $1 - The notification file which contains the notification text.
# shellcheck source=scripts/core/sxmo_common.sh
. sxmo_common.sh
#if [ ! -f "$XDG_CONFIG_HOME"/sxmo/.novibrate ]; then
# VIBS=5
# VIBI=0
# while [ "$VIBI" -lt "$VIBS" ]; do
# sxmo_vibrate 400 "${SXMO_VIBRATE_STRENGTH:-1}" &
# while [ $VIBI -lt $VIBS ]; do
# sxmo_vibrate 400 &
# sleep 0.5
# VIBI="$(echo "$VIBI+1" | bc)"
# VIBI=$(echo $VIBI+1 | bc)
# done
#fi

View File

@@ -5,4 +5,10 @@
# This script is executed (asynchronously) when you pick up an incoming call
# kill existing ring playback
sxmo_jobs.sh stop ringing
if [ -e "$XDG_RUNTIME_DIR/sxmo.ring.pid" ]; then
xargs -r kill < "$XDG_RUNTIME_DIR/sxmo.ring.pid"
rm "$XDG_RUNTIME_DIR/sxmo.ring.pid"
fi
sxmo_playerctl.sh pause_all

View File

@@ -1,8 +0,0 @@
#!/bin/sh
# SPDX-License-Identifier: AGPL-3.0-only
# Copyright 2022 Sxmo Contributors
# This script is executed before reboot and poweroff the system
#
# The following parameters are provided:
# $1 = Action (poweroff or reboot)

View File

@@ -100,4 +100,4 @@ if ! daemon_isrunning modemmanager; then
exit 1
fi
# we want 120s before sleeping again
sxmo_wakelock.sh lock sxmo_modem_manually_reset 120s
sxmo_wakelock.sh lock modem_manually_reset 120s

View File

@@ -14,7 +14,7 @@
if sxmo_modemcall.sh list_active_calls \
| grep -v ringing-in \
| grep -q .; then
sxmo_vibrate 1500 "${SXMO_VIBRATE_STRENGTH:-1}"
sxmo_vibrate 1500
exit
fi
@@ -25,36 +25,6 @@ if ! sxmo_modemcall.sh list_active_calls \
exit
fi
finish() {
trap - INT TERM EXIT
jobs -p | xargs -r kill
exit
}
ring() {
mpv --no-resume-playback --quiet --no-video \
--loop="${SXMO_RINGNUMBER:-10}" "$SXMO_RINGTONE" >/dev/null &
}
vibrate() {
while : ; do
trap 'finish' INT TERM EXIT
sxmo_vibrate 1500 "${SXMO_VIBRATE_STRENGTH:-1}" &
wait "$!"
sleep 0.5 &
wait "$!"
done &
}
# SILENT MODE
if [ -f "$XDG_CONFIG_HOME"/sxmo/.busy ]; then
end="$(cat "$XDG_CONFIG_HOME"/sxmo/.busy)"
if [ -z "$end" ] || [ "$(date +%s)" -lt "$end" ]; then
exit
fi
fi
# RING & VIBRATE MODE (DEFAULT)
if [ ! -f "$XDG_CONFIG_HOME"/sxmo/.noring ] && [ ! -f "$XDG_CONFIG_HOME"/sxmo/.novibrate ]; then
sxmo_log "RING AND VIBRATE"
@@ -63,8 +33,15 @@ if [ ! -f "$XDG_CONFIG_HOME"/sxmo/.noring ] && [ ! -f "$XDG_CONFIG_HOME"/sxmo/.n
# In order for this to work with mpv, you will need to install mpv-mdis.
sxmo_playerctl.sh pause_all
ring
vibrate
timeout "$SXMO_RINGTIME" mpv --no-resume-playback --quiet --no-video \
--loop="$SXMO_RINGNUMBER" "$SXMO_RINGTONE" >/dev/null &
MPVID=$!
echo "$MPVID" > "$XDG_RUNTIME_DIR/sxmo.ring.pid"
# vibrate while mpv is running
while kill -0 $MPVID; do
sxmo_vibrate 1500
sleep 0.5
done
# RING-ONLY MODE
elif [ ! -f "$XDG_CONFIG_HOME"/sxmo/.noring ] && [ -f "$XDG_CONFIG_HOME"/sxmo/.novibrate ]; then
@@ -74,15 +51,16 @@ elif [ ! -f "$XDG_CONFIG_HOME"/sxmo/.noring ] && [ -f "$XDG_CONFIG_HOME"/sxmo/.n
# In order for this to work with mpv, you will need to install mpv-mdis.
sxmo_playerctl.sh pause_all
ring
timeout "$SXMO_RINGTIME" mpv --no-resume-playback --quiet --no-video \
--loop="$SXMO_RINGNUMBER" "$SXMO_RINGTONE" >/dev/null &
echo "$!" > "$XDG_RUNTIME_DIR/sxmo.ring.pid"
# VIBRATE-ONLY MODE
elif [ ! -f "$XDG_CONFIG_HOME"/sxmo/.novibrate ] && [ -f "$XDG_CONFIG_HOME"/sxmo/.noring ]; then
smxo_log "VIBRATE ONLY"
vibrate
for _ in $(seq 5); do
sxmo_vibrate 1500
sleep 0.5
done &
echo "$!" > "$XDG_RUNTIME_DIR/sxmo.ring.pid"
fi
trap 'finish' INT TERM EXIT
sleep "${SXMO_RINGTIME:-20}" &
wait "$!"

View File

@@ -17,24 +17,14 @@
. sxmo_common.sh
# do nothing if active call
if sxmo_modemcall.sh list_active_calls | grep -q active; then
exit
fi
# do nothing if silent mode
if [ -f "$XDG_CONFIG_HOME"/sxmo/.busy ]; then
end="$(cat "$XDG_CONFIG_HOME"/sxmo/.busy)"
if [ -z "$end" ] || [ "$(date +%s)" -lt "$end" ]; then
exit
fi
fi
if ! sxmo_modemcall.sh list_active_calls | grep -q active; then
if [ ! -f "$XDG_CONFIG_HOME"/sxmo/.noring ]; then
mpv --no-resume-playback --quiet --no-video "$SXMO_TEXTSOUND" >> /dev/null 2>&1 &
mpv --no-resume-playback --quiet --no-video "$SXMO_TEXTSOUND" >> /dev/null 2>&1
fi
if [ ! -f "$XDG_CONFIG_HOME"/sxmo/.novibrate ]; then
sxmo_vibrate 500 "${SXMO_VIBRATE_STRENGTH:-1}" &
sxmo_vibrate 500
fi
wait
fi

View File

@@ -3,7 +3,7 @@
# Copyright 2022 Sxmo Contributors
# Allow user to override what we log in the sms.txt file. Note if you change
# this you probably should change sxmo_hook_tailtextlog.sh
# this you probably should change sxmo_hook_parselog.sh
# include common definitions
# shellcheck source=scripts/core/sxmo_common.sh

View File

@@ -2,8 +2,6 @@
# SPDX-License-Identifier: AGPL-3.0-only
# Copyright 2022 Sxmo Contributors
# Runs upon system start and starts various background services
# include common definitions
# shellcheck source=scripts/core/sxmo_common.sh
. sxmo_common.sh
@@ -11,38 +9,16 @@
# Create xdg user directories, such as ~/Pictures
xdg-user-dirs-update
sxmo_jobs.sh start daemon_manager superd
sxmo_daemons.sh start daemon_manager superd -v
# let time to superd to start correctly
while ! superctl status > /dev/null 2>&1; do
sleep 0.5
done
# Not dangerous if "locker" isn't an available state
sxmo_state.sh set locker
if [ -n "$SXMO_ROTATE_START" ]; then
sxmo_rotate.sh
fi
# Load our sound daemons
if [ -z "$SXMO_NO_AUDIO" ]; then
if [ "$(command -v pulseaudio)" ]; then
superctl start pulseaudio
elif [ "$(command -v pipewire)" ]; then
# pipewire-pulse will start pipewire
superctl start pipewire-pulse
superctl start wireplumber
fi
# monitor for headphone for statusbar
superctl start sxmo_soundmonitor
fi
# Periodically update some status bar components
sxmo_hook_statusbar.sh all
sxmo_jobs.sh start statusbar_periodics sxmo_run_aligned.sh 60 \
sxmo_daemons.sh start statusbar_periodics sxmo_run_aligned.sh 60 \
sxmo_hook_statusbar.sh periodics
# mako/dunst are required for warnings.
@@ -53,10 +29,10 @@ case "$SXMO_WM" in
superctl start sxmo_wob
superctl start sxmo_menumode_toggler
superctl start bonsaid
swaymsg output '*' bg "$SXMO_BG_IMG" fill
;;
dwm)
superctl start dunst
superctl start sxmo_xob
# Auto hide cursor with touchscreen, Show it with a mouse
if command -v "unclutter-xfixes" > /dev/null; then
@@ -71,35 +47,30 @@ case "$SXMO_WM" in
superctl start sxmo-x11-status
superctl start bonsaid
[ -n "$SXMO_MONITOR" ] && xrandr --output "$SXMO_MONITOR" --primary
feh --bg-fill "$SXMO_BG_IMG"
;;
esac
# To setup initial lock state
sxmo_hook_unlock.sh
# Turn on auto-suspend
if sxmo_wakelock.sh isenabled; then
sxmo_wakelock.sh lock sxmo_not_suspendable infinite
if [ -w "/sys/power/wakeup_count" ] && [ -f "/sys/power/wake_lock" ]; then
superctl start sxmo_autosuspend
fi
# To setup initial unlock state
sxmo_state.sh set unlock
# Turn on lisgd
if [ ! -e "$XDG_CACHE_HOME"/sxmo/sxmo.nogesture ]; then
superctl start sxmo_hook_lisgd
fi
if [ -z "$SXMO_NO_MODEM" ] && command -v ModemManager > /dev/null; then
if [ "$(command -v ModemManager)" ]; then
# Turn on the dbus-monitors for modem-related tasks
superctl start sxmo_modemmonitor
# place a wakelock for 120s to allow the modem to fully warm up (eg25 +
# elogind/systemd would do this for us, but we don't use those.)
sxmo_wakelock.sh lock sxmo_modem_warming_up 120s
sxmo_wakelock.sh lock modem_warming_up 120s
fi
# Start the desktop wallpaper
superctl start sxmo_bg
# Start the desktop widget (e.g. clock)
superctl start sxmo_conky
@@ -112,11 +83,13 @@ superctl start sxmo_networkmonitor
# The daemon that display notifications popup messages
superctl start sxmo_notificationmonitor
# monitor for headphone for statusbar
superctl start sxmo_soundmonitor
# Play a funky startup tune if you want (disabled by default)
#mpv --quiet --no-video ~/welcome.ogg &
# mmsd and vvmd
if [ -z "$SXMO_NO_MODEM" ]; then
if [ -f "${SXMO_MMS_BASE_DIR:-"$HOME"/.mms/modemmanager}/mms" ]; then
superctl start mmsd-tng
fi
@@ -124,13 +97,12 @@ if [ -z "$SXMO_NO_MODEM" ]; then
if [ -f "${SXMO_VVM_BASE_DIR:-"$HOME"/.vvm/modemmanager}/vvm" ]; then
superctl start vvmd
fi
fi
# add some warnings if things are not setup correctly
if ! command -v "sxmo_deviceprofile_$SXMO_DEVICE_NAME.sh"; then
sxmo_notify_user.sh --urgency=critical \
deviceprofile="$(command -v "sxmo_deviceprofile_$SXMO_DEVICE_NAME.sh")"
[ -f "$deviceprofile" ] || sxmo_notify_user.sh --urgency=critical \
"No deviceprofile found $SXMO_DEVICE_NAME. See: https://sxmo.org/deviceprofile"
fi
sxmo_migrate.sh state || sxmo_notify_user.sh --urgency=critical \
"Config needs migration" "$? file(s) in your sxmo configuration are out of date and disabled - using defaults until you migrate (run sxmo_migrate.sh)"

View File

@@ -17,14 +17,9 @@
# right and "variable" icons (that come and go) on the left.
set_time() {
if pidof peanutbutter > /dev/null; then
#peanutbutter already features a clock, no need for one in the icon bar
sxmobar -d time
else
date "+${SXMO_STATUS_DATE_FORMAT:-%H:%M}" | while read -r date; do
sxmobar -a time 99 "$date"
done
fi
}
set_state() {
@@ -32,18 +27,11 @@ set_state() {
return
fi
if sxmo_jobs.sh running proximity_lock; then
STATE_LABEL="$(cat "$SXMO_STATE")"
case "$STATE_LABEL" in
proximity*)
sxmobar -a -e bold -f orange state 90 "$icon_state_proximity" # circle with dot
return
fi
if command -v peanutbutter > /dev/null; then
# no need for a state icon in this (default) scenario, the state will be obvious, either peanutbutter is on or it isn't
sxmobar -d state
return
fi
case "$(sxmo_state.sh get)" in
;;
screenoff)
sxmobar -a -e bold -f red state 90 "$icon_state_screenoff" # filled circle
;;
@@ -189,10 +177,8 @@ set_modem() {
;;
esac
if [ "$MODEMSTATE" != failed ] && [ "$MODEMSTATE" != unknown ]; then
sxmobar -a -f "$fgcolor" -b "$bgcolor" -t "$style" \
modem-tech 11 "$MODEMTECHCMP"
fi
MODEMSIGNALCMP="$icon_modem_signal_0"
bgcolor=default
@@ -212,10 +198,8 @@ set_modem() {
;;
esac
if [ "$MODEMSTATE" != failed ] && [ "$MODEMSTATE" != unknown ]; then
sxmobar -a -f "$fgcolor" -b "$bgcolor" -t "$style" \
modem-signal 12 "$MODEMSIGNALCMP"
fi
}
# $1 = type (wifi, tun)
@@ -243,7 +227,7 @@ set_wifi() {
# if they have a vpn nmcli c shown --active should also list:
# tun0 ef5fcce9-fdae-4ffe-a540-b16fc7b42852 tun tun0
if printf %b "$CONN" | cut -d':' -f3 | grep -q -E "^tun$|^wireguard$"; then
if printf %b "$CONN" | cut -d':' -f3 | grep -q ^tun$; then
wifivpn=1
else
wifivpn=0
@@ -287,89 +271,87 @@ set_wifi() {
sxmobar -a wifi-status 30 "$icon_wif"
}
# $1 = type (wifi, tun)
# $2 = interface name (wlan0, tun0)
set_ethernet() {
conname="$(nmcli -t device show "$2" | grep ^GENERAL.CONNECTION | cut -d: -f2-)"
if [ "$conname" = "--" ]; then
# not used device
sxmobar -d ethernet-status-"$2" 30
return
fi
if nmcli -t connection show "$conname" | grep ^ipv4.method | grep -q :shared; then
sxmobar -a ethernet-status-"$2" 30 "$icon_lnk"
else
sxmobar -d ethernet-status-"$2" 30
fi
}
# $1: type (reported by nmcli, e.g., wifi, tun)
# $2: interface name (reported by nmcli, e.g., wlan0, tun0)
set_network() {
case "$1" in
wifi|tun) set_wifi "$@" ;;
ethernet) set_ethernet "$@" ;;
esac
}
set_battery() {
name="$1"
state="$2"
percentage="$3"
for power_supply in /sys/class/power_supply/*; do
power_name="$(basename "$power_supply")"
fgcolor=default
bgcolor=default
style=normal
BATCMP=
case "$state" in
fully-charged)
BATCMP="$icon_bat_c_3"
;;
charging)
if [ "$percentage" -lt 25 ]; then
if [ "$(cat "$power_supply"/type)" = "Battery" ]; then
if [ -e "$power_supply"/capacity ]; then
PCT="$(cat "$power_supply"/capacity)"
elif [ -e "$power_supply"/charge_now ]; then
CHARGE_NOW="$(cat "$power_supply"/charge_now)"
CHARGE_FULL="$(cat "$power_supply"/charge_full_design)"
PCT="$(printf "scale=2; %s / %s * 100\n" "$CHARGE_NOW" "$CHARGE_FULL" | bc | cut -d'.' -f1)"
else
continue
fi
if [ -e "$power_supply"/status ]; then
# The status is not always given for the battery device.
# (sometimes it's linked to the charger device).
BATSTATUS="$(cut -c1 "$power_supply"/status)"
fi
# fixes a bug with keyboard case where
# /sys/class/power_supply/ip5xxx-charger/capacity
# exists but returns 'Not a tty'
if [ -z "$PCT" ]; then
BATCMP="ERR"
elif [ "$BATSTATUS" = "C" ] || [ "$BATSTATUS" = "F" ]; then
if [ "$PCT" -lt 25 ]; then
BATCMP="$icon_bat_c_0"
elif [ "$percentage" -lt 50 ]; then
elif [ "$PCT" -lt 50 ]; then
BATCMP="$icon_bat_c_1"
elif [ "$percentage" -lt 75 ]; then
elif [ "$PCT" -lt 75 ]; then
BATCMP="$icon_bat_c_2"
else
# Treat 'Full' status as same as 'fully-charged'
# Treat 'Full' status as same as 'Charging'
BATCMP="$icon_bat_c_3"
fi
;;
discharging)
if [ "$percentage" -lt 25 ]; then
else
if [ "$PCT" -lt 25 ]; then
fgcolor=red
if [ "$percentage" -lt 5 ]; then
if [ "$PCT" -lt 5 ]; then
BATCMP="$icon_bat_0"
elif [ "$percentage" -lt 10 ]; then
elif [ "$PCT" -lt 10 ]; then
BATCMP="$icon_bat_1"
elif [ "$percentage" -lt 15 ]; then
elif [ "$PCT" -lt 15 ]; then
BATCMP="$icon_bat_2"
else
BATCMP="$icon_bat_3"
fi
elif [ "$percentage" -lt 50 ]; then
elif [ "$PCT" -lt 50 ]; then
fgcolor=orange
BATCMP="$icon_bat_1"
elif [ "$percentage" -lt 75 ]; then
elif [ "$PCT" -lt 75 ]; then
BATCMP="$icon_bat_2"
else
BATCMP="$icon_bat_3"
fi
;;
esac
fi
sxmobar -a -t "$style" -b "$bgcolor" -f "$fgcolor" \
"battery-icon-$name" 40 "$BATCMP"
"battery-icon-$power_name" 40 "$BATCMP"
if [ -z "$SXMO_BAR_SHOW_BAT_PER" ]; then
sxmobar -d "battery-status-$name"
sxmobar -d "battery-status-$power_name"
else
sxmobar -a "battery-status-$name" 41 "$percentage%"
sxmobar -a "battery-status-$power_name" 41 "$PCT%"
fi
fi
done
}
set_notifications() {
@@ -385,56 +367,51 @@ set_notifications() {
set_volume() {
VOLCMP=""
if sxmo_modemaudio.sh is_call_audio_mode; then
if sxmo_modemaudio.sh is_muted_mic; then
VOLCMP="$icon_mmc"
else
VOLCMP="$icon_mic"
fi
if sxmo_modemaudio.sh is_enabled_speaker; then
VOLCMP="$VOLCMP $icon_spk"
else
VOLCMP="$VOLCMP $icon_ear"
fi
sxmobar -a -f green volume 50 "$VOLCMP"
return;
fi
if sxmo_audio.sh mic ismuted; then
VOLCMP="$icon_mmc"
else
case "$(sxmo_audio.sh device getinput 2>/dev/null)" in
*Headset*)
VOLCMP="$icon_hst"
;;
*)
VOLCMP="$icon_mic"
;;
esac
fi
if sxmo_audio.sh vol ismuted; then
VOLCMP="$VOLCMP $icon_mut"
else
case "$(sxmo_audio.sh device get 2>/dev/null)" in
*Speaker*|"")
Speaker|"")
# nothing for default or pulse devices
;;
*Headphone*)
Headphones|Headphone)
VOLCMP="$VOLCMP $icon_hdp"
;;
*Earpiece*)
Earpiece)
VOLCMP="$VOLCMP $icon_ear"
;;
esac
VOL="$(sxmo_audio.sh vol get)"
if [ "$VOL" -gt 66 ]; then
if [ -z "$VOL" ] || [ "$VOL" = "muted" ]; then
VOLCMP="$VOLCMP $icon_mut"
elif [ "$VOL" -gt 66 ]; then
VOLCMP="$VOLCMP $icon_spk"
elif [ "$VOL" -gt 33 ]; then
VOLCMP="$VOLCMP $icon_spm"
elif [ "$VOL" -ge 0 ]; then
VOLCMP="$VOLCMP $icon_spl"
fi
fi
if sxmo_modemaudio.sh is_call_audio_mode; then
sxmobar -a -f green volume 50 "$VOLCMP"
else
sxmobar -a volume 50 "$VOLCMP"
fi
}
set_notch() {
if [ -n "$SXMO_NOTCH" ] && ! pidof peanutbutter > /dev/null; then
sxmobar -a notch "${SXMO_NOTCH_PRIO:-29}" "$SXMO_NOTCH"
else
sxmobar -d notch
fi
}
sxmo_debug "$@"
@@ -443,37 +420,28 @@ case "$1" in
shift
set_network "$@"
;;
battery)
shift
set_battery "$@"
;;
time|modem|volume|state|notifications|notch)
time|modem|battery|volume|state|notifications)
set_"$1"
;;
periodics|state_change) # 55 s loop and screenlock triggers
set_time
if [ -z "$SXMO_NO_MODEM" ]; then
set_modem
fi
set_notch
set_battery
set_state
set_network wifi wlan0
;;
all)
sxmobar -r
set_time
if [ -z "$SXMO_NO_MODEM" ]; then
set_modem
fi
if [ -z "$SXMO_NO_AUDIO" ]; then
set_battery
set_volume
fi
set_state
set_notifications
set_notch
set_network wifi wlan0
;;
*)
exit # swallow it !
;;
esac

View File

@@ -1,6 +1,6 @@
#!/bin/sh
# Runs after wm has been stopped., useful for cleanup
# Runs after wm has been stopped.
# clean up misc. stale files (if any)
rm -rf "$XDG_RUNTIME_DIR"/sxmo*

View File

@@ -15,9 +15,7 @@ export TERMNAME
# If it's already open, switch to it.
if [ "$SXMO_WM" = "sway" ] && [ -z "$SSH_CLIENT" ]; then
regesc_termname="$(echo "$TERMNAME" | sed 's|+|\\+|g')"
if swaymsg -q "[title=\"^$regesc_termname\$\"]" focus; then
exit 0
fi
swaymsg "[title=\"^$regesc_termname\$\"]" focus && exit 0
fi
mkcontactssedcmd() {
@@ -33,7 +31,7 @@ mkcontactssedcmd() {
TODAY="$(date +%F)"
YESTERDAY="$(date -d "- 1 day" +%F)"
TWO_DAYS="$(date -d "- 2 day" +%F)"
DATESEDCMD="s/ at ${TODAY}T/today at /; s/ at ${YESTERDAY}T/yesterday at /; s/ at ${TWO_DAYS}T/two days ago at /; s/[-+][0-9][0-9][0-9][0-9]://; s/\(-[0-9][0-9]\)T\([0-9][0-9]\)/\1 \2/;"
DATESEDCMD="s/at.*${TODAY}T/today at /; s/at.*${YESTERDAY}T/yesterday at /; s/at.*${TWO_DAYS}T/two days ago at /; s/-[0-9][0-9][0-9][0-9]://; s/\(-[0-9][0-9]\)T\([0-9][0-9]\)/\1 \2/;"
# TODO
#ALIGNSEDCMD="s/^Sent/<right align>/;s/^Received/<left align>/;"
@@ -48,3 +46,4 @@ CONTACTSSEDCMD="$(mkcontactssedcmd)"
sxmo_terminal.sh sh -c "tail -n9999 -f \"$SXMO_LOGDIR/$LOGDIRNUM/sms.txt\" |\
sed -e \"$CONTACTSSEDCMD\" -e \"$DATESEDCMD\" -e \"$COLORSEDCMD\""
#sxmo_terminal.sh sh -c "sxmo_hook_parselog.sh \"$NUMBER\""

View File

@@ -1,38 +0,0 @@
#!/bin/sh
# SPDX-License-Identifier: AGPL-3.0-only
# Copyright 2022 Sxmo Contributors
# include common definitions
# shellcheck source=scripts/core/sxmo_common.sh
. sxmo_common.sh
# This hook is called when the system becomes unlocked again
sxmo_led.sh blink red green &
sxmo_wm.sh dpms off
sxmo_wm.sh inputevent touchscreen on
sxmo_jobs.sh stop periodic_blink
sxmo_jobs.sh stop periodic_wakelock_check
# Go to the next idle state after 120 seconds of inactivity
if [ -e "$XDG_CACHE_HOME/sxmo/sxmo.noidle" ]; then
sxmo_jobs.sh stop idle_locker
else
case "$SXMO_WM" in
sway)
sxmo_jobs.sh start idle_locker sxmo_idle.sh -w \
timeout "${SXMO_UNLOCK_IDLE_TIME:-120}" 'sh -c "
swaymsg mode default;
exec sxmo_state.sh idle
"'
;;
dwm)
sxmo_jobs.sh start idle_locker sxmo_idle.sh -w \
timeout "${SXMO_UNLOCK_IDLE_TIME:-120}" "sxmo_state.sh idle"
;;
esac
fi
wait

View File

@@ -1,28 +0,0 @@
#!/bin/sh -e
# SPDX-License-Identifier: AGPL-3.0-only
# Copyright 2022 Sxmo Contributors
# shellcheck source=scripts/core/sxmo_common.sh
. sxmo_common.sh
# This script is executed once, and must output the wallpaper to display
installed_wallpapers() {
xdg_data_path wallpapers 0 "\0" | xargs -r0I{} find "{}" -name "$SXMO_OS.*"
}
sxmo_wallpaper() {
xdg_data_path sxmo/background.jpg
}
all_wallpapers() {
installed_wallpapers
sxmo_wallpaper
}
if [ -n "$SXMO_BG_IMG" ]; then
printf "%s" "$SXMO_BG_IMG"
exit
fi
all_wallpapers | head -n1

View File

@@ -3,8 +3,7 @@
# Copyright 2022 Sxmo Contributors
# This script handles input actions, it is called by lisgd for gestures
# and by dwm for button presses. Gestures are tied to actions in
# sxmo_hook_lisgdstart.sh .
# and by dwm for button presses
ACTION="$1"
@@ -13,39 +12,52 @@ ACTION="$1"
. sxmo_common.sh
stop_proximity_lock() {
sxmo_jobs.sh stop proximity_lock
sxmo_daemons.sh stop proximity_lock
}
# this action will move the lock state $1 levels higher
lock_screen_action() {
count="${1:-1}"
state="$(cat "$SXMO_STATE")"
while [ "$count" -gt 0 ]; do
case "$state" in
unlock)
state=screenoff
;;
screenoff)
state=lock
;;
lock)
state=unlock
;;
esac
count=$((count-1))
done
sxmo_hook_"$state".sh
}
XPROPOUT="$(sxmo_wm.sh focusedwindow)"
WMCLASS="$(printf %s "$XPROPOUT" | grep app: | cut -d" " -f2- | tr '[:upper:]' '[:lower:]')"
WMNAME="$(printf %s "$XPROPOUT" | grep title: | cut -d" " -f2- | tr '[:upper:]' '[:lower:]')"
sxmo_debug "STATE: $(sxmo_state.sh get) ACTION: $ACTION WMCLASS: $WMCLASS WMNAME: $WMNAME"
sxmo_debug "STATE: $(cat "$SXMO_STATE") ACTION: $ACTION WMCLASS: $WMCLASS WMNAME: $WMNAME"
if sxmo_state.sh is_locked; then
case "$WMNAME" in # Handle programs
*"epy"*|*"epr"*)
case "$ACTION" in
"voldown_one")
sxmo_type.sh l
exit 0
;;
"volup_one")
sxmo_type.sh h
exit 0
;;
esac
;;
esac
if ! grep -q unlock "$SXMO_STATE"; then
case "$ACTION" in
"powerbutton_one")
sxmo_state.sh click
lock_screen_action
;;
"powerbutton_two")
sxmo_state.sh click 2
lock_screen_action 2
;;
"powerbutton_three")
sxmo_state.sh click 2
if grep -q proximity "$SXMO_STATE"; then
stop_proximity_lock
else
lock_screen_action 2
fi
;;
"voldown_one")
sxmo_audio.sh vol down 5
@@ -98,117 +110,9 @@ case "$WMCLASS" in
;;
esac
;;
*"acme"*)
case "$ACTION" in
"volup_one")
xdotool click 3
exit 0
;;
"voldown_one")
xdotool click 2
exit 0
;;
esac
;;
*"links"*)
case "$ACTION" in
# you're probably dragging the scrollbar
*"uprightedge") exit 0 ;;
*"downrightedge") exit 0 ;;
*"onedown")
sxmo_type.sh -M Ctrl -M Shift -k b
exit 0
;;
*"oneup")
sxmo_type.sh -M Ctrl -M Shift -k f
exit 0
;;
esac
;;
*"netsurf"*)
case "$ACTION" in
# you're probably dragging the scrollbar
*"uprightedge") exit 0 ;;
*"downrightedge") exit 0 ;;
*"onedown")
sxmo_type.sh -k Page_Up
exit 0
;;
*"oneup")
sxmo_type.sh -k Page_Down
exit 0
;;
esac
;;
*"foot"*|*"st"*|*"vte"*|"terminal") # Terminals
case "$WMCLASS" in # Handle programs without touch support
*"st"*)
*"foot"*|*"st"*|*"vte"*|"terminal")
# First we try to handle the app running inside st:
case "$WMNAME" in
*"weechat"*|*'gomuks'*)
case "$ACTION" in
*"onedown")
sxmo_type.sh -k Page_Up
exit 0
;;
*"oneup")
sxmo_type.sh -k Page_Down
exit 0
;;
esac
;;
*"less"*|*"amfora"*)
case "$ACTION" in
*"onedown")
sxmo_type.sh u
exit 0
;;
*"oneup")
sxmo_type.sh d
exit 0
;;
esac
;;
*'irssi'*)
case "$ACTION" in
"onedown")
sxmo_type.sh -M Alt p
exit 0
;;
"oneup")
sxmo_type.sh -M Alt n
exit 0
;;
esac
;;
*'epy'*|*'epr'*)
case "$ACTION" in
"onedown")
sxmo_type.sh h
exit 0
;;
"oneup")
sxmo_type.sh l
exit 0
;;
esac
;;
*'nnn'*|'lf')
case "$ACTION" in
"onedown")
sxmo_type.sh -k Down
exit 0
;;
"oneup")
sxmo_type.sh -k Up
exit 0
;;
esac
;;
esac
;;
esac
case "$WMNAME" in # Handle programs
*"weechat"*)
case "$ACTION" in
*"oneleft")
@@ -219,6 +123,14 @@ case "$WMCLASS" in
sxmo_type.sh -M Alt -k less
exit 0
;;
*"oneup")
sxmo_type.sh -k Page_Down
exit 0
;;
*"onedown")
sxmo_type.sh -k Page_Up
exit 0
;;
esac
;;
*" sms")
@@ -249,6 +161,14 @@ case "$WMCLASS" in
sxmo_type.sh q
exit 0
;;
*"onedown")
sxmo_type.sh u
exit 0
;;
*"oneup")
sxmo_type.sh d
exit 0
;;
*"oneleft")
sxmo_type.sh ":n" -k Return
exit 0
@@ -269,6 +189,14 @@ case "$WMCLASS" in
sxmo_type.sh -M Shift -k Tab
exit 0
;;
*"onedown")
sxmo_type.sh u
exit 0
;;
*"oneup")
sxmo_type.sh d
exit 0
;;
*"oneright")
sxmo_type.sh -k Return
exit 0
@@ -287,59 +215,76 @@ case "$WMCLASS" in
;;
esac
;;
*"epy"*|*"epr"*)
*'irssi'*)
case "$ACTION" in
*"left"|"voldown_one")
sxmo_type.sh l
"onedown")
sxmo_type.sh -M Alt p
exit 0
;;
*"right"|"volup_one")
sxmo_type.sh h
"oneup")
sxmo_type.sh -M Alt n
exit 0
;;
"voldown_three"|"twodownbottomedge")
sxmo_type.sh q
exit
;;
esac
;;
*'nnn'*|'lf')
*'gomuks'*)
case "$ACTION" in
*"left")
sxmo_type.sh -k Right
*"oneup")
sxmo_type.sh -k Page_Down
exit 0
;;
*"right")
sxmo_type.sh -k Left
*"onedown")
sxmo_type.sh -k Page_Up
exit 0
;;
esac
;;
esac
case "$WMCLASS" in # Handle general scrolling without touch support
*"st"*)
# Now we try generic actions for terminal
case "$ACTION" in
*"onedown")
case "$WMCLASS" in
*"foot"*)
sxmo_type.sh -M Shift -k Page_Up
exit 0
;;
*"st"*)
sxmo_type.sh -M Ctrl -M Shift -k b
exit 0
;;
esac
;;
*"oneup")
case "$WMCLASS" in
*"foot"*)
sxmo_type.sh -M Shift -k Page_Down
exit 0
;;
*"st"*)
sxmo_type.sh -M Ctrl -M Shift -k f
exit 0
;;
esac
;;
"uprightedge")
case "$WMCLASS" in
"org.gnome.vte.application"|"terminal")
case "$ACTION" in
# For VTE, fallback to doing nothing,
# you're probably dragging the scrollbar
*"uprightedge") exit 0 ;;
*"downrightedge") exit 0 ;;
esac
exit 0
;;
esac
;;
"downrightedge")
case "$WMCLASS" in
"org.gnome.vte.application"|"terminal")
# For VTE, fallback to doing nothing,
# you're probably dragging the scrollbar
exit 0
;;
esac
;;
esac
esac
#standard handling
@@ -348,24 +293,24 @@ case "$ACTION" in
if echo "$WMCLASS" | grep -i "megapixels"; then
sxmo_type.sh -k space
else
sxmo_state.sh click
lock_screen_action
fi
exit 0
;;
"powerbutton_two")
sxmo_state.sh click 2
lock_screen_action 2
exit 0
;;
"powerbutton_three")
if grep -q proximity "$SXMO_STATE"; then
stop_proximity_lock
else
sxmo_terminal.sh
fi
exit 0
;;
"voldown_one")
if [ -n "$SXMO_NO_VIRTUAL_KEYBOARD" ]; then
sxmo_killwindow.sh
else
sxmo_keyboard.sh toggle
fi
exit
;;
"voldown_two")
@@ -421,19 +366,11 @@ case "$ACTION" in
exit 0
;;
"upbottomedge")
if [ -n "$SXMO_NO_VIRTUAL_KEYBOARD" ]; then
sxmo_terminal.sh
else
sxmo_keyboard.sh open
fi
exit 0
;;
"downbottomedge")
if [ -n "$SXMO_NO_VIRTUAL_KEYBOARD" ]; then
sxmo_killwindow.sh
else
sxmo_keyboard.sh close
fi
exit 0
;;
"downtopedge")
@@ -490,12 +427,14 @@ case "$ACTION" in
exit 0
;;
"bottomleftcorner")
if grep -q proximity "$SXMO_STATE"; then
exit
fi
sxmo_dmenu.sh close
sxmo_keyboard.sh close
if [ -n "$WMCLASS" ]; then
sxmo_state.sh set lock
sxmo_hook_lock.sh
else
sxmo_state.sh set screenoff
sxmo_hook_screenoff.sh
fi
exit 0
;;

View File

@@ -14,23 +14,30 @@
# shellcheck source=scripts/core/sxmo_common.sh
. sxmo_common.sh
exec 3<> "$SXMO_STATE.lock"
flock -x 3
sxmo_log "transitioning to stage lock"
printf lock > "$SXMO_STATE"
sxmo_wakelock.sh lock not_screenoff infinite
# This hook is called when the system reaches a locked state
sxmo_led.sh blink blue &
sxmo_hook_statusbar.sh state_change &
[ "$SXMO_WM" = "sway" ] && swaymsg mode default
sxmo_wm.sh dpms off
sxmo_wm.sh inputevent touchscreen off
sxmo_jobs.sh stop periodic_blink
sxmo_jobs.sh stop periodic_wakelock_check
sxmo_daemons.sh stop periodic_blink
sxmo_daemons.sh stop periodic_wakelock_check
# Go down after 8 seconds of inactivity
if [ -e "$XDG_CACHE_HOME/sxmo/sxmo.noidle" ]; then
sxmo_jobs.sh stop idle_locker
else
sxmo_jobs.sh start idle_locker sxmo_idle.sh -w \
timeout "${SXMO_LOCK_IDLE_TIME:-8}" "sxmo_state.sh idle"
# Go to screenoff after 8 seconds of inactivity
if ! [ -e "$XDG_CACHE_HOME/sxmo/sxmo.noidle" ]; then
sxmo_daemons.sh start idle_locker sxmo_idle.sh -w \
timeout "${SXMO_LOCK_IDLE_TIME:-8}" "sxmo_hook_screenoff.sh"
fi
wait

View File

@@ -0,0 +1,21 @@
#!/bin/sh
# SPDX-License-Identifier: AGPL-3.0-only
# Copyright 2022 Sxmo Contributors
# include common definitions
# shellcheck source=scripts/core/sxmo_common.sh
. sxmo_common.sh
MMCLI="$(mmcli -m any -J 2>/dev/null)"
if [ -z "$MMCLI" ]; then
sxmo_notify_user.sh "Modem crashed! 30s recovery."
sxmo_wakelock.sh lock modem_crashed 30s
fi
# see the comments in sxmo_hook_lock.sh
# and https://todo.sr.ht/~mil/sxmo-tickets/150
if [ 1 = "$SXMO_RTW_SCAN_INTERVAL" ]; then
echo 1200 > "/sys/module/$SXMO_WIFI_MODULE/parameters/rtw_scan_interval_thr"
fi
# Add here whatever you want to do

View File

@@ -16,35 +16,30 @@
# This hook is called when the system reaches a off state (screen off)
sxmo_led.sh blink red blue &
exec 3<> "$SXMO_STATE.lock"
flock -x 3
sxmo_log "transitioning to stage off"
printf screenoff > "$SXMO_STATE"
sxmo_hook_statusbar.sh state_change &
[ "$SXMO_WM" = "sway" ] && swaymsg mode default
sxmo_wm.sh dpms on
sxmo_wm.sh inputevent touchscreen off
if [ ! -e "$XDG_CACHE_HOME"/sxmo/sxmo.nosuspend ]; then
sxmo_jobs.sh start periodic_blink \
sxmo_run_periodically.sh -w 2 -- sxmo_led.sh blink red blue
fi
sxmo_daemons.sh start periodic_blink sxmo_run_periodically.sh 2 sxmo_led.sh blink red blue
case "$SXMO_WM" in
dwm)
# dmenu will grab input focus (i.e. power button) so kill it before going to
# screenoff unless proximity lock is running (i.e. there's a phone call).
if ! sxmo_jobs.sh running proximity_lock -q; then
if ! sxmo_daemons.sh running proximity_lock -q; then
sxmo_dmenu.sh close
fi
;;
esac
sxmo_jobs.sh stop idle_locker
wait
case "$SXMO_WM" in
sway)
if command -v peanutbutter > /dev/null; then
peanutbutter --font Sxmo --statuscommand sxmo_hook_lockstatusbar.sh && sxmo_hook_statusbar.sh state_change &
fi
;;
esac
sxmo_wakelock.sh lock hold_a_bit 3s # avoid immediate suspension
sxmo_wakelock.sh unlock not_screenoff

View File

@@ -0,0 +1,56 @@
#!/bin/sh
# SPDX-License-Identifier: AGPL-3.0-only
# Copyright 2022 Sxmo Contributors
# include common definitions
# shellcheck source=scripts/core/sxmo_common.sh
. sxmo_common.sh
# This hook is called when the system becomes unlocked again
exec 3<> "$SXMO_STATE.lock"
flock -x 3
sxmo_log "transitioning to stage unlock"
printf unlock > "$SXMO_STATE"
sxmo_wakelock.sh lock not_screenoff infinite
sxmo_led.sh blink red green &
sxmo_hook_statusbar.sh state_change &
sxmo_wm.sh dpms off
sxmo_wm.sh inputevent touchscreen on
sxmo_daemons.sh stop periodic_blink
sxmo_daemons.sh stop periodic_wakelock_check
# see https://todo.sr.ht/~mil/sxmo-tickets/150
# We set the scan interval threshold here to
# 16000 (16s) the default, since in sxmo_hook_postwake.sh
# we set it to 1200 (.12s) so that we can reconnect to wifi
# quicker after resuming from suspend.
if [ 1 = "$SXMO_RTW_SCAN_INTERVAL" ]; then
echo 16000 > "/sys/module/$SXMO_WIFI_MODULE/parameters/rtw_scan_interval_thr"
fi
# Go to lock after 120 seconds of inactivity
if [ -e "$XDG_CACHE_HOME/sxmo/sxmo.noidle" ]; then
sxmo_daemons.sh stop idle_locker
else
case "$SXMO_WM" in
sway)
sxmo_daemons.sh start idle_locker sxmo_idle.sh -w \
timeout "${SXMO_UNLOCK_IDLE_TIME:-120}" 'sh -c "
swaymsg mode default;
exec sxmo_hook_lock.sh
"'
;;
dwm)
sxmo_daemons.sh start idle_locker sxmo_idle.sh -w \
timeout "${SXMO_UNLOCK_IDLE_TIME:-120}" "sxmo_hook_lock.sh"
;;
esac
fi
wait

View File

@@ -0,0 +1 @@
./three_button_touchscreen

View File

@@ -0,0 +1 @@
./three_button_touchscreen

View File

@@ -0,0 +1 @@
./three_button_touchscreen

View File

@@ -0,0 +1 @@
./three_button_touchscreen

View File

@@ -4,7 +4,7 @@ permit nopass :wheel as root cmd busybox args reboot
permit nopass :wheel as root cmd poweroff
permit nopass :wheel as root cmd reboot
permit nopass :wheel as root cmd sxmo_wifitoggle.sh
permit nopass setenv { SXMO_OS } :wheel as root cmd sxmo_bluetoothtoggle.sh
permit nopass :wheel as root cmd sxmo_bluetoothtoggle.sh
permit nopass :wheel as root cmd rc-service args bluetooth restart
permit nopass :wheel as root cmd systemctl args restart bluetooth
permit nopass :wheel as root cmd tinydm-set-session
@@ -16,9 +16,5 @@ permit nopass :wheel as root cmd systemctl args start eg25-manager
permit nopass :wheel as root cmd systemctl args stop eg25-manager
permit nopass :wheel as root cmd systemctl args start ModemManager
permit nopass :wheel as root cmd systemctl args stop ModemManager
permit nopass :wheel as root cmd rtcwake
permit nopass :wheel as root cmd tee args -a /sys/power/wake_lock
permit nopass :wheel as root cmd tee args -a /sys/power/wake_unlock
permit nopass :wheel as root cmd tee args /sys/power/wakeup_count
permit nopass :wheel as root cmd rc-service args hexagonrpcd-adsp-sensorspd stop
permit nopass :wheel as root cmd systemctl args stop hexagonrpcd-adsp-sensorspd

View File

@@ -1,10 +0,0 @@
[Unit]
Description=Pipewire filter chain
After=pipewire
[Service]
Type=simple
Restart=always
ExecStart=/usr/bin/pipewire -c filter-chain.conf
ExecOnFailure=/usr/bin/sxmo_notify_user.sh "superd failed to start pipewire-filter-chain"
RestartSec=1s

View File

@@ -0,0 +1,5 @@
#!/sbin/openrc-run
description="Set user permissions to aspects of the hardware kernel interface"
command="/usr/bin/sxmo_setpermissions.sh"

View File

@@ -1,6 +0,0 @@
polkit.addRule(function(action, subject) {
if (action.id == "net.hadess.SensorProxy.claim-sensor" &&
subject.isInGroup("plugdev")) {
return polkit.Result.YES;
}
});

View File

@@ -9,18 +9,15 @@
_sxmo_is_running() {
unset SXMO_WM
_XDG_RUNTIME_DIR="$(_sxmo_find_runtime_dir)"
if [ -f "${_XDG_RUNTIME_DIR}"/sxmo.swaysock ]; then
if SWAYSOCK="$(cat "${_XDG_RUNTIME_DIR}"/sxmo.swaysock)" swaymsg 2>/dev/null
then
if [ -f "${XDG_RUNTIME_DIR}"/sxmo.swaysock ]; then
unset SWAYSOCK
if SWAYSOCK="$(cat "${XDG_RUNTIME_DIR}"/sxmo.swaysock)" \
swaymsg 2>/dev/null; then
printf "Detected the Sway environment\n" >&2
export SXMO_WM=sway
unset _XDG_RUNTIME_DIR
return 0
fi
fi
unset _XDG_RUNTIME_DIR
if DISPLAY=:0 xrandr >/dev/null 2>&1; then
printf "Detected the Dwm environment\n" >&2
@@ -39,17 +36,8 @@ _sxmo_find_runtime_dir() {
return
fi
# Try something existing
for root in /run /var/run; do
path="$root/user/$(id -u)"
if [ -d "$path" ] && [ -w "$path" ]; then
printf %s "$path"
return
fi
done
if command -v mkrundir > /dev/null 2>&1; then
mkrundir
if [ -d "/var/run/user/$(id -u)" ]; then
printf "/var/run/user/%s" "$(id -u)"
return
fi
@@ -92,17 +80,11 @@ _sxmo_load_environments() {
export BROWSER="${BROWSER:-firefox}"
export SHELL="${SHELL:-/bin/sh}"
# The user can already force a $SXMO_DEVICE_NAME value in ~/.profile
if [ -z "$SXMO_DEVICE_NAME" ]; then
if [ -e /proc/device-tree/compatible ]; then
# The user can already forced a $SXMO_DEVICE_NAME value
if [ -z "$SXMO_DEVICE_NAME" ] && [ -e /proc/device-tree/compatible ]; then
SXMO_DEVICE_NAME="$(tr -c '\0[:alnum:].,-' '_' < /proc/device-tree/compatible |
tr '\0' '\n' | head -n1)"
else
SXMO_DEVICE_NAME=desktop
fi
fi
export SXMO_DEVICE_NAME
deviceprofile="$(command -v "sxmo_deviceprofile_$SXMO_DEVICE_NAME.sh")"
# shellcheck disable=SC1090
if [ -f "$deviceprofile" ]; then
@@ -116,24 +98,38 @@ _sxmo_load_environments() {
# or suspend
touch "$XDG_CACHE_HOME"/sxmo/sxmo.nosuspend
touch "$XDG_CACHE_HOME"/sxmo/sxmo.noidle
SXMO_DEVICE_NAME=unknown
fi
unset deviceprofile
fi
if [ -n "$SXMO_DEVICE_NAME" ]; then
_device_hooks_path="$(xdg_data_path "sxmo/default_hooks/$SXMO_DEVICE_NAME" 0 ':')"
if [ -z "$_device_hooks_path" ]; then
_device_hooks_path="$(xdg_data_path "sxmo/default_hooks/three_button_touchscreen" 0 ':')"
fi
PATH="\
$XDG_CONFIG_HOME/sxmo/hooks/$SXMO_DEVICE_NAME:\
$XDG_CONFIG_HOME/sxmo/hooks:\
$_device_hooks_path:\
$(xdg_data_path "sxmo/default_hooks" 0 ':'):\
$PATH"
export PATH
else
default_hooks_path=$(xdg_data_path sxmo/default_hooks 0 ':')
export PATH="$XDG_CONFIG_HOME/sxmo/hooks:$default_hooks_path:$PATH"
fi
}
_sxmo_grab_session() {
if ! _sxmo_is_running; then
return
fi
XDG_RUNTIME_DIR="$(_sxmo_find_runtime_dir)"
export XDG_RUNTIME_DIR
if ! _sxmo_is_running; then
unset XDG_RUNTIME_DIR
return
fi
_sxmo_load_environments

View File

@@ -1,7 +0,0 @@
[Unit]
Description=Proxy location data to map applications
[Service]
Type=simple
Restart=always
ExecStart=/usr/libexec/geoclue-2.0/demos/agent

View File

@@ -1,7 +0,0 @@
[Unit]
Description=The Sxmo wallpaper as a service
[Service]
Type=simple
Restart=always
ExecStart=sxmo_bg.sh fill

View File

@@ -1,7 +0,0 @@
[Unit]
Description=A lightweight overlay volume/backlight/progress/anything bar for X11
[Service]
Type=simple
Restart=always
ExecStart=/usr/bin/sxmo_ob.sh xob

Some files were not shown because too many files have changed in this diff Show More