Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
bb862e0f89 | |||
92b077aa67 | |||
be5021e9d8 | |||
3ba6345b5a | |||
12e3906e6b | |||
54948ab328 |
@@ -3,9 +3,9 @@ packages:
|
|||||||
- shellcheck
|
- shellcheck
|
||||||
- editorconfig-checker
|
- editorconfig-checker
|
||||||
- shellspec
|
- shellspec
|
||||||
|
- gojq
|
||||||
- jq
|
- jq
|
||||||
- icu-dev
|
- icu-dev
|
||||||
- linux-headers
|
|
||||||
sources:
|
sources:
|
||||||
- https://git.sr.ht/~mil/sxmo-utils
|
- https://git.sr.ht/~mil/sxmo-utils
|
||||||
tasks:
|
tasks:
|
||||||
|
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -1 +0,0 @@
|
|||||||
Makefile export-subst
|
|
@@ -1,3 +0,0 @@
|
|||||||
tracker https://todo.sr.ht/~mil/sxmo-tickets
|
|
||||||
development-mailing-list ~mil/sxmo-devel@lists.sr.ht
|
|
||||||
patch-prefix true
|
|
88
Makefile
88
Makefile
@@ -4,8 +4,6 @@ SYSCONFDIR:=/etc
|
|||||||
SHAREDIR=$(PREFIX)/share
|
SHAREDIR=$(PREFIX)/share
|
||||||
MANDIR=$(SHAREDIR)/man
|
MANDIR=$(SHAREDIR)/man
|
||||||
|
|
||||||
CFLAGS := -Wall -std=c99 -D_POSIX_C_SOURCE=200809L $(CFLAGS)
|
|
||||||
|
|
||||||
# use $(PREFIX)/lib/systemd/user for systemd integration
|
# use $(PREFIX)/lib/systemd/user for systemd integration
|
||||||
SERVICEDIR:=$(PREFIX)/share/superd/services
|
SERVICEDIR:=$(PREFIX)/share/superd/services
|
||||||
|
|
||||||
@@ -13,98 +11,52 @@ SERVICEDIR:=$(PREFIX)/share/superd/services
|
|||||||
EXTERNAL_SERVICES:=1
|
EXTERNAL_SERVICES:=1
|
||||||
|
|
||||||
SCDOC=scdoc
|
SCDOC=scdoc
|
||||||
SCD2HTML=scd2html
|
|
||||||
SCD2HTMLFLAGS =
|
|
||||||
|
|
||||||
.PHONY: install test shellcheck shellspec test_legacy_nerdfont docs html-docs \
|
.PHONY: install test shellcheck shellspec test_legacy_nerdfont
|
||||||
install-docs install-html-docs install-sway install-dwm install-scripts
|
|
||||||
|
|
||||||
VERSION ?= unknown
|
VERSION:=1.15.2
|
||||||
|
|
||||||
# git archive will expand $Format:true$ to just true, so we can use it to check
|
GITVERSION:=$(shell git describe --tags)
|
||||||
# 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
|
|
||||||
|
|
||||||
OPENRC:=1
|
OPENRC:=1
|
||||||
|
|
||||||
CC ?= $(CROSS_COMPILE)gcc
|
CC ?= $(CROSS_COMPILE)gcc
|
||||||
PROGRAMS = \
|
PROGRAMS = \
|
||||||
programs/sxmo_aligned_sleep \
|
programs/sxmo_aligned_sleep \
|
||||||
programs/sxmo_sleep \
|
programs/sxmo_vibrate
|
||||||
programs/sxmo_vibrate \
|
|
||||||
programs/sxmo_status_led
|
|
||||||
|
|
||||||
DOCS = \
|
DOCS = \
|
||||||
docs/sxmo.7 \
|
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/%: docs/%.scd
|
docs/%: docs/%.scd
|
||||||
$(SCDOC) <$< >$@
|
$(SCDOC) <$< >$@
|
||||||
|
|
||||||
docs: $(DOCS)
|
all: $(PROGRAMS) $(DOCS)
|
||||||
|
|
||||||
html-docs: $(HTMLDOCS)
|
test: shellcheck shellspec test_legacy_nerdfont
|
||||||
|
|
||||||
test: shellcheck shellspec test_legacy_nerdfont test_status_led
|
|
||||||
|
|
||||||
shellcheck:
|
shellcheck:
|
||||||
find . -type f -name '*.sh' -print0 | xargs -0 shellcheck -x --shell=sh
|
find . -type f -name '*.sh' -print0 | xargs -0 shellcheck -x --shell=sh
|
||||||
|
|
||||||
shellspec: ${PROGRAMS}
|
shellspec:
|
||||||
shellspec
|
shellspec
|
||||||
|
|
||||||
test_status_led: programs/sxmo_status_led.test
|
|
||||||
./programs/sxmo_status_led.test
|
|
||||||
|
|
||||||
test_legacy_nerdfont: programs/test_legacy_nerdfont
|
test_legacy_nerdfont: programs/test_legacy_nerdfont
|
||||||
programs/test_legacy_nerdfont < configs/default_hooks/sxmo_hook_icons.sh
|
programs/test_legacy_nerdfont < configs/default_hooks/sxmo_hook_icons.sh
|
||||||
|
|
||||||
programs/sxmo_status_led: LDLIBS := -lm
|
programs/test_legacy_nerdfont: programs/test_legacy_nerdfont.c
|
||||||
programs/sxmo_status_led.test: LDLIBS := -lm
|
$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $< $(shell pkg-config --cflags --libs icu-io)
|
||||||
programs/test_legacy_nerdfont: LDLIBS := $(shell pkg-config --cflags --libs icu-io)
|
|
||||||
|
|
||||||
programs/%: programs/%.c
|
programs/%: programs/%.c
|
||||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $< $(LOADLIBES) $(LDLIBS) -o $@
|
$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $<
|
||||||
|
|
||||||
# only used for sxmo_status_led
|
|
||||||
programs/%.test: programs/%.c
|
|
||||||
$(CC) $(CPPFLAGS) $(CFLAGS) -DTEST $(LDFLAGS) $< $(LOADLIBES) $(LDLIBS) -o $@
|
|
||||||
|
|
||||||
clean:
|
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: install-sway install-dwm install-scripts install-docs
|
||||||
|
|
||||||
install-docs: $(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 ..
|
cd docs && find . -type f -name '*.7' -exec install -D -m 0644 "{}" "$(DESTDIR)$(MANDIR)/man7/{}" \; && cd ..
|
||||||
|
|
||||||
install-html-docs: $(HTMLDOCS)
|
|
||||||
cd docs && find . -type f -name '*.html' -exec install -D -m 0644 "{}" "$(DESTDIR)$(PREFIX)/share/doc/sxmo/html/{}" \; && cd ..
|
|
||||||
|
|
||||||
install-sway:
|
install-sway:
|
||||||
install -D -m 0644 -t $(DESTDIR)$(PREFIX)/share/wayland-sessions/ configs/applications/swmo.desktop
|
install -D -m 0644 -t $(DESTDIR)$(PREFIX)/share/wayland-sessions/ configs/applications/swmo.desktop
|
||||||
@@ -113,13 +65,13 @@ install-dwm:
|
|||||||
install -D -m 0644 -t $(DESTDIR)$(PREFIX)/share/xsessions/ configs/applications/sxmo.desktop
|
install -D -m 0644 -t $(DESTDIR)$(PREFIX)/share/xsessions/ configs/applications/sxmo.desktop
|
||||||
|
|
||||||
install-scripts: $(PROGRAMS)
|
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/"
|
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 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 ..
|
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 ..
|
cd resources && find . -type f -exec install -D -m 0644 "{}" "$(DESTDIR)$(PREFIX)/share/sxmo/{}" \; && cd ..
|
||||||
|
|
||||||
@@ -127,8 +79,6 @@ install-scripts: $(PROGRAMS)
|
|||||||
|
|
||||||
install -D -m 0644 -t $(DESTDIR)$(PREFIX)/share/applications/ configs/xdg/mimeapps.list
|
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)$(SYSCONFDIR)/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
|
install -D -m 0644 -T configs/xorg/monitor.conf $(DESTDIR)$(PREFIX)/share/X11/xorg.conf.d/90-monitor.conf
|
||||||
@@ -145,8 +95,8 @@ install-scripts: $(PROGRAMS)
|
|||||||
# Bin
|
# Bin
|
||||||
install -D -t $(DESTDIR)$(PREFIX)/bin scripts/*/*.sh
|
install -D -t $(DESTDIR)$(PREFIX)/bin scripts/*/*.sh
|
||||||
|
|
||||||
install -t $(DESTDIR)$(PREFIX)/bin/ ${PROGRAMS}
|
install -D programs/sxmo_aligned_sleep $(DESTDIR)$(PREFIX)/bin/
|
||||||
setcap 'cap_wake_alarm=ep' $(DESTDIR)$(PREFIX)/bin/sxmo_sleep
|
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/default_hooks/ -type f -exec ./setup_config_version.sh "{}" \;
|
||||||
find $(DESTDIR)$(PREFIX)/share/sxmo/appcfg/ -type f -exec ./setup_config_version.sh "{}" \;
|
find $(DESTDIR)$(PREFIX)/share/sxmo/appcfg/ -type f -exec ./setup_config_version.sh "{}" \;
|
||||||
@@ -162,5 +112,7 @@ install-scripts: $(PROGRAMS)
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
@echo "-------------------------------------------------------------------">&2
|
@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
|
@echo "-------------------------------------------------------------------">&2
|
||||||
|
@@ -8,11 +8,11 @@ conky.config = {
|
|||||||
draw_shades = true,
|
draw_shades = true,
|
||||||
font = 'Sxmo:size=13',
|
font = 'Sxmo:size=13',
|
||||||
use_xft = true,
|
use_xft = true,
|
||||||
update_interval = 15,
|
update_interval = 5,
|
||||||
}
|
}
|
||||||
|
|
||||||
conky.text = [[
|
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}
|
||||||
]]
|
]]
|
||||||
|
@@ -5,7 +5,6 @@ text-color=#000000
|
|||||||
border-color=#000000
|
border-color=#000000
|
||||||
layer=overlay
|
layer=overlay
|
||||||
group-by=app-name
|
group-by=app-name
|
||||||
on-touch=invoke-default-action
|
|
||||||
|
|
||||||
[urgency=low]
|
[urgency=low]
|
||||||
default-timeout=10000
|
default-timeout=10000
|
||||||
|
@@ -3474,26 +3474,6 @@ Palivere, Estonia 58.9702778 23.9033337
|
|||||||
Aravete, Estonia 59.1416667 25.7613888
|
Aravete, Estonia 59.1416667 25.7613888
|
||||||
Kiili, Estonia 59.3069444 24.8377781
|
Kiili, Estonia 59.3069444 24.8377781
|
||||||
Lagedi, Estonia 59.4055556 24.9422226
|
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
|
Addis Ababa, Ethiopia 9.0333333 38.7000008
|
||||||
Dire Dawa, Ethiopia 9.5930556 41.8661118
|
Dire Dawa, Ethiopia 9.5930556 41.8661118
|
||||||
Nazret, Ethiopia 8.5500000 39.2666664
|
Nazret, Ethiopia 8.5500000 39.2666664
|
||||||
@@ -9260,6 +9240,26 @@ Onverwacht, Suriname 5.5833333 -55.1833344
|
|||||||
Totness, Suriname 5.8833333 -56.3166656
|
Totness, Suriname 5.8833333 -56.3166656
|
||||||
Benzdorp (Monte Hermon), Suriname 3.6720670 -54.1035461
|
Benzdorp (Monte Hermon), Suriname 3.6720670 -54.1035461
|
||||||
Kabana-vo, Suriname 3.6741067 -54.0848846
|
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
|
Stockholm, Sweden 59.3325765 18.0649033
|
||||||
Goteborg, Sweden 57.7071623 11.9667931
|
Goteborg, Sweden 57.7071623 11.9667931
|
||||||
Malmoe, Sweden 55.6058691 13.0007315
|
Malmoe, Sweden 55.6058691 13.0007315
|
||||||
|
Can't render this file because it has a wrong number of fields in line 2.
|
@@ -31,7 +31,7 @@ command -v firefox >/dev/null && export BROWSER=firefox
|
|||||||
export TERMCMD="sxmo_terminal.sh"
|
export TERMCMD="sxmo_terminal.sh"
|
||||||
|
|
||||||
# Change the used terminal command
|
# Change the used terminal command
|
||||||
# export SXMO_TERMINAL="st"
|
# export SXMO_TERMINAL="st -e"
|
||||||
|
|
||||||
# When scrolling past the beginning or end of a menu, wrap it around:
|
# When scrolling past the beginning or end of a menu, wrap it around:
|
||||||
#export DMENU_WRAP_AROUND=1
|
#export DMENU_WRAP_AROUND=1
|
||||||
@@ -68,3 +68,6 @@ export SXMO_RINGNUMBER=10
|
|||||||
|
|
||||||
#Set to the default text for a new text message.
|
#Set to the default text for a new text message.
|
||||||
export SXMO_DEFAULT_DRAFT="Enter new message here."
|
export SXMO_DEFAULT_DRAFT="Enter new message here."
|
||||||
|
|
||||||
|
#Set background image
|
||||||
|
export SXMO_BG_IMG="$(xdg_data_path sxmo/background.jpg)"
|
||||||
|
@@ -31,7 +31,7 @@ mode "menu" {
|
|||||||
# to know the device names, so use it as a fallback so this functionality
|
# to know the device names, so use it as a fallback so this functionality
|
||||||
# keeps working if a deviceprofile doesn't exist.
|
# keeps working if a deviceprofile doesn't exist.
|
||||||
# TODO: the correct way to do this is to implement custom keybindings in
|
# TODO: the correct way to do this is to implement custom keybindings in
|
||||||
# bemenu & wofi
|
# bemenu
|
||||||
bindsym XF86PowerOff exec wtype -k Return
|
bindsym XF86PowerOff exec wtype -k Return
|
||||||
bindsym XF86AudioRaiseVolume exec wtype -k Up
|
bindsym XF86AudioRaiseVolume exec wtype -k Up
|
||||||
bindsym XF86AudioLowerVolume exec wtype -k Down
|
bindsym XF86AudioLowerVolume exec wtype -k Down
|
||||||
@@ -43,15 +43,6 @@ mode "menu" {
|
|||||||
#
|
#
|
||||||
input * xkb_options compose:ralt
|
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
|
# Start a terminal
|
||||||
bindsym $mod+Return exec $term
|
bindsym $mod+Return exec $term
|
||||||
|
|
||||||
@@ -164,7 +155,7 @@ mode "menu" {
|
|||||||
bindsym $mod+a focus parent
|
bindsym $mod+a focus parent
|
||||||
|
|
||||||
# Manual locker
|
# Manual locker
|
||||||
bindsym $mod+g exec sxmo_state.sh set locker
|
bindsym $mod+g exec sxmo_hook_locker.sh
|
||||||
|
|
||||||
# Shutdown
|
# Shutdown
|
||||||
bindsym $mod+t exec sxmo_appmenu.sh power
|
bindsym $mod+t exec sxmo_appmenu.sh power
|
||||||
@@ -222,7 +213,7 @@ bar {
|
|||||||
colors {
|
colors {
|
||||||
statusline #ffffff
|
statusline #ffffff
|
||||||
background #323232
|
background #323232
|
||||||
inactive_workspace #323232 #323232 #ffffff
|
inactive_workspace #32323200 #32323200 #5c5c5c
|
||||||
font "Sxmo 11"
|
font "Sxmo 11"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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
|
|
@@ -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
3
configs/appcfg/xob_styles.cfg
Executable file → Normal file
@@ -1,8 +1,7 @@
|
|||||||
# Space to setup configversion
|
# Space to setup configversion
|
||||||
|
|
||||||
default = {
|
default = {
|
||||||
x = {relative = 0.5; offset = 0;};
|
x = {relative = 0.5; offset = 0;};
|
||||||
y = {relative = 0.05; offset = 0;};
|
y = {relative = 0.15; offset = 0;};
|
||||||
length = {relative = 0.75; offset = 0;};
|
length = {relative = 0.75; offset = 0;};
|
||||||
thickness = 50;
|
thickness = 50;
|
||||||
outline = 3;
|
outline = 3;
|
||||||
|
@@ -15,21 +15,23 @@ write_line_app() {
|
|||||||
executable="$1"
|
executable="$1"
|
||||||
label="$2"
|
label="$2"
|
||||||
command="$3"
|
command="$3"
|
||||||
|
inline="$4"
|
||||||
if command -v "$executable" >/dev/null; then
|
if command -v "$executable" >/dev/null; then
|
||||||
|
if [ "$inline" != "" ]; then
|
||||||
write_line "$label" "$command"
|
write_line "$label" "$command"
|
||||||
|
else
|
||||||
|
write_line "$label" "sxmo_wm.sh exec $command"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
write_line_app gnome-2048 "$icon_gam 2048" "gnome-2048"
|
||||||
write_line_app jami-qt "$icon_msg Jami" "jami-qt"
|
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 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 amberol "$icon_mus Amberol" "amberol $XDG_MUSIC_DIR"
|
||||||
write_line_app harbour-amazfish-ui "$icon_wat Amazfish" "harbour-amazfish-ui"
|
|
||||||
write_line_app amfora "$icon_glb Amfora" "sxmo_terminal.sh amfora"
|
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 animatch "$icon_gam Animatch" "animatch"
|
||||||
|
write_line_app harbour-amazfish-ui "$icon_wat Amazfish" "harbour-amazfish-ui"
|
||||||
write_line_app alpine "$icon_eml Alpine" "sxmo_terminal.sh alpine"
|
write_line_app alpine "$icon_eml Alpine" "sxmo_terminal.sh alpine"
|
||||||
write_line_app anbox-launch "$icon_and Anbox" "anbox"
|
write_line_app anbox-launch "$icon_and Anbox" "anbox"
|
||||||
write_line_app anki "$icon_str Anki" "anki"
|
write_line_app anki "$icon_str Anki" "anki"
|
||||||
@@ -38,18 +40,12 @@ write_line_app badwolf "$icon_glb Badwolf" "badwolf"
|
|||||||
write_line_app gnome-calculator "$icon_clc Calculator" "gnome-calculator"
|
write_line_app gnome-calculator "$icon_clc Calculator" "gnome-calculator"
|
||||||
write_line_app calcurse "$icon_clk Calcurse" "sxmo_terminal.sh calcurse"
|
write_line_app calcurse "$icon_clk Calcurse" "sxmo_terminal.sh calcurse"
|
||||||
write_line_app chatty "$icon_msg Chatty" "chatty"
|
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 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 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 dino "$icon_msg Dino" "GDK_SCALE=1 dino"
|
write_line_app dino "$icon_msg Dino" "GDK_SCALE=1 dino"
|
||||||
write_line_app dolphin "$icon_dir Dolphin" "dolphin"
|
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 (Terminal)" "sxmo_terminal.sh emacs -nw"
|
||||||
write_line_app emacs "$icon_edt Emacs (X)" "emacs"
|
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 epiphany "$icon_glb Epiphany" "epiphany"
|
||||||
write_line_app epy "$icon_bok Epy" "sxmo_terminal.sh epy"
|
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 epr "$icon_bok Epr" "sxmo_terminal.sh epr"
|
||||||
@@ -57,12 +53,10 @@ write_line_app evince "$icon_bok Evince" "evince"
|
|||||||
write_line_app falkon "$icon_flk Falkon" "falkon"
|
write_line_app falkon "$icon_flk Falkon" "falkon"
|
||||||
write_line_app firefox "$icon_ffx Firefox" "firefox"
|
write_line_app firefox "$icon_ffx Firefox" "firefox"
|
||||||
write_line_app firefox-esr "$icon_ffx Firefox ESR" "firefox-esr"
|
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"
|
write_line_app foliate "$icon_bok Foliate" "foliate"
|
||||||
( [ "$SXMO_WM" = sway ] && command -v foot >/dev/null) && \
|
( [ "$SXMO_WM" = sway ] && command -v foot >/dev/null) && \
|
||||||
write_line "$icon_trm Foot" "foot $SHELL"
|
write_line "$icon_trm Foot" "foot $SHELL"
|
||||||
write_line_app foxtrotgps "$icon_gps Foxtrotgps" "foxtrotgps"
|
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 g4music "$icon_mus G4Music" "g4music"
|
||||||
write_line_app geany "$icon_eml Geany" "geany"
|
write_line_app geany "$icon_eml Geany" "geany"
|
||||||
write_line_app geary "$icon_eml Geary" "geary"
|
write_line_app geary "$icon_eml Geary" "geary"
|
||||||
@@ -71,100 +65,70 @@ write_line_app geeqie "$icon_img Geeqie" "geeqie"
|
|||||||
write_line_app geopard "$icon_glb Geopard" "geopard"
|
write_line_app geopard "$icon_glb Geopard" "geopard"
|
||||||
write_line_app gerbil "$icon_glb Gerbil" "gerbil"
|
write_line_app gerbil "$icon_glb Gerbil" "gerbil"
|
||||||
write_line_app giara "$icon_red Giara" "giara"
|
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-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-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 gomuks "$icon_msg Gomuks" "sxmo_terminal.sh gomuks"
|
||||||
write_line_app gpodder "$icon_rss gPodder" "gpodder"
|
write_line_app gpodder "$icon_rss gPodder" "gpodder"
|
||||||
write_line_app gucharmap "$icon_inf Gucharmap" "gucharmap"
|
write_line_app gucharmap "$icon_inf Gucharmap" "gucharmap"
|
||||||
write_line_app hexchat "$icon_msg Hexchat" "hexchat"
|
write_line_app hexchat "$icon_msg Hexchat" "hexchat"
|
||||||
write_line_app htop "$icon_cfg Htop" "sxmo_terminal.sh htop"
|
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 irssi "$icon_msg Irssi" "sxmo_terminal.sh irssi"
|
||||||
write_line_app ii "$icon_msg Ii" "sxmo_terminal.sh ii"
|
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 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 kasts "$icon_rss Kasts" "kasts"
|
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 kmail "$icon_eml KMail" "kmail"
|
||||||
write_line_app komikku "$icon_bok Komikku" "komikku"
|
write_line_app komikku "$icon_bok Komikku" "komikku"
|
||||||
write_line_app kontact "$icon_msg Kontact" "kontact"
|
write_line_app kontact "$icon_msg Kontact" "kontact"
|
||||||
write_line_app konversation "$icon_msg Konversation" "konversation"
|
write_line_app konversation "$icon_msg Konversation" "konversation"
|
||||||
write_line_app koreader "$icon_bok KOReader" "koreader"
|
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 kwrite "$icon_edt Kwrite" "kwrite"
|
||||||
write_line_app lagrange "$icon_glb Lagrange" "lagrange"
|
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 lf "$icon_dir Lf" "sxmo_terminal.sh lf"
|
||||||
write_line_app librewolf "$icon_glb Librewolf" "librewolf"
|
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 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 luakit "$icon_glb Luakit" "luakit"
|
||||||
write_line_app marble "$icon_map Marble" "marble"
|
write_line_app marble "$icon_map Marble" "marble"
|
||||||
write_line_app gnome-maps "$icon_map Maps" "gnome-maps"
|
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 micro "$icon_edt Micro" "sxmo_terminal.sh micro"
|
||||||
write_line_app midori "$icon_glb Midori" "midori"
|
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 mutt "$icon_eml Mutt" "sxmo_terminal.sh mutt"
|
||||||
write_line_app mumble "$icon_grp Mumble" mumble
|
write_line_app mumble "$icon_grp Mumble" mumble
|
||||||
write_line_app nano "$icon_edt Nano" "sxmo_terminal.sh nano"
|
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 navit "$icon_gps Navit" "navit"
|
||||||
write_line_app ncmpcpp "$icon_mus Ncmpcpp" "sxmo_terminal.sh ncmpcpp"
|
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 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 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 netsurf "$icon_glb Netsurf" "netsurf"
|
||||||
write_line_app newsboat "$icon_rss Newsboat" "sxmo_terminal.sh newsboat"
|
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 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 nnn "$icon_dir Nnn" "sxmo_terminal.sh nnn"
|
||||||
|
write_line_app io.github.lainsce.Notejot "$icon_drw Notejot" io.github.lainsce.Notejot
|
||||||
write_line_app numberstation "$icon_clc Numberstation" "numberstation"
|
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 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 pidgin "$icon_msg Pidgin" "pidgin"
|
||||||
|
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 mepo "$icon_map mepo" "mepo"
|
||||||
write_line_app podboat "$icon_rss Podboat" "sxmo_terminal.sh podboat"
|
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 dev.tchx84.Portfolio "$icon_dir Portfolio" "dev.tchx84.Portfolio"
|
||||||
write_line_app profanity "$icon_msg Profanity" "sxmo_terminal.sh profanity"
|
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 qutebrowser "$icon_glb Qutebrowser" "qutebrowser"
|
write_line_app qutebrowser "$icon_glb Qutebrowser" "qutebrowser"
|
||||||
write_line_app ranger "$icon_dir Ranger" "sxmo_terminal.sh ranger"
|
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 sacc "$icon_glb Sacc" "sxmo_terminal.sh sacc i-logout.cz/1/bongusta"
|
||||||
write_line_app secrets "$icon_lck Secrets" "secrets"
|
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 senpai "$icon_msg Senpai" "sxmo_terminal.sh senpai"
|
||||||
write_line_app sic "$icon_msg Sic" "sxmo_terminal.sh sic"
|
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) && \
|
([ "$SXMO_WM" = dwm ] && command -v st >/dev/null) && \
|
||||||
write_line "$icon_trm St" "st -e $SHELL"
|
write_line "$icon_trm St" "st -e $SHELL"
|
||||||
write_line_app surf "$icon_glb Surf" "surf"
|
write_line_app surf "$icon_glb Surf" "surf"
|
||||||
write_line_app syncthing "$icon_rld Syncthing" "syncthing"
|
write_line_app syncthing "$icon_rld Syncthing" "syncthing"
|
||||||
write_line_app syncthing-gtk "$icon_rld Syncthing GTK" "syncthing-gtk"
|
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 telegram-desktop "$icon_tgm Telegram" "telegram-desktop"
|
||||||
write_line_app termite "$icon_trm Termite" "termite -e $SHELL"
|
write_line_app termite "$icon_trm Termite" "termite -e $SHELL"
|
||||||
write_line_app thunar "$icon_dir Thunar" "sxmo_terminal.sh thunar"
|
write_line_app thunar "$icon_dir Thunar" "sxmo_terminal.sh thunar"
|
||||||
write_line_app thunderbird "$icon_eml Thunderbird" "thunderbird"
|
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 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 re.sonny.Tangram "$icon_glb Tangram" "re.sonny.Tangram"
|
||||||
write_line_app totem "$icon_mvi Totem" "totem"
|
write_line_app totem "$icon_mvi Totem" "totem"
|
||||||
@@ -174,6 +138,7 @@ 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 waydroid "$icon_and Waydroid" "waydroid show-full-ui"
|
||||||
write_line_app weechat "$icon_msg Weechat" "sxmo_terminal.sh weechat"
|
write_line_app weechat "$icon_msg Weechat" "sxmo_terminal.sh weechat"
|
||||||
write_line_app wike "$icon_bok Wike" "wike"
|
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 w3m "$icon_glb W3m" "sxmo_terminal.sh w3m duck.com"
|
||||||
write_line_app vim "$icon_vim Vim" "sxmo_terminal.sh vim"
|
write_line_app vim "$icon_vim Vim" "sxmo_terminal.sh vim"
|
||||||
write_line_app vimb "$icon_glb Vimb" "vimb"
|
write_line_app vimb "$icon_glb Vimb" "vimb"
|
||||||
@@ -183,7 +148,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"
|
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) && \
|
([ "$SXMO_WM" = dwm ] && command -v xcalc >/dev/null) && \
|
||||||
write_line "$icon_clc Xcalc" "xcalc"
|
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 xournal "$icon_bok Xournal" "xournal"
|
||||||
write_line_app xournalpp "$icon_bok Xournalpp" "xournalpp"
|
write_line_app xournalpp "$icon_bok Xournalpp" "xournalpp"
|
||||||
write_line_app zathura "$icon_bok Zathura" "zathura"
|
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 --wrapper='sxmo_wm.sh exec'" "inline"
|
||||||
|
@@ -9,8 +9,6 @@ data_get() {
|
|||||||
printf "%b" "$data" | grep "^$1:" | cut -d: -f2
|
printf "%b" "$data" | grep "^$1:" | cut -d: -f2
|
||||||
}
|
}
|
||||||
|
|
||||||
SET_LED_PATH="$XDG_RUNTIME_DIR/sxmo_hook_battery_set_led"
|
|
||||||
|
|
||||||
device_changed() {
|
device_changed() {
|
||||||
name="$(data_get "native-path")"
|
name="$(data_get "native-path")"
|
||||||
state="$(data_get "state")"
|
state="$(data_get "state")"
|
||||||
@@ -24,14 +22,6 @@ device_changed() {
|
|||||||
return
|
return
|
||||||
fi
|
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"
|
sxmo_hook_statusbar.sh battery "$name" "$state" "$percentage"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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$"
|
|
@@ -68,12 +68,8 @@ active_mosh() {
|
|||||||
command -v mosh-server && pgrep -f mosh-server
|
command -v mosh-server && pgrep -f mosh-server
|
||||||
}
|
}
|
||||||
|
|
||||||
active_mpc() {
|
playing_mpc() {
|
||||||
if ! command -v mpc; then
|
command -v mpc && mpc status | grep -q '\[playing\]'
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
mpc status | grep -q '\[playing\]\|Updating'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
playing_mpris() {
|
playing_mpris() {
|
||||||
@@ -95,7 +91,7 @@ while [ "$waited" != "0" ]; do
|
|||||||
wait_item hotspot_active
|
wait_item hotspot_active
|
||||||
wait_item ssh_connected
|
wait_item ssh_connected
|
||||||
wait_item active_mosh
|
wait_item active_mosh
|
||||||
wait_item active_mpc
|
wait_item playing_mpc
|
||||||
wait_item playing_mpris
|
wait_item playing_mpris
|
||||||
wait_item photos_processing
|
wait_item photos_processing
|
||||||
done
|
done
|
||||||
|
@@ -9,3 +9,27 @@
|
|||||||
|
|
||||||
# shellcheck source=scripts/core/sxmo_common.sh
|
# shellcheck source=scripts/core/sxmo_common.sh
|
||||||
. 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
|
||||||
|
|
||||||
|
sxmo_modemaudio.sh is_disabled_speaker && sxmo_modemaudio.sh is_unmuted_mic
|
||||||
|
# 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
|
||||||
|
|
||||||
|
sxmo_modemaudio.sh is_enabled_speaker
|
||||||
|
fi
|
||||||
|
@@ -77,8 +77,8 @@ case "$WMCLASS" in
|
|||||||
) ^ 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' && (rm $XDG_CACHE_HOME/sxmo/sxmo.nogesture 2>/dev/null || touch $XDG_CACHE_HOME/sxmo/sxmo.nogesture)
|
||||||
$icon_cfg Toggle Bar ^ 0 ^ sxmo_wm.sh togglebar
|
$icon_cfg Toggle Bar ^ 0 ^ sxmo_wm.sh togglebar
|
||||||
$icon_bth Bluetooth $(
|
$icon_bth Bluetooth $(
|
||||||
rfkill list bluetooth -no ID,SOFT,HARD | grep -vq " blocked" &&
|
rfkill list bluetooth | grep -q "yes" &&
|
||||||
printf %b "$icon_ton" || printf %b "$icon_tof";
|
printf %b "$icon_tof" || printf %b "$icon_ton";
|
||||||
printf %b "^ 1 ^ doas sxmo_bluetoothtoggle.sh && sxmo_hook_statusbar.sh bluetooth"
|
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")
|
$(test "$SXMO_WM" = dwm && printf %b "$icon_cfg Invert Colors ^ 1 ^ xcalib -a -invert")
|
||||||
@@ -104,7 +104,6 @@ case "$WMCLASS" in
|
|||||||
$icon_cfg Edit configuration ^ 0 ^ sxmo_terminal.sh $EDITOR $XDG_CONFIG_HOME/sxmo/$(test "$SXMO_WM" = sway && printf sway || printf xinit)
|
$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")
|
$(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_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_inf Version ^ 0 ^ sxmo_terminal.sh sxmo_version.sh --block
|
$icon_inf Version ^ 0 ^ sxmo_terminal.sh sxmo_version.sh --block
|
||||||
"
|
"
|
||||||
WINNAME=Config
|
WINNAME=Config
|
||||||
@@ -217,18 +216,9 @@ case "$WMCLASS" in
|
|||||||
WINNAME=St
|
WINNAME=St
|
||||||
;;
|
;;
|
||||||
*foot*|*st*|*terminal*|org.gnome.vte.application|*alacritty*)
|
*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:
|
# First we try to handle the app running inside the terminal:
|
||||||
case " $WMNAME " in
|
WMNAME="${1:-$(printf %s "$XPROPOUT" | grep title: | cut -d" " -f2- | tr '[:upper:]' '[:lower:]')}"
|
||||||
*" vi "*|*" vim "*|*" vis "*|*" nvim "*|*neovim*|*kakoune*)
|
if printf %s "$WMNAME" | grep -qi -E -w "(vi|vim|vis|nvim|neovim|kakoune)"; then
|
||||||
#Vim in foot
|
#Vim in foot
|
||||||
CHOICES="
|
CHOICES="
|
||||||
$icon_cls Save and Quit ^ 0 ^ sxmo_type -k Escape -s 300 ':wq' -k Return
|
$icon_cls Save and Quit ^ 0 ^ sxmo_type -k Escape -s 300 ':wq' -k Return
|
||||||
@@ -247,8 +237,7 @@ case "$WMCLASS" in
|
|||||||
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
||||||
"
|
"
|
||||||
WINNAME=Vim
|
WINNAME=Vim
|
||||||
;;
|
elif printf %s "$WMNAME" | grep -qi -w "nano"; then
|
||||||
*nano*)
|
|
||||||
#Nano in foot
|
#Nano in foot
|
||||||
CHOICES="
|
CHOICES="
|
||||||
$icon_aru Scroll up ^ 1 ^ sxmo_type -k Prior
|
$icon_aru Scroll up ^ 1 ^ sxmo_type -k Prior
|
||||||
@@ -263,8 +252,7 @@ case "$WMCLASS" in
|
|||||||
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
||||||
"
|
"
|
||||||
WINNAME=Nano
|
WINNAME=Nano
|
||||||
;;
|
elif printf %s "$WMNAME" | grep -qi -w "micro"; then
|
||||||
*micro*)
|
|
||||||
#Micro
|
#Micro
|
||||||
CHOICES="
|
CHOICES="
|
||||||
$icon_aru Scroll up ^ 1 ^ sxmo_type -k Prior
|
$icon_aru Scroll up ^ 1 ^ sxmo_type -k Prior
|
||||||
@@ -282,8 +270,7 @@ case "$WMCLASS" in
|
|||||||
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
||||||
"
|
"
|
||||||
WINNAME=Micro
|
WINNAME=Micro
|
||||||
;;
|
elif printf %s "$WMNAME" | grep -qi -w "tuir"; then
|
||||||
*tuir*)
|
|
||||||
#tuir (reddit client) in foot
|
#tuir (reddit client) in foot
|
||||||
CHOICES="
|
CHOICES="
|
||||||
$icon_aru Previous ^ 1 ^ sxmo_type k
|
$icon_aru Previous ^ 1 ^ sxmo_type k
|
||||||
@@ -301,8 +288,7 @@ case "$WMCLASS" in
|
|||||||
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
||||||
"
|
"
|
||||||
WINNAME=tuir
|
WINNAME=tuir
|
||||||
;;
|
elif printf %s "$WMNAME" | grep -qi -w "w3m"; then
|
||||||
*w3m*)
|
|
||||||
#w3m
|
#w3m
|
||||||
CHOICES="
|
CHOICES="
|
||||||
$icon_arl Back ^ 1 ^ sxmo_type b
|
$icon_arl Back ^ 1 ^ sxmo_type b
|
||||||
@@ -318,8 +304,7 @@ case "$WMCLASS" in
|
|||||||
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
||||||
"
|
"
|
||||||
WINNAME=w3m
|
WINNAME=w3m
|
||||||
;;
|
elif printf %s "$WMNAME" | grep -qi -w "ncmpcpp"; then
|
||||||
*ncmpcpp*)
|
|
||||||
#ncmpcpp
|
#ncmpcpp
|
||||||
CHOICES="
|
CHOICES="
|
||||||
$icon_lst Playlist ^ 0 ^ sxmo_type 1
|
$icon_lst Playlist ^ 0 ^ sxmo_type 1
|
||||||
@@ -335,8 +320,7 @@ case "$WMCLASS" in
|
|||||||
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
||||||
"
|
"
|
||||||
WINNAME=ncmpcpp
|
WINNAME=ncmpcpp
|
||||||
;;
|
elif printf %s "$WMNAME" | grep -qi -w "aerc"; then
|
||||||
*aerc*)
|
|
||||||
#aerc
|
#aerc
|
||||||
CHOICES="
|
CHOICES="
|
||||||
$icon_pau Archive ^ 1 ^ sxmo_type ':archive flat' -k Return
|
$icon_pau Archive ^ 1 ^ sxmo_type ':archive flat' -k Return
|
||||||
@@ -347,8 +331,7 @@ case "$WMCLASS" in
|
|||||||
$icon_trm xdg-open Part ^ 0 ^ sxmo_type ':open' -k Return
|
$icon_trm xdg-open Part ^ 0 ^ sxmo_type ':open' -k Return
|
||||||
"
|
"
|
||||||
WINNAME=aerc
|
WINNAME=aerc
|
||||||
;;
|
elif printf %s "$WMNAME" | grep -qi -E -w "(less|mless)"; then
|
||||||
*less*|*"git blame"*|*"git diff"*|*"git grep"*|*"git help"*|*"git log"*|*"git stash"*|*"git tag"*|*"git var"*)
|
|
||||||
#less
|
#less
|
||||||
CHOICES="
|
CHOICES="
|
||||||
$icon_arr Page next ^ 1 ^ sxmo_type ':n' -k Return
|
$icon_arr Page next ^ 1 ^ sxmo_type ':n' -k Return
|
||||||
@@ -361,8 +344,13 @@ case "$WMCLASS" in
|
|||||||
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
||||||
"
|
"
|
||||||
WINNAME=less
|
WINNAME=less
|
||||||
;;
|
elif printf %s "$WMNAME" | grep -qi -w "git \(blame\|diff\|grep\|help\|log\|stash\|tag\|var\)"; then
|
||||||
*git*)
|
# 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).
|
# git am, branch, config, tag (and other commands which launch both).
|
||||||
CHOICES="
|
CHOICES="
|
||||||
$icon_fil ${PAGER:-less} menu ^ 0 ^ sxmo_appmenu.sh '$WMCLASS ${PAGER:-less}'
|
$icon_fil ${PAGER:-less} menu ^ 0 ^ sxmo_appmenu.sh '$WMCLASS ${PAGER:-less}'
|
||||||
@@ -370,8 +358,7 @@ case "$WMCLASS" in
|
|||||||
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
||||||
"
|
"
|
||||||
WINNAME=git
|
WINNAME=git
|
||||||
;;
|
elif printf %s "$WMNAME" | grep -qi -w "senpai"; then
|
||||||
*senpai*)
|
|
||||||
CHOICES="
|
CHOICES="
|
||||||
$icon_aru Scroll up ^ 1 ^ sxmo_type -k Prior
|
$icon_aru Scroll up ^ 1 ^ sxmo_type -k Prior
|
||||||
$icon_ard Scroll down ^ 1 ^ sxmo_type -k Next
|
$icon_ard Scroll down ^ 1 ^ sxmo_type -k Next
|
||||||
@@ -381,8 +368,7 @@ case "$WMCLASS" in
|
|||||||
$icon_usr Toggle Members ^ 0 ^ sxmo_type -k F8
|
$icon_usr Toggle Members ^ 0 ^ sxmo_type -k F8
|
||||||
"
|
"
|
||||||
WINNAME=senpai
|
WINNAME=senpai
|
||||||
;;
|
elif printf %s "$WMNAME" | grep -qi -w "weechat"; then
|
||||||
*weechat*)
|
|
||||||
#weechat
|
#weechat
|
||||||
CHOICES="
|
CHOICES="
|
||||||
$icon_msg Hotlist Next ^ 1 ^ sxmo_type -M Alt a
|
$icon_msg Hotlist Next ^ 1 ^ sxmo_type -M Alt a
|
||||||
@@ -394,8 +380,7 @@ case "$WMCLASS" in
|
|||||||
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
||||||
"
|
"
|
||||||
WINNAME=weechat
|
WINNAME=weechat
|
||||||
;;
|
elif printf %s "$WMNAME" | grep -qi -w "sms\|missed call"; then
|
||||||
*" sms "*|*"missed call"*)
|
|
||||||
number="$(printf "%s\n" "$WMNAME" | xargs -0 pnc find | tr -d '\n')"
|
number="$(printf "%s\n" "$WMNAME" | xargs -0 pnc find | tr -d '\n')"
|
||||||
#sms
|
#sms
|
||||||
CHOICES="
|
CHOICES="
|
||||||
@@ -420,8 +405,7 @@ case "$WMCLASS" in
|
|||||||
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
||||||
"
|
"
|
||||||
WINNAME=phone
|
WINNAME=phone
|
||||||
;;
|
elif printf %s "$WMNAME" | grep -qi -w "cmus"; then
|
||||||
*cmus*)
|
|
||||||
# cmus
|
# cmus
|
||||||
# requires `:set set_term_title=false` in cmus to match the application
|
# requires `:set set_term_title=false` in cmus to match the application
|
||||||
CHOICES="
|
CHOICES="
|
||||||
@@ -435,29 +419,7 @@ case "$WMCLASS" in
|
|||||||
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
$icon_mnu Terminal menu ^ 0 ^ sxmo_appmenu.sh $WMCLASS
|
||||||
"
|
"
|
||||||
WINNAME=cmus
|
WINNAME=cmus
|
||||||
;;
|
else
|
||||||
*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
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
# Now we fallback to the default terminal menu
|
# Now we fallback to the default terminal menu
|
||||||
case "$WMCLASS" in
|
case "$WMCLASS" in
|
||||||
*st*)
|
*st*)
|
||||||
@@ -519,7 +481,7 @@ case "$WMCLASS" in
|
|||||||
WINNAME=Alacritty
|
WINNAME=Alacritty
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
esac
|
fi
|
||||||
;;
|
;;
|
||||||
*okular*)
|
*okular*)
|
||||||
# Okular
|
# Okular
|
||||||
@@ -574,7 +536,6 @@ case "$WMCLASS" in
|
|||||||
# Netsurf
|
# Netsurf
|
||||||
CHOICES="
|
CHOICES="
|
||||||
$icon_flt Pipe URL ^ 0 ^ sxmo_urlhandler.sh
|
$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_zmi Zoom ^ 1 ^ sxmo_type -M Ctrl -k plus
|
||||||
$icon_zmo Zoom ^ 1 ^ sxmo_type -M Ctrl -k minus
|
$icon_zmo Zoom ^ 1 ^ sxmo_type -M Ctrl -k minus
|
||||||
$icon_arl History ^ 1 ^ sxmo_type -M Alt -k Left
|
$icon_arl History ^ 1 ^ sxmo_type -M Alt -k Left
|
||||||
@@ -635,26 +596,9 @@ case "$WMCLASS" in
|
|||||||
"
|
"
|
||||||
WINNAME=Firefox
|
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*)
|
*vimb*)
|
||||||
CHOICES="
|
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_zmi Zoom ^ 1 ^ sxmo_type -k Escape zi
|
||||||
$icon_zmo Zoom ^ 1 ^ sxmo_type -k Escape zo
|
$icon_zmo Zoom ^ 1 ^ sxmo_type -k Escape zo
|
||||||
$icon_arl History ^ 1 ^ sxmo_type -M Ctrl o
|
$icon_arl History ^ 1 ^ sxmo_type -M Ctrl o
|
||||||
@@ -671,12 +615,12 @@ case "$WMCLASS" in
|
|||||||
$icon_cls Close Tab ^ 0 ^ sxmo_type -M Ctrl w
|
$icon_cls Close Tab ^ 0 ^ sxmo_type -M Ctrl w
|
||||||
$icon_bok Open Bookmarks ^ 0 ^ sxmo_type -M Ctrl b
|
$icon_bok Open Bookmarks ^ 0 ^ sxmo_type -M Ctrl b
|
||||||
$icon_pls Add Bookmark ^ 0 ^ sxmo_type -M Ctrl d
|
$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_zmi Increase Font Size ^ 1 ^ sxmo_type -M Ctrl -k plus
|
||||||
$icon_zmo Decrease Font Size ^ 1 ^ sxmo_type -M Ctrl -k minus
|
$icon_zmo Decrease Font Size ^ 1 ^ sxmo_type -M Ctrl -k minus
|
||||||
$icon_arl History Back ^ 1 ^ sxmo_type -M Alt -k Left
|
$icon_arl History Back ^ 1 ^ sxmo_type -M Alt -k Left
|
||||||
$icon_arr History Forward ^ 1 ^ sxmo_type -M Alt -k Right
|
$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
|
$icon_rld Refresh ^ 0 ^ sxmo_type -k F6 -k Return
|
||||||
"
|
"
|
||||||
WINNAME=Geopard
|
WINNAME=Geopard
|
||||||
@@ -702,7 +646,7 @@ case "$WMCLASS" in
|
|||||||
$icon_zmi Zoom in ^ 1 ^ sxmo_type -M ctrl =
|
$icon_zmi Zoom in ^ 1 ^ sxmo_type -M ctrl =
|
||||||
$icon_zmo Zoom out ^ 1 ^ sxmo_type -M ctrl -k minus
|
$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 Explore POI ^ 0 ^ sxmo_type -M ctrl -M Shift F
|
||||||
$icon_fnd Search ^ 0 ^ sxmo_type -M ctrl f
|
$icon_fnd Search ^ 0 ^ sxmo_type -M ctrl f && sxmo_keyboard.sh open
|
||||||
$icon_lst Show last results ^ 0 ^ sxmo_type -M ctrl r
|
$icon_lst Show last results ^ 0 ^ sxmo_type -M ctrl r
|
||||||
$icon_map Toggle route planner ^ 0 ^ sxmo_type -M ctrl d
|
$icon_map Toggle route planner ^ 0 ^ sxmo_type -M ctrl d
|
||||||
$icon_gps Show current location ^ 0 ^ sxmo_type -M ctrl l
|
$icon_gps Show current location ^ 0 ^ sxmo_type -M ctrl l
|
||||||
@@ -727,110 +671,26 @@ case "$WMCLASS" in
|
|||||||
"
|
"
|
||||||
WINNAME=Maps
|
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)
|
# Default system menu (no matches)
|
||||||
CHOICES="
|
CHOICES="
|
||||||
$icon_grd Scripts ^ 0 ^ sxmo_appmenu.sh scripts
|
$icon_grd Scripts ^ 0 ^ sxmo_appmenu.sh scripts
|
||||||
$icon_grd Apps ^ 0 ^ sxmo_appmenu.sh applications
|
$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_grd Binaries ^ 0 ^ sxmo_brun.sh
|
||||||
$icon_dir Files ^ 0 ^ sxmo_files.sh
|
$icon_dir Files ^ 0 ^ sxmo_files.sh
|
||||||
$icon_phn Dialer ^ 0 ^ sxmo_modemdial.sh
|
$icon_phn Dialer ^ 0 ^ sxmo_modemdial.sh
|
||||||
$icon_msg Texts ^ 0 ^ sxmo_modemtext.sh
|
$icon_msg Texts ^ 0 ^ sxmo_modemtext.sh
|
||||||
$icon_usr Contacts ^ 0 ^ sxmo_contactmenu.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"
|
printf %b "$icon_bth Bluetooth ^ 1 ^ sxmo_bluetoothmenu.sh"
|
||||||
)
|
)
|
||||||
$(command -v megapixels >/dev/null && echo "$icon_cam Camera ^ 0 ^ GDK_SCALE=2 megapixels")
|
$(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"
|
printf "%s Flashlight " "$icon_fll"
|
||||||
[ "$brightness" -gt 0 ] &&
|
sxmo_led.sh get white | grep -vq ^100$ &&
|
||||||
printf %b "$icon_ton" || printf %b "$icon_tof";
|
printf %b "$icon_tof" || printf %b "$icon_ton";
|
||||||
printf %b "^ 1 ^ sxmo_flashtoggle.sh"
|
printf %b "^ 1 ^ sxmo_flashtoggle.sh"
|
||||||
fi
|
fi
|
||||||
)
|
)
|
||||||
@@ -839,7 +699,6 @@ case "$WMCLASS" in
|
|||||||
$icon_phn Modem ^ 0 ^ sxmo_appmenu.sh modem
|
$icon_phn Modem ^ 0 ^ sxmo_appmenu.sh modem
|
||||||
$icon_win Windows ^ 0 ^ sxmo_wmmenu.sh
|
$icon_win Windows ^ 0 ^ sxmo_wmmenu.sh
|
||||||
$icon_cfg Config ^ 0 ^ sxmo_appmenu.sh config
|
$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
|
$icon_pwr Power ^ 0 ^ sxmo_appmenu.sh power
|
||||||
"
|
"
|
||||||
WINNAME=Sys
|
WINNAME=Sys
|
||||||
|
@@ -83,13 +83,11 @@ icon_mod="" # modem
|
|||||||
icon_mov=""
|
icon_mov=""
|
||||||
icon_mse="" # computer mouse (🖱️)
|
icon_mse="" # computer mouse (🖱️)
|
||||||
icon_msg="" #text
|
icon_msg="" #text
|
||||||
icon_mtr="" # metronome
|
|
||||||
icon_mus=""
|
icon_mus=""
|
||||||
icon_mut="" #mute
|
icon_mut="" #mute
|
||||||
icon_mvi="" #movie
|
icon_mvi="" #movie
|
||||||
icon_net=""
|
icon_net=""
|
||||||
icon_nto="" #no touch
|
icon_nto="" #no touch
|
||||||
icon_nvi="" # neovim
|
|
||||||
icon_nxt="" #next
|
icon_nxt="" #next
|
||||||
icon_out="" #logout
|
icon_out="" #logout
|
||||||
icon_pau=""
|
icon_pau=""
|
||||||
@@ -109,10 +107,8 @@ icon_rol="" #rotate left
|
|||||||
icon_ror="" #rotate right
|
icon_ror="" #rotate right
|
||||||
icon_rss=""
|
icon_rss=""
|
||||||
icon_sav="" #save
|
icon_sav="" #save
|
||||||
icon_scn="" #scanner
|
|
||||||
icon_sfl="" #shuffle, random
|
icon_sfl="" #shuffle, random
|
||||||
icon_shr="" #shrink
|
icon_shr="" #shrink
|
||||||
icon_sim="" # sim card
|
|
||||||
icon_snd="" #send
|
icon_snd="" #send
|
||||||
icon_spk="" #speaker
|
icon_spk="" #speaker
|
||||||
icon_spl=""
|
icon_spl=""
|
||||||
|
@@ -3,8 +3,7 @@
|
|||||||
# Copyright 2022 Sxmo Contributors
|
# Copyright 2022 Sxmo Contributors
|
||||||
|
|
||||||
# This script handles input actions, it is called by lisgd for gestures
|
# This script handles input actions, it is called by lisgd for gestures
|
||||||
# and by dwm for button presses. Gestures are tied to actions in
|
# and by dwm for button presses
|
||||||
# sxmo_hook_lisgdstart.sh .
|
|
||||||
|
|
||||||
ACTION="$1"
|
ACTION="$1"
|
||||||
|
|
||||||
@@ -20,9 +19,9 @@ XPROPOUT="$(sxmo_wm.sh focusedwindow)"
|
|||||||
WMCLASS="$(printf %s "$XPROPOUT" | grep app: | cut -d" " -f2- | tr '[:upper:]' '[:lower:]')"
|
WMCLASS="$(printf %s "$XPROPOUT" | grep app: | cut -d" " -f2- | tr '[:upper:]' '[:lower:]')"
|
||||||
WMNAME="$(printf %s "$XPROPOUT" | grep title: | 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
|
if ! grep -q unlock "$SXMO_STATE"; then
|
||||||
case "$WMNAME" in # Handle programs
|
case "$WMNAME" in # Handle programs
|
||||||
*"epy"*|*"epr"*)
|
*"epy"*|*"epr"*)
|
||||||
case "$ACTION" in
|
case "$ACTION" in
|
||||||
@@ -98,48 +97,6 @@ case "$WMCLASS" in
|
|||||||
;;
|
;;
|
||||||
esac
|
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
|
*"foot"*|*"st"*|*"vte"*|"terminal") # Terminals
|
||||||
case "$WMCLASS" in # Handle programs without touch support
|
case "$WMCLASS" in # Handle programs without touch support
|
||||||
*"st"*)
|
*"st"*)
|
||||||
@@ -361,11 +318,7 @@ case "$ACTION" in
|
|||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
"voldown_one")
|
"voldown_one")
|
||||||
if [ -n "$SXMO_NO_VIRTUAL_KEYBOARD" ]; then
|
|
||||||
sxmo_killwindow.sh
|
|
||||||
else
|
|
||||||
sxmo_keyboard.sh toggle
|
sxmo_keyboard.sh toggle
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
"voldown_two")
|
"voldown_two")
|
||||||
@@ -421,19 +374,11 @@ case "$ACTION" in
|
|||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
"upbottomedge")
|
"upbottomedge")
|
||||||
if [ -n "$SXMO_NO_VIRTUAL_KEYBOARD" ]; then
|
|
||||||
sxmo_terminal.sh
|
|
||||||
else
|
|
||||||
sxmo_keyboard.sh open
|
sxmo_keyboard.sh open
|
||||||
fi
|
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
"downbottomedge")
|
"downbottomedge")
|
||||||
if [ -n "$SXMO_NO_VIRTUAL_KEYBOARD" ]; then
|
|
||||||
sxmo_killwindow.sh
|
|
||||||
else
|
|
||||||
sxmo_keyboard.sh close
|
sxmo_keyboard.sh close
|
||||||
fi
|
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
"downtopedge")
|
"downtopedge")
|
||||||
|
@@ -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
|
|
@@ -2,10 +2,6 @@
|
|||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
# Copyright 2022 Sxmo Contributors
|
# 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
|
# shellcheck source=scripts/core/sxmo_common.sh
|
||||||
. sxmo_common.sh
|
. sxmo_common.sh
|
||||||
|
|
||||||
|
@@ -47,14 +47,6 @@ vibrate() {
|
|||||||
done &
|
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)
|
# RING & VIBRATE MODE (DEFAULT)
|
||||||
if [ ! -f "$XDG_CONFIG_HOME"/sxmo/.noring ] && [ ! -f "$XDG_CONFIG_HOME"/sxmo/.novibrate ]; then
|
if [ ! -f "$XDG_CONFIG_HOME"/sxmo/.noring ] && [ ! -f "$XDG_CONFIG_HOME"/sxmo/.novibrate ]; then
|
||||||
sxmo_log "RING AND VIBRATE"
|
sxmo_log "RING AND VIBRATE"
|
||||||
|
@@ -22,10 +22,7 @@ sxmo_led.sh blink red blue &
|
|||||||
sxmo_wm.sh dpms on
|
sxmo_wm.sh dpms on
|
||||||
sxmo_wm.sh inputevent touchscreen off
|
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 - 2 sxmo_led.sh blink red blue
|
||||||
sxmo_jobs.sh start periodic_blink \
|
|
||||||
sxmo_run_periodically.sh -w 2 -- sxmo_led.sh blink red blue
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$SXMO_WM" in
|
case "$SXMO_WM" in
|
||||||
dwm)
|
dwm)
|
||||||
@@ -40,11 +37,3 @@ esac
|
|||||||
sxmo_jobs.sh stop idle_locker
|
sxmo_jobs.sh stop idle_locker
|
||||||
|
|
||||||
wait
|
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
|
|
||||||
|
@@ -17,17 +17,7 @@
|
|||||||
. sxmo_common.sh
|
. sxmo_common.sh
|
||||||
|
|
||||||
# do nothing if active call
|
# do nothing if active call
|
||||||
if sxmo_modemcall.sh list_active_calls | grep -q active; then
|
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 [ ! -f "$XDG_CONFIG_HOME"/sxmo/.noring ]; 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 &
|
||||||
@@ -38,3 +28,5 @@ if [ ! -f "$XDG_CONFIG_HOME"/sxmo/.novibrate ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
wait
|
wait
|
||||||
|
|
||||||
|
fi
|
||||||
|
@@ -2,8 +2,6 @@
|
|||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
# Copyright 2022 Sxmo Contributors
|
# Copyright 2022 Sxmo Contributors
|
||||||
|
|
||||||
# Runs upon system start and starts various background services
|
|
||||||
|
|
||||||
# include common definitions
|
# include common definitions
|
||||||
# shellcheck source=scripts/core/sxmo_common.sh
|
# shellcheck source=scripts/core/sxmo_common.sh
|
||||||
. sxmo_common.sh
|
. sxmo_common.sh
|
||||||
@@ -53,10 +51,10 @@ case "$SXMO_WM" in
|
|||||||
superctl start sxmo_wob
|
superctl start sxmo_wob
|
||||||
superctl start sxmo_menumode_toggler
|
superctl start sxmo_menumode_toggler
|
||||||
superctl start bonsaid
|
superctl start bonsaid
|
||||||
|
swaymsg output '*' bg "$SXMO_BG_IMG" fill
|
||||||
;;
|
;;
|
||||||
dwm)
|
dwm)
|
||||||
superctl start dunst
|
superctl start dunst
|
||||||
superctl start sxmo_xob
|
|
||||||
|
|
||||||
# Auto hide cursor with touchscreen, Show it with a mouse
|
# Auto hide cursor with touchscreen, Show it with a mouse
|
||||||
if command -v "unclutter-xfixes" > /dev/null; then
|
if command -v "unclutter-xfixes" > /dev/null; then
|
||||||
@@ -71,6 +69,7 @@ case "$SXMO_WM" in
|
|||||||
superctl start sxmo-x11-status
|
superctl start sxmo-x11-status
|
||||||
superctl start bonsaid
|
superctl start bonsaid
|
||||||
[ -n "$SXMO_MONITOR" ] && xrandr --output "$SXMO_MONITOR" --primary
|
[ -n "$SXMO_MONITOR" ] && xrandr --output "$SXMO_MONITOR" --primary
|
||||||
|
feh --bg-fill "$SXMO_BG_IMG"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -97,9 +96,6 @@ if [ -z "$SXMO_NO_MODEM" ] && command -v ModemManager > /dev/null; then
|
|||||||
sxmo_wakelock.sh lock sxmo_modem_warming_up 120s
|
sxmo_wakelock.sh lock sxmo_modem_warming_up 120s
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Start the desktop wallpaper
|
|
||||||
superctl start sxmo_bg
|
|
||||||
|
|
||||||
# Start the desktop widget (e.g. clock)
|
# Start the desktop widget (e.g. clock)
|
||||||
superctl start sxmo_conky
|
superctl start sxmo_conky
|
||||||
|
|
||||||
|
@@ -17,14 +17,9 @@
|
|||||||
# right and "variable" icons (that come and go) on the left.
|
# right and "variable" icons (that come and go) on the left.
|
||||||
|
|
||||||
set_time() {
|
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
|
date "+${SXMO_STATUS_DATE_FORMAT:-%H:%M}" | while read -r date; do
|
||||||
sxmobar -a time 99 "$date"
|
sxmobar -a time 99 "$date"
|
||||||
done
|
done
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
set_state() {
|
set_state() {
|
||||||
@@ -37,13 +32,8 @@ set_state() {
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if command -v peanutbutter > /dev/null; then
|
STATE_LABEL="$(cat "$SXMO_STATE")"
|
||||||
# no need for a state icon in this (default) scenario, the state will be obvious, either peanutbutter is on or it isn't
|
case "$STATE_LABEL" in
|
||||||
sxmobar -d state
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$(sxmo_state.sh get)" in
|
|
||||||
screenoff)
|
screenoff)
|
||||||
sxmobar -a -e bold -f red state 90 "$icon_state_screenoff" # filled circle
|
sxmobar -a -e bold -f red state 90 "$icon_state_screenoff" # filled circle
|
||||||
;;
|
;;
|
||||||
@@ -189,10 +179,8 @@ set_modem() {
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if [ "$MODEMSTATE" != failed ] && [ "$MODEMSTATE" != unknown ]; then
|
|
||||||
sxmobar -a -f "$fgcolor" -b "$bgcolor" -t "$style" \
|
sxmobar -a -f "$fgcolor" -b "$bgcolor" -t "$style" \
|
||||||
modem-tech 11 "$MODEMTECHCMP"
|
modem-tech 11 "$MODEMTECHCMP"
|
||||||
fi
|
|
||||||
|
|
||||||
MODEMSIGNALCMP="$icon_modem_signal_0"
|
MODEMSIGNALCMP="$icon_modem_signal_0"
|
||||||
bgcolor=default
|
bgcolor=default
|
||||||
@@ -212,10 +200,8 @@ set_modem() {
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if [ "$MODEMSTATE" != failed ] && [ "$MODEMSTATE" != unknown ]; then
|
|
||||||
sxmobar -a -f "$fgcolor" -b "$bgcolor" -t "$style" \
|
sxmobar -a -f "$fgcolor" -b "$bgcolor" -t "$style" \
|
||||||
modem-signal 12 "$MODEMSIGNALCMP"
|
modem-signal 12 "$MODEMSIGNALCMP"
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# $1 = type (wifi, tun)
|
# $1 = type (wifi, tun)
|
||||||
@@ -429,14 +415,6 @@ set_volume() {
|
|||||||
fi
|
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 "$@"
|
sxmo_debug "$@"
|
||||||
case "$1" in
|
case "$1" in
|
||||||
network)
|
network)
|
||||||
@@ -447,7 +425,7 @@ case "$1" in
|
|||||||
shift
|
shift
|
||||||
set_battery "$@"
|
set_battery "$@"
|
||||||
;;
|
;;
|
||||||
time|modem|volume|state|notifications|notch)
|
time|modem|volume|state|notifications)
|
||||||
set_"$1"
|
set_"$1"
|
||||||
;;
|
;;
|
||||||
periodics|state_change) # 55 s loop and screenlock triggers
|
periodics|state_change) # 55 s loop and screenlock triggers
|
||||||
@@ -455,7 +433,6 @@ case "$1" in
|
|||||||
if [ -z "$SXMO_NO_MODEM" ]; then
|
if [ -z "$SXMO_NO_MODEM" ]; then
|
||||||
set_modem
|
set_modem
|
||||||
fi
|
fi
|
||||||
set_notch
|
|
||||||
set_state
|
set_state
|
||||||
set_network wifi wlan0
|
set_network wifi wlan0
|
||||||
;;
|
;;
|
||||||
@@ -470,7 +447,6 @@ case "$1" in
|
|||||||
fi
|
fi
|
||||||
set_state
|
set_state
|
||||||
set_notifications
|
set_notifications
|
||||||
set_notch
|
|
||||||
set_network wifi wlan0
|
set_network wifi wlan0
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# Runs after wm has been stopped., useful for cleanup
|
# Runs after wm has been stopped.
|
||||||
|
|
||||||
# clean up misc. stale files (if any)
|
# clean up misc. stale files (if any)
|
||||||
rm -rf "$XDG_RUNTIME_DIR"/sxmo*
|
rm -rf "$XDG_RUNTIME_DIR"/sxmo*
|
||||||
|
@@ -33,7 +33,7 @@ mkcontactssedcmd() {
|
|||||||
TODAY="$(date +%F)"
|
TODAY="$(date +%F)"
|
||||||
YESTERDAY="$(date -d "- 1 day" +%F)"
|
YESTERDAY="$(date -d "- 1 day" +%F)"
|
||||||
TWO_DAYS="$(date -d "- 2 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
|
# TODO
|
||||||
#ALIGNSEDCMD="s/^Sent/<right align>/;s/^Received/<left align>/;"
|
#ALIGNSEDCMD="s/^Sent/<right align>/;s/^Received/<left align>/;"
|
||||||
|
@@ -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
|
|
1
configs/default_hooks/unknown
Symbolic link
1
configs/default_hooks/unknown
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
./three_button_touchscreen
|
1
configs/default_hooks/wingtech,wt88047
Symbolic link
1
configs/default_hooks/wingtech,wt88047
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
./three_button_touchscreen
|
1
configs/default_hooks/xiaomi,beryllium
Symbolic link
1
configs/default_hooks/xiaomi,beryllium
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
./three_button_touchscreen
|
1
configs/default_hooks/xiaomi,polaris
Symbolic link
1
configs/default_hooks/xiaomi,polaris
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
./three_button_touchscreen
|
@@ -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 poweroff
|
||||||
permit nopass :wheel as root cmd reboot
|
permit nopass :wheel as root cmd reboot
|
||||||
permit nopass :wheel as root cmd sxmo_wifitoggle.sh
|
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 rc-service args bluetooth restart
|
||||||
permit nopass :wheel as root cmd systemctl args restart bluetooth
|
permit nopass :wheel as root cmd systemctl args restart bluetooth
|
||||||
permit nopass :wheel as root cmd tinydm-set-session
|
permit nopass :wheel as root cmd tinydm-set-session
|
||||||
@@ -20,5 +20,3 @@ 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_lock
|
||||||
permit nopass :wheel as root cmd tee args -a /sys/power/wake_unlock
|
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 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
|
|
||||||
|
@@ -1,6 +0,0 @@
|
|||||||
polkit.addRule(function(action, subject) {
|
|
||||||
if (action.id == "net.hadess.SensorProxy.claim-sensor" &&
|
|
||||||
subject.isInGroup("plugdev")) {
|
|
||||||
return polkit.Result.YES;
|
|
||||||
}
|
|
||||||
});
|
|
@@ -48,11 +48,6 @@ _sxmo_find_runtime_dir() {
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if command -v mkrundir > /dev/null 2>&1; then
|
|
||||||
mkrundir
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Fallback to a shared memory location
|
# Fallback to a shared memory location
|
||||||
printf "/dev/shm/user/%s" "$(id -u)"
|
printf "/dev/shm/user/%s" "$(id -u)"
|
||||||
}
|
}
|
||||||
|
@@ -1,7 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=The Sxmo wallpaper as a service
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
Restart=always
|
|
||||||
ExecStart=sxmo_bg.sh fill
|
|
@@ -4,4 +4,4 @@ Description=display notifications popup messages
|
|||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
Restart=always
|
Restart=always
|
||||||
ExecStart=/usr/bin/sxmo_notifs.sh monitor
|
ExecStart=/usr/bin/sxmo_notificationmonitor.sh
|
||||||
|
@@ -4,4 +4,4 @@ Description=A lightweight overlay volume/backlight/progress/anything bar for Way
|
|||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
Restart=always
|
Restart=always
|
||||||
ExecStart=/usr/bin/sxmo_ob.sh wob
|
ExecStart=/usr/bin/sxmo_wob.sh
|
||||||
|
@@ -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
|
|
@@ -8,9 +8,3 @@ ACTION=="add", SUBSYSTEM=="iio", TEST=="in_proximity_raw" RUN+="/bin/chmod g+rw
|
|||||||
## Read device to monitor event
|
## Read device to monitor event
|
||||||
ACTION=="add", SUBSYSTEM=="iio", TEST=="in_proximity_raw" RUN+="/bin/chgrp input $devnode"
|
ACTION=="add", SUBSYSTEM=="iio", TEST=="in_proximity_raw" RUN+="/bin/chgrp input $devnode"
|
||||||
ACTION=="add", SUBSYSTEM=="iio", TEST=="in_proximity_raw" RUN+="/bin/chmod g+r $devnode"
|
ACTION=="add", SUBSYSTEM=="iio", TEST=="in_proximity_raw" RUN+="/bin/chmod g+r $devnode"
|
||||||
|
|
||||||
# LEDs
|
|
||||||
ACTION=="add", SUBSYSTEM=="leds", RUN+="/bin/chgrp video /sys/class/leds/%k/brightness"
|
|
||||||
ACTION=="add", SUBSYSTEM=="leds", RUN+="/bin/chmod g+w /sys/class/leds/%k/brightness"
|
|
||||||
ACTION=="add", SUBSYSTEM=="leds", RUN+="/bin/chgrp video /sys/class/leds/%k/multi_intensity"
|
|
||||||
ACTION=="add", SUBSYSTEM=="leds", RUN+="/bin/chmod g+w /sys/class/leds/%k/multi_intensity"
|
|
||||||
|
1196
docs/sxmo.7.scd
1196
docs/sxmo.7.scd
File diff suppressed because it is too large
Load Diff
@@ -6,18 +6,18 @@ sxmo_contact.sh - a simple contacts manager
|
|||||||
|
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
|
||||||
*sxmo_contacts.sh* [options]
|
sxmo_contacts.sh allows you to store and lookup contacts in a variety of ways.
|
||||||
|
|
||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
|
|
||||||
Allows you to store and lookup contacts in a variety of ways.
|
TODO
|
||||||
|
|
||||||
# OPTIONS
|
# OPTIONS
|
||||||
|
|
||||||
_string_ (default)
|
_string_ (default)
|
||||||
If _string_ is given, search the contact book for _string_. The output
|
If _string_ is given, search the contact book for _string_. The output
|
||||||
will be CONTACTNAME: PHONENUMBER for each hit. Note it uses grep so
|
will be CONTACTNAME: PHONENUMBER for each hit. Note it uses grep so
|
||||||
multiple hits Are possible.
|
multiple hits are possible.
|
||||||
If no argument is given, then return *all* contacts from the contact
|
If no argument is given, then return *all* contacts from the contact
|
||||||
book and also every number that has ever texted or called you.
|
book and also every number that has ever texted or called you.
|
||||||
The output will be CONTACTNAME: PHONENUMBER (if in the contact book) or
|
The output will be CONTACTNAME: PHONENUMBER (if in the contact book) or
|
||||||
@@ -46,16 +46,19 @@ _string_ (default)
|
|||||||
*--me*
|
*--me*
|
||||||
Return the phonenumber associated with the *Me* entry in contact book.
|
Return the phonenumber associated with the *Me* entry in contact book.
|
||||||
|
|
||||||
*--name-or-number* _phonenumber_
|
*--name-or-nuber* _phonenumber_
|
||||||
Return the contact name (if present) or _phone number_ (if not).
|
Return the contact name (if present) or _phone number_ (if not).
|
||||||
|
|
||||||
*--name* _phonenumber_
|
*--name* _phonenumber_
|
||||||
Return the contact name (if present) or *???* (if not)
|
Return the contact name (if present) or *???* (if not)
|
||||||
|
|
||||||
# ENVIRONMENT
|
# EXIT STATUS
|
||||||
|
|
||||||
*SXMO_CONTACTFILE*
|
# RETURN VALUE
|
||||||
a TSV file containing contacts (~/.config/sxmo/contacts.tsv by default)
|
|
||||||
|
# ERRORS
|
||||||
|
|
||||||
|
# ENVIRONMENT
|
||||||
|
|
||||||
# FILES
|
# FILES
|
||||||
|
|
||||||
@@ -65,10 +68,16 @@ number that has ever texted or called you.
|
|||||||
~/.config/sxmo/contacts.tsv - a TSV file containing contacts in the format
|
~/.config/sxmo/contacts.tsv - a TSV file containing contacts in the format
|
||||||
PHONENUMBER tab CONTACTNAME
|
PHONENUMBER tab CONTACTNAME
|
||||||
|
|
||||||
|
# NOTES
|
||||||
|
|
||||||
|
# BUGS
|
||||||
|
|
||||||
|
# EXAMPLES
|
||||||
|
|
||||||
|
# AUTHORS
|
||||||
|
|
||||||
|
# REPORTING BUGS
|
||||||
|
|
||||||
# COPYRIGHT
|
# COPYRIGHT
|
||||||
|
|
||||||
GNU Affero General Public License v3
|
|
||||||
|
|
||||||
# SEE ALSO
|
# SEE ALSO
|
||||||
|
|
||||||
_sxmo_(7), c.f. CONTACTS section
|
|
||||||
|
@@ -1,17 +0,0 @@
|
|||||||
sxmo_files.sh(1)
|
|
||||||
|
|
||||||
# NAME
|
|
||||||
|
|
||||||
sxmo_files.sh
|
|
||||||
|
|
||||||
# SYNOPSIS
|
|
||||||
|
|
||||||
*sxmo_files.sh*
|
|
||||||
|
|
||||||
# DESCRIPTION
|
|
||||||
|
|
||||||
A menu-based file manager for Sxmo. Invokes _sxmo_open.sh_(1) to open files.
|
|
||||||
|
|
||||||
# SEE ALSO
|
|
||||||
|
|
||||||
_sxmo_(7)
|
|
||||||
|
@@ -1,69 +1,34 @@
|
|||||||
sxmo_migrate.sh(1)
|
*Update migrations*
|
||||||
|
|
||||||
# NAME
|
While developing sxmo, we will regularly update certain configuration
|
||||||
|
files such as the xinit/sway template, the hooks or whatever. These
|
||||||
|
files are typically a mixture of changes by us and customizations by
|
||||||
|
the user. This mixture gives the user maximum flexibility to adapt Sxmo
|
||||||
|
to their liking. However, when we update such files, the challenge is
|
||||||
|
to ensure that user modifications can be easily merged back in again.
|
||||||
|
Moreover, we must ensure the system is never in a broken state because
|
||||||
|
of outdated configurations and version mismatches.
|
||||||
|
|
||||||
sxmo_migrate.sh - migration tool for sxmo
|
Whenever your configuration files are out-of-date when starting Sxmo,
|
||||||
|
they will be moved aside (i.e. renamed with *.needs-revision* extension)
|
||||||
|
and the default configuration will take its place. A red notification
|
||||||
|
will pop up telling you have configuration files that need to be
|
||||||
|
migrated. This migration is done by running a script named
|
||||||
|
_sxmo_migrate_(1). This script can simply be launched from the
|
||||||
|
configuration menu or via ssh (recommended).
|
||||||
|
It first shows the differences between your configuration and the new
|
||||||
|
default, and allows you to edit and apply your configuration accordingly.
|
||||||
|
_sxmo_migrate_(1) use *$DIFFTOOL* to help you merge your changes. By default
|
||||||
|
$DIFFTOOL is set to *vimdiff*.
|
||||||
|
|
||||||
# SYNOPSIS
|
If you have any pending migrations, always make sure to complete the
|
||||||
|
migration process before making any new changes to your configuration.
|
||||||
|
It is also recommended to keep your configuration under version control
|
||||||
|
(e.g. git).
|
||||||
|
|
||||||
*sxmo_migrate.sh* [subcommands...]
|
*Techical details*:
|
||||||
|
|
||||||
# SUBCOMMANDS
|
Sxmo (since 1.8.1) uses explicitly versioned configuration files, meaning
|
||||||
|
|
||||||
*reset*
|
|
||||||
Reverts *all* your configuration files and hooks to the default. Be careful with this one.
|
|
||||||
This is intended as a last resort if you end up with a broken system.
|
|
||||||
All your configuration files will moved out of the way and
|
|
||||||
flagged for migration then.
|
|
||||||
|
|
||||||
*state*
|
|
||||||
Reports whether there are any configuration files/hooks pending migration.
|
|
||||||
|
|
||||||
*sync*
|
|
||||||
Triggers a check of the versions of your configuration files and hooks.
|
|
||||||
It runs automatically when Sxmo starts.
|
|
||||||
|
|
||||||
*sync state*
|
|
||||||
Use this combination after you just finished a migration but didn't restart the
|
|
||||||
system yet
|
|
||||||
|
|
||||||
# DESCRIPTION
|
|
||||||
|
|
||||||
While developing sxmo, we will regularly update certain configuration files
|
|
||||||
such as the xinit/sway template, the hooks or whatever. These files are
|
|
||||||
typically a mixture of changes by us and customizations by the user. This
|
|
||||||
mixture gives the user maximum flexibility to adapt Sxmo to their liking.
|
|
||||||
However, when we update such files, the challenge is to ensure that user
|
|
||||||
modifications can be easily merged back in again. Moreover, we must ensure the
|
|
||||||
system is never in a broken state because of outdated configurations and
|
|
||||||
version mismatches.
|
|
||||||
|
|
||||||
Whenever your configuration files are out-of-date when starting Sxmo, they will
|
|
||||||
be moved aside (i.e. renamed with *.needs-revision* extension) and the default
|
|
||||||
configuration will take its place. This ensures that the system always remains
|
|
||||||
functional and no conflicts should arise. A red notification will pop up
|
|
||||||
telling you have configuration files that need to be migrated.
|
|
||||||
|
|
||||||
The migration is done by running a script named _sxmo_migrate_(1). This script
|
|
||||||
can simply be launched from the configuration menu or via ssh (recommended). It
|
|
||||||
first shows the differences between your configuration and the new default, and
|
|
||||||
allows you to edit and apply your configuration accordingly. If you have
|
|
||||||
_delta_(1) or _colordiff_(1) installed, they will be used to show the diff. In the
|
|
||||||
edit stage, _sxmo_migrate_(1) uses *$DIFFTOOL* to help you merge your changes.
|
|
||||||
By default $DIFFTOOL is set to *vimdiff*. If not available, your regular
|
|
||||||
*$EDITOR* will be used.
|
|
||||||
|
|
||||||
If you have any pending migrations, always make sure to complete the migration
|
|
||||||
process before making any new changes to your configuration. It is also
|
|
||||||
recommended to keep your configuration under version control (e.g. git).
|
|
||||||
|
|
||||||
*Note:* The order of the diff arguments can be changed by setting environment
|
|
||||||
variable *$SXMO_MIGRATE_ORDER* to "user:system", instead of the default
|
|
||||||
"system:user". It can also be toggled at runtime.
|
|
||||||
|
|
||||||
# TECHNICAL DETAILS
|
|
||||||
|
|
||||||
Sxmo uses explicitly versioned configuration files, meaning
|
|
||||||
that they each carry a simple version hash unique to the file.
|
that they each carry a simple version hash unique to the file.
|
||||||
This version hash is expressed in a comment in the file itself, such as:
|
This version hash is expressed in a comment in the file itself, such as:
|
||||||
|
|
||||||
@@ -73,29 +38,28 @@ This version hash is expressed in a comment in the file itself, such as:
|
|||||||
|
|
||||||
You should *only* update this version hash when *sxmo_migrate.sh*
|
You should *only* update this version hash when *sxmo_migrate.sh*
|
||||||
prompts you to do so by showing a diff of a newer configversion hash.
|
prompts you to do so by showing a diff of a newer configversion hash.
|
||||||
This information is used to determine whether your custom configuration
|
|
||||||
is up-to-date with the system-supplied defaults.
|
|
||||||
|
|
||||||
## RESOLVING SYSTEM CONFIGURATIONS ON SYSTEM UPGRADE AND MAKE
|
If you want to see what files are disabled and need migration, run
|
||||||
|
*sxmo_migrate.sh state*, or run *sxmo_migrate.sh sync state* if
|
||||||
|
you just performed an upgrade and haven't restarted yet. If you want to
|
||||||
|
revert *all* your configuration files to the default, then you can
|
||||||
|
run *sxmo_migrate.sh reset*. This is usually a last resort if you
|
||||||
|
end up with a broken system and can be considered a kind of factory
|
||||||
|
reset, all your configuration files will moved out of the way and
|
||||||
|
flagged for migration then.
|
||||||
|
|
||||||
_apk_(1), on postmarketOS, will install new configs as *.apk-new* on upgrades if you
|
The process that checks the versions of your configuration files is
|
||||||
have modified the original config in */etc*. Moreover, when hacking on Sxmo,
|
*sxmo_migrate.sh sync*, it runs automatically when Sxmo starts.
|
||||||
you will often run *make install* and this may _modify_ a config in */etc* from
|
|
||||||
apk's perspective. You can merge apk's config changes by running *doas
|
|
||||||
update-conf*. You can also run *apk audit* to list all the files that have
|
|
||||||
changed from what apk originally installed.
|
|
||||||
|
|
||||||
# ENVIRONMENT
|
*Resolving system configs on system upgrade and make*
|
||||||
|
|
||||||
_sxmo_migrate_(1) read the following environment variables:
|
Apk will install new configs as
|
||||||
|
*.apk-new* on upgrades if you have modified the original config in */etc*.
|
||||||
|
Moreover, when hacking on Sxmo, you will often run `make install`and this may "modify"
|
||||||
|
a config in /etc from apk's perspective.
|
||||||
|
You can merge apk's config changes by running `doas update-conf`. You can also run `apk audit`
|
||||||
|
to list all the files that have changed from what apk originally installed.
|
||||||
|
|
||||||
*DIFFTOOL*
|
SEE ALSO: _sxmo_migrate_(1)
|
||||||
The diff tool to use for *editing* and resolving migrations (not for display).
|
|
||||||
|
|
||||||
*SXMO_MIGRATE_ORDER*
|
|
||||||
Can be set to "user:system" or "system:user" (default). Determines the order
|
|
||||||
in which arguments are passed to diff and therefore how results are colored.
|
|
||||||
|
|
||||||
# SEE ALSO
|
|
||||||
|
|
||||||
_sxmo_(7)
|
|
||||||
|
0
docs/sxmo_notificationwrite.sh.1.scd
Normal file
0
docs/sxmo_notificationwrite.sh.1.scd
Normal file
@@ -1,33 +0,0 @@
|
|||||||
sxmo_wakelock.sh(1)
|
|
||||||
|
|
||||||
# NAME
|
|
||||||
|
|
||||||
sxmo_wakelock.sh - Sets or remove wakelocks
|
|
||||||
|
|
||||||
# SYNOPSIS
|
|
||||||
|
|
||||||
*sxmo_wakelock.sh* [subcommand]
|
|
||||||
|
|
||||||
# DESCRIPTION
|
|
||||||
|
|
||||||
This script sets or removes a wakelock, a wakelock tells the kernel to ensure a device is awake at a particular time.
|
|
||||||
|
|
||||||
# SUBCOMMNANDS
|
|
||||||
|
|
||||||
*isenabled*
|
|
||||||
Indicates whether a wake lock funcionality is available. Exit code 0 means it is, non-zero means it is not.
|
|
||||||
|
|
||||||
*lock* <lock-name> <DURATION|nanosec|infinite>
|
|
||||||
Sets a wakelock, *DURATION* is be an integer with suffix ms (milliseconds),
|
|
||||||
s (seconds) ,h (hours), mn (minutes), or an integer in nanoseconds if no
|
|
||||||
unit was provided. It may also be the string "infinite".
|
|
||||||
|
|
||||||
*unlock* <lock-name>
|
|
||||||
Removes a wakelock
|
|
||||||
|
|
||||||
*run* <command>
|
|
||||||
Spawn a command and set set a wakelock for its entire duration.
|
|
||||||
|
|
||||||
# SEE ALSO
|
|
||||||
|
|
||||||
_sxmo_(7)
|
|
0
docs/sxmo_wakelocks.sh.1.scd
Normal file
0
docs/sxmo_wakelocks.sh.1.scd
Normal file
@@ -1,70 +0,0 @@
|
|||||||
#include <errno.h> // error handling
|
|
||||||
#include <stdint.h> // uint64_t type
|
|
||||||
#include <stdio.h> // dprintf
|
|
||||||
#include <stdlib.h> // strtol, exit
|
|
||||||
#include <string.h> // strerror, strcmp
|
|
||||||
#include <sys/timerfd.h> // timers
|
|
||||||
#include <unistd.h> // read
|
|
||||||
|
|
||||||
static void error(char *message, int err) {
|
|
||||||
dprintf(2, "%s: %s\n", message, strerror(err));
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void usage(char *cmd, char *msg) {
|
|
||||||
dprintf(2, "Usage: %s [-c <clock-name>] <seconds>\n", cmd);
|
|
||||||
dprintf(2, "%s\n", msg);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
|
||||||
uint64_t buf;
|
|
||||||
long duration = -1;
|
|
||||||
int time_fd;
|
|
||||||
int clockid = CLOCK_REALTIME;
|
|
||||||
|
|
||||||
struct itimerspec time = {
|
|
||||||
.it_value = { .tv_sec = 0, .tv_nsec = 0 },
|
|
||||||
.it_interval = { .tv_sec = 0, .tv_nsec = 0 }
|
|
||||||
};
|
|
||||||
|
|
||||||
for (int i = 1; i < argc; i += 1) {
|
|
||||||
if (0 == strcmp(argv[i], "-c")) {
|
|
||||||
if (argc <= i + 1) {
|
|
||||||
usage(argv[0], "You must pass a clock name.");
|
|
||||||
}
|
|
||||||
if (0 == strcmp(argv[i+1], "realtime")) {
|
|
||||||
clockid = CLOCK_REALTIME;
|
|
||||||
} else if (0 == strcmp(argv[i+1], "monotonic")) {
|
|
||||||
clockid = CLOCK_MONOTONIC;
|
|
||||||
} else if (0 == strcmp(argv[i+1], "boottime")) {
|
|
||||||
clockid = CLOCK_BOOTTIME;
|
|
||||||
} else if (0 == strcmp(argv[i+1], "realtime_alarm")) {
|
|
||||||
clockid = CLOCK_REALTIME_ALARM;
|
|
||||||
} else if (0 == strcmp(argv[i+1], "boottime_alarm")) {
|
|
||||||
clockid = CLOCK_BOOTTIME_ALARM;
|
|
||||||
} else {
|
|
||||||
usage(argv[0], "Unknown clock name.");
|
|
||||||
}
|
|
||||||
i += 1;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
duration = strtol(argv[i], NULL, 0);;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (duration <= 0) {
|
|
||||||
usage(argv[0], "You must pass a duration in second.");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setup timer
|
|
||||||
if ((time_fd = timerfd_create(clockid, TFD_CLOEXEC)) == -1)
|
|
||||||
error("Failed to create timerfd", errno);
|
|
||||||
|
|
||||||
time.it_value.tv_sec = duration;
|
|
||||||
|
|
||||||
if (timerfd_settime(time_fd, 0, &time, NULL) == -1)
|
|
||||||
error("Failed to set timer",errno);
|
|
||||||
|
|
||||||
// Wait for timer
|
|
||||||
read(time_fd, &buf, sizeof(uint64_t));
|
|
||||||
}
|
|
@@ -1,584 +0,0 @@
|
|||||||
// SPDX-License-Identifier: AGPL-3.0-only
|
|
||||||
// Copyright 2024 Aren Moynihan
|
|
||||||
// Copyright 2024 Sxmo Contributors
|
|
||||||
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <math.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
// for tests
|
|
||||||
#include <assert.h>
|
|
||||||
|
|
||||||
#define BIT(n) 1<<n
|
|
||||||
|
|
||||||
// Logging functions
|
|
||||||
#define info(...) ({ if (verbose) fprintf(stderr, __VA_ARGS__); })
|
|
||||||
#define error(format, ...) ({ if (!quiet) fprintf(stderr, format "\n", ## __VA_ARGS__); })
|
|
||||||
|
|
||||||
static bool quiet = false;
|
|
||||||
static bool verbose = false;
|
|
||||||
static char *led_dir = "/sys/class/leds";
|
|
||||||
|
|
||||||
enum color {
|
|
||||||
COLOR_RED,
|
|
||||||
COLOR_GREEN,
|
|
||||||
COLOR_BLUE,
|
|
||||||
COLOR_MAX,
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef union {
|
|
||||||
double colors[COLOR_MAX];
|
|
||||||
struct {
|
|
||||||
double red;
|
|
||||||
double green;
|
|
||||||
double blue;
|
|
||||||
};
|
|
||||||
} led_state;
|
|
||||||
|
|
||||||
struct led_handle {
|
|
||||||
int brightness;
|
|
||||||
int max_brightness;
|
|
||||||
};
|
|
||||||
|
|
||||||
void close_single_led(struct led_handle *led) {
|
|
||||||
if (led->brightness > 0)
|
|
||||||
close(led->brightness);
|
|
||||||
}
|
|
||||||
|
|
||||||
struct multicolor_handle {
|
|
||||||
enum color color_ids[3];
|
|
||||||
|
|
||||||
// file descriptors, names match sysfs
|
|
||||||
FILE *brightness;
|
|
||||||
FILE *multi_intensity;
|
|
||||||
|
|
||||||
int max_brightness;
|
|
||||||
};
|
|
||||||
|
|
||||||
enum led_type {
|
|
||||||
LED_GROUP,
|
|
||||||
LED_MULTICOLOR,
|
|
||||||
};
|
|
||||||
|
|
||||||
struct status_handle {
|
|
||||||
enum led_type type;
|
|
||||||
union {
|
|
||||||
struct multicolor_handle multicolor;
|
|
||||||
struct led_handle group[COLOR_MAX];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
struct timespec delay_length = {
|
|
||||||
.tv_sec = 0,
|
|
||||||
// 150ms
|
|
||||||
.tv_nsec = 150000000,
|
|
||||||
};
|
|
||||||
|
|
||||||
// see include/dt-bindings/leds/common.h in linux kernel source
|
|
||||||
char *types[] = {
|
|
||||||
"status",
|
|
||||||
"indicator",
|
|
||||||
NULL,
|
|
||||||
};
|
|
||||||
|
|
||||||
int dreadint(int fd, int *value) {
|
|
||||||
int ret;
|
|
||||||
char buf[128];
|
|
||||||
char *end;
|
|
||||||
*value = 0;
|
|
||||||
|
|
||||||
ret = lseek(fd, 0, SEEK_SET);
|
|
||||||
if (ret == -1) {
|
|
||||||
perror("dreadint: lseek");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = read(fd, buf, sizeof(buf) - 1);
|
|
||||||
if (ret == -1) {
|
|
||||||
perror("dreadint: read");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
buf[ret] = 0;
|
|
||||||
ret = strtol(buf, &end, 10);
|
|
||||||
if (end == buf) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
*value = ret;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int parse_color_ids(char *input, int length, enum color colors[]) {
|
|
||||||
int color_index = 0;
|
|
||||||
int start = 0;
|
|
||||||
int i = 0;
|
|
||||||
memset(colors, COLOR_MAX, sizeof(enum color)*3);
|
|
||||||
|
|
||||||
while (i < length) {
|
|
||||||
// skip whitespace
|
|
||||||
while (i < length && isspace(input[i])) { i++; }
|
|
||||||
start = i;
|
|
||||||
|
|
||||||
// find the end of the word (next whitespace)
|
|
||||||
while (i < length && !isspace(input[i])) { i++; }
|
|
||||||
|
|
||||||
if (i == start) break;
|
|
||||||
|
|
||||||
// now start points to the first char in the word and i is the last
|
|
||||||
if (strncmp(&input[start], "red", i-start) == 0) {
|
|
||||||
colors[color_index] = COLOR_RED;
|
|
||||||
} else if (strncmp(&input[start], "green", i-start) == 0) {
|
|
||||||
colors[color_index] = COLOR_GREEN;
|
|
||||||
} else if (strncmp(&input[start], "blue", i-start) == 0) {
|
|
||||||
colors[color_index] = COLOR_BLUE;
|
|
||||||
} else {
|
|
||||||
info("Unknown color: \"%.*s\"\n", i-start, &input[start]);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
color_index++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// We expect to find a controls for green, red, and blue channels. To
|
|
||||||
// check this, we convert the colors we found to a bitflag and compare
|
|
||||||
// them to what we expected to have. The color enum starts at zero and
|
|
||||||
// increments by 1, so we can bitshift by that number to decide what bit
|
|
||||||
// to use.
|
|
||||||
return (BIT(colors[0]) | BIT(colors[1]) | BIT(colors[2]))
|
|
||||||
== (BIT(COLOR_RED) | BIT(COLOR_BLUE) | BIT(COLOR_GREEN));
|
|
||||||
}
|
|
||||||
|
|
||||||
bool open_multicolor_led(char *type, struct multicolor_handle *dst) {
|
|
||||||
int ret, fd = 0;
|
|
||||||
char buf[128];
|
|
||||||
|
|
||||||
memset(dst, 0, sizeof(*dst));
|
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "%s/rgb:%s/multi_index", led_dir, type);
|
|
||||||
fd = open(buf, O_RDONLY);
|
|
||||||
if (fd == -1) {
|
|
||||||
info("failed to open %s\n", buf);
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
int size = read(fd, buf, sizeof(buf));
|
|
||||||
buf[size] = 0;
|
|
||||||
if (size <= 0) {
|
|
||||||
perror("while reading multi_index");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
close(fd);
|
|
||||||
|
|
||||||
if (!parse_color_ids(buf, size, dst->color_ids)) {
|
|
||||||
info("failed to parse multi_index\n");
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "%s/rgb:%s/max_brightness", led_dir, type);
|
|
||||||
fd = open(buf, O_RDONLY);
|
|
||||||
if (fd <= 0)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = dreadint(fd, &dst->max_brightness);
|
|
||||||
if (ret == -1) {
|
|
||||||
info("dreadint: read: %d\n", errno);
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
close(fd);
|
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "%s/rgb:%s/brightness", led_dir, type);
|
|
||||||
dst->brightness = fopen(buf, "r+");
|
|
||||||
if (dst->brightness == NULL)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "%s/rgb:%s/multi_intensity", led_dir, type);
|
|
||||||
dst->multi_intensity = fopen(buf, "r+");
|
|
||||||
if (dst->multi_intensity == NULL)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
|
|
||||||
error:
|
|
||||||
if (fd > 0) close(fd);
|
|
||||||
if (dst->brightness) fclose(dst->brightness);
|
|
||||||
if (dst->multi_intensity) fclose(dst->multi_intensity);
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
int open_monocolor_led(char *color, char *type, bool flip, struct led_handle *led) {
|
|
||||||
char buf[128];
|
|
||||||
int fd, ret;
|
|
||||||
|
|
||||||
if (flip) {
|
|
||||||
char *tmp = type;
|
|
||||||
type = color;
|
|
||||||
color = tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "%s/%s:%s/brightness", led_dir, color, type);
|
|
||||||
info("attempting to open %s\n", buf);
|
|
||||||
led->brightness = open(buf, O_RDWR);
|
|
||||||
if (led->brightness < 0)
|
|
||||||
return led->brightness;
|
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "%s/%s:%s/max_brightness", led_dir, color, type);
|
|
||||||
fd = open(buf, O_RDONLY);
|
|
||||||
if (fd <= 0)
|
|
||||||
return fd;
|
|
||||||
|
|
||||||
ret = dreadint(fd, &led->max_brightness);
|
|
||||||
if (ret == -1) {
|
|
||||||
info("dreadint: read: %d\n", errno);
|
|
||||||
}
|
|
||||||
|
|
||||||
close(fd);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool open_led_group(
|
|
||||||
struct status_handle *led,
|
|
||||||
char *type, char *red, char *green, char *blue, bool flip
|
|
||||||
) {
|
|
||||||
struct led_handle *ret = led->group;
|
|
||||||
memset(ret, 0, sizeof(struct led_handle) * 3);
|
|
||||||
|
|
||||||
if (-1 == open_monocolor_led(red, type, flip, &ret[COLOR_RED]))
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
if (-1 == open_monocolor_led(green, type, flip, &ret[COLOR_GREEN]))
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
if (-1 == open_monocolor_led(blue, type, flip, &ret[COLOR_BLUE]))
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
|
|
||||||
error:
|
|
||||||
close_single_led(&ret[COLOR_RED]);
|
|
||||||
close_single_led(&ret[COLOR_GREEN]);
|
|
||||||
close_single_led(&ret[COLOR_BLUE]);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool open_status_leds(struct status_handle *led) {
|
|
||||||
// 1) rgb:status
|
|
||||||
// 2) rgb:indicator
|
|
||||||
led->type = LED_MULTICOLOR;
|
|
||||||
for (int i = 0; types[i] != NULL; i++) {
|
|
||||||
if (open_multicolor_led(types[i], &led->multicolor))
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// We check all the multicolor leds, then all the monocolor leds. It's
|
|
||||||
// relatively safe to assume that monocolor leds with the same type, are
|
|
||||||
// in fact the same device, but not guaranteed. Also when
|
|
||||||
// leds-group-multicolor is in use, one device will have both monocolor
|
|
||||||
// and multicolor files, but the monocolor ones will be read only.
|
|
||||||
led->type = LED_GROUP;
|
|
||||||
|
|
||||||
// NOTE: these might not be a single led, there's a good chance we'll
|
|
||||||
// guess right, but we prefer multicolor leds because they don't have
|
|
||||||
// this issue.
|
|
||||||
// 3) {red,green,blue}:status
|
|
||||||
// 4) {red,green,blue}:indicator
|
|
||||||
for (int i = 0; types[i] != NULL; i++) {
|
|
||||||
if (open_led_group(led, types[i], "red", "green", "blue", false))
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 5) status-led:{red,green,blue} (Motorola Droid 4)
|
|
||||||
if (open_led_group(led, "status-led", "red", "green", "blue", true))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
// 6) lp5523:{r,g,b} (Nokia N900)
|
|
||||||
if (open_led_group(led, "lp5523", "r", "g", "b", true))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
int led_max_brightness(struct status_handle *led, enum color led_color) {
|
|
||||||
if (led->type == LED_MULTICOLOR) {
|
|
||||||
return led->multicolor.max_brightness;
|
|
||||||
} else {
|
|
||||||
return led->group[led_color].max_brightness;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int led_pct_to_abs(struct status_handle *led, enum color led_color, double brightness_pct) {
|
|
||||||
return ceil(brightness_pct * (led_max_brightness(led, led_color) / 100.0));
|
|
||||||
}
|
|
||||||
|
|
||||||
double led_abs_to_pct(struct status_handle *led, enum color led_color, int brightness_pct) {
|
|
||||||
return brightness_pct * (100.0 / led_max_brightness(led, led_color));
|
|
||||||
}
|
|
||||||
|
|
||||||
led_state led_state_read(struct status_handle *led) {
|
|
||||||
led_state state = {{ 0, 0, 0 }};
|
|
||||||
|
|
||||||
if (led->type == LED_MULTICOLOR) {
|
|
||||||
int colors[3];
|
|
||||||
rewind(led->multicolor.multi_intensity);
|
|
||||||
|
|
||||||
int ret;
|
|
||||||
ret = fscanf(led->multicolor.multi_intensity, "%d %d %d", &colors[0], &colors[1], &colors[2]);
|
|
||||||
if (ret != 3) {
|
|
||||||
error("Failed to parse multi_intensity file");
|
|
||||||
return state;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < 3; i++) {
|
|
||||||
state.colors[led->multicolor.color_ids[i]] =
|
|
||||||
led_abs_to_pct(led, led->multicolor.color_ids[i], colors[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// This isn't necessary, but it makes the output more consistent
|
|
||||||
// for integration tests.
|
|
||||||
rewind(led->multicolor.multi_intensity);
|
|
||||||
rewind(led->multicolor.brightness);
|
|
||||||
|
|
||||||
return state;
|
|
||||||
} else if (led->type == LED_GROUP) {
|
|
||||||
for (int color_id = 0; color_id < COLOR_MAX; color_id++) {
|
|
||||||
int brightness;
|
|
||||||
dreadint(led->group[color_id].brightness , &brightness);
|
|
||||||
state.colors[color_id] = led_abs_to_pct(led, color_id, brightness);
|
|
||||||
}
|
|
||||||
|
|
||||||
return state;
|
|
||||||
} else {
|
|
||||||
error("unknown led type. This is a bug.");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void led_state_write(struct status_handle *led, led_state state, int color_mask) {
|
|
||||||
if (led->type == LED_MULTICOLOR) {
|
|
||||||
FILE *intensity = led->multicolor.multi_intensity;
|
|
||||||
enum color *color_ids = led->multicolor.color_ids;
|
|
||||||
|
|
||||||
int all_color_mask = (1<<COLOR_MAX) - 1;
|
|
||||||
if (color_mask != all_color_mask) {
|
|
||||||
info("state missing colors, reading them\n");
|
|
||||||
led_state base_state = led_state_read(led);
|
|
||||||
for (int i = 0; i < COLOR_MAX; i++) {
|
|
||||||
if ((color_mask & BIT(i)) == 0)
|
|
||||||
state.colors[i] = base_state.colors[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
info("setting colors: red: %.0f%%, green: %.0f%%, blue: %.0f%% (mask: 0x%x)\n",
|
|
||||||
state.red, state.green, state.blue, color_mask);
|
|
||||||
|
|
||||||
fprintf(intensity, "%d %d %d\n",
|
|
||||||
// The max brightness for all multicolor leds is the
|
|
||||||
// same, so we can hard code it
|
|
||||||
led_pct_to_abs(led, COLOR_MAX, state.colors[color_ids[0]]),
|
|
||||||
led_pct_to_abs(led, COLOR_MAX, state.colors[color_ids[1]]),
|
|
||||||
led_pct_to_abs(led, COLOR_MAX, state.colors[color_ids[2]])
|
|
||||||
);
|
|
||||||
|
|
||||||
fprintf(led->multicolor.brightness, "%d", led->multicolor.max_brightness);
|
|
||||||
|
|
||||||
fflush(intensity);
|
|
||||||
fflush(led->multicolor.brightness);
|
|
||||||
} else if (led->type == LED_GROUP) {
|
|
||||||
info("setting colors: red: %.0f%%, green: %.0f%%, blue: %.0f%% (mask: 0x%x)\n",
|
|
||||||
state.red, state.green, state.blue, color_mask);
|
|
||||||
|
|
||||||
for (int color_id = 0; color_id < COLOR_MAX; color_id++) {
|
|
||||||
if (BIT(color_id) & color_mask) {
|
|
||||||
dprintf(
|
|
||||||
led->group[color_id].brightness, "%d\n",
|
|
||||||
led_pct_to_abs(led, color_id, state.colors[color_id])
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
error("unknown led type. This is a bug.");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void blink_pattern(char *colors[], int argc, struct status_handle *led) {
|
|
||||||
led_state new_state = {{ 0, 0, 0 }};
|
|
||||||
led_state null_state = {{ 0, 0, 0 }};
|
|
||||||
led_state old_state = led_state_read(led);
|
|
||||||
int color_mask = BIT(COLOR_RED) | BIT(COLOR_BLUE) | BIT(COLOR_GREEN);
|
|
||||||
|
|
||||||
for (int i=0; i<argc; i++) {
|
|
||||||
if (strcmp("red", colors[i]) == 0) {
|
|
||||||
new_state.red = 100;
|
|
||||||
} else if (strcmp("green", colors[i]) == 0) {
|
|
||||||
new_state.green = 100;
|
|
||||||
} else if (strcmp("blue", colors[i]) == 0) {
|
|
||||||
new_state.blue = 100;
|
|
||||||
} else {
|
|
||||||
error("expected color to be one of red, green, or blue. Found %s.", colors[i]);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
led_state_write(led, null_state, color_mask);
|
|
||||||
nanosleep(&delay_length, NULL);
|
|
||||||
|
|
||||||
led_state_write(led, new_state, color_mask);
|
|
||||||
nanosleep(&delay_length, NULL);
|
|
||||||
|
|
||||||
led_state_write(led, null_state, color_mask);
|
|
||||||
nanosleep(&delay_length, NULL);
|
|
||||||
|
|
||||||
led_state_write(led, old_state, color_mask);
|
|
||||||
}
|
|
||||||
|
|
||||||
void set_usage(char *name) {
|
|
||||||
printf("usage: %s: [-q] [-v] set <color> <value> [color value]...\n", name);
|
|
||||||
}
|
|
||||||
|
|
||||||
int set_main(struct status_handle *led, int argi, int argc, char *argv[]) {
|
|
||||||
int args = argc - (argi);
|
|
||||||
int color_mask = 0;
|
|
||||||
led_state state;
|
|
||||||
|
|
||||||
if (args % 2 != 0 || args < 2) {
|
|
||||||
set_usage(argv[0]);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = argi; (i + 1) < argc; i += 2) {
|
|
||||||
char *color_str = argv[i];
|
|
||||||
char *value_str = argv[i + 1];
|
|
||||||
char *end = NULL;
|
|
||||||
enum color color_id;
|
|
||||||
|
|
||||||
errno = 0;
|
|
||||||
long value = strtol(value_str, &end, 10);
|
|
||||||
|
|
||||||
if (end == NULL || *end != 0 || errno) {
|
|
||||||
error("Unable to convert \"%s\" to a number", value_str);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strcmp(color_str, "red") == 0) {
|
|
||||||
color_id = COLOR_RED;
|
|
||||||
} else if (strcmp(color_str, "green") == 0) {
|
|
||||||
color_id = COLOR_GREEN;
|
|
||||||
} else if (strcmp(color_str, "blue") == 0) {
|
|
||||||
color_id = COLOR_BLUE;
|
|
||||||
} else {
|
|
||||||
error("Unknown color \"%s\", expected one of \"red\", \"green\", or \"blue\"", color_str);
|
|
||||||
}
|
|
||||||
|
|
||||||
info("setting color %s(%d) to %ld\n", color_str, color_id, value);
|
|
||||||
|
|
||||||
state.colors[color_id] = value;
|
|
||||||
color_mask |= BIT(color_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
led_state_write(led, state, color_mask);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int cmd_main(int argc, char *argv[]) {
|
|
||||||
int argi = 1;
|
|
||||||
|
|
||||||
while (argi < argc) {
|
|
||||||
char *arg = argv[argi];
|
|
||||||
if (strcmp(arg, "-q") == 0) {
|
|
||||||
quiet = true;
|
|
||||||
} else if (strcmp(arg, "-v") == 0) {
|
|
||||||
verbose = true;
|
|
||||||
info("enabling verbose mode\n");
|
|
||||||
} else if (strcmp(arg, "--debug-led-dir") == 0) {
|
|
||||||
argi++;
|
|
||||||
if (argi >= argc) {
|
|
||||||
error("--debug-led-dir requires a path paraemter");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
led_dir = argv[argi];
|
|
||||||
} else {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
argi++;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct status_handle led;
|
|
||||||
if (!open_status_leds(&led)) {
|
|
||||||
error("Unable to find suitable status led");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
info("found a suitable status led\n");
|
|
||||||
for (int i = argi; i < argc; i++) {
|
|
||||||
if (strcmp("set", argv[i]) == 0) {
|
|
||||||
return set_main(&led, i + 1, argc, argv);
|
|
||||||
} else if (strcmp("blink", argv[i]) == 0) {
|
|
||||||
blink_pattern(&argv[i+1], argc-i-1, &led);
|
|
||||||
break;
|
|
||||||
} else if (strcmp("check", argv[i]) == 0) {
|
|
||||||
// status leds have already been successfully acquired
|
|
||||||
return 0;
|
|
||||||
} else {
|
|
||||||
fprintf(stderr, "Error: expected command to be one of set, or blink. Found %s\n.", argv[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool parse_color_ids_str(char *input, enum color words[]) {
|
|
||||||
return parse_color_ids(input, strlen(input), words);
|
|
||||||
}
|
|
||||||
|
|
||||||
#define assert_colors(zero, one, two) \
|
|
||||||
assert(words[0] == zero && words[1] == one && words[2] == two)
|
|
||||||
|
|
||||||
int test_main() {
|
|
||||||
info("starting test suite\n");
|
|
||||||
enum color words[3];
|
|
||||||
bool ret;
|
|
||||||
|
|
||||||
ret = parse_color_ids_str("red green blue", words);
|
|
||||||
assert(ret);
|
|
||||||
assert_colors(COLOR_RED, COLOR_GREEN, COLOR_BLUE);
|
|
||||||
|
|
||||||
// it should handle newlines
|
|
||||||
ret = parse_color_ids_str("blue green red\n", words);
|
|
||||||
assert(ret);
|
|
||||||
assert_colors(COLOR_BLUE, COLOR_GREEN, COLOR_RED);
|
|
||||||
|
|
||||||
ret = parse_color_ids_str("green blue red", words);
|
|
||||||
assert(ret);
|
|
||||||
assert_colors(COLOR_GREEN, COLOR_BLUE, COLOR_RED);
|
|
||||||
|
|
||||||
ret = parse_color_ids_str("green blue brown red", words);
|
|
||||||
assert(!ret);
|
|
||||||
|
|
||||||
ret = parse_color_ids_str("blue red brown", words);
|
|
||||||
assert(!ret);
|
|
||||||
|
|
||||||
ret = parse_color_ids_str("blue green", words);
|
|
||||||
assert(!ret);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
|
||||||
#ifdef TEST
|
|
||||||
return test_main();
|
|
||||||
#else
|
|
||||||
return cmd_main(argc, argv);
|
|
||||||
#endif
|
|
||||||
}
|
|
@@ -11,7 +11,7 @@
|
|||||||
menu() {
|
menu() {
|
||||||
SUBREDDIT="$(
|
SUBREDDIT="$(
|
||||||
printf %b "Close Menu\n$(echo "$SXMO_SUBREDDITS" | tr " " '\n')" |
|
printf %b "Close Menu\n$(echo "$SXMO_SUBREDDITS" | tr " " '\n')" |
|
||||||
sxmo_dmenu.sh -p "Subreddit:"
|
sxmo_dmenu_with_kb.sh -p "Subreddit:"
|
||||||
)" || exit 0
|
)" || exit 0
|
||||||
[ "Close Menu" = "$SUBREDDIT" ] && exit 0
|
[ "Close Menu" = "$SUBREDDIT" ] && exit 0
|
||||||
|
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
# scrot refuses to work with double quotes
|
# scrot refuses to work with double quotes
|
||||||
# shellcheck disable=SC2016
|
# shellcheck disable=SC2016
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
exit_msg() {
|
exit_msg() {
|
||||||
printf "%s\n" "$1" > /dev/stderr
|
printf "%s\n" "$1" > /dev/stderr
|
||||||
@@ -21,18 +22,7 @@ sway_screenshot() {
|
|||||||
check_command slurp || exit_msg "slurp command must be available to make a selection."
|
check_command slurp || exit_msg "slurp command must be available to make a selection."
|
||||||
|
|
||||||
area="$(slurp -o)"
|
area="$(slurp -o)"
|
||||||
if [ -z "$area" ]; then
|
grim -g "$area" "$1"
|
||||||
area="$(swaymsg -t get_outputs | jq -r '.[] |select (.focused) | .rect | "\(.x),\(.y) \(.width)x\(.height)"')"
|
|
||||||
fi
|
|
||||||
wxh=$(echo "$area" | cut -d " " -f 2)
|
|
||||||
w=$(echo "$wxh" | cut -d "x" -f 1)
|
|
||||||
h=$(echo "$wxh" | cut -d "x" -f 2)
|
|
||||||
if [ -n "$wxh" ] && [ "$w" -gt 9 ] && [ "$h" -gt 9 ]; then
|
|
||||||
#we have a selection (bigger than 9x9)
|
|
||||||
grim -g "$area" "$1" || exit_msg "Screenshot failed"
|
|
||||||
else
|
|
||||||
exit_msg "Invalid screenshot selection (too small)"
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
xorg_screenshot() {
|
xorg_screenshot() {
|
||||||
@@ -77,4 +67,4 @@ screenshot "$FILENAME"
|
|||||||
yank "$FILENAME"
|
yank "$FILENAME"
|
||||||
printf %s "$FILENAME"
|
printf %s "$FILENAME"
|
||||||
|
|
||||||
notify-send --urgency=low "Screenshot taken" "$FILENAME"
|
notify-send --urgency=low "Screenshot taken"
|
||||||
|
5
scripts/appscripts/sxmo_screenshot_selection.sh
Executable file
5
scripts/appscripts/sxmo_screenshot_selection.sh
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
# Copyright 2022 Sxmo Contributors
|
||||||
|
# title="$icon_cam Screenshot (selection)"
|
||||||
|
sxmo_screenshot.sh selection
|
@@ -6,44 +6,20 @@
|
|||||||
# shellcheck source=scripts/core/sxmo_common.sh
|
# shellcheck source=scripts/core/sxmo_common.sh
|
||||||
. sxmo_common.sh
|
. sxmo_common.sh
|
||||||
|
|
||||||
_finish_timerrun() {
|
|
||||||
_releasealarm
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
_setupalarm() {
|
|
||||||
sxmo_sleep -c boottime_alarm "$1" &
|
|
||||||
alarmpid=$!
|
|
||||||
}
|
|
||||||
|
|
||||||
_releasealarm() {
|
|
||||||
if [ -n "$alarmpid" ]; then
|
|
||||||
kill "$alarmpid" 2> /dev/null
|
|
||||||
unset alarmpid
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
timerrun() {
|
timerrun() {
|
||||||
trap '_finish_timerrun' INT TERM EXIT
|
|
||||||
|
|
||||||
TIME="$(
|
TIME="$(
|
||||||
echo "$@" |
|
echo "$@" |
|
||||||
sed 's/\([^0-9]\)\([0-9]\)/\1+\2/g; s/h/*60m/g; s/m/*60s/g; s/s//g' |
|
sed 's/\([^0-9]\)\([0-9]\)/\1+\2/g; s/h/*60m/g; s/m/*60s/g; s/s//g' |
|
||||||
bc
|
bc
|
||||||
)"
|
)"
|
||||||
|
|
||||||
_setupalarm "$TIME"
|
|
||||||
|
|
||||||
DATE1="$(($(date +%s) + TIME))";
|
DATE1="$(($(date +%s) + TIME))";
|
||||||
while [ "$DATE1" -gt "$(date +%s)" ]; do
|
while [ "$DATE1" -ge "$(date +%s)" ]; do
|
||||||
printf "%s\r" "$(date -u --date @$((DATE1 - $(date +%s))) +%H:%M:%S)";
|
printf "%s\r" "$(date -u --date @$((DATE1 - $(date +%s))) +%H:%M:%S)";
|
||||||
sxmo_aligned_sleep 1 &
|
sxmo_aligned_sleep 1
|
||||||
wait $!
|
|
||||||
done
|
done
|
||||||
echo "Done with $*"
|
echo "Done with $*"
|
||||||
|
|
||||||
_releasealarm
|
|
||||||
|
|
||||||
while : ;
|
while : ;
|
||||||
do notify-send "Done with $*";
|
do notify-send "Done with $*";
|
||||||
sxmo_vibrate 1000 "${SXMO_VIBRATE_STRENGTH:-1}"
|
sxmo_vibrate 1000 "${SXMO_VIBRATE_STRENGTH:-1}"
|
||||||
@@ -51,6 +27,10 @@ timerrun() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cleanwakelock() {
|
||||||
|
sxmo_wakelock.sh unlock sxmo_"$(basename "$0")"
|
||||||
|
}
|
||||||
|
|
||||||
stopwatchrun() {
|
stopwatchrun() {
|
||||||
start="$(date +%s)"
|
start="$(date +%s)"
|
||||||
while : ; do
|
while : ; do
|
||||||
@@ -61,7 +41,7 @@ stopwatchrun() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
menu() {
|
menu() {
|
||||||
TIMEINPUT="$(sxmo_dmenu.sh -p Timer <<EOF
|
TIMEINPUT="$(sxmo_dmenu_with_kb.sh -p Timer <<EOF
|
||||||
Stopwatch
|
Stopwatch
|
||||||
1h
|
1h
|
||||||
10m
|
10m
|
||||||
@@ -83,9 +63,13 @@ EOF
|
|||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
"Stopwatch")
|
"Stopwatch")
|
||||||
|
sxmo_wakelock.sh lock sxmo_"$(basename "$0")" infinite
|
||||||
|
trap 'cleanwakelock' INT TERM EXIT
|
||||||
sxmo_terminal.sh "$0" stopwatchrun
|
sxmo_terminal.sh "$0" stopwatchrun
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
sxmo_wakelock.sh lock sxmo_"$(basename "$0")" infinite
|
||||||
|
trap 'cleanwakelock' INT TERM EXIT
|
||||||
sxmo_terminal.sh "$0" timerrun "$TIMEINPUT"
|
sxmo_terminal.sh "$0" timerrun "$TIMEINPUT"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
@@ -138,7 +138,7 @@ weathermenu() {
|
|||||||
)" |
|
)" |
|
||||||
grep -vE '^#' |
|
grep -vE '^#' |
|
||||||
sed "s/\t/: /g" |
|
sed "s/\t/: /g" |
|
||||||
sxmo_dmenu.sh -i -p "Locations"
|
sxmo_dmenu_with_kb.sh -i -c -l 10 -p "Locations"
|
||||||
)" || exit 0
|
)" || exit 0
|
||||||
if [ "$CHOICE" = "Close Menu" ]; then
|
if [ "$CHOICE" = "Close Menu" ]; then
|
||||||
exit 0
|
exit 0
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
# shellcheck source=scripts/core/sxmo_common.sh
|
# shellcheck source=scripts/core/sxmo_common.sh
|
||||||
. sxmo_common.sh
|
. sxmo_common.sh
|
||||||
|
|
||||||
SEARCHQUERY="$(echo "Close Menu" | sxmo_dmenu.sh -p "Search:")" || exit 0
|
SEARCHQUERY="$(echo "Close Menu" | sxmo_dmenu_with_kb.sh -p "Search:")" || exit 0
|
||||||
|
|
||||||
case "$SEARCHQUERY" in
|
case "$SEARCHQUERY" in
|
||||||
"Close Menu") exit 0 ;;
|
"Close Menu") exit 0 ;;
|
||||||
|
@@ -34,7 +34,7 @@ searchmenu() {
|
|||||||
xargs -0 echo |
|
xargs -0 echo |
|
||||||
sed '/^[[:space:]]*$/d' |
|
sed '/^[[:space:]]*$/d' |
|
||||||
awk '{$1=$1};1' |
|
awk '{$1=$1};1' |
|
||||||
sxmo_dmenu.sh -p "Yt Search"
|
sxmo_dmenu_with_kb.sh -p "Yt Search"
|
||||||
)" || exit 0
|
)" || exit 0
|
||||||
|
|
||||||
if [ "Close Menu" = "$ENTRY" ]; then
|
if [ "Close Menu" = "$ENTRY" ]; then
|
||||||
|
@@ -81,7 +81,7 @@ getprogchoices() {
|
|||||||
NNOTIFICATIONS="$(find "$SXMO_NOTIFDIR" -type f | wc -l)"
|
NNOTIFICATIONS="$(find "$SXMO_NOTIFDIR" -type f | wc -l)"
|
||||||
if [ "$NNOTIFICATIONS" -gt 0 ]; then
|
if [ "$NNOTIFICATIONS" -gt 0 ]; then
|
||||||
CHOICES="
|
CHOICES="
|
||||||
$icon_bel Notifications ($NNOTIFICATIONS) ^ 0 ^ sxmo_notifs.sh menu
|
$icon_bel Notifications ($NNOTIFICATIONS) ^ 0 ^ sxmo_notificationsmenu.sh
|
||||||
$CHOICES
|
$CHOICES
|
||||||
"
|
"
|
||||||
fi
|
fi
|
||||||
|
@@ -16,10 +16,10 @@ notifyvol() {
|
|||||||
if [ "muted" = "$vol" ]; then
|
if [ "muted" = "$vol" ]; then
|
||||||
vol=0
|
vol=0
|
||||||
fi
|
fi
|
||||||
if [ -z "$SXMO_WOB_DISABLE" ]; then
|
if [ "$SXMO_WM" = "sway" ] && [ -z "$SXMO_WOB_DISABLE" ]; then
|
||||||
printf "%s\n" "$vol" > "$XDG_RUNTIME_DIR"/sxmo.obsock
|
printf "%s\n" "$vol" > "$XDG_RUNTIME_DIR"/sxmo.wobsock
|
||||||
else
|
else
|
||||||
notify-send -r 999 "$icon_audio Volume $vol"
|
dunstify -r 999 "$icon_audio Volume $vol"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -195,22 +195,6 @@ _ringmodesubmenu() {
|
|||||||
else
|
else
|
||||||
printf " %s Vibrate ^ touch \"$XDG_CONFIG_HOME\"/sxmo/.novibrate\n" "$icon_ton"
|
printf " %s Vibrate ^ touch \"$XDG_CONFIG_HOME\"/sxmo/.novibrate\n" "$icon_ton"
|
||||||
fi
|
fi
|
||||||
if [ -f "$XDG_CONFIG_HOME"/sxmo/.busy ]; then
|
|
||||||
end="$(cat "$XDG_CONFIG_HOME"/sxmo/.busy)"
|
|
||||||
if [ -n "$end" ] && [ "$(date +%s)" -gt "$end" ]; then
|
|
||||||
rm "$XDG_CONFIG_HOME"/sxmo/.busy
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ -f "$XDG_CONFIG_HOME"/sxmo/.busy ]; then
|
|
||||||
printf " %s Busy ^ rm -f \"$XDG_CONFIG_HOME\"/sxmo/.busy\n" "$icon_ton"
|
|
||||||
else
|
|
||||||
printf " %s Busy ^ touch \"$XDG_CONFIG_HOME\"/sxmo/.busy\n" "$icon_tof"
|
|
||||||
printf " %s Busy for 15 min ^ date '+%%s+15*60' | bc > \"$XDG_CONFIG_HOME\"/sxmo/.busy\n" "$icon_tmr"
|
|
||||||
printf " %s Busy for 30 min ^ date '+%%s+30*60' | bc > \"$XDG_CONFIG_HOME\"/sxmo/.busy\n" "$icon_tmr"
|
|
||||||
printf " %s Busy for 1 hour ^ date '+%%s+60*60' | bc > \"$XDG_CONFIG_HOME\"/sxmo/.busy\n" "$icon_tmr"
|
|
||||||
printf " %s Busy for 2 hour ^ date '+%%s+2*60*60' | bc > \"$XDG_CONFIG_HOME\"/sxmo/.busy\n" "$icon_tmr"
|
|
||||||
printf " %s Busy for 3 hour ^ date '+%%s+3*60*60' | bc > \"$XDG_CONFIG_HOME\"/sxmo/.busy\n" "$icon_tmr"
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
menuchoices() {
|
menuchoices() {
|
||||||
|
@@ -5,40 +5,25 @@
|
|||||||
# shellcheck source=scripts/core/sxmo_common.sh
|
# shellcheck source=scripts/core/sxmo_common.sh
|
||||||
. sxmo_common.sh
|
. sxmo_common.sh
|
||||||
|
|
||||||
cleanly_quit() {
|
ROTATION_GRAVITY="${SXMO_ROTATION_GRAVITY:-"16374"}"
|
||||||
kill $BGPROC
|
ROTATION_THRESHOLD="${SXMO_ROTATION_THRESHOLD:-"400"}"
|
||||||
}
|
POLL_TIME="${SXMO_ROTATION_POLL_TIME:-1}"
|
||||||
|
RIGHT_SIDE_UP="$(echo "$ROTATION_GRAVITY - $ROTATION_THRESHOLD" | bc)"
|
||||||
|
UPSIDE_DOWN="$(echo "-$ROTATION_GRAVITY + $ROTATION_THRESHOLD" | bc)"
|
||||||
|
FILE_Y="$(find /sys/bus/iio/devices/iio:device*/ -iname in_accel_y_raw)"
|
||||||
|
FILE_X="$(find /sys/bus/iio/devices/iio:device*/ -iname in_accel_x_raw)"
|
||||||
|
|
||||||
# check if iio-sensor-proxy found a proximity sensor
|
while true; do
|
||||||
dbus-send --system --dest=net.hadess.SensorProxy --print-reply=literal \
|
y_raw="$(cat "$FILE_Y")"
|
||||||
/net/hadess/SensorProxy org.freedesktop.DBus.Properties.Get \
|
x_raw="$(cat "$FILE_X")"
|
||||||
string:net.hadess.SensorProxy string:HasAccelerometer | grep -q 'true' || exit
|
if [ "$x_raw" -ge "$RIGHT_SIDE_UP" ] && sxmo_rotate.sh isrotated ; then
|
||||||
|
|
||||||
trap 'cleanly_quit' INT TERM EXIT
|
|
||||||
|
|
||||||
monitor-sensor --accel | while read -r line; do
|
|
||||||
# first line checks if iio-sensor-proxy is running
|
|
||||||
echo "$line" | grep -qi 'waiting' && continue
|
|
||||||
# second line confirms iio-sensor-proxy is running
|
|
||||||
echo "$line" | grep -qi 'appeared' && continue
|
|
||||||
# read orientation
|
|
||||||
orientation=$(echo "$line" | cut -d ':' -f 2)
|
|
||||||
case "$orientation" in
|
|
||||||
# on the very first sensor claim, the orientation might be
|
|
||||||
# reported as "undefined." assume "normal" in that case
|
|
||||||
*"undefined"*|*"normal"*)
|
|
||||||
sxmo_rotate.sh rotnormal
|
sxmo_rotate.sh rotnormal
|
||||||
;;
|
elif [ "$x_raw" -le "$UPSIDE_DOWN" ] && [ "$(sxmo_rotate.sh isrotated)" != "invert" ]; then
|
||||||
*"bottom-up"*)
|
|
||||||
sxmo_rotate.sh rotinvert
|
sxmo_rotate.sh rotinvert
|
||||||
;;
|
elif [ "$y_raw" -le "$UPSIDE_DOWN" ] && [ "$(sxmo_rotate.sh isrotated)" != "right" ]; then
|
||||||
*"left-up"*)
|
|
||||||
sxmo_rotate.sh rotleft
|
|
||||||
;;
|
|
||||||
*"right-up"*)
|
|
||||||
sxmo_rotate.sh rotright
|
sxmo_rotate.sh rotright
|
||||||
;;
|
elif [ "$y_raw" -ge "$RIGHT_SIDE_UP" ] && [ "$(sxmo_rotate.sh isrotated)" != "left" ]; then
|
||||||
esac
|
sxmo_rotate.sh rotleft
|
||||||
done &
|
fi
|
||||||
BGPROC=$?
|
sleep "$POLL_TIME"
|
||||||
wait
|
done
|
||||||
|
@@ -1,12 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
bg="$(sxmo_hook_wallpaper.sh)"
|
|
||||||
|
|
||||||
case "$SXMO_WM" in
|
|
||||||
dwm)
|
|
||||||
exec feh "${1+--bg-$1}" "$bg"
|
|
||||||
;;
|
|
||||||
sway)
|
|
||||||
exec swaybg -i "$bg" ${1+-m "$1"}
|
|
||||||
;;
|
|
||||||
esac
|
|
@@ -19,7 +19,7 @@ _prompt() {
|
|||||||
_device_list() {
|
_device_list() {
|
||||||
bluetoothctl devices | \
|
bluetoothctl devices | \
|
||||||
cut -d" " -f2 | \
|
cut -d" " -f2 | \
|
||||||
xargs -rn1 bluetoothctl info | \
|
xargs -n1 bluetoothctl info | \
|
||||||
awk '
|
awk '
|
||||||
function print_cached_device() {
|
function print_cached_device() {
|
||||||
print icon linkedsep paired connected " " name " " mac
|
print icon linkedsep paired connected " " name " " mac
|
||||||
@@ -67,16 +67,25 @@ _full_reconnection() {
|
|||||||
notify-send 'Make the device discoverable'
|
notify-send 'Make the device discoverable'
|
||||||
|
|
||||||
bluetoothctl remove '$1'
|
bluetoothctl remove '$1'
|
||||||
sxmo_jobs.sh start bluetooth_scan bluetoothctl --timeout 300 scan on
|
sxmo_jobs.sh start bluetooth_scan bluetoothctl scan on
|
||||||
|
|
||||||
sleep 5
|
sleep 5
|
||||||
|
|
||||||
while : ; do
|
while : ; do
|
||||||
timeout 7 bluetoothctl connect '$1'
|
bluetoothctl --timeout 5 pair '$1'
|
||||||
|
if bluetoothctl info '$1' | grep -q 'Paired: yes'; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
bluetoothctl trust '$1'
|
||||||
|
while : ; do
|
||||||
|
bluetoothctl --timeout 7 connect '$1'
|
||||||
if bluetoothctl info '$1' | grep -q 'Connected: yes'; then
|
if bluetoothctl info '$1' | grep -q 'Connected: yes'; then
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
sleep 1
|
|
||||||
done
|
done
|
||||||
"
|
"
|
||||||
sxmo_jobs.sh stop bluetooth_scan
|
sxmo_jobs.sh stop bluetooth_scan
|
||||||
@@ -103,9 +112,9 @@ toggle_connection() {
|
|||||||
MAC="$(printf "%s\n" "$DEVICE" | awk '{print $NF}')"
|
MAC="$(printf "%s\n" "$DEVICE" | awk '{print $NF}')"
|
||||||
|
|
||||||
if printf "%s\n" "$PICK" | grep -q "$icon_a2x"; then
|
if printf "%s\n" "$PICK" | grep -q "$icon_a2x"; then
|
||||||
_can_fail timeout 7 sxmo_terminal.sh bluetoothctl disconnect "$MAC"
|
_can_fail sxmo_terminal.sh bluetoothctl --timeout 7 disconnect "$MAC"
|
||||||
else
|
else
|
||||||
_can_fail timeout 7 sxmo_terminal.sh bluetoothctl connect "$MAC"
|
_can_fail sxmo_terminal.sh bluetoothctl --timeout 7 connect "$MAC"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -145,7 +154,7 @@ EOF
|
|||||||
;;
|
;;
|
||||||
"Paired $icon_tof")
|
"Paired $icon_tof")
|
||||||
INDEX=2
|
INDEX=2
|
||||||
_can_fail timeout 7 sxmo_terminal.sh bluetoothctl "$MAC"
|
_can_fail sxmo_terminal.sh bluetoothctl --timeout 7 pair "$MAC"
|
||||||
;;
|
;;
|
||||||
"Trusted $icon_ton")
|
"Trusted $icon_ton")
|
||||||
INDEX=3
|
INDEX=3
|
||||||
@@ -157,11 +166,11 @@ EOF
|
|||||||
;;
|
;;
|
||||||
"Connected $icon_ton")
|
"Connected $icon_ton")
|
||||||
INDEX=4
|
INDEX=4
|
||||||
_can_fail timeout 7 sxmo_terminal.sh bluetoothctl disconnect "$MAC"
|
_can_fail sxmo_terminal.sh bluetoothctl --timeout 7 disconnect "$MAC"
|
||||||
;;
|
;;
|
||||||
"Connected $icon_tof")
|
"Connected $icon_tof")
|
||||||
INDEX=4
|
INDEX=4
|
||||||
_can_fail timeout 7 sxmo_terminal.sh bluetoothctl "$MAC"
|
_can_fail sxmo_terminal.sh bluetoothctl --timeout 7 connect "$MAC"
|
||||||
;;
|
;;
|
||||||
"Blocked $icon_ton")
|
"Blocked $icon_ton")
|
||||||
INDEX=5
|
INDEX=5
|
||||||
|
@@ -43,9 +43,9 @@ case "$1" in
|
|||||||
off
|
off
|
||||||
;;
|
;;
|
||||||
*) #toggle
|
*) #toggle
|
||||||
if rfkill list bluetooth -no ID,SOFT,HARD | grep -vq " blocked"; then
|
if rfkill list bluetooth | grep -q "yes"; then
|
||||||
off
|
|
||||||
else
|
|
||||||
on
|
on
|
||||||
|
else
|
||||||
|
off
|
||||||
fi
|
fi
|
||||||
esac
|
esac
|
||||||
|
@@ -9,10 +9,10 @@
|
|||||||
. sxmo_hook_icons.sh
|
. sxmo_hook_icons.sh
|
||||||
|
|
||||||
notify() {
|
notify() {
|
||||||
if [ -z "$SXMO_WOB_DISABLE" ]; then
|
if [ "$SXMO_WM" = "sway" ] && [ -z "$SXMO_WOB_DISABLE" ]; then
|
||||||
getvalue > "$XDG_RUNTIME_DIR"/sxmo.obsock
|
getvalue > "$XDG_RUNTIME_DIR"/sxmo.wobsock
|
||||||
else
|
else
|
||||||
getvalue | xargs notify-send -r 888 "$icon_brightness Brightness"
|
getvalue | xargs dunstify -r 888 "$icon_brightness Brightness"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,18 +28,11 @@ down() {
|
|||||||
# bugged https://github.com/Hummer12007/brightnessctl/issues/82
|
# bugged https://github.com/Hummer12007/brightnessctl/issues/82
|
||||||
# brightnessctl --min-value "${SXMO_MIN_BRIGHTNESS:-5}" set 5%-
|
# brightnessctl --min-value "${SXMO_MIN_BRIGHTNESS:-5}" set 5%-
|
||||||
|
|
||||||
value="$(getvalue)"
|
if [ "$(getvalue)" -gt "${SXMO_MIN_BRIGHTNESS:-5}" ]; then
|
||||||
|
|
||||||
if [ "$value" -le "${SXMO_MIN_BRIGHTNESS:-5}" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$((value-5))" -ge "${SXMO_MIN_BRIGHTNESS:-5}" ]; then
|
|
||||||
brightnessctl -q set 5%-
|
brightnessctl -q set 5%-
|
||||||
return
|
else
|
||||||
fi
|
|
||||||
|
|
||||||
brightnessctl -q set "${SXMO_MIN_BRIGHTNESS:-5}"%
|
brightnessctl -q set "${SXMO_MIN_BRIGHTNESS:-5}"%
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
getvalue() {
|
getvalue() {
|
||||||
|
@@ -6,27 +6,11 @@
|
|||||||
# shellcheck source=scripts/core/sxmo_common.sh
|
# shellcheck source=scripts/core/sxmo_common.sh
|
||||||
. sxmo_common.sh
|
. sxmo_common.sh
|
||||||
|
|
||||||
|
|
||||||
if [ -z "$SXMO_MENU" ]; then
|
|
||||||
case "$SXMO_WM" in
|
case "$SXMO_WM" in
|
||||||
sway)
|
|
||||||
SXMO_MENU=bemenu
|
|
||||||
;;
|
|
||||||
dwm)
|
dwm)
|
||||||
SXMO_MENU=dmenu
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
case "$SXMO_MENU" in
|
|
||||||
dmenu)
|
|
||||||
exec dmenu_run "$@"
|
exec dmenu_run "$@"
|
||||||
;;
|
;;
|
||||||
bemenu)
|
sway)
|
||||||
exec bemenu-run "$@"
|
exec bemenu-run "$@"
|
||||||
;;
|
;;
|
||||||
wofi)
|
|
||||||
exec wofi -O alphabetical -i --show run "$@"
|
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
|
@@ -15,6 +15,7 @@ command -v shopt > /dev/null && shopt -s expand_aliases
|
|||||||
|
|
||||||
alias dmenu="sxmo_dmenu.sh"
|
alias dmenu="sxmo_dmenu.sh"
|
||||||
alias bemenu="sxmo_dmenu.sh"
|
alias bemenu="sxmo_dmenu.sh"
|
||||||
|
command -v gojq > /dev/null && alias jq="gojq" # better performances
|
||||||
|
|
||||||
if ! command -v sxmobar > /dev/null; then
|
if ! command -v sxmobar > /dev/null; then
|
||||||
sxmobar() {
|
sxmobar() {
|
||||||
@@ -64,7 +65,7 @@ xdg_data_path() {
|
|||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
if [ $instance -gt 0 ]; then
|
if [ $instance -gt 0 ]; then
|
||||||
printf '%b' "${sep}"
|
printf '%s' "${sep}"
|
||||||
fi
|
fi
|
||||||
printf '%s' "${dir}/${filepath}"
|
printf '%s' "${dir}/${filepath}"
|
||||||
instance=$((instance+1))
|
instance=$((instance+1))
|
||||||
|
@@ -11,7 +11,7 @@ set -e
|
|||||||
|
|
||||||
# shellcheck disable=SC2120
|
# shellcheck disable=SC2120
|
||||||
newcontact() {
|
newcontact() {
|
||||||
name="$(printf "" | sxmo_dmenu.sh -p "$icon_usr Name")"
|
name="$(printf "" | sxmo_dmenu_with_kb.sh -p "$icon_usr Name")"
|
||||||
|
|
||||||
number="$1"
|
number="$1"
|
||||||
if [ -n "$number" ]; then
|
if [ -n "$number" ]; then
|
||||||
@@ -19,7 +19,7 @@ newcontact() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
while [ -z "$number" ]; do
|
while [ -z "$number" ]; do
|
||||||
number="$(sxmo_contacts.sh --unknown | sxmo_dmenu.sh -p "$icon_phl Number")"
|
number="$(sxmo_contacts.sh --unknown | sxmo_dmenu_with_kb.sh -p "$icon_phl Number")"
|
||||||
number="$(sxmo_validnumber.sh "$number")" || continue
|
number="$(sxmo_validnumber.sh "$number")" || continue
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ editcontactname() {
|
|||||||
ENTRIES="$(printf %b "Old name: $oldname")"
|
ENTRIES="$(printf %b "Old name: $oldname")"
|
||||||
PICKED="$(
|
PICKED="$(
|
||||||
printf %b "$ENTRIES" |
|
printf %b "$ENTRIES" |
|
||||||
sxmo_dmenu.sh -p "$icon_edt Edit Contact"
|
sxmo_dmenu_with_kb.sh -p "$icon_edt Edit Contact"
|
||||||
)"
|
)"
|
||||||
|
|
||||||
if ! printf %s "$PICKED" | grep -q "^Old name: "; then
|
if ! printf %s "$PICKED" | grep -q "^Old name: "; then
|
||||||
@@ -56,7 +56,7 @@ editcontactnumber() {
|
|||||||
while [ -z "$PICKED" ]; do
|
while [ -z "$PICKED" ]; do
|
||||||
PICKED="$(
|
PICKED="$(
|
||||||
printf %b "$ENTRIES" |
|
printf %b "$ENTRIES" |
|
||||||
sxmo_dmenu.sh -p "$icon_edt Edit Contact"
|
sxmo_dmenu_with_kb.sh -p "$icon_edt Edit Contact"
|
||||||
)"
|
)"
|
||||||
if printf %s "$PICKED" | grep -q "(Old number)$"; then
|
if printf %s "$PICKED" | grep -q "(Old number)$"; then
|
||||||
editcontact "$1"
|
editcontact "$1"
|
||||||
@@ -166,7 +166,7 @@ main() {
|
|||||||
|
|
||||||
PICKED="$(
|
PICKED="$(
|
||||||
printf %b "$ENTRIES" |
|
printf %b "$ENTRIES" |
|
||||||
sxmo_dmenu.sh -i -p "$icon_lst Contacts"
|
sxmo_dmenu_with_kb.sh -i -p "$icon_lst Contacts"
|
||||||
)"
|
)"
|
||||||
|
|
||||||
case "$PICKED" in
|
case "$PICKED" in
|
||||||
|
@@ -5,13 +5,6 @@
|
|||||||
# We still use dmenu in dwm|worgs cause pointer/touch events
|
# We still use dmenu in dwm|worgs cause pointer/touch events
|
||||||
# are not implemented yet in the X11 library of bemenu
|
# are not implemented yet in the X11 library of bemenu
|
||||||
|
|
||||||
# Note: Only pass parameters to this script that are unambiguous across all
|
|
||||||
# supported implementations! (dmenu, wofi, dmenu), which are only:
|
|
||||||
|
|
||||||
# -p PROMPT
|
|
||||||
# -i (case insensitive)
|
|
||||||
|
|
||||||
|
|
||||||
# include common definitions
|
# include common definitions
|
||||||
# shellcheck source=scripts/core/sxmo_common.sh
|
# shellcheck source=scripts/core/sxmo_common.sh
|
||||||
. sxmo_common.sh
|
. sxmo_common.sh
|
||||||
@@ -20,46 +13,26 @@
|
|||||||
unalias bemenu
|
unalias bemenu
|
||||||
unalias dmenu
|
unalias dmenu
|
||||||
|
|
||||||
if [ -z "$SXMO_MENU" ]; then
|
|
||||||
case "$SXMO_WM" in
|
|
||||||
sway)
|
|
||||||
SXMO_MENU=bemenu
|
|
||||||
;;
|
|
||||||
dwm)
|
|
||||||
SXMO_MENU=dmenu
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
isopen)
|
isopen)
|
||||||
case "$SXMO_MENU" in
|
case "$SXMO_WM" in
|
||||||
bemenu)
|
sway)
|
||||||
exec pgrep bemenu >/dev/null
|
exec pgrep bemenu >/dev/null
|
||||||
;;
|
;;
|
||||||
wofi)
|
dwm)
|
||||||
exec pgrep wofi >/dev/null
|
|
||||||
;;
|
|
||||||
dmenu)
|
|
||||||
exec pgrep dmenu >/dev/null
|
exec pgrep dmenu >/dev/null
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
close)
|
close)
|
||||||
case "$SXMO_MENU" in
|
case "$SXMO_WM" in
|
||||||
bemenu)
|
sway)
|
||||||
if ! pgrep bemenu >/dev/null; then
|
if ! pgrep bemenu >/dev/null; then
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
exec pkill bemenu >/dev/null
|
exec pkill bemenu >/dev/null
|
||||||
;;
|
;;
|
||||||
wofi)
|
dwm)
|
||||||
if ! pgrep wofi >/dev/null; then
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
exec pkill wofi >/dev/null
|
|
||||||
;;
|
|
||||||
dmenu)
|
|
||||||
if ! pgrep dmenu >/dev/null; then
|
if ! pgrep dmenu >/dev/null; then
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
@@ -70,45 +43,40 @@ case "$1" in
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
if [ -n "$WAYLAND_DISPLAY" ]; then
|
if [ -n "$WAYLAND_DISPLAY" ]; then
|
||||||
if sxmo_state.sh get | grep -q unlock; then
|
if grep -q unlock "$SXMO_STATE"; then
|
||||||
swaymsg mode menu -q # disable default button inputs
|
swaymsg mode menu -q # disable default button inputs
|
||||||
cleanmode() {
|
cleanmode() {
|
||||||
swaymsg mode default -q
|
swaymsg mode default -q
|
||||||
}
|
}
|
||||||
trap 'cleanmode' TERM INT
|
trap 'cleanmode' TERM INT
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$WAYLAND_DISPLAY" ] || [ -n "$DISPLAY" ]; then
|
|
||||||
case "$SXMO_MENU" in
|
|
||||||
bemenu)
|
|
||||||
bemenu -l "$(sxmo_rotate.sh isrotated > /dev/null && \
|
bemenu -l "$(sxmo_rotate.sh isrotated > /dev/null && \
|
||||||
printf %s "${SXMO_BEMENU_LANDSCAPE_LINES:-8}" || \
|
printf %s "${SXMO_BEMENU_LANDSCAPE_LINES:-8}" || \
|
||||||
printf %s "${SXMO_BEMENU_PORTRAIT_LINES:-16}")" "$@"
|
printf %s "${SXMO_BEMENU_PORTRAIT_LINES:-16}")" "$@"
|
||||||
returned=$?
|
returned=$?
|
||||||
|
|
||||||
[ -n "$WAYLAND_DISPLAY" ] && cleanmode
|
|
||||||
exit "$returned"
|
|
||||||
;;
|
|
||||||
wofi)
|
|
||||||
#let wofi handle the number of lines dynamically
|
|
||||||
# (wofi is a bit confused after rotating to horizontal mode though)
|
|
||||||
# shellcheck disable=SC2046
|
|
||||||
# (not quoted because we want to split args here)
|
|
||||||
wofi $(sxmo_rotate.sh isrotated > /dev/null && echo -W "${SXMO_WOFI_LANDSCAPE_WIDTH:-640}" -H "${SXMO_WOFI_LANDSCAPE_HEIGHT:-200}" -l top) "$@"
|
|
||||||
returned=$?
|
|
||||||
cleanmode
|
cleanmode
|
||||||
exit "$returned"
|
exit "$returned"
|
||||||
;;
|
fi
|
||||||
dmenu)
|
|
||||||
|
if [ -n "$DISPLAY" ]; then
|
||||||
|
|
||||||
|
# TODO: kill dmenu?
|
||||||
|
|
||||||
|
if sxmo_keyboard.sh isopen; then
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
exec dmenu $SXMO_DMENU_OPTS -l "$(sxmo_rotate.sh isrotated > /dev/null && \
|
exec dmenu $SXMO_DMENU_OPTS -l "$(sxmo_rotate.sh isrotated > /dev/null && \
|
||||||
printf %s "${SXMO_DMENU_LANDSCAPE_LINES:-5}" || \
|
printf %s "${SXMO_DMENU_WITH_KB_LANDSCAPE_LINES:-5}" || \
|
||||||
printf %s "${SXMO_DMENU_PORTRAIT_LINES:-12}")" "$@"
|
printf %s "${SXMO_DMENU_WITH_KB_PORTRAIT_LINES:-12}")" "$@"
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
else
|
||||||
#fallback to tty menu (e.g. over ssh)
|
# shellcheck disable=SC2086
|
||||||
|
exec dmenu $SXMO_DMENU_OPTS -l "$(sxmo_rotate.sh isrotated > /dev/null && \
|
||||||
|
printf %s "${SXMO_DMENU_LANDSCAPE_LINES:-7}" || \
|
||||||
|
printf %s "${SXMO_DMENU_PORTRAIT_LINES:-15}")" "$@"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
export BEMENU_BACKEND=curses
|
export BEMENU_BACKEND=curses
|
||||||
exec bemenu -w "$@"
|
exec bemenu -w "$@"
|
||||||
fi
|
|
||||||
|
21
scripts/core/sxmo_dmenu_with_kb.sh
Executable file
21
scripts/core/sxmo_dmenu_with_kb.sh
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
# Copyright 2022 Sxmo Contributors
|
||||||
|
|
||||||
|
if [ -n "$WAYLAND_DISPLAY$DISPLAY" ]; then
|
||||||
|
if sxmo_keyboard.sh isopen; then
|
||||||
|
wasopen="1"
|
||||||
|
fi
|
||||||
|
sxmo_keyboard.sh open
|
||||||
|
sleep .1 # give keyboard time to open
|
||||||
|
fi
|
||||||
|
|
||||||
|
OUTPUT="$(cat | sxmo_dmenu.sh "$@")"
|
||||||
|
exitcode=$?
|
||||||
|
|
||||||
|
if [ -z "$wasopen" ]; then
|
||||||
|
sxmo_keyboard.sh close
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf %s "$OUTPUT"
|
||||||
|
exit $exitcode
|
@@ -1,9 +1,9 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
# Copyright 2024 Sxmo Contributors
|
# Copyright 2022 Sxmo Contributors
|
||||||
|
|
||||||
if [ "$(brightnessctl -d "white:flash" get)" -gt 0 ]; then
|
if sxmo_led.sh get white | grep -vq ^100$; then
|
||||||
brightnessctl -q -d "white:flash" set "0%"
|
sxmo_led.sh set white 100
|
||||||
else
|
else
|
||||||
brightnessctl -q -d "white:flash" set "100%"
|
sxmo_led.sh set white 0
|
||||||
fi
|
fi
|
||||||
|
@@ -25,12 +25,6 @@ finish() {
|
|||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
shared_envvars() {
|
|
||||||
if ! sxmo_status_led check; then
|
|
||||||
export SXMO_DISABLE_LEDS="1"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
# shellcheck source=/dev/null
|
# shellcheck source=/dev/null
|
||||||
. /etc/profile.d/sxmo_init.sh
|
. /etc/profile.d/sxmo_init.sh
|
||||||
@@ -38,7 +32,6 @@ init() {
|
|||||||
_sxmo_load_environments
|
_sxmo_load_environments
|
||||||
_sxmo_prepare_dirs
|
_sxmo_prepare_dirs
|
||||||
envvars
|
envvars
|
||||||
shared_envvars
|
|
||||||
sxmo_migrate.sh sync
|
sxmo_migrate.sh sync
|
||||||
|
|
||||||
defaults
|
defaults
|
||||||
|
@@ -14,13 +14,10 @@ isopen() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
open() {
|
open() {
|
||||||
if [ -n "$SXMO_NO_VIRTUAL_KEYBOARD" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
if [ -n "$KEYBOARD" ]; then
|
if [ -n "$KEYBOARD" ]; then
|
||||||
#Note: KEYBOARD_ARGS is not quoted by design as it may includes a pipe and further tools
|
#Note: KEYBOARD_ARGS is not quoted by design as it may includes a pipe and further tools
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
isopen || eval "$KEYBOARD" $KEYBOARD_ARGS >> "${XDG_STATE_HOME:-$HOME}"/sxmo.log 2>&1 &
|
isopen || eval "$KEYBOARD" $KEYBOARD_ARGS &
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -5,17 +5,79 @@
|
|||||||
# shellcheck source=scripts/core/sxmo_common.sh
|
# shellcheck source=scripts/core/sxmo_common.sh
|
||||||
. sxmo_common.sh
|
. sxmo_common.sh
|
||||||
|
|
||||||
set -e
|
get_led() {
|
||||||
|
color="$1"
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
printf "usage: %s get [red|green|blue|white]\n" "$0"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
[ $# -lt 1 ] && usage
|
||||||
|
|
||||||
|
# need brightnessctl release after 0.5.1 to have --percentage
|
||||||
|
value="$(brightnessctl -d "$color:*" get)"
|
||||||
|
max="$(brightnessctl -d "$color:*" max)"
|
||||||
|
printf "scale=0; %s / %s * 100\n" "$value" "$max" | bc -l
|
||||||
|
}
|
||||||
|
|
||||||
|
set_led() {
|
||||||
|
usage (){
|
||||||
|
printf "usage: %s set [red|green|blue|white] [0-100]\n" "$0"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
[ $# -lt 2 ] && usage
|
||||||
|
|
||||||
|
color="$1"
|
||||||
|
percent="$2"
|
||||||
|
|
||||||
|
brightnessctl -q -d "$color:*" set "$percent%"
|
||||||
|
}
|
||||||
|
|
||||||
|
set_leds() {
|
||||||
|
while [ "$#" -ge 2 ]; do
|
||||||
|
set_led "$1" "$2" &
|
||||||
|
shift 2
|
||||||
|
done
|
||||||
|
|
||||||
|
wait
|
||||||
|
}
|
||||||
|
|
||||||
finish_blinking() {
|
finish_blinking() {
|
||||||
sxmo_wakelock.sh unlock sxmo_playing_with_leds
|
sxmo_wakelock.sh unlock sxmo_playing_with_leds
|
||||||
trap - INT TERM EXIT
|
eval set_leds green '$'old_green blue '$'old_blue red '$'old_red ${white:+white '$'old_white}
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
blink_leds() {
|
blink_leds() {
|
||||||
|
for color in green blue red white; do
|
||||||
|
percent="$(get_led "$color")"
|
||||||
|
eval "old_$color=$percent" # store old value
|
||||||
|
done
|
||||||
|
|
||||||
sxmo_wakelock.sh lock sxmo_playing_with_leds 2s
|
sxmo_wakelock.sh lock sxmo_playing_with_leds 2s
|
||||||
trap 'finish_blinking' TERM INT EXIT
|
trap 'finish_blinking' TERM INT EXIT
|
||||||
sxmo_status_led blink "$@"
|
|
||||||
|
while [ -n "$1" ]; do
|
||||||
|
case "$1" in
|
||||||
|
green|blue|red|white)
|
||||||
|
eval "$1=100"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# shellcheck disable=SC2154
|
||||||
|
set_leds green 0 blue 0 red 0 ${white:+white 0}
|
||||||
|
|
||||||
|
sleep 0.1 # Make blink noticable
|
||||||
|
|
||||||
|
set_leds green "${green:-0}" blue "${blue:-0}" red "${red:-0}" ${white:+white "${white:-0}"}
|
||||||
|
|
||||||
|
sleep 0.1 # Make blink noticable
|
||||||
|
|
||||||
|
set_leds green 0 blue 0 red 0 ${white:+white 0}
|
||||||
|
|
||||||
|
sleep 0.1 # Make blink noticable
|
||||||
}
|
}
|
||||||
|
|
||||||
[ -z "$SXMO_DISABLE_LEDS" ] || exit 1
|
[ -z "$SXMO_DISABLE_LEDS" ] || exit 1
|
||||||
@@ -25,12 +87,12 @@ exec 3<> "${XDG_RUNTIME_DIR:-$HOME}/sxmo.led.lock"
|
|||||||
cmd="$1"
|
cmd="$1"
|
||||||
shift
|
shift
|
||||||
case "$cmd" in
|
case "$cmd" in
|
||||||
set)
|
"set"|blink)
|
||||||
flock -x 3
|
flock -x 3
|
||||||
sxmo_status_led set "$@"
|
"$cmd"_leds "$@"
|
||||||
;;
|
;;
|
||||||
blink)
|
get)
|
||||||
flock -x 3
|
flock -s 3
|
||||||
blink_leds "$@"
|
get_led "$@"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
@@ -15,28 +15,10 @@ if [ -z "$SXMO_DEVICE_NAME" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
smartdiff() {
|
smartdiff() {
|
||||||
#argument one is the system default
|
if command -v colordiff > /dev/null; then
|
||||||
#argument two is the user version (to be migrated)
|
colordiff "$@"
|
||||||
|
|
||||||
if [ "$SXMO_MIGRATE_ORDER" = "user:system" ]; then
|
|
||||||
printf "Your user file is in \e[31mred (-)\e[0m, the system default in \e[32mgreen (+)\e[0m\n"
|
|
||||||
else
|
else
|
||||||
printf "The system default is in \e[31mred (-)\e[0m, your user changes in \e[32mgreen (+)\e[0m\n"
|
diff "$@"
|
||||||
#swap arguments
|
|
||||||
set -- "$2" "$1"
|
|
||||||
echo "$@"
|
|
||||||
fi
|
|
||||||
if command -v delta > /dev/null; then
|
|
||||||
# shellcheck disable=SC2086
|
|
||||||
delta "$@"
|
|
||||||
elif command -v colordiff > /dev/null; then
|
|
||||||
# shellcheck disable=SC2086
|
|
||||||
colordiff -ud "$@"
|
|
||||||
else
|
|
||||||
# poor man's ad-hoc colordiff
|
|
||||||
ESC=$(printf "\e")
|
|
||||||
# shellcheck disable=SC1087
|
|
||||||
diff -ud "$@" | sed -E -e "s/^-(.*)$/-$ESC[31m\1$ESC[0m/" -e "s/^\+(.*)$/+$ESC[32m\1$ESC[0m/" -e "s/^@@(.*)$/$ESC[34m@@\1$ESC[0m/"
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,7 +32,7 @@ resolvedifference() {
|
|||||||
|
|
||||||
(
|
(
|
||||||
printf "\e[31mThe file \e[32m%s\e[31m differs\e[0m\n" "$userfile"
|
printf "\e[31mThe file \e[32m%s\e[31m differs\e[0m\n" "$userfile"
|
||||||
smartdiff "$userfile" "$defaultfile"
|
smartdiff -ud "$defaultfile" "$userfile"
|
||||||
) | more
|
) | more
|
||||||
|
|
||||||
printf "\e[31mMigration options for \e[32m%s\e[31m:\e[0m\n" "$userfile"
|
printf "\e[31mMigration options for \e[32m%s\e[31m:\e[0m\n" "$userfile"
|
||||||
@@ -59,7 +41,6 @@ resolvedifference() {
|
|||||||
printf "2 - Open [e]ditor and merge the changes yourself; take care to set the same configversion.\n"
|
printf "2 - Open [e]ditor and merge the changes yourself; take care to set the same configversion.\n"
|
||||||
printf "3 - Use your [u]ser version as-is; you verified it's compatible. (Auto-updates configversion only).\n"
|
printf "3 - Use your [u]ser version as-is; you verified it's compatible. (Auto-updates configversion only).\n"
|
||||||
printf "4 - [i]gnore, do not resolve and don't change anything, ask again next time. (default)\n"
|
printf "4 - [i]gnore, do not resolve and don't change anything, ask again next time. (default)\n"
|
||||||
printf "5 - Change the diff argument [o]rder and ask again\n"
|
|
||||||
|
|
||||||
printf "\e[33mHow do you want to resolve this? Choose one of the options above [1234deui]\e[0m "
|
printf "\e[33mHow do you want to resolve this? Choose one of the options above [1234deui]\e[0m "
|
||||||
|
|
||||||
@@ -83,17 +64,9 @@ resolvedifference() {
|
|||||||
#open editor with both files and the diff
|
#open editor with both files and the diff
|
||||||
export DIFFTOOL="${DIFFTOOL:-vimdiff}"
|
export DIFFTOOL="${DIFFTOOL:-vimdiff}"
|
||||||
if [ -n "$DIFFTOOL" ] && command -v "$DIFFTOOL" >/dev/null; then # ex vimdiff
|
if [ -n "$DIFFTOOL" ] && command -v "$DIFFTOOL" >/dev/null; then # ex vimdiff
|
||||||
if [ "$SXMO_MIGRATE_ORDER" = "user:system" ]; then
|
|
||||||
set -- "$DIFFTOOL" "$userfile" "$defaultfile"
|
|
||||||
else
|
|
||||||
set -- "$DIFFTOOL" "$defaultfile" "$userfile"
|
set -- "$DIFFTOOL" "$defaultfile" "$userfile"
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [ "$SXMO_MIGRATE_ORDER" = "user:system" ]; then
|
|
||||||
diff -u "$userfile" "$defaultfile" > "${XDG_RUNTIME_DIR}/migrate.diff"
|
|
||||||
else
|
else
|
||||||
diff -u "$defaultfile" "$userfile" > "${XDG_RUNTIME_DIR}/migrate.diff"
|
diff -u "$defaultfile" "$userfile" > "${XDG_RUNTIME_DIR}/migrate.diff"
|
||||||
fi
|
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
set -- $EDITOR "$userfile" "$defaultfile" "${XDG_RUNTIME_DIR}/migrate.diff"
|
set -- $EDITOR "$userfile" "$defaultfile" "${XDG_RUNTIME_DIR}/migrate.diff"
|
||||||
fi
|
fi
|
||||||
@@ -119,13 +92,6 @@ resolvedifference() {
|
|||||||
sed -i "2i$refline" "$userfile" || abort=1
|
sed -i "2i$refline" "$userfile" || abort=1
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
[5oO]*)
|
|
||||||
if [ "$SXMO_MIGRATE_ORDER" = "user:system" ]; then
|
|
||||||
SXMO_MIGRATE_ORDER="system:user"
|
|
||||||
else
|
|
||||||
SXMO_MIGRATE_ORDER="user:system"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
abort=1
|
abort=1
|
||||||
;;
|
;;
|
||||||
@@ -143,6 +109,9 @@ resolvedifference() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
checkconfigversion() {
|
checkconfigversion() {
|
||||||
|
if [ -n "$SXMO_DISABLE_CONFIGVERSION_CHECK" ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
userfile="$1"
|
userfile="$1"
|
||||||
reffile="$2"
|
reffile="$2"
|
||||||
if [ ! -e "$userfile" ] || [ ! -e "$reffile" ]; then
|
if [ ! -e "$userfile" ] || [ ! -e "$reffile" ]; then
|
||||||
@@ -283,7 +252,7 @@ checkhooks() {
|
|||||||
fi
|
fi
|
||||||
elif [ "$MODE" != "sync" ]; then
|
elif [ "$MODE" != "sync" ]; then
|
||||||
(
|
(
|
||||||
smartdiff "$hook" "/dev/null"
|
smartdiff -ud "/dev/null" "$hook"
|
||||||
printf "\e[31mThe hook \e[32m%s\e[31m does not exist (anymore), remove it? [y/N] \e[0m\n" "$hook"
|
printf "\e[31mThe hook \e[32m%s\e[31m does not exist (anymore), remove it? [y/N] \e[0m\n" "$hook"
|
||||||
) | more
|
) | more
|
||||||
read -r reply < /dev/tty
|
read -r reply < /dev/tty
|
||||||
@@ -307,8 +276,6 @@ sway() {
|
|||||||
defaultconfig "$(xdg_data_path sxmo/appcfg/bonsai_tree.json)" "$XDG_CONFIG_HOME/sxmo/bonsai_tree.json" 644
|
defaultconfig "$(xdg_data_path sxmo/appcfg/bonsai_tree.json)" "$XDG_CONFIG_HOME/sxmo/bonsai_tree.json" 644
|
||||||
defaultconfig "$(xdg_data_path sxmo/appcfg/wob.ini)" "$XDG_CONFIG_HOME/wob/wob.ini" 644
|
defaultconfig "$(xdg_data_path sxmo/appcfg/wob.ini)" "$XDG_CONFIG_HOME/wob/wob.ini" 644
|
||||||
defaultconfig "$(xdg_data_path sxmo/appcfg/conky.conf)" "$XDG_CONFIG_HOME/sxmo/conky.conf" 644
|
defaultconfig "$(xdg_data_path sxmo/appcfg/conky.conf)" "$XDG_CONFIG_HOME/sxmo/conky.conf" 644
|
||||||
defaultconfig "$(xdg_data_path sxmo/appcfg/wofi.config)" "$XDG_CONFIG_HOME/wofi/config" 644
|
|
||||||
defaultconfig "$(xdg_data_path sxmo/appcfg/wofi.css)" "$XDG_CONFIG_HOME/wofi/style.css" 644
|
|
||||||
}
|
}
|
||||||
|
|
||||||
xorg() {
|
xorg() {
|
||||||
|
@@ -24,7 +24,7 @@ menu() {
|
|||||||
dmenu -i "$@"
|
dmenu -i "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
notify_success() {
|
notify_sucess() {
|
||||||
MSG="$1"
|
MSG="$1"
|
||||||
shift
|
shift
|
||||||
if "$@"; then
|
if "$@"; then
|
||||||
@@ -55,7 +55,7 @@ toggleconnection() {
|
|||||||
CONNLINE="$1"
|
CONNLINE="$1"
|
||||||
if echo "$CONNLINE" | grep -q "^$icon_don "; then
|
if echo "$CONNLINE" | grep -q "^$icon_don "; then
|
||||||
CONNNAME="$(echo "$CONNLINE" | cut -d' ' -f3-)"
|
CONNNAME="$(echo "$CONNLINE" | cut -d' ' -f3-)"
|
||||||
notify_success "Disabling connection" \
|
notify_sucess "Disabling connection" \
|
||||||
nmcli c down "$CONNNAME"
|
nmcli c down "$CONNNAME"
|
||||||
else
|
else
|
||||||
CONNNAME="$(echo "$CONNLINE" | cut -d' ' -f3-)"
|
CONNNAME="$(echo "$CONNLINE" | cut -d' ' -f3-)"
|
||||||
@@ -64,21 +64,11 @@ toggleconnection() {
|
|||||||
sxmo_notify_user.sh "Enabling wifi first."
|
sxmo_notify_user.sh "Enabling wifi first."
|
||||||
doas sxmo_wifitoggle.sh
|
doas sxmo_wifitoggle.sh
|
||||||
fi
|
fi
|
||||||
notify_success "Enabling connection" \
|
notify_sucess "Enabling connection" \
|
||||||
nmcli c up "$CONNNAME"
|
nmcli c up "$CONNNAME"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
togglegsm() {
|
|
||||||
if nmcli radio wwan | grep -q "enabled"; then
|
|
||||||
sxmo_notify_user.sh "Disabling GSM"
|
|
||||||
nmcli radio wwan off
|
|
||||||
else
|
|
||||||
sxmo_notify_user.sh "Enabling GSM"
|
|
||||||
nmcli radio wwan on
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
deletenetworkmenu() {
|
deletenetworkmenu() {
|
||||||
CHOICE="$(
|
CHOICE="$(
|
||||||
printf %b "$icon_cls Close Menu\n$(connections)" |
|
printf %b "$icon_cls Close Menu\n$(connections)" |
|
||||||
@@ -87,7 +77,7 @@ deletenetworkmenu() {
|
|||||||
[ -z "$CHOICE" ] && return
|
[ -z "$CHOICE" ] && return
|
||||||
echo "$CHOICE" | grep -q "Close Menu" && return
|
echo "$CHOICE" | grep -q "Close Menu" && return
|
||||||
CONNNAME="$(echo "$CHOICE" | cut -d' ' -f3-)"
|
CONNNAME="$(echo "$CHOICE" | cut -d' ' -f3-)"
|
||||||
notify_success "Deleting connection" \
|
notify_sucess "Deleting connection" \
|
||||||
nmcli c delete "$CONNNAME"
|
nmcli c delete "$CONNNAME"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,14 +94,14 @@ getifname() {
|
|||||||
addnetworkgsmmenu() {
|
addnetworkgsmmenu() {
|
||||||
CONNNAME="$(
|
CONNNAME="$(
|
||||||
echo "$icon_cls Close Menu" |
|
echo "$icon_cls Close Menu" |
|
||||||
sxmo_dmenu.sh -p "Alias"
|
sxmo_dmenu_with_kb.sh -p "Alias"
|
||||||
)"
|
)"
|
||||||
[ -z "$CONNNAME" ] && return
|
[ -z "$CONNNAME" ] && return
|
||||||
echo "$CONNNAME" | grep -q "Close Menu" && return
|
echo "$CONNNAME" | grep -q "Close Menu" && return
|
||||||
|
|
||||||
APN="$(
|
APN="$(
|
||||||
echo "$icon_cls Close Menu" |
|
echo "$icon_cls Close Menu" |
|
||||||
sxmo_dmenu.sh -p "APN"
|
sxmo_dmenu_with_kb.sh -p "APN"
|
||||||
)"
|
)"
|
||||||
[ -z "$APN" ] && return
|
[ -z "$APN" ] && return
|
||||||
echo "$APN" | grep -q "Close Menu" && return
|
echo "$APN" | grep -q "Close Menu" && return
|
||||||
@@ -136,27 +126,22 @@ addnetworkgsmmenu() {
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
notify_success "Adding connection" \
|
notify_sucess "Adding connection" \
|
||||||
nmcli c add type gsm ifname "$(getifname gsm)" con-name "$CONNNAME" \
|
nmcli c add type gsm ifname "$(getifname gsm)" con-name "$CONNNAME" \
|
||||||
apn "$APN" ${PASSWORD:+gsm.password "$PASSWORD"} \
|
apn "$APN" ${PASSWORD:+gsm.password "$PASSWORD"} \
|
||||||
${USERNAME:+gsm.username "$USERNAME"}
|
${USERNAME:+gsm.username "$USERNAME"}
|
||||||
}
|
}
|
||||||
|
|
||||||
addnetworkwpamenu() {
|
addnetworkwpamenu() {
|
||||||
SSID="$(cat <<EOF | sxmo_dmenu.sh -p "SSID"
|
SSID="$(cat <<EOF | sxmo_dmenu_with_kb.sh -p "SSID"
|
||||||
$icon_cls Close Menu
|
$icon_cls Close Menu
|
||||||
$(nmcli -t -f SSID,SECURITY dev wifi | awk '!seen[$0]++' | sed 's/:/ /')
|
$(nmcli d wifi list | tail -n +2 | grep -v '^\*' | awk -F' ' '{ print $6 }' | grep -v '\-\-')
|
||||||
EOF
|
EOF
|
||||||
)"
|
)"
|
||||||
[ -z "$SSID" ] && return
|
[ -z "$SSID" ] && return
|
||||||
echo "$SSID" | grep -q "Close Menu" && return
|
echo "$SSID" | grep -q "Close Menu" && return
|
||||||
|
|
||||||
SECURITY_TYPE="$(echo "$SSID" | cut -d" " -f 2)"
|
PASSPHRASE="$(cat <<EOF | sxmo_dmenu_with_kb.sh -p "Passphrase"
|
||||||
SSID="$(echo "$SSID" | cut -d" " -f 1)"
|
|
||||||
|
|
||||||
# If no security type, or it is '--' (not sure if this happens in terse mode), skip passphrase input
|
|
||||||
if [ -n "$SECURITY_TYPE" ] && [ "$SECURITY_TYPE" != "--" ]; then
|
|
||||||
PASSPHRASE="$(cat <<EOF | sxmo_dmenu.sh -p "Passphrase"
|
|
||||||
$icon_cls Close Menu
|
$icon_cls Close Menu
|
||||||
None
|
None
|
||||||
EOF
|
EOF
|
||||||
@@ -166,9 +151,8 @@ EOF
|
|||||||
unset PASSPHRASE
|
unset PASSPHRASE
|
||||||
fi
|
fi
|
||||||
echo "$PASSPHRASE" | grep -q "Close Menu" && return
|
echo "$PASSPHRASE" | grep -q "Close Menu" && return
|
||||||
fi
|
|
||||||
|
|
||||||
notify_success "Adding connection" \
|
notify_sucess "Adding connection" \
|
||||||
nmcli c add type wifi ifname wlan0 con-name "$SSID" ssid "$SSID" \
|
nmcli c add type wifi ifname wlan0 con-name "$SSID" ssid "$SSID" \
|
||||||
${PASSPHRASE:+802-11-wireless-security.key-mgmt wpa-psk 802-11-wireless-security.psk "$PASSPHRASE"}
|
${PASSPHRASE:+802-11-wireless-security.key-mgmt wpa-psk 802-11-wireless-security.psk "$PASSPHRASE"}
|
||||||
}
|
}
|
||||||
@@ -176,13 +160,13 @@ EOF
|
|||||||
addhotspotusbmenu() {
|
addhotspotusbmenu() {
|
||||||
CONNNAME="$(
|
CONNNAME="$(
|
||||||
echo "$icon_cls Close Menu" |
|
echo "$icon_cls Close Menu" |
|
||||||
sxmo_dmenu.sh -p "Alias"
|
sxmo_dmenu_with_kb.sh -p "Alias"
|
||||||
)"
|
)"
|
||||||
[ -z "$CONNNAME" ] && return
|
[ -z "$CONNNAME" ] && return
|
||||||
echo "$CONNNAME" | grep -q "Close Menu" && return
|
echo "$CONNNAME" | grep -q "Close Menu" && return
|
||||||
|
|
||||||
# TODO: restart udhcpd after disconnecting on postmarketOS
|
# TODO: restart udhcpd after disconnecting on postmarketOS
|
||||||
notify_success "Adding hotspot" \
|
notify_sucess "Adding hotspot" \
|
||||||
nmcli c add type ethernet ifname usb0 con-name "$CONNNAME" \
|
nmcli c add type ethernet ifname usb0 con-name "$CONNNAME" \
|
||||||
ipv4.method shared
|
ipv4.method shared
|
||||||
}
|
}
|
||||||
@@ -190,21 +174,21 @@ addhotspotusbmenu() {
|
|||||||
addhotspotwifimenu() {
|
addhotspotwifimenu() {
|
||||||
SSID="$(
|
SSID="$(
|
||||||
echo "$icon_cls Close Menu" |
|
echo "$icon_cls Close Menu" |
|
||||||
sxmo_dmenu.sh -p "SSID"
|
sxmo_dmenu_with_kb.sh -p "SSID"
|
||||||
)"
|
)"
|
||||||
[ -z "$SSID" ] && return
|
[ -z "$SSID" ] && return
|
||||||
echo "$SSID" | grep -q "Close Menu" && return
|
echo "$SSID" | grep -q "Close Menu" && return
|
||||||
|
|
||||||
key="$(
|
key="$(
|
||||||
echo "$icon_cls Close Menu" |
|
echo "$icon_cls Close Menu" |
|
||||||
sxmo_dmenu.sh -p "Passphrase"
|
sxmo_dmenu_with_kb.sh -p "Passphrase"
|
||||||
)"
|
)"
|
||||||
[ -z "$key" ] && return
|
[ -z "$key" ] && return
|
||||||
echo "$key" | grep -q "Close Menu" && return
|
echo "$key" | grep -q "Close Menu" && return
|
||||||
|
|
||||||
key1="$(
|
key1="$(
|
||||||
echo "$icon_cls Close Menu" |
|
echo "$icon_cls Close Menu" |
|
||||||
sxmo_dmenu.sh -p "Confirm"
|
sxmo_dmenu_with_kb.sh -p "Confirm"
|
||||||
)"
|
)"
|
||||||
[ -z "$key1" ] && return
|
[ -z "$key1" ] && return
|
||||||
echo "$key1" | grep -q "Close Menu" && return
|
echo "$key1" | grep -q "Close Menu" && return
|
||||||
@@ -226,12 +210,12 @@ addhotspotwifimenu() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
channel="$(
|
channel="$(
|
||||||
printf "%s Close Menu\n11\n" "$icon_cls" | sxmo_dmenu.sh -p "Channel"
|
printf "%s Close Menu\n11\n" "$icon_cls" | sxmo_dmenu_with_kb.sh -p "Channel"
|
||||||
)"
|
)"
|
||||||
[ -z "$channel" ] && return
|
[ -z "$channel" ] && return
|
||||||
echo "$channel" | grep -q "Close Menu" && return
|
echo "$channel" | grep -q "Close Menu" && return
|
||||||
|
|
||||||
notify_success "Adding hotspot wifi" \
|
notify_sucess "Adding hotspot wifi" \
|
||||||
nmcli device wifi hotspot ifname wlan0 con-name "Hotspot $SSID" \
|
nmcli device wifi hotspot ifname wlan0 con-name "Hotspot $SSID" \
|
||||||
ssid "$SSID" channel "$channel" band bg password "$key"
|
ssid "$SSID" channel "$channel" band bg password "$key"
|
||||||
}
|
}
|
||||||
@@ -263,13 +247,6 @@ $(
|
|||||||
fi
|
fi
|
||||||
)
|
)
|
||||||
$icon_cfg Nmtui
|
$icon_cfg Nmtui
|
||||||
$(
|
|
||||||
if nmcli radio wwan | grep -q "enabled"; then
|
|
||||||
printf "%s Disable GSM\n" $icon_modem_disabled
|
|
||||||
else
|
|
||||||
printf "%s Enable GSM\n" $icon_modem_registered
|
|
||||||
fi
|
|
||||||
)
|
|
||||||
$icon_cfg Ifconfig
|
$icon_cfg Ifconfig
|
||||||
$([ -z "$WIFI_ENABLED" ] || printf "%s Scan Wifi Networks\n" "$icon_wif")
|
$([ -z "$WIFI_ENABLED" ] || printf "%s Scan Wifi Networks\n" "$icon_wif")
|
||||||
EOF
|
EOF
|
||||||
@@ -297,9 +274,6 @@ EOF
|
|||||||
*"Nmtui" )
|
*"Nmtui" )
|
||||||
sxmo_terminal.sh nmtui || continue # Killeable
|
sxmo_terminal.sh nmtui || continue # Killeable
|
||||||
;;
|
;;
|
||||||
*"Disable GSM"|*"Enable GSM" )
|
|
||||||
togglegsm
|
|
||||||
;;
|
|
||||||
*"Ifconfig" )
|
*"Ifconfig" )
|
||||||
sxmo_terminal.sh watch -n 2 ifconfig || continue # Killeable
|
sxmo_terminal.sh watch -n 2 ifconfig || continue # Killeable
|
||||||
;;
|
;;
|
||||||
|
@@ -1,193 +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
|
|
||||||
# shellcheck source=configs/default_hooks/sxmo_hook_icons.sh
|
|
||||||
. sxmo_hook_icons.sh
|
|
||||||
|
|
||||||
_clear_notif_group() {
|
|
||||||
find "$SXMO_NOTIFDIR" -type f | while read -r file; do
|
|
||||||
if awk NR==1 "$file" | grep -lxq "$1"; then
|
|
||||||
rm "$file"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
_handle_new_notif_file(){
|
|
||||||
file="$1"
|
|
||||||
|
|
||||||
if [ "$(wc -l "$file" | cut -d' ' -f1)" -lt 3 ]; then
|
|
||||||
sxmo_log "Invalid notification file $file found, deleting!"
|
|
||||||
rm -f "$file"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
sxmo_hook_notification.sh "$file" &
|
|
||||||
|
|
||||||
group="$(awk NR==1 "$file")"
|
|
||||||
action="$(awk NR==2 "$file")"
|
|
||||||
msg="$(tail -n+3 "$file" | cut -c1-70)"
|
|
||||||
|
|
||||||
case "$(dunstify --action="default,Open" "$msg")" in
|
|
||||||
"2")
|
|
||||||
#
|
|
||||||
# _clear_notif_group "$group"
|
|
||||||
#
|
|
||||||
;;
|
|
||||||
"default")
|
|
||||||
_clear_notif_group "$group"
|
|
||||||
setsid -f sh -c "$action" > /dev/null 2>&1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
_notifications_hook() {
|
|
||||||
sxmo_hook_notifications.sh "$(find "$SXMO_NOTIFDIR"/ -type f | wc -l)"
|
|
||||||
}
|
|
||||||
|
|
||||||
monitor() {
|
|
||||||
mkdir -p "$SXMO_NOTIFDIR"
|
|
||||||
|
|
||||||
find "$SXMO_NOTIFDIR" -type f | while read -r file; do
|
|
||||||
_handle_new_notif_file "$file"
|
|
||||||
done
|
|
||||||
|
|
||||||
_notifications_hook
|
|
||||||
|
|
||||||
fifo="$(mktemp -u)"
|
|
||||||
mkfifo "$fifo"
|
|
||||||
inotifywait -mq -e attrib,move,delete "$SXMO_NOTIFDIR" >> "$fifo" &
|
|
||||||
inotif_pid=$!
|
|
||||||
|
|
||||||
finish() {
|
|
||||||
kill "$inotif_pid"
|
|
||||||
rm "$fifo"
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
trap 'finish' TERM INT EXIT
|
|
||||||
|
|
||||||
while read -r notif_folder notif_type notif_file; do
|
|
||||||
if echo "$notif_type" | grep -qE "CREATE|MOVED_TO|ATTRIB"; then
|
|
||||||
_handle_new_notif_file "$notif_folder$notif_file"
|
|
||||||
fi
|
|
||||||
_notifications_hook
|
|
||||||
done < "$fifo"
|
|
||||||
|
|
||||||
wait "$inotif_pid"
|
|
||||||
}
|
|
||||||
|
|
||||||
_menu_lines() {
|
|
||||||
find "$SXMO_NOTIFDIR" -type f | while read -r file; do
|
|
||||||
msg="$(tail -n+3 "$file" | tr "\n^" " ")"
|
|
||||||
hrandmin="$(stat --printf %y "$file" | grep -oE '[0-9]{2}:[0-9]{2}')"
|
|
||||||
cat <<EOF
|
|
||||||
$hrandmin $msg^$file
|
|
||||||
EOF
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
menu() {
|
|
||||||
choices="$(cat <<EOF
|
|
||||||
$icon_cls Close Menu
|
|
||||||
$icon_del Clear Notifications
|
|
||||||
$(_menu_lines)
|
|
||||||
EOF
|
|
||||||
)"
|
|
||||||
|
|
||||||
picked="$(
|
|
||||||
printf "%b" "$choices" |
|
|
||||||
cut -d^ -f1 |
|
|
||||||
sxmo_dmenu.sh -i -p "Notifs"
|
|
||||||
)"
|
|
||||||
|
|
||||||
case "$picked" in
|
|
||||||
"$icon_cls Close Menu"|"")
|
|
||||||
exit
|
|
||||||
;;
|
|
||||||
"$icon_del Clear Notifications")
|
|
||||||
rm "$SXMO_NOTIFDIR"/*
|
|
||||||
# we must update statusbar here because this function depends
|
|
||||||
# on number of files in $SXMO_NOTIFDIR
|
|
||||||
sxmo_hook_statusbar.sh notifications
|
|
||||||
exit
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
file="$(
|
|
||||||
printf "%b" "$choices" |
|
|
||||||
grep -F "$picked" |
|
|
||||||
cut -d^ -f2
|
|
||||||
)"
|
|
||||||
group="$(awk NR==1 "$file")"
|
|
||||||
action="$(awk NR==2 "$file")"
|
|
||||||
_clear_notif_group "$group"
|
|
||||||
setsid -f sh -c "$action" > /dev/null 2>&1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
new() {
|
|
||||||
while : ; do
|
|
||||||
case "$1" in
|
|
||||||
-i)
|
|
||||||
id="$2"
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
-g)
|
|
||||||
group="$2"
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ "$#" -lt 2 ]; then
|
|
||||||
usage
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$id" ]; then
|
|
||||||
id="$(tr -dc 'a-zA-Z0-9' < /dev/urandom 2>/dev/null | head -c 10)"
|
|
||||||
fi
|
|
||||||
if [ -z "$group" ]; then
|
|
||||||
group="$(tr -dc 'a-zA-Z0-9' < /dev/urandom 2>/dev/null | head -c 10)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
action="$1"
|
|
||||||
msg="$2"
|
|
||||||
|
|
||||||
touch "$SXMO_NOTIFDIR/$id"
|
|
||||||
printf "%s\n%s\n%b\n" "$group" "$action" "$msg" > "$SXMO_NOTIFDIR/$id"
|
|
||||||
|
|
||||||
sxmo_hook_statusbar.sh notifications
|
|
||||||
}
|
|
||||||
|
|
||||||
usage() {
|
|
||||||
cat <<EOF
|
|
||||||
$(basename "$0"): manage sxmo notifications
|
|
||||||
|
|
||||||
Subcommands:
|
|
||||||
monitor
|
|
||||||
Watch for new notification, dispatch libnotify events, handle actions
|
|
||||||
menu
|
|
||||||
Open a menu to dismiss notifications
|
|
||||||
new [-i id] [-g group] <action> <message...>
|
|
||||||
Register a new notification
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd="$1"
|
|
||||||
shift
|
|
||||||
case "$cmd" in
|
|
||||||
monitor) monitor "$@";;
|
|
||||||
menu) menu "$@";;
|
|
||||||
new) new "$@";;
|
|
||||||
*)
|
|
||||||
usage
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
@@ -336,5 +336,9 @@ fi
|
|||||||
|
|
||||||
if [ $# -gt 0 ]; then
|
if [ $# -gt 0 ]; then
|
||||||
set -- "${1#file://}"
|
set -- "${1#file://}"
|
||||||
run "$@"
|
if [ "$attached" = "1" ]; then
|
||||||
|
xdg-open "$@"
|
||||||
|
else
|
||||||
|
xdg-open "$@" &
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
@@ -9,7 +9,7 @@ menu() {
|
|||||||
printf %b "$(
|
printf %b "$(
|
||||||
echo "Close Menu";
|
echo "Close Menu";
|
||||||
echo "$INPUT" | grep -Eo '\S+' | tr -d '[:blank:]' | sort | uniq
|
echo "$INPUT" | grep -Eo '\S+' | tr -d '[:blank:]' | sort | uniq
|
||||||
)" | sxmo_dmenu.sh -p "$PROMPT" -i
|
)" | sxmo_dmenu_with_kb.sh -p "$PROMPT" -i
|
||||||
)"
|
)"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -24,11 +24,11 @@ resume_all() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ! command -v playerctl >/dev/null; then
|
if ! command -v playerctl >/dev/null; then
|
||||||
exit
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! playerctl status >/dev/null 2>&1; then
|
if ! playerctl status >/dev/null 2>&1; then
|
||||||
exit
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
|
@@ -9,22 +9,44 @@
|
|||||||
# This hook enables the proximity lock.
|
# This hook enables the proximity lock.
|
||||||
|
|
||||||
finish() {
|
finish() {
|
||||||
|
kill "$EVENTMONITORPID"
|
||||||
|
kill "$TAILPID"
|
||||||
|
rm "$tmp"
|
||||||
|
|
||||||
|
# De-activate thresholds
|
||||||
|
printf 0 > "$prox_path/events/in_proximity_thresh_falling_value"
|
||||||
|
# The in_proximity_scale affects the maximum threshold value
|
||||||
|
# (see static const int stk3310_ps_max[4])
|
||||||
|
printf 6553 > "$prox_path/events/in_proximity_thresh_rising_value"
|
||||||
|
|
||||||
sxmo_wakelock.sh unlock sxmo_proximity_lock_running
|
sxmo_wakelock.sh unlock sxmo_proximity_lock_running
|
||||||
sxmo_state.sh restore "$storeid"
|
|
||||||
|
if [ -n "$INITIALSTATE" ]; then
|
||||||
|
sxmo_state.sh set "$INITIALSTATE"
|
||||||
|
fi
|
||||||
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
near() {
|
near() {
|
||||||
|
if [ -z "$INITIALSTATE" ]; then
|
||||||
|
INITIALSTATE="$(cat "$SXMO_STATE")"
|
||||||
|
fi
|
||||||
|
|
||||||
sxmo_debug "near"
|
sxmo_debug "near"
|
||||||
sxmo_state.sh set screenoff
|
sxmo_state.sh set screenoff
|
||||||
}
|
}
|
||||||
|
|
||||||
far() {
|
far() {
|
||||||
|
if [ -z "$INITIALSTATE" ]; then
|
||||||
|
INITIALSTATE="$(cat "$SXMO_STATE")"
|
||||||
|
fi
|
||||||
|
|
||||||
sxmo_debug "far"
|
sxmo_debug "far"
|
||||||
sxmo_state.sh set unlock
|
sxmo_state.sh set unlock
|
||||||
}
|
}
|
||||||
|
|
||||||
trap 'finish' TERM INT EXIT
|
trap 'finish' TERM INT
|
||||||
|
|
||||||
sxmo_wakelock.sh lock sxmo_proximity_lock_running infinite
|
sxmo_wakelock.sh lock sxmo_proximity_lock_running infinite
|
||||||
|
|
||||||
@@ -34,17 +56,35 @@ if [ -z "$SXMO_PROX_RAW_BUS" ]; then
|
|||||||
else
|
else
|
||||||
prox_raw_bus="$SXMO_PROX_RAW_BUS"
|
prox_raw_bus="$SXMO_PROX_RAW_BUS"
|
||||||
fi
|
fi
|
||||||
|
prox_path="$(dirname "$prox_raw_bus")"
|
||||||
|
prox_name="$(cat "$prox_path/name")" # e.g. stk3310
|
||||||
|
|
||||||
storeid="$(sxmo_state.sh store)"
|
# set some sane defaults
|
||||||
|
printf "%d" "${SXMO_PROX_FALLING:-50}" > "$prox_path/events/in_proximity_thresh_falling_value"
|
||||||
|
printf "%d" "${SXMO_PROX_RISING:-100}" > "$prox_path/events/in_proximity_thresh_rising_value"
|
||||||
|
|
||||||
while : ; do
|
tmp="$(mktemp)"
|
||||||
value="$(cat "$prox_raw_bus")"
|
|
||||||
if [ "$value" -gt 100 ] && [ "$last" != "near" ]; then
|
# TODO: stdbuf not needed with linux-tools-iio >=5.17
|
||||||
|
stdbuf -o L iio_event_monitor "$prox_name" >> "$tmp" &
|
||||||
|
EVENTMONITORPID=$!
|
||||||
|
|
||||||
|
tail -f "$tmp" | while read -r line; do
|
||||||
|
if echo "$line" | grep -q rising; then
|
||||||
near
|
near
|
||||||
last=near
|
elif echo "$line" | grep -q falling; then
|
||||||
elif [ "$value" -lt 100 ] && [ "$last" != "far" ]; then
|
|
||||||
far
|
far
|
||||||
last=far
|
|
||||||
fi
|
fi
|
||||||
sleep 0.5
|
done &
|
||||||
done
|
TAILPID=$!
|
||||||
|
|
||||||
|
initial_distance="$(cat "$prox_raw_bus")"
|
||||||
|
if [ "$initial_distance" -gt "${SXMO_PROX_FALLING:-50}" ]; then
|
||||||
|
near
|
||||||
|
elif [ "$initial_distance" -lt "${SXMO_PROX_RISING:-100}" ]; then
|
||||||
|
far
|
||||||
|
fi
|
||||||
|
|
||||||
|
wait
|
||||||
|
|
||||||
|
finish
|
||||||
|
@@ -7,7 +7,16 @@
|
|||||||
|
|
||||||
. sxmo_common.sh
|
. sxmo_common.sh
|
||||||
|
|
||||||
exec sxmo_wakelock.sh run sh -c '
|
# We can have multiple cronjobs at the same time
|
||||||
|
sxmo_wakelock.sh lock sxmo_executing_cronjob_$$ infinite
|
||||||
sxmo_wakelock.sh unlock sxmo_waiting_cronjob
|
sxmo_wakelock.sh unlock sxmo_waiting_cronjob
|
||||||
exec "$@"
|
|
||||||
' "" "$@"
|
finish() {
|
||||||
|
sxmo_wakelock.sh unlock sxmo_executing_cronjob_$$
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
trap 'finish' TERM INT EXIT
|
||||||
|
|
||||||
|
sxmo_log "Running $*"
|
||||||
|
"$@"
|
||||||
|
@@ -2,40 +2,13 @@
|
|||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
# Copyright 2022 Sxmo Contributors
|
# Copyright 2022 Sxmo Contributors
|
||||||
|
|
||||||
usage() {
|
if [ "$1" = "-" ]; then
|
||||||
cat <<-EOF >&2
|
|
||||||
Usage: $(basename "$0") [-w] [-c <clock-name>] <timeout> [--] <cmd...>
|
|
||||||
EOF
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
while [ -n "$*" ]; do
|
|
||||||
case "$1" in
|
|
||||||
"--")
|
|
||||||
shift
|
|
||||||
break;
|
|
||||||
;;
|
|
||||||
"-w")
|
|
||||||
waitfirst=1
|
waitfirst=1
|
||||||
shift
|
shift
|
||||||
;;
|
|
||||||
"-c")
|
|
||||||
clockname="$2"
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
if [ -n "$timeout" ]; then
|
|
||||||
break;
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
timeout="$1"
|
timeout="$1"
|
||||||
shift
|
shift
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ -z "$timeout" ] || [ -z "$*" ]; then
|
|
||||||
usage
|
|
||||||
fi
|
|
||||||
|
|
||||||
finish() {
|
finish() {
|
||||||
[ -n "$CMDPID" ] && kill "$CMDPID"
|
[ -n "$CMDPID" ] && kill "$CMDPID"
|
||||||
@@ -46,7 +19,7 @@ finish() {
|
|||||||
trap 'finish' TERM INT
|
trap 'finish' TERM INT
|
||||||
|
|
||||||
if [ -n "$waitfirst" ]; then
|
if [ -n "$waitfirst" ]; then
|
||||||
sxmo_sleep ${clockname:+-c $clockname} "$timeout" &
|
sleep "$timeout" &
|
||||||
SLEEPPID="$!"
|
SLEEPPID="$!"
|
||||||
wait "$SLEEPPID"
|
wait "$SLEEPPID"
|
||||||
unset SLEEPPID
|
unset SLEEPPID
|
||||||
@@ -58,7 +31,7 @@ while : ; do
|
|||||||
wait "$CMDPID"
|
wait "$CMDPID"
|
||||||
unset CMDPID
|
unset CMDPID
|
||||||
|
|
||||||
sxmo_sleep ${clockname:+-c $clockname} "$timeout" &
|
sleep "$timeout" &
|
||||||
SLEEPPID="$!"
|
SLEEPPID="$!"
|
||||||
wait "$SLEEPPID"
|
wait "$SLEEPPID"
|
||||||
unset SLEEPPID
|
unset SLEEPPID
|
||||||
|
@@ -4,13 +4,7 @@
|
|||||||
# shellcheck source=scripts/core/sxmo_common.sh
|
# shellcheck source=scripts/core/sxmo_common.sh
|
||||||
. sxmo_common.sh
|
. sxmo_common.sh
|
||||||
|
|
||||||
SXMO_STATE="${SXMO_STATE:-$XDG_RUNTIME_DIR/sxmo.state}"
|
|
||||||
if command -v peanutbutter > /dev/null; then
|
|
||||||
#no separate lock stage needed when peanutbutter is used
|
|
||||||
SXMO_STATES="${SXMO_STATES:-unlock screenoff}"
|
|
||||||
else
|
|
||||||
SXMO_STATES="${SXMO_STATES:-unlock lock screenoff}"
|
SXMO_STATES="${SXMO_STATES:-unlock lock screenoff}"
|
||||||
fi
|
|
||||||
SXMO_SUSPENDABLE_STATES="${SXMO_SUSPENDABLE_STATES:-screenoff 3}"
|
SXMO_SUSPENDABLE_STATES="${SXMO_SUSPENDABLE_STATES:-screenoff 3}"
|
||||||
|
|
||||||
transition_can_suspend() {
|
transition_can_suspend() {
|
||||||
@@ -54,11 +48,15 @@ transition_can_suspend() {
|
|||||||
transition() {
|
transition() {
|
||||||
state="$1"
|
state="$1"
|
||||||
|
|
||||||
|
# We don't transition if we stay with the same state
|
||||||
|
# shellcheck disable=SC2153
|
||||||
|
if [ "$state" = "$(cat "$SXMO_STATE")" ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
sxmo_log "transitioning to stage $state"
|
sxmo_log "transitioning to stage $state"
|
||||||
printf %s "$state" > "$SXMO_STATE"
|
printf %s "$state" > "$SXMO_STATE"
|
||||||
|
|
||||||
lock_shared
|
|
||||||
|
|
||||||
(
|
(
|
||||||
# We need a subshell so we can close the lock fd, without
|
# We need a subshell so we can close the lock fd, without
|
||||||
# releasing the lock
|
# releasing the lock
|
||||||
@@ -97,7 +95,6 @@ click() {
|
|||||||
else
|
else
|
||||||
transition "$state"
|
transition "$state"
|
||||||
fi
|
fi
|
||||||
flushstored
|
|
||||||
}
|
}
|
||||||
|
|
||||||
idle() {
|
idle() {
|
||||||
@@ -119,75 +116,18 @@ idle() {
|
|||||||
sxmo_log "idle: not transitioning from $state"
|
sxmo_log "idle: not transitioning from $state"
|
||||||
}
|
}
|
||||||
|
|
||||||
store() {
|
|
||||||
storeid="$(tr -dc 'a-zA-Z0-9' < /dev/urandom 2>/dev/null | head -c 10)"
|
|
||||||
printf %s "$state" > "$SXMO_STATE.stored.$storeid"
|
|
||||||
printf %s "$storeid"
|
|
||||||
}
|
|
||||||
|
|
||||||
flushstored() {
|
|
||||||
find "$(dirname "$SXMO_STATE")" -name 'sxmo.state.stored.*' -delete
|
|
||||||
}
|
|
||||||
|
|
||||||
restore() {
|
|
||||||
storeid="$1"
|
|
||||||
if [ -f "$SXMO_STATE.stored.$storeid" ]; then
|
|
||||||
state="$(cat "$SXMO_STATE.stored.$storeid")"
|
|
||||||
transition "$state"
|
|
||||||
flushstored
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
exec 3<> "$SXMO_STATE.lock"
|
exec 3<> "$SXMO_STATE.lock"
|
||||||
|
|
||||||
lock_exclusive() {
|
|
||||||
flock -x 3
|
flock -x 3
|
||||||
}
|
|
||||||
|
|
||||||
lock_shared() {
|
|
||||||
flock -s 3
|
|
||||||
}
|
|
||||||
|
|
||||||
read_state() {
|
|
||||||
state="$(cat "$SXMO_STATE")"
|
state="$(cat "$SXMO_STATE")"
|
||||||
}
|
|
||||||
|
|
||||||
action="$1"
|
action="$1"
|
||||||
shift
|
shift
|
||||||
case "$action" in
|
case "$action" in
|
||||||
click|idle)
|
click|idle) "$action" "$@" ;;
|
||||||
lock_exclusive
|
|
||||||
read_state
|
|
||||||
"$action" "$@" ;;
|
|
||||||
get)
|
|
||||||
lock_shared
|
|
||||||
read_state
|
|
||||||
printf %s "$state"
|
|
||||||
;;
|
|
||||||
is_locked)
|
|
||||||
pidof peanutbutter swaylock waylock i3lock > /dev/null && exit 0
|
|
||||||
if sxmo_state.sh get | grep -q unlock; then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
set)
|
set)
|
||||||
lock_exclusive
|
|
||||||
read_state
|
|
||||||
if printf "%b\n" "$SXMO_STATES" | tr ' ' '\n' | grep -xq "$1"; then
|
if printf "%b\n" "$SXMO_STATES" | tr ' ' '\n' | grep -xq "$1"; then
|
||||||
transition "$1"
|
transition "$1"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
store)
|
|
||||||
lock_exclusive
|
|
||||||
read_state
|
|
||||||
store
|
|
||||||
;;
|
|
||||||
restore)
|
|
||||||
lock_exclusive
|
|
||||||
restore "$1"
|
|
||||||
;;
|
|
||||||
flushstored)
|
|
||||||
lock_exclusive
|
|
||||||
flushstored
|
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
|
@@ -75,5 +75,7 @@ link_select() {
|
|||||||
link_normalize "$(xprop -id "$SURF_WINDOW" _SURF_URI | cut -d '"' -f 2)"
|
link_normalize "$(xprop -id "$SURF_WINDOW" _SURF_URI | cut -d '"' -f 2)"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sxmo_keyboard.sh open
|
||||||
VAL="$(link_select)"
|
VAL="$(link_select)"
|
||||||
|
sxmo_keyboard.sh close
|
||||||
echo "$VAL"
|
echo "$VAL"
|
||||||
|
@@ -21,26 +21,6 @@ if [ -n "$mnc" ] && [ "$mnc" -gt 0 ] && [ "$mnc" -lt "$YEARS8_TO_SEC" ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
if [ "$SXMO_DEVICE_NAME" = "google,b4s4-sdm670" ]; then #(google pixel 3a)
|
|
||||||
# Quoting Richard Acayan from: https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/5400/ :
|
|
||||||
#
|
|
||||||
# There is a bug in FastRPC when waking from suspend. Since HexagonRPCD is
|
|
||||||
# currently only useful for a few moments when the ADSP is requesting the
|
|
||||||
# sensor registry, it can just be stopped without affecting sensor
|
|
||||||
# support. Add a pre-suspend hook to stop HexagonRPCD so it doesn't crash
|
|
||||||
# the ADSP when the device wakes up.
|
|
||||||
#
|
|
||||||
case "$SXMO_OS" in
|
|
||||||
alpine|postmarketos)
|
|
||||||
doas -n rc-service hexagonrpcd-adsp-sensorspd stop
|
|
||||||
;;
|
|
||||||
arch|archarm|nixos|debian)
|
|
||||||
doas -n systemctl stop hexagonrpcd-adsp-sensorspd
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
sxmo_log "calling suspend with suspend_time <$suspend_time>"
|
sxmo_log "calling suspend with suspend_time <$suspend_time>"
|
||||||
|
|
||||||
start="$(date "+%s")"
|
start="$(date "+%s")"
|
||||||
|
@@ -1,33 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
|
||||||
# Copyright 2024 Sxmo Contributors
|
|
||||||
|
|
||||||
# Tabbed options for various programs
|
|
||||||
|
|
||||||
# include common definitions
|
|
||||||
# shellcheck source=scripts/core/sxmo_common.sh
|
|
||||||
. sxmo_common.sh
|
|
||||||
|
|
||||||
OPTIONS="
|
|
||||||
alacritty --embed
|
|
||||||
st -w
|
|
||||||
surf -e
|
|
||||||
urxvt -embed
|
|
||||||
zathura -e
|
|
||||||
"
|
|
||||||
|
|
||||||
LIST="$(grep . <<-EOF | sxmo_dmenu.sh -p "Tabbed Embed"
|
|
||||||
$OPTIONS
|
|
||||||
Nothing
|
|
||||||
Close
|
|
||||||
EOF
|
|
||||||
)"
|
|
||||||
|
|
||||||
case "$LIST" in
|
|
||||||
"Close"|"") exit 0 ;;
|
|
||||||
"Nothing") tabbed ;;
|
|
||||||
*)
|
|
||||||
# shellcheck disable=SC2086
|
|
||||||
tabbed $LIST
|
|
||||||
;;
|
|
||||||
esac
|
|
@@ -15,9 +15,6 @@ case "$SXMO_TERMINAL" in
|
|||||||
"st"*)
|
"st"*)
|
||||||
set -- $SXMO_TERMINAL -T "$TERMNAME" -e "$@"
|
set -- $SXMO_TERMINAL -T "$TERMNAME" -e "$@"
|
||||||
;;
|
;;
|
||||||
"tilix"*)
|
|
||||||
set -- $SXMO_TERMINAL -t "$TERMNAME" -e "$@"
|
|
||||||
;;
|
|
||||||
"foot"*)
|
"foot"*)
|
||||||
set -- $SXMO_TERMINAL -T "$TERMNAME" "$@"
|
set -- $SXMO_TERMINAL -T "$TERMNAME" "$@"
|
||||||
;;
|
;;
|
||||||
@@ -25,13 +22,7 @@ case "$SXMO_TERMINAL" in
|
|||||||
set -- ${SXMO_TERMINAL% --} --title "$TERMNAME" -- "$@"
|
set -- ${SXMO_TERMINAL% --} --title "$TERMNAME" -- "$@"
|
||||||
;;
|
;;
|
||||||
"alacritty"*)
|
"alacritty"*)
|
||||||
# Test if alacritty was called with shell or a program
|
|
||||||
# Even with dynamic_title = true in config title will be static with -T switch
|
|
||||||
if [ "$*" = "$SHELL" ]; then
|
|
||||||
set -- $SXMO_TERMINAL
|
|
||||||
else
|
|
||||||
set -- $SXMO_TERMINAL -T "$TERMNAME" -e "$@"
|
set -- $SXMO_TERMINAL -T "$TERMNAME" -e "$@"
|
||||||
fi
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
printf "%s: '%s'\n" "Not implemented for SXMO_TERMINAL" "$SXMO_TERMINAL" >&2
|
printf "%s: '%s'\n" "Not implemented for SXMO_TERMINAL" "$SXMO_TERMINAL" >&2
|
||||||
|
@@ -30,7 +30,7 @@ menu() {
|
|||||||
find "$zoneinfo_dir" -type f |
|
find "$zoneinfo_dir" -type f |
|
||||||
sed "s#^${zoneinfo_dir}/##g" |
|
sed "s#^${zoneinfo_dir}/##g" |
|
||||||
sort |
|
sort |
|
||||||
sxmo_dmenu.sh -p Timezone -i
|
sxmo_dmenu_with_kb.sh -p Timezone -i
|
||||||
)" || exit 0
|
)" || exit 0
|
||||||
sxmo_terminal.sh "$0" "$T"
|
sxmo_terminal.sh "$0" "$T"
|
||||||
}
|
}
|
||||||
|
@@ -38,7 +38,7 @@ pactl info
|
|||||||
/usr/bin/mmcli --version | head -n 1
|
/usr/bin/mmcli --version | head -n 1
|
||||||
uname -m
|
uname -m
|
||||||
. /etc/os-release
|
. /etc/os-release
|
||||||
printf "%s %s\n" "$NAME" "$VERSION"
|
printf "%s %s" "$NAME" "$VERSION"
|
||||||
|
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
if [ "$1" = "--block" ]; then
|
if [ "$1" = "--block" ]; then
|
||||||
|
@@ -11,7 +11,6 @@ Usage: $(basename "$0") ACTION
|
|||||||
isenabled
|
isenabled
|
||||||
lock <lock-name> <duration|nanosec|infinite>
|
lock <lock-name> <duration|nanosec|infinite>
|
||||||
unlock <lock-name>
|
unlock <lock-name>
|
||||||
run <cmd...>
|
|
||||||
duration: <value><unit>
|
duration: <value><unit>
|
||||||
value: integer
|
value: integer
|
||||||
unit: ms|s|mn|h (milisec, sec, minute, hour)
|
unit: ms|s|mn|h (milisec, sec, minute, hour)
|
||||||
@@ -39,7 +38,8 @@ lock() {
|
|||||||
case "$2" in
|
case "$2" in
|
||||||
infinite)
|
infinite)
|
||||||
sxmo_debug "lock $1 infinite"
|
sxmo_debug "lock $1 infinite"
|
||||||
set "$1"
|
echo "$1" | doas tee -a /sys/power/wake_lock > /dev/null
|
||||||
|
exit
|
||||||
;;
|
;;
|
||||||
*ms)
|
*ms)
|
||||||
_validint "${2%ms}"
|
_validint "${2%ms}"
|
||||||
@@ -59,13 +59,8 @@ lock() {
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if [ -n "$2" ]; then
|
|
||||||
sxmo_debug "lock $1 $2"
|
sxmo_debug "lock $1 $2"
|
||||||
echo "$1 $2" | doas tee -a /sys/power/wake_lock > /dev/null
|
echo "$1 $2" | doas tee -a /sys/power/wake_lock > /dev/null
|
||||||
else
|
|
||||||
sxmo_debug "lock $1 indefinitely"
|
|
||||||
echo "$1" | doas tee -a /sys/power/wake_lock > /dev/null
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
unlock() {
|
unlock() {
|
||||||
@@ -93,30 +88,6 @@ case "$cmd" in
|
|||||||
isenabled) isenabled "$@";;
|
isenabled) isenabled "$@";;
|
||||||
lock) lock "$@";;
|
lock) lock "$@";;
|
||||||
unlock) unlock "$@";;
|
unlock) unlock "$@";;
|
||||||
run)
|
|
||||||
finish() {
|
|
||||||
if [ -n "$cmdpid" ]; then
|
|
||||||
kill "$cmdpid" 2> /dev/null
|
|
||||||
fi
|
|
||||||
unlock "sxmo_wakelock_$$"
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
if isenabled; then
|
|
||||||
lock "sxmo_wakelock_$$" infinite
|
|
||||||
trap finish INT TERM EXIT
|
|
||||||
else
|
|
||||||
cat <<-EOF >&2
|
|
||||||
Warning: we can't wakelock, we can't make sure no suspension will occur...
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
"$@" &
|
|
||||||
cmdpid=$!
|
|
||||||
wait "$cmdpid"
|
|
||||||
|
|
||||||
unset cmdpid
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
sxmo_log "warning: sxmo_wakelock.sh $*"
|
sxmo_log "warning: sxmo_wakelock.sh $*"
|
||||||
usage; exit 1;;
|
usage; exit 1;;
|
||||||
|
@@ -7,7 +7,6 @@ envvars() {
|
|||||||
export MOZ_ENABLE_WAYLAND=1
|
export MOZ_ENABLE_WAYLAND=1
|
||||||
export SDL_VIDEODRIVER=wayland
|
export SDL_VIDEODRIVER=wayland
|
||||||
export XDG_CURRENT_DESKTOP=sway
|
export XDG_CURRENT_DESKTOP=sway
|
||||||
[ -z "$SXMO_MENU" ] && export SXMO_MENU=bemenu
|
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
command -v $SXMO_TERMINAL "" >/dev/null || export SXMO_TERMINAL="foot"
|
command -v $SXMO_TERMINAL "" >/dev/null || export SXMO_TERMINAL="foot"
|
||||||
command -v "$KEYBOARD" >/dev/null || export KEYBOARD=wvkbd-mobintl
|
command -v "$KEYBOARD" >/dev/null || export KEYBOARD=wvkbd-mobintl
|
||||||
@@ -25,17 +24,7 @@ with_dbus() {
|
|||||||
|
|
||||||
cleanup() {
|
cleanup() {
|
||||||
sxmo_jobs.sh stop all
|
sxmo_jobs.sh stop all
|
||||||
case "$SXMO_MENU" in
|
|
||||||
bemenu)
|
|
||||||
pkill bemenu
|
pkill bemenu
|
||||||
;;
|
|
||||||
wofi)
|
|
||||||
pkill wofi
|
|
||||||
;;
|
|
||||||
dmenu)
|
|
||||||
pkill dmenu
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
pkill wvkbd
|
pkill wvkbd
|
||||||
pkill superd
|
pkill superd
|
||||||
}
|
}
|
||||||
|
@@ -73,7 +73,7 @@ swayinputevent() {
|
|||||||
|
|
||||||
# If we dont have any matching input
|
# If we dont have any matching input
|
||||||
if ! swaymsg -t get_inputs \
|
if ! swaymsg -t get_inputs \
|
||||||
| jq -r ".[] | select(.type == \"$TOUCH_POINTER_ID\" )" \
|
| gojq -r ".[] | select(.type == \"$TOUCH_POINTER_ID\" )" \
|
||||||
| grep -q .; then
|
| grep -q .; then
|
||||||
|
|
||||||
if [ -z "$2" ]; then
|
if [ -z "$2" ]; then
|
||||||
@@ -103,7 +103,7 @@ swayinputevent() {
|
|||||||
xorgfocusedwindow() {
|
xorgfocusedwindow() {
|
||||||
activeoutput="$(xprop -id "$(xdotool getactivewindow 2>/dev/null)" 2>/dev/null)"
|
activeoutput="$(xprop -id "$(xdotool getactivewindow 2>/dev/null)" 2>/dev/null)"
|
||||||
printf %s "$activeoutput" | \
|
printf %s "$activeoutput" | \
|
||||||
grep ^WM_CLASS | cut -d" " -f3- | cut -d"," -f2 | \
|
grep ^WM_CLASS | cut -d" " -f3- | cut -d"," -f1 | \
|
||||||
xargs printf 'app: %s'
|
xargs printf 'app: %s'
|
||||||
printf "\n"
|
printf "\n"
|
||||||
printf %s "$activeoutput" | \
|
printf %s "$activeoutput" | \
|
||||||
@@ -112,20 +112,27 @@ xorgfocusedwindow() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
swayfocusedwindow() {
|
swayfocusedwindow() {
|
||||||
swaymsg -t get_tree | jq -r '
|
TREE="$(swaymsg -t get_tree)"
|
||||||
|
FOCUS="$(
|
||||||
|
printf %s "$TREE" | jq -r '
|
||||||
recurse(.nodes[]) |
|
recurse(.nodes[]) |
|
||||||
select(.focused == true) |
|
select((.focused == true) and (.app_id != null)) |
|
||||||
{
|
{app_id: .app_id, name: .name} |
|
||||||
app_id: (if .app_id != null then
|
|
||||||
.app_id
|
|
||||||
else
|
|
||||||
.window_properties.class
|
|
||||||
end),
|
|
||||||
name: .name,
|
|
||||||
} |
|
|
||||||
select(.app_id != null and .name != null) |
|
|
||||||
"app: " + .app_id, "title: " + .name
|
"app: " + .app_id, "title: " + .name
|
||||||
'
|
'
|
||||||
|
)"
|
||||||
|
if [ -z "$FOCUS" ]; then
|
||||||
|
#app_id is null, fall back to detect xwayland app:
|
||||||
|
FOCUS="$(
|
||||||
|
printf %s "$TREE" | jq -r '
|
||||||
|
recurse(.nodes[]) |
|
||||||
|
select((.focused == true) and (.shell == "xwayland")) |
|
||||||
|
{app_id: .window_properties.class, name: .window_properties.title} |
|
||||||
|
"app: " + .app_id, "title: " + .name
|
||||||
|
'
|
||||||
|
)"
|
||||||
|
fi
|
||||||
|
printf "%s\n" "$FOCUS"
|
||||||
}
|
}
|
||||||
|
|
||||||
swaypaste() {
|
swaypaste() {
|
||||||
@@ -144,7 +151,7 @@ swayexec() {
|
|||||||
swayexecwait() {
|
swayexecwait() {
|
||||||
PIDFILE="$(mktemp)"
|
PIDFILE="$(mktemp)"
|
||||||
printf '"%s" & printf %%s "$!" > "%s"' "$*" "$PIDFILE" \
|
printf '"%s" & printf %%s "$!" > "%s"' "$*" "$PIDFILE" \
|
||||||
| xargs -I{} swaymsg exec -- '{}'
|
| xargs -I{} swaymsg exec -- sh -c '{}'
|
||||||
while : ; do
|
while : ; do
|
||||||
sleep 0.5
|
sleep 0.5
|
||||||
kill -0 "$(cat "$PIDFILE")" 2> /dev/null || break
|
kill -0 "$(cat "$PIDFILE")" 2> /dev/null || break
|
||||||
|
@@ -2,27 +2,27 @@
|
|||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
# Copyright 2022 Sxmo Contributors
|
# Copyright 2022 Sxmo Contributors
|
||||||
|
|
||||||
# This script is responsible for starting wob, or xob, and making sure it exits cleanly
|
# This script is responsible for starting wob, and making sure it exits cleanly
|
||||||
|
|
||||||
# include common definitions
|
# include common definitions
|
||||||
# shellcheck source=scripts/core/sxmo_common.sh
|
# shellcheck source=scripts/core/sxmo_common.sh
|
||||||
. sxmo_common.sh
|
. sxmo_common.sh
|
||||||
|
|
||||||
ob_sock="$XDG_RUNTIME_DIR"/sxmo.obsock
|
wob_sock="$XDG_RUNTIME_DIR"/sxmo.wobsock
|
||||||
rm -f "$ob_sock"
|
rm -f "$wob_sock"
|
||||||
mkfifo "$ob_sock"
|
mkfifo "$wob_sock"
|
||||||
|
|
||||||
# By opening the socket as read-write it isn't closed after the first write
|
# By opening the socket as read-write it isn't closed after the first write
|
||||||
# see https://unix.stackexchange.com/questions/392697
|
# see https://unix.stackexchange.com/questions/392697
|
||||||
"${1:-wob}" <> "$ob_sock" &
|
wob <> "$wob_sock" &
|
||||||
OBPID=$!
|
WOBPID=$!
|
||||||
|
|
||||||
finish() {
|
finish() {
|
||||||
# Only finish once
|
# Only finish once
|
||||||
trap - TERM INT EXIT
|
trap - TERM INT EXIT
|
||||||
kill "$OBPID"
|
kill "$WOBPID"
|
||||||
rm -f "$ob_sock"
|
rm -f "$wob_sock"
|
||||||
}
|
}
|
||||||
trap 'finish' TERM INT EXIT
|
trap 'finish' TERM INT EXIT
|
||||||
|
|
||||||
wait "$OBPID"
|
wait "$WOBPID"
|
@@ -8,9 +8,8 @@
|
|||||||
envvars() {
|
envvars() {
|
||||||
export SXMO_WM=dwm
|
export SXMO_WM=dwm
|
||||||
export XDG_CURRENT_DESKTOP=dwm
|
export XDG_CURRENT_DESKTOP=dwm
|
||||||
[ -z "$SXMO_MENU" ] && export SXMO_MENU=dmenu
|
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
command -v $SXMO_TERMINAL "" >/dev/null || export SXMO_TERMINAL="st"
|
command -v $SXMO_TERMINAL "" >/dev/null || export SXMO_TERMINAL="st -e"
|
||||||
command -v "$KEYBOARD" >/dev/null || defaultkeyboard
|
command -v "$KEYBOARD" >/dev/null || defaultkeyboard
|
||||||
[ -z "$MOZ_USE_XINPUT2" ] && export MOZ_USE_XINPUT2=1
|
[ -z "$MOZ_USE_XINPUT2" ] && export MOZ_USE_XINPUT2=1
|
||||||
}
|
}
|
||||||
@@ -48,14 +47,7 @@ with_dbus() {
|
|||||||
cleanup() {
|
cleanup() {
|
||||||
sxmo_jobs.sh stop all
|
sxmo_jobs.sh stop all
|
||||||
pkill svkbd
|
pkill svkbd
|
||||||
case "$SXMO_MENU" in
|
|
||||||
dmenu)
|
|
||||||
pkill dmenu
|
pkill dmenu
|
||||||
;;
|
|
||||||
bemenu)
|
|
||||||
pkill bemenu
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
pkill superd
|
pkill superd
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -44,8 +44,16 @@ export SXMO_MODEM_GPIO_KEY_RI | If the modem driver handle a gpio, sxmo have to
|
|||||||
export SXMO_NO_MODEM | Disable modem related features
|
export SXMO_NO_MODEM | Disable modem related features
|
||||||
|
|
||||||
### Screen-related
|
### Screen-related
|
||||||
|
SXMO_ROTATION_POLL_TIME | Polling time for rotate in seconds (decimals allowed e.g. .1) [default: 1]
|
||||||
|
|
||||||
|
SXMO_ROTATION_GRAVITY | Override gravity for calculating rotation [default: 500]
|
||||||
|
|
||||||
|
SXMO_ROTATION_THRESHOLD | Threshold for detecting rotation [default: 60]
|
||||||
|
|
||||||
SXMO_MIN_BRIGHTNESS | Minimum brightness level [default: 5]
|
SXMO_MIN_BRIGHTNESS | Minimum brightness level [default: 5]
|
||||||
|
|
||||||
|
SXMO_DISABLE_LEDS | Disable leds (1 or 0) [default: 0]
|
||||||
|
|
||||||
SXMO_SWAY_SCALE | Screen scale for hidpi screens. Can be fractional [SWAY-ONLY].
|
SXMO_SWAY_SCALE | Screen scale for hidpi screens. Can be fractional [SWAY-ONLY].
|
||||||
|
|
||||||
SXMO_ROTATE_DIRECTION | The direction to rotate when using the gesture [default: right]
|
SXMO_ROTATE_DIRECTION | The direction to rotate when using the gesture [default: right]
|
||||||
@@ -71,8 +79,6 @@ SXMO_DISABLE_KEYBINDS | Disable most custom Sxmo binds on volume keys if set.
|
|||||||
|
|
||||||
SXMO_MONITOR | Display "Output" from `swaymsg -t get_outputs`. Should be the same as the output from the `xrandr` command when running dwm.
|
SXMO_MONITOR | Display "Output" from `swaymsg -t get_outputs`. Should be the same as the output from the `xrandr` command when running dwm.
|
||||||
|
|
||||||
SXMO_NO_VIRTUAL_KEYBOARD | Disable all virtual keyboard management, and change some related gesture behavior.
|
|
||||||
|
|
||||||
### General / Misc.
|
### General / Misc.
|
||||||
SXMO_VIBRATE_DEV | Path to vibration device (see sxmo_vibrate.c and clickclack.c) [default: /dev/input/by-path/platform-vibrator-event]
|
SXMO_VIBRATE_DEV | Path to vibration device (see sxmo_vibrate.c and clickclack.c) [default: /dev/input/by-path/platform-vibrator-event]
|
||||||
SXMO_VIBRATE_STRENGTH | Strength parameter to pass to sxmo_vibrate [default: 1]
|
SXMO_VIBRATE_STRENGTH | Strength parameter to pass to sxmo_vibrate [default: 1]
|
||||||
|
@@ -1,8 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# Alcatel OneTouch Idol 3 (5.5) (6045Y)
|
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
|
||||||
# Copyright 2024 Sxmo Contributors
|
|
||||||
|
|
||||||
export SXMO_VIBRATE_DEV="/dev/input/by-path/platform-200f000.spmi-platform-200f000.spmi:pmic@1:vibrator@c000-event"
|
|
||||||
export SXMO_MIN_BRIGHTNESS=1 # Still visible
|
|
||||||
export SXMO_VIBRATE_STRENGTH=256 # Is activated between 256 and 65535, from lowest to highest
|
|
@@ -1 +0,0 @@
|
|||||||
export SXMO_NO_MODEM=1
|
|
2
scripts/deviceprofiles/sxmo_deviceprofile_desktop.sh
Executable file → Normal file
2
scripts/deviceprofiles/sxmo_deviceprofile_desktop.sh
Executable file → Normal file
@@ -1,6 +1,6 @@
|
|||||||
|
export SXMO_DISABLE_LEDS=1
|
||||||
export SXMO_STATUS_DATE_FORMAT="%Y-%m-%d %H:%M"
|
export SXMO_STATUS_DATE_FORMAT="%Y-%m-%d %H:%M"
|
||||||
export SXMO_DISABLE_KEYBINDS=1
|
export SXMO_DISABLE_KEYBINDS=1
|
||||||
export SXMO_STATES="unlock locker"
|
export SXMO_STATES="unlock locker"
|
||||||
export SXMO_UNLOCK_IDLE_TIME=300
|
export SXMO_UNLOCK_IDLE_TIME=300
|
||||||
export SXMO_NO_MODEM=1
|
export SXMO_NO_MODEM=1
|
||||||
export SXMO_NO_VIRTUAL_KEYBOARD=1
|
|
||||||
|
0
scripts/deviceprofiles/sxmo_deviceprofile_fairphone,fp4.sh
Executable file → Normal file
0
scripts/deviceprofiles/sxmo_deviceprofile_fairphone,fp4.sh
Executable file → Normal file
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user