329 Commits

Author SHA1 Message Date
Callum Andrew
0457e35d0d sxmo_hook_apps.sh: add qalc (cli calculator)
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2024-12-09 17:52:22 -08:00
Callum Andrew
2ae4cee5e2 sxmo_hook_apps.sh: remove duplicate entries
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2024-12-08 23:55:44 -08:00
Maarten van Gompel
b44795554f sxmo_migrate.sh: fixed fallback color diff
It worked with GNU sed but not with busybox sed.
This current version works with both.

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-12-03 11:40:43 +01:00
hazardchem
65815b84de sxmo_hook_contextmenu.sh: added links options.
Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-12-01 14:04:09 +01:00
hazardchem
4c25adcf5f sxmo_hook_apps.sh: Added clipmenu and megapixels to menu.
Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-12-01 13:53:30 +01:00
hazardchem
9dfac57e70 sxmo_hook_apps.sh: Reordered apps to alphabetical order.
Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-12-01 13:52:35 +01:00
Callum Andrew
7f036513c5 sxmo_hook_apps.sh: add lpa gtk (esim manager)
also move mepo to the right location

Signed-off-by: Anjandev Momi <anjan@momi.ca>
2024-12-01 01:26:48 -08:00
hazardchem
92a8034653 sxmo_hook_contextmenu.sh: Added All Chats option to iamb.
Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2024-12-01 01:24:49 -08:00
Callum Andrew
7b4136253a sxmo_hook_apps.sh: add simple scan
also change seahorse icon to key

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-11-30 14:23:34 +01:00
hazardchem
9ccb327d69 sxmo_hook_contextmenu.sh: added enter url to list for netsurf.
Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-11-30 14:19:34 +01:00
hazardchem
dfd5d67f45 sxmo_hook_inputhandler.sh: added options for links/netsurf.
Actions are similar so it warranted adding to one patch.

Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-11-30 14:17:08 +01:00
hazardchem
36d0d4d03f Add in touchscreen id into OnePlus 6 profile
This is needed by dwm as screen rotation and screenoff states don't work correctly.

Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-11-30 14:09:24 +01:00
Maarten van Gompel
fd44d2693d sxmo_hook_lockstatusbar.sh: added exec 2024-11-26 15:14:07 +01:00
Maarten van Gompel
6bb78da702 Disable most of input handler when a locker is running
A problem was introduced in 4562daea67
because it kind-of bypasses the state mechanism. Whenever a locker was
running the state would remain `unlock` and therefore the inputhandler
would be fully enabled and menus could still be opened with gestured
(although they wouldn't show because of the locker).

This patch solves that, it's not an ideal implementation but is
a bit of a minimal temporary patch until we revise/simplify the
entire state locking mechanism.

It also moves the burden of removing icons for peanutbutter to
sxmo_hook_statusbar instead of sxmo_hook_lockstatusbar

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-11-26 15:06:09 +01:00
Maarten van Gompel
84b61f4a72 Support LEDs on devices like Oneplus 6
This wasn't working out-of-the-box yet. A udev rule is needed.

This re-adds LED permissions as suggested in https://lists.sr.ht/~mil/sxmo-devel/patches/44149
and reverts a small part of 7a77851c9a .

Co-authored-by: Zach Decook <zachdecook@librem.one>

Ref: https://codeberg.org/magdesign/sxmop6/src/branch/main/rules/99-custom-led-permissions.rules
Ref: https://wiki.postmarketos.org/wiki/LEDs#Changing_permissions_in_sysfs
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-11-26 15:06:09 +01:00
magdesign
d334511370 hide duplicated wifi SSIDs and show the security
If you select to connect to a wifi without security, it will not ask you
for a password anymore.

Ref: https://todo.sr.ht/~mil/sxmo-tickets/603
Co-authored-by: Maarten van Gompel <proycon@anaproy.nl>
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-11-26 15:06:09 +01:00
Maarten van Gompel
0446e654cd documentation: improved services description
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-11-26 15:06:09 +01:00
Peter John Hartman
11a82dfa28 Do nothing when dismissing notif
If a user swipes up, they will dismiss the notification without doing
its action, but if they touch the notification they will execute its
action.

This is useful when you get a lot of popups or if you (like me) have
your popup notifications decay only after a very very very long time.

I also thing the default delay for notifications should be extremely
long (24hrs), so you can easily see what sms messages you received.

NB: I have not tested on dwm (may need to add an on-touch option there
too).

NB2: I also think that this might all go into a hook instead so we can
let the user control what to do with popups?

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-11-26 14:13:08 +01:00
Maarten van Gompel
3bc52ff642 sxmo_migrate: added a colordiff alternative and allow for different diff order
This implements:
* use of delta instead of colordiff or diff, if installed
* a colordiff fallback if none is installed
* support for different diff order by setting SXMO_MIGRATE_ORDER to
  "user:system", also included a runtime switch
* an extra explanation to interpret the diff correctly

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-11-26 13:54:21 +01:00
Willow Barraco
a95376738f Back out "sxmo_wm: use lswt to find active window"
This backs out commit 2f800272a0.
2024-11-26 09:33:41 +01:00
Maarten van Gompel
f6377a2cbc added configuration file for hut-cli
makes using hut easier, example:

* hut lists patchset list
* hut ticket list
2024-11-25 22:02:13 +01:00
Maarten van Gompel
a15d514aa3 fixup: tthree-letter icon name 2024-11-25 21:02:37 +01:00
Callum Andrew
664b8b3649 Use neovim logo in app menu
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-11-25 21:01:24 +01:00
Maarten van Gompel
899dad32db Moved "All Apps" entry to main menu
For consistency between wofi and other menus, and for easier access

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-11-25 19:40:40 +01:00
hazardchem
a73741f643 sxmo_tabbed.sh: Added urxvt launcher
Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-11-25 19:28:38 +01:00
Maarten van Gompel
793b0c6173 docs: removed part on device-specific hooks (we no longer use them)
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-11-25 19:23:23 +01:00
Maarten van Gompel
f8067a1d89 documentation: minor link update 2024-11-25 13:43:19 +01:00
Callum Andrew
eb31dc88ce sxmo_hook_apps.sh: add nautilus and papers (document reader)
also move pavucontrol to the right location

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-11-20 11:42:23 +01:00
Maarten van Gompel
f2de84c2a6 making all device profile executable 2024-11-20 11:40:31 +01:00
Callum Andrew
6314236a72 Add deviceprofile for Google Pixel 3a XL (google-bonito)
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-11-20 11:39:36 +01:00
Callum Andrew
171cfbdf67 Add Metronome app
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-11-17 12:47:05 +01:00
Maarten van Gompel
91c3d645b2 sxmo_hook_apps.sh: added newsraft (RSS reader)
Signed-off-by: Aren Moynihan <aren@peacevolution.org>
2024-11-15 14:31:53 -05:00
Maarten van Gompel
ffce273794 docs: minor clarification 2024-11-15 12:01:26 +01:00
shivers
f1dbcb0b4e sxmo_hook_tailtextlog: Fix DATESEDCMD to be non-greedy
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-11-11 16:17:25 +01:00
Maarten van Gompel
94e0122a11 minor language fix in variable/file name 2024-11-08 14:18:27 +01:00
Maarten van Gompel
521d9a6e54 documentation: SXMO_NOTCH 2024-11-08 11:22:55 +01:00
Maarten van Gompel
2e01439104 documentation: significant overhaul (man pages)
This is a significant overhaul of the Sxmo documentation. I'm building
upon the work Peter (wart) started, to provide proper man pages for Sxmo.
I think man pages fit our philosophy well, and ensure that all
essential documentation is always available offline on-device.

The user can simply do `man sxmo` and get the full manual (which was
called our 'user guide' in the old setup). I favour keeping this man
page as the sole source and automatically derive things for the
sxmo-docs repo (which is rather convoluted with multiple branches now).
Storing the documentation right-alongside sxmo-utils has the big
advantage of it describing (ideally) the exact version it is stored
alongside with. Submitted patches can do both implementation and
documentation in one go.

Things in this patch:

* Sections that were missing were added
* Some new man pages dedicated to specific scripts were added  (*.1.scd)
* Rewrote various parts to make the language better/clearer.
* Reordered things.
* Information that was out-of-date or incomplete has been updated (to
  the best of my knowledge)
* Applied a consistent style.
* Added HTML conversions in the Makefile (via groff and some hacky
  post-processing to insert decent hyperlinks, 'man' is a bit ancient)
* Added a 'Help' item in the main menu which opens the Sxmo man page in a terminal
* Updated the description of some hooks

This is not necessarily done yet (is documentation ever?), but it
provides a solid foundation I think. Some sections may need some further
work and everything should at least be checked thoroughly by others for
accuracy.
2024-11-08 11:22:55 +01:00
Maarten van Gompel
d7a77bb1c0 fixup: comment 2024-11-07 23:13:06 +01:00
Maarten van Gompel
2db900ce51 sxmo_hook_lockstatusbar: remove notch placeholder in peanutbutter 2024-11-07 22:57:10 +01:00
Maarten van Gompel
c4f2fb9df5 sxmo_networks: fixed typo in function name 2024-11-07 22:03:21 +01:00
Maarten van Gompel
867fe86ca4 sxmo_hook_statusbar: simple suboptimal notch implementation
* set SXMO_NOTCH to a string to use for the notch (length determines width), do not use spaces/tabs
* optionally set SXMO_NOTCH_PRIO to a placement value (trial and error)

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-11-07 21:38:36 +01:00
Kaan Çırağ
7d658baa6d Add device profile for Alcatel Idol 3 (alcatel-idol3)
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-11-05 10:29:01 +01:00
Aren Moynihan
843517fb6a Makefile: remove unused references to sxmo sepermissions
The setpermissions daemon was removed, so this is dead code now.
Remove it.

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-11-04 22:33:41 +01:00
Aren Moynihan
2f800272a0 sxmo_wm: use lswt to find active window
Using lswt allows us to use the context menu on any wayland compositor
that supports the wlr-foreign-toplevel-management protocol.

Signed-off-by: Aren Moynihan <aren@peacevolution.org>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-11-02 20:36:34 +01:00
Maarten van Gompel
4bcbf0503d add polkit rule for iio-sensor-proxy sensor claim
Signed-off-by: Aren Moynihan <aren@peacevolution.org>
2024-11-02 10:29:11 -04:00
Maarten van Gompel
921fa1e24c Prevent HexagonRPCD from freezing device after wake
This solves the following issue on a Google Pixel 3a:
* https://gitlab.postmarketos.org/postmarketOS/pmaports/-/issues/3052
* https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/5400

Since we don't use elogind for suspend, we have to handle this logic
ourselves.

Though I'm not fond of device-specific code in our main scripts, the
generic solution wasn't really recommended.

Signed-off-by: Aren Moynihan <aren@peacevolution.org>
2024-11-02 09:18:09 -04:00
Maarten van Gompel
4562daea67 launch screen lock if installed
This will launch peanutbutter (if it is installed) when the screen turns
off. It also omits the locked/screen-on stage then because it has less
added value and is in the way.

I'd recommend having users explicitly install peanutbutter themselves
(and read the manual) rather than have it pulled in automatically, as
users need to know the default unlock code or they get locked out of
there session. But this way no hooks need to be adapted if it's
installed, and it will out-of-the-box show the status icons on the
lockscreen.

Signed-off-by: Aren Moynihan <aren@peacevolution.org>
2024-11-02 09:14:21 -04:00
Willow Barraco
be4a4366ff Fix sxmo_brun.sh with recent changes
NOw that we need SXMO_MENU, we had the same fallback when it is left
unset than in sxmo_dmenu.sh

We also fix the typo on bmenu.
2024-10-30 21:23:53 +01:00
Willow Barraco
f3ae894e7f Remove unalias wofi 2024-10-30 21:10:55 +01:00
Maarten van Gompel
81d8457b93 fixup: replaced gdbus call with dbus-send for consistency
Co-authored-by: Sicelo A. Mhlongo <absicsz@gmail.com>
2024-10-25 22:06:28 +02:00
Sicelo A. Mhlongo
6534048c03 autorotate: switch to iio-sensor-proxy
iio-sensor-proxy abstracts iio (and sensors exposed in other kernel
subsystems). it can simplify the autorotate script, removing the need for
variables such as ROTATION_GRAVITY.

it also makes it possible to use the same code to support 'non-standard'
accelerometers, such as those on SDM845 devices.

prerequisites:
    - `iio-sensor-proxy must` be installed and be running on the system (it
        provides `monitor-sensor`)
    - a PolicyKit rule to permit the regular user to claim sensors must be
        installed in `/etc/polkit-1/rules.d/01-sensor-claim.rules`, containing
        the following:

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

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-10-25 20:23:58 +02:00
Roberto Castagnola
ae8c63508a Add hook for blocking numbers
Signed-off-by: Roberto Castagnola <roberto.castagnola@gmail.com>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-10-25 18:49:37 +02:00
osms
ff4b10aa72 Basic configuration for Asus grouper
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-10-25 18:05:26 +02:00
Maarten van Gompel
4d7037d7bf fixup: indentation 2024-10-25 17:46:05 +02:00
hazardchem
0b77df6b6e statusbar: remove redundant symbols when modem has failed or unknown
This modifies the statusbar hook so that if there is a modem state that doesn't
match failed or unknown then show used techs and signal.

Currently if there isn't a sim in the modem there will be $icon_modem_failed, $icon_modem_notech, and $icon_modem_signal_0.

After this all that shows is $icon_modem_failed.

Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-10-25 17:36:47 +02:00
Elie Le Vaillant
160d25659a configversion: support xml files
This is needed for fontconfig.conf.

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-10-22 10:19:48 +02:00
Maarten van Gompel
516c6d25db Added deviceprofile for Google Pixel 3a (google-sargo)
Co-authored-by: fdelamotte
2024-10-18 22:37:24 +02:00
Willow Barraco
ea8a95b58c menu: compute the default SXMO_MENU when unsetted
With the recent wofi patch, we now require for the env variable to be
present (or sxmo_dmenu.sh will fails to actually start something).

With this change, we fallback to the old choice, depending on the WM.
2024-10-15 14:33:11 +02:00
Maarten van Gompel
ab56046aee Added support for wofi as a dmenu/bemenu alternative
I refactored some code to make exchanging menus a little bit easier
and I added wofi as new menu option.

The menu to use can be configured via the new environment variable
SXMO_MENU. Its value may be bemenu, dmenu, or wofi, *NOT* any arbitrary
binary. This variable will be automatically populated if not set, based on if
you're on wayland or Xorg.

setup_config_version.sh was extended to allow a configversion in CSS
comments (needed for wofi). I designed a theme that mimicks the default
style we have for bemenu/dmenu, with slightly more spacing perhaps.

Wofi can scan *.desktop files (drun mode), so I added an "All Apps" option that
makes use of that. Some further work is still required there however
to get wofi to properly launch terminal apps from there.

Wofi also has some issues positioning in landscape mode after the screen
was rotated, so my solution there is a bit hacky. May be an upstream
issue.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-10-15 13:21:28 +02:00
Willow Barraco
56f1fe1cdb proximitylock: do not restore initial state if the user changed it in between
To do this, we add store, restore, and flushstored to sxmo_state.sh.

store output an id that the caller have to give back to restore. This way,
multiple caller can store, and only the first one that restore actually
does so. This ensure some consistency to the end state workflow.

Any user click in between automatically flushstored, so that the end of
proximitylock will not restore to initial state.
2024-09-18 11:23:37 +02:00
Willow Barraco
4cda522a09 modem: do not vibrate after muted calls 2024-09-18 11:17:18 +02:00
Willow Barraco
d60c7ca2eb Fix indentation 2024-09-12 17:07:17 +02:00
Willow Barraco
75ed8bc5d3 Fix stretched wallpaper
The argument was quoted, so ignored by swaybg.
2024-09-12 17:03:55 +02:00
Willow Barraco
c9fe95684c fix unreliable sxmo_proximitylock.sh
Most of the time, this feature just does not works on my phone. No event
are triggered. So let's got back to the good old manual probing.
2024-09-12 08:32:55 +02:00
Willow Barraco
73b374f677 sxmo_notification*.sh: Rework and cleanup
This is a complete rewrite, and group every scripts in a single
sxmo_notifs.sh one.

Also: Replace the watch file feature with a more generic notification group
one.

This feature make the user to miss notifications if the conversation file is
already open. It also cause problems when used with Syncthing, as this cause
notifications to be dropped when it synchronise files. It is also pointless
now that opening a notification to an opened conversation just focus the
corresponding terminal.

I think that dropping this feature completly is okay, make things simple,
and simplify the code

But in the same time:

Opening a notification should close all other ones for the same
conversations. So to cover this case, we add an optional group when
creating notifications. Discarding a notification now close all related
ones from the same group.
2024-09-12 08:31:46 +02:00
Willow Barraco
e8baf38440 Bring back SXMO_BG_IMG support 2024-08-25 13:59:13 +02:00
Willow Barraco
3de2fced00 Deduplicate wallpaper services and drop SXMO_BG_IMG 2024-08-25 13:57:10 +02:00
Willow Barraco
9f7c9da445 Keep the bg when reloading config
To achieve this, and more, we move the swaybg command to a monitored
service.
2024-08-25 13:57:08 +02:00
hazardchem
54ebae73d3 app: tabbed
Added tabbed to sxmo_hook_apps.sh by calling sxmo_tabbed.sh

sxmo_tabbed.sh:

This program provides a list of programs with their embedded call and
will start a tabbed session with that program inside, or nothing starts
a tabbed session with nothing inside.

Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Aren Moynihan <aren@peacevolution.org>
2024-08-24 11:13:47 -04:00
hazardchem
f869295c1a sxmo_wm.sh: fix fringe cases in focused program
Found that the mpv pseudo-gui listed its WM_CLASS as `WM_CLASS(STRING) = "gl", "mpv"`

xorgfocusedwindow was only looking at the first field for the app: rename so it
was always set to gl. This patch changes the field to the second.

Testing on my machine hasn't found any issues as everything was detected
correctly on a few different windows.

Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Aren Moynihan <aren@peacevolution.org>
2024-08-21 15:10:33 -04:00
Willow Barraco
23617f1dad sxmo_audio.sh: add a busy mode
This mode disable ring and vibration from calls and messages. It is also
possible to enable this mode for a period of time.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Aren Moynihan <aren@peacevolution.org>
2024-08-21 15:05:31 -04:00
Willow Barraco
f446630465 sxmo_hook_sms.sh: use a return fast form
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Aren Moynihan <aren@peacevolution.org>
2024-08-21 15:05:31 -04:00
hazardchem
20a89df023 contextmenu.sh: fixed issue with tabbed menu sending Ctrl + `
Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Aren Moynihan <aren@peacevolution.org>
2024-08-21 14:56:40 -04:00
Willow Barraco
72c78db377 sms: fix newline EOL while sending messages
Some text editors, as kakoune, automatically add an ending newline while
saving buffers to files. This is because the convention on UNIX systems,
is that files ends with newline.

While sending sms using a file as resource, modem manager keep this. I
already discussed this with the maintainer:

https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/830

So we basically have to do this ourselves.

The problems appeared when we switched to this new argument
--messaging-create-sms-with-text. It fixes our quoting issues, but it
introduce this problem, when the editor does the right thing.

To solve this, we create a temporary file, without this ending newline.
The finish script trap will clean in afterward.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Aren Moynihan <aren@peacevolution.org>
2024-08-21 14:12:46 -04:00
Maarten van Gompel
64b4c63a1b sxmo_hook_apps.sh: added flare (signal client)
Note: If you have no Android/iOS instance to link to as primary device, you
can run signal-cli (either on the same device as flare or on any
other), that also allows you to register a number.

Signed-off-by: Aren Moynihan <aren@peacevolution.org>
2024-08-21 14:12:46 -04:00
Aren Moynihan
07e306e939 builds: add missing linux-headers to env
The build was failing with this error:

programs/sxmo_vibrate.c:16:10: fatal error: linux/input.h: No such file or directory
   16 | #include <linux/input.h>

Signed-off-by: Aren Moynihan <aren@peacevolution.org>
2024-08-21 14:12:46 -04:00
Aren Moynihan
c54ccb1485 spec: sxmo_status_led: fix shellchick directive
Signed-off-by: Aren Moynihan <aren@peacevolution.org>
2024-08-21 12:10:53 -04:00
Aren Moynihan
47b80502d9 Makefile: cleanup handling of c compiler arguments
The c compiler seems to be rather picky about the order arguments are
defined in, I was having trouble building sxmo_status_led in some
conditions because -lm was in the wrong spot.

This is the order that these are supplied in the built-in rules
documentation of the gnu make manual.

While here, make cflags include any cflags passed by environment
variable, such as from a package build script.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-08-19 08:33:18 +02:00
Aren Moynihan
86dbca1502 autodetect SXMO_DISABLE_LEDS
The new sxmo_status_led program can tell us if it finds a suitable led
on the system. We can use this to set the SXMO_DISABLE_LEDS env
variable.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-08-18 15:40:31 +02:00
Aren Moynihan
ec78d3b95b add program to manage status leds
This also support for multicolor leds which wasn't supported by
brightnessctl. And it provides a significant performance improvement.

The sxmo_led.sh script takes quite a bit of cpu power to run, which
isn't great because it runs about every 2 seconds when the system is
idle. This rewrites most of it in c which should solve help speed it up.

Before the led blink process would consume somewhere around 20% cpu
usage (0.7 seconds / 3 seconds total for a blink). After this patch it
should come down closer 10% cpu usage. This is significantly better, but
still not very good. I think most of the remaining time is being spent
in sxmo_wakelock.sh, reimplementing that and/or finding a way to not
need it will probably be necessary to get this to execute in a
reasonable amount of time.

Before:

$ sudo perf stat -r 8 ./scripts/core/sxmo_led.sh blink red blue
 Performance counter stats for './scripts/core/sxmo_led.sh blink red blue' (8 runs):

     796.76 msec task-clock       #    0.715 CPUs utilized   ( +-  1.64% )
        316      context-switches #  396.604 /sec            ( +-  3.77% )
         35      cpu-migrations   #   43.928 /sec            ( +-  7.87% )
     12,505      page-faults      #   15.695 K/sec           ( +-  0.04% )
883,688,799      cycles           #    1.109 GHz             ( +-  2.16% )
310,020,051      instructions     #    0.35  insn per cycle  ( +-  0.09% )
 33,193,824      branches         #   41.661 M/sec           ( +-  0.09% )
  5,169,519      branch-misses    #   15.57% of all branches ( +-  0.19% )

     1.1151 +- 0.0274 seconds time elapsed  ( +-  2.46% )

$ hyperfine 'sxmo_led.sh blink red blue'
Benchmark 1: sxmo_led.sh blink red blue
  Time (mean ± σ):      1.059 s ±  0.042 s    [User: 0.284 s, System: 0.458 s]
  Range (min … max):    1.013 s …  1.163 s    10 runs

After:

$ sudo perf stat -r 8 sxmo_led.sh blink red blue
Performance counter stats for 'sxmo_led.sh blink red blue' (8 runs):

     347.50 msec task-clock       #    0.337 CPUs utilized   ( +-  2.25% )
        176      context-switches #  506.474 /sec            ( +-  8.81% )
         13      cpu-migrations   #   37.410 /sec            ( +- 19.22% )
      3,243      page-faults      #    9.332 K/sec           ( +-  0.05% )
383,056,720      cycles           #    1.102 GHz             ( +-  2.84% )
143,365,214      instructions     #    0.37  insn per cycle  ( +-  0.14% )
 15,816,749      branches         #   45.516 M/sec           ( +-  0.15% )
  2,520,323      branch-misses    #   15.93% of all branches ( +-  0.46% )

     1.0326 +- 0.0359 seconds time elapsed  ( +-  3.48% )

$ hyperfine 'sxmo_led.sh blink red blue'
Benchmark 1: sxmo_led.sh blink red blue
  Time (mean ± σ):      1.006 s ±  0.027 s    [User: 0.128 s, System: 0.186 s]
  Range (min … max):    0.963 s …  1.051 s    10 runs

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-08-18 15:40:28 +02:00
Eloi Torrents
c5f4abff77 Add Eye of Gnome to apps
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2024-07-20 22:00:27 -07:00
Raymond Hackley
ba45b2abf3 configs/default_hooks: drop symbolic links to three_button_touchscreen
configs/default_hooks/three_button_touchscreen has been dropped in
b09469d965.
Drop broken symbolic links to it.

Signed-off-by: Raymond Hackley <raymondhackley@protonmail.com>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-07-20 22:41:50 +02:00
hazardchem
c25eacff14 sxmo_hook_contextmenu.sh: tabbed: add menu options
Signed-off-by: hazardchem <hazardchem@disroot.org>
2024-07-10 11:34:49 -04:00
hazardchem
37b7e4ec18 sxmo_hook_contextmenu.sh: mupdf: add menu options
Signed-off-by: hazardchem <hazardchem@disroot.org>
2024-07-10 11:34:49 -04:00
hazardchem
6c6b4aa6ff sxmo_hook_contextmenu.sh: badwolf: fix spacing on reset zoom
Signed-off-by: hazardchem <hazardchem@disroot.org>
2024-07-10 11:34:48 -04:00
hazardchem
96fd0e0088 sxmo_hook_contextmenu.sh: iamb: Add close view/quit menu entry
Signed-off-by: hazardchem <hazardchem@disroot.org>
2024-07-10 11:34:48 -04:00
hazardchem
d1867650fa sxmo_hook_apps.sh: Added new entries for various programs.
Instead of individual patches for each program, this patch includes
my local additions to the hook.

Signed-off-by: hazardchem <hazardchem@disroot.org>
2024-07-10 11:27:05 -04:00
Aljoscha Hartmann
3f41756429 Add Index, Kcalc and Itinerary to the app menu 2024-07-10 11:06:57 -04:00
Sicelo A. Mhlongo
c714514d3a sway: drop nomod mode
91d4319df5 ("sway: add config for Nokia N900") added a new sway mode
to cater for the limitations imposed by the Nokia N900's physical
keyboard. At least one user reported a conflict with their keybinds.
Drop the mode and its binding from the global configuration. It can be
moved to a device-specific configuration, and be stored under
/etc/sway/config.d/* per sway's default/global include directive

Fixes: 91d4319df5 ("sway: add config for Nokia N900")
Fixes: https://lists.sr.ht/~mil/sxmo-devel/patches/53195

Signed-off-by: Sicelo A. Mhlongo <absicsz@gmail.com>
2024-07-10 10:57:43 -04:00
Willow Barraco
585560f018 call: delete call if failed to initiate it 2024-06-17 10:48:25 +02:00
Willow Barraco
6db78c4862 hook_call_audio: drop back and forth hack on mic and speaker
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2024-06-16 21:04:28 -07:00
Sicelo A. Mhlongo
fa2446c568 omap3-n900: provide touchscreen id
Define TOUCHSCREEN_ID so the touchscreen can be reliably disabled when device
is in locked state. When undefined, in some cases it does not get disabled,
causing wakeups.

Signed-off-by: Sicelo A. Mhlongo <absicsz@gmail.com>
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2024-06-16 20:59:28 -07:00
Sicelo A. Mhlongo
a5f81b93aa omap-n900: restore the use of virtual keyboard
While the N900 has a hardware keyboard, it only has a few keys. A virtual keyboard is still very useful to have. Some symbols, especially emoji, cannot be typed easily from hardware keyboard. Hence, restore access to the virtual keyboard using the VolDown key.

Signed-off-by: Sicelo A. Mhlongo <absicsz@gmail.com>
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-06-11 07:55:21 +02:00
Sicelo A. Mhlongo
27da98032f omap3-n900: set number of lines in dmenu
default dmenu lines are too long for N900's tiny screen. reduce to fit

Signed-off-by: Sicelo A. Mhlongo <absicsz@gmail.com>
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2024-06-09 01:22:42 -07:00
Anjandev Momi
10b4e26d41 n900: disable keyboard 2024-06-09 01:02:40 -07:00
Sicelo A. Mhlongo
fb4928b5a4 rename SXMO_NO_KEYBOARD to make purpose clear
Commit 4913fac4ee ("Cleanup virtual keyboard management") introduced
SXMO_NO_KEYBOARD environment variable to disable virtual keyboard. Rename so
this purpose is clear/obvious from the name.

Drop the variable on Nokia N900, since virtual keyboard is still useful on it,
e.g. for emoji.

Signed-off-by: Sicelo A. Mhlongo <absicsz@gmail.com>
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2024-06-09 00:59:30 -07:00
Willow Barraco
706d1f5fd9 sxmo_version: add msising last line return 2024-06-06 16:16:09 +02:00
Maarten van Gompel
7841952fb1 sxmo_playerctl.sh: return should be exit
In scoprion2185's log I saw:

/usr/bin/sxmo_playerctl.sh: line 31: return: can only `return' from a function or sourced script

As far as I checked, sxmo_playerctl is indeed called normally rather
than sourced so it should be exit instead of return, this patch fixes
that.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-06-05 08:14:23 +02:00
Maarten van Gompel
3e03d299ac fixup: syntax 2024-06-04 19:07:53 +02:00
Maarten van Gompel
ee3256b9f6 sxmo_hook_apps.sh: fixed alacritty entry 2024-06-04 19:06:28 +02:00
Willow Barraco
66d866cea2 version: also take un-annotated tags 2024-06-04 15:48:18 +02:00
Aren Moynihan
6d4b5aa4a4 use git attributes to set version in makefile
This adds configuration so that when "git archive" is run, it will
inject the current version into the makefile. This makes it so that we
don't have to do this manually, and packagers don't need to either.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-06-04 15:37:13 +02:00
Maarten van Gompel
b6b70ed1f9 sxmo_screenshot: workaround for slurp issues
We've already had a number of patches attempting to resolve this issue,
and an upstream PR to slurp pending for quite a while. I think we need a
solution in the meantime that would work even on the broken version of
slurp (in case distros are behind once a fix is released).

This version also copes with the fat-trembling-finger problem and will
simply take a screenshot of the whole screen if the selection is too
tiny to be reasonable (which may be an issue even in the fixed slurp).

Ref: https://lists.sr.ht/~mil/sxmo-devel/patches/49367
Ref: https://lists.sr.ht/~mil/sxmo-devel/patches/49719
Ref: https://lists.sr.ht/~mil/sxmo-devel/patches/44258
Ref: https://github.com/emersion/slurp/issues/140
Ref: https://github.com/emersion/slurp/pull/141
--
Changes in v2:
- select only one output (adapted from magdesign's patch earlier)
- better error feedback

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-06-04 15:02:53 +02:00
Willow Barraco
0a1379923f rework how we store VERSION
This drop the hardcoded VERSION, because it is so easy to forget while
releasing. This also fetch better edge tags.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-06-04 12:22:39 +02:00
Maarten van Gompel
e10825ba1a bumped version for next release (we forgot for 1.16) 2024-06-03 21:07:07 +02:00
Willow Barraco
11a16defa5 fix indentation 2024-06-03 08:25:42 +02:00
Willow Barraco
0c1c9ff907 sxmo_rtcwake.sh: refactorise to use sxmo_wakelock.sh run 2024-06-03 00:21:40 +02:00
Willow Barraco
da93740f95 sxmo_rtcwake.sh: make this script actually killeable 2024-06-03 00:01:17 +02:00
Willow Barraco
c68d16d7b6 sxmo_rtcwake.sh: bring back wakelock management
A long time may have passed since sxmo_autosuspend.sh added
sxmo_waiting_cronjob. It means we probably still need to lock before unlocking
here.
2024-06-03 00:01:16 +02:00
Willow Barraco
9c70125f63 sxmo_rtcwake.sh: remove waiting_cronjob lock
This lock may has been set by sxmo_suspend.sh.
2024-06-02 23:30:59 +02:00
Willow Barraco
73390af620 block_suspend: fix eternel loop when mpc is not installed
The logic here has been reverted. We have to exit 1 if it isn't
installed.
2024-06-01 07:47:46 +02:00
Willow Barraco
00c9758a1c wakelock.sh: remove tee error when using "lock infinite"
The code refactorisation feels a bit confusing. But looking at how this
method is implemented, this seems the easiest way.
2024-05-31 18:56:39 +02:00
Willow Barraco
8a92ffde85 sxmo_hook_block_suspend: block if mpc is updating db 2024-05-31 18:54:12 +02:00
Willow Barraco
95bd84db66 sxmo_wakelock.sh: add a run mode to lock and unlock afterward a command
This also remove the automatic lock from the sxmo_rtcwake.sh script. The
user now have to use this cron line to do the same thing:

* * * * * sxmo_rtcwake.sh sxmo_wakelock.sh run sleep 10

This separate both behaviors, and allow more combinations.
2024-05-31 18:51:01 +02:00
Willow Barraco
eaa52601de sxmo_run_periodically.sh: let user choose the clockid
This relies on the previous patchset that implement sxmo_sleep. It
become possible for the user to write a simple daemon that trigger
a command periodically, and waking up the device.
2024-05-31 18:51:01 +02:00
Willow Barraco
fb70b4f8d5 sxmo_run_periodically.sh: rework argument parsing 2024-05-31 18:51:01 +02:00
Willow Barraco
582c9b1b7b sxmo_timer.sh: finish as soon as it get killed
Without this, the script will wait the full second before handling the
kill signal.
2024-05-31 18:46:28 +02:00
Willow Barraco
636053e4f1 sxmo_timer.sh: stop at precise second
-ge means that we wait one additional second. Sleep 5s should actually
wait 5s, no more.
2024-05-31 18:46:27 +02:00
Willow Barraco
13e7a3bc69 sxmo_timer.sh: allow suspension while running
To do this, we implement a new sxmo_sleep program that is a sleep
but that can wake the device from suspension when the timer expires.

Also, stopwatch can perfectly survive a suspension. So we don't have to
wakelock on this.
2024-05-31 18:46:27 +02:00
Willow Barraco
ce59e6b014 bluetoothtoogle: behave correctly when partially blocked
If the devices are partially blocked, the config menu should display a
ton icon, and toggeling should block all remainings.
2024-05-09 18:03:28 +02:00
Willow Barraco
e3554ce5f7 contextmenu: let access to bluetooth menu when at least one device is unblocked
This is necessary if you have multiple devices, and one is blocked while
the other is useable.

This still not behave correctly when there is no bluetooth device at
all.
2024-05-09 18:03:28 +02:00
Willow Barraco
0b58e5e1f2 Inverse periodic blinking condition to blink when suspension is enabled
The behavior introduced with the following commit was wrong. The
condition have to be reversed.

bccc1ab8 hook_screenoff: blink purple only when suspend is enabled
2024-05-09 18:03:17 +02:00
Maarten van Gompel
5fd6528f1e config menu: added log launcher
Opens the Sxmo log and follows new entries as they come in.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-05-06 09:38:53 +02:00
Maarten van Gompel
d102a4c5ae deviceprofile: Set default scale for Poco F1 to 3
Tested-by: rd440
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-05-06 09:38:52 +02:00
Willow Barraco
92b83c6753 sxmo_init.sh: use mkrundir if available
mkrundir is a simple program by whynothugo that simply create the
rundir.

This patch is enough for Sxmo to use /run/user-$uid as XDG_RUNTIME_DIR. Even if
this is still less common that /run/user/$uid, it still is preferable, and more
compatible than our /dev/shm/user/$uid (ex: flatpak refuse to bind mount /dev/
paths).
2024-05-06 09:38:52 +02:00
Aren Moynihan
f09ab84092 contextmenu: detect terminal apps with case statement
This has the potential to cause odd breakages because it doesn't require
full word matches anymore. This can be mitigated by using *" word "*
instead of *"word"*, which I have done where I expect it to be a
problem.

Not needing to fork a bunch of printf / grep processes is a significant
performance improvement. I think this is well worth the risk of breaking
things.

Before:

$ hyperfine --warmup 4 -N sxmo_hook_contextmenu.sh
Benchmark 1: sxmo_hook_contextmenu.sh
  Time (mean ± σ):     421.0 ms ±   4.2 ms    [User: 282.9 ms, System: 233.7 ms]
  Range (min … max):   414.5 ms … 426.2 ms    10 runs

After:

$ hyperfine --warmup 4 -N sxmo_hook_contextmenu.sh
Benchmark 1: sxmo_hook_contextmenu.sh
  Time (mean ± σ):     151.3 ms ±   2.4 ms    [User: 118.8 ms, System: 105.1 ms]
  Range (min … max):   146.7 ms … 154.8 ms    19 runs

These tests were run on a PinePhone with a foot window focused using
bash as the shell.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-05-06 09:27:56 +02:00
Aren Moynihan
533e91e68d sxmo_wm: use a single jq call to get focused window
Simplifying this logic should help with performance, this is always
called by sxmo_hook_contextmenu.sh, so it should help make the menus a
little more responsive.

Before:
$ hyperfine --warmup 2 'sxmo_wm.sh focusedwindow'
Benchmark 1: sxmo_wm.sh focusedwindow
  Time (mean ± σ):      78.8 ms ±   1.2 ms    [User: 41.8 ms, System: 40.2 ms]
  Range (min … max):    77.1 ms …  81.5 ms    30 runs

After:
$ hyperfine --warmup 2 'sxmo_wm.sh focusedwindow'
Benchmark 1: ./sxmo_wm.sh focusedwindow
  Time (mean ± σ):      43.4 ms ±   2.0 ms    [User: 27.8 ms, System: 22.1 ms]
  Range (min … max):    41.4 ms …  53.0 ms    48 runs

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-05-03 11:53:38 +02:00
Maarten van Gompel
4301899980 fixup: indentation fixes 2024-05-03 11:36:38 +02:00
magdesign
be5dfcde36 add gsm disable/enable toggle
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-05-03 11:34:00 +02:00
Aren Moynihan
85b6207521 conky: use builtin time function
This is significantly faster than spawning a shell just to print the
current time.

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-05-01 23:09:35 +02:00
hazardchem
711ecff7c7 Acme: add controls and selection options
As acme is a mouse heavy program it needs input from middle and right clicks.
As such this requires xdotool to simulate mouse button clicks.

To make it work I have bound volume up to right click and volume down to middle
click.

There is also options in context menu as backup if the device doesn't have volume
controls.

If the mouse 2 and 3 aren't clear they require you to reselect the spot in less
than 2 seconds for the mouse click to occur at that location.

Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Aren Moynihan <aren@peacevolution.org>
2024-04-28 20:34:29 -04:00
hazardchem
86686a1b29 sxmo_hook_*.sh: add iamb
This patch adds iamb to: sxmo_hook_apps.sh sxmo_hook_contextmenu.sh.

Iamb is a terminal matrix client with vim style keybindings.

Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Aren Moynihan <aren@peacevolution.org>
2024-04-27 22:16:45 -04:00
hazardchem
d5dbfc6586 profile: set st -e to st
st -e has been causing issues when run by sxmo_terminal.sh

Removing from profile will make the default not cause issues if people decide
to uncomment it

Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Aren Moynihan <aren@peacevolution.org>
2024-04-27 16:45:39 -04:00
hazardchem
4b44d664c4 fix xob changes to work on both dwm and sway
This patch fixes modifications in fd27059b95

Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-04-26 14:28:32 +02:00
Willow Barraco
9787be1395 Handle low battery cases 2024-04-26 14:19:20 +02:00
Sicelo A. Mhlongo
91d4319df5 sway: add config for Nokia N900
The Nokia N900's keyboard has very few keys, and RightAlt is already
in use. Provide an alternative binding mode that suits this constraint
while remaining as close as possible to the existing sxmo keybindings

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-04-26 14:17:50 +02:00
Aren Moynihan
8c0c0e4311 check if flash led exists instead of using SXMO_DISABLE_LEDS
Also use brightnessctl directly, the flash toggle logic doesn't use any
of the features provided on top of it by sxmo_led.sh. This simplifies
the cases that sxmo_led.sh needs to support.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-04-26 14:14:04 +02:00
Sicelo A. Mhlongo
1826eaca5b sxmo_led: initial support for lp5xx leds
These leds, found in the Nokia N900, use 'non-standard' naming. Add initial
support for them

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-04-26 14:14:04 +02:00
Sicelo A. Mhlongo
bccc1ab88d hook_screenoff: blink purple only when suspend is enabled
When autosuspend is disabled, the purple LED blinks indefinitely, since
screenoff is the lowest idle state possible in that case. The purple LED
notification is meant to notify the user that that system is in screenoff, and
will likely suspend soon, thus for users who disable autosuspend, the blink
loses meaning. Disable it for this case.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-04-26 14:03:09 +02:00
hazardchem
1172819f59 conky: reduce poll interval
Been noted that with update_interval set to 5 that conky consumes 10% cpu

Setting to 15 reduces it to less than 1%

Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-04-26 14:03:08 +02:00
Sicelo A. Mhlongo
b8d4fa93aa deviceprofile: nokia-n900: disable modem
The Nokia N900's modem is not supported by ofono. Until either sxmo supports
ofono or the modem is made to work with modemmanager, disable it to save a few
cpu cycles

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-04-26 14:03:08 +02:00
magdesign
967ab3c8ad removed the disable_led since flashlight/torch works nicely
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-04-26 14:03:08 +02:00
Real Root
ed69f8ae23 add tilix and moment to sxmo_hook_apps.sh
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-04-15 19:42:34 +02:00
hazardchem
bcdacb3a18 sxmo_xinit.sh: Fix SXMO_TERMINAL decleration
Currently st -e for SXMO_TERMINAL causes st to exit with error 1

Removing the -e switch makes it so that st behaves correctly.

Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-04-15 08:30:11 +02:00
Real Root
2da465e533 add tilix in sxmo_terminal.sh
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-04-13 22:25:43 +02:00
Willow Barraco
dc7b9dd7fe Remove gojq proxy
Recent jq version seems fast enough. We drop this proxy, and use jq
directly

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-04-12 22:16:21 +02:00
Willow Barraco
4913fac4ee Cleanup virtual keyboard management
Some devices doesn't need a virtual keyboard, aka Nokia N900, aka
Pinephone with keyboard. This give a way to disable this feature
completely.

Also, we remove the sxmo_dmenu_with_kb.sh script, cause it is poorly
used, and give inconsistent behavior between menus. The user can already open
the keyboard very easily.

For this same reason, we remove some random "sxmo_keyboards.sh open". If
this isn't necessary cause of a specific usage (aka dtmf special
layout.

I also dropped some code in sxmo_dmenu.sh that adapt the available size
depending on if the keyboard is open or not. The keyboard can be open
later, so this is dumb to rely on this, and we should alway be able to
open/close it, and to read all lines.

I adapted the inputhandler a bit when keyboard is disabled. If you guys
think about better usage of freed handler, I'm open!
2024-03-25 17:32:26 +01:00
Willow Barraco
abb50343c1 sxmo_wm.sh: fix execwait 2024-03-25 17:32:26 +01:00
Willow Barraco
fbfde5a886 Standardise notify-send 2024-03-25 17:31:56 +01:00
Willow Barraco
36a67632ad Hide keyboard message while editing messages
When openning the conversation loop, it happens very frequently
that I see some stdouts breaking my kakoune EDITOR when I switch the
keyboard layout.

To solve this, we detach the keyboard stdout from the caller process.
2024-03-25 17:30:45 +01:00
Willow Barraco
f05c300616 sxmo_brightness.sh: fix min brightness handling
Atm if you use SXMO_MIN_BRIGHTNESS=1, you blank the screen when you use
sxmo_brightness.sh.

Re-implement the minimum value handling to solve this.
2024-03-25 17:27:08 +01:00
Willow Barraco
368bc48dc2 sxmo_bluetoothmenu.sh: fix clean re-connection
Do not try to pair before connection. Let's stay consistent with how we
connect to new devices from the main loop. Also, do not trust by
default. The user have to do this themselves manually if they want to.

Add a --timeout to the scan, so that it stay scanning, even if not
in interactive mode.

Sleep 1 so that we don't spam too much the daemon.
2024-03-25 17:23:19 +01:00
Willow Barraco
dca4dffc57 sxmo_bluetoothmenu.sh faster commands
Use timeout instead of --timeout 7 to return faster.
2024-03-25 17:23:19 +01:00
Willow Barraco
d617d31aca sxmo_bluetoothmenu.sh: do not display "(null)" when device list is empty 2024-03-25 17:23:18 +01:00
Willow Barraco
562fa6129a sxmo_state.sh: prevent race condition while checking current state
Add a "get" command to abstract state checks, from inside of the
sxmo_state.sh script. This use the shared flock on this case.

This have to adapt the flocks management, so that the hooks can access
the "get" without staying idle, waiting for themselves to release the
exclusive flock.
2024-03-25 17:12:25 +01:00
Willow Barraco
ac767b8eb0 sxmo_state.sh: fix "screen-off" toogles from menus
To solve this, we have to allow transitions to the same state.
Which is needed when toggeling automatic screen-off from the config
sub-menu.
2024-03-25 17:12:25 +01:00
hazardchem
369557daf2 alacritty: set behaviour to match other terminals
This patch fixes issues with using alacritty as your terminal emulator in sxmo.

Alacritty needs to know if you are trying to exrcute a specific program or $SHELL
as setting the title even with dynamic titles set in config will make the title
permanent

That affects calling sxmo_terminal.sh with power button as the title will stay
as the path to your shell.

To test for this made a check to see if the case is calling $* as shell path or
program

Also added to sxmo_hook_apps.sh

Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-03-24 22:44:08 +01:00
hazardchem
b5be78d521 badwolf: add entry to context menu
Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-03-18 17:52:46 +01:00
Joshua Murphy
db537e789a Keep SXMO_OS env for sxmo_bluetoothtoggle.sh
Currently, SXMO_OS is not kept when running sxmo_bluetoothtoggle.sh
using doas. The case statement is therefore skipped entirely. This
patch preserves that var and allows SXMO_OS to be correctly checked.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-03-06 17:45:23 +01:00
hazardchem
fd27059b95 Using xob for audio and brightness notifications in dwm
This patch replaces dunst with xob for audio and brightness levels.

Currently xob is only in alpine edge so this will be useful once it moves to
stable.

Xob behaves exactly the same as wob this the file for xob are just renamed from
wob. Alternative proposal is place a if statement in sxmo_wob.sh to start wob
or xob and then remove the $SXMO_WM check.

Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2024-03-06 17:40:13 +01:00
magdesign
d295949758 krita to app hook
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-02-23 20:22:55 +01:00
magdesign
1a348237cd added contextmenu for Krita
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-02-23 20:22:52 +01:00
Timotej Lazar
ce699dc01a Add SXMO_VIBRATE_DEV to longcheer deviceprofile
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2024-02-20 17:32:19 -08:00
Maarten van Gompel
69fcc55e5d apps: added fractal (matrix client)
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2024-02-20 17:31:51 -08:00
Caio Barros
fb153ce987 Initial setup of a device profile for Pine Tab 2
Copied from the Pine Phone Pro profile, but (1) removed the modem, (2)
removed wayland scaling and (3) changed the power key to 0:0:rk805_pwrkey

Signed-off-by: Anjandev Momi <anjan@momi.ca>
2024-02-20 17:30:19 -08:00
Patriot-06
6fb3fe6f98 Initial configuration and deviceprofile for Redmi Note 4
Signed-off-by: Patriot-06 <mbmc172@gmail.com>
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2024-02-20 17:28:10 -08:00
Willow Barraco
c6efaf8a94 Support system wallpapers
This add a simple hook "wallpaper" that by default grab the system
wallpaper (ex: provided by postmarketos-artwork-wallpapers). If there is
none, it fallback to the sxmo one.

Of course, the hook is customizable by the user if needed.

Ref: https://gitlab.com/postmarketOS/pmaports/-/issues/2499
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2024-02-20 16:15:38 -08:00
Willow Barraco
6ed845fd03 sxmo_common.sh: xdg_data_path handle escaped separators (\n, \0)
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2024-02-20 16:15:35 -08:00
Willow Barraco
df6b3d3d0d sway_template: bump manual locker shortcut 2024-02-05 16:18:53 +01:00
Willow Barraco
1642daaf49 sway_template: remove transparency on inactive workspace 2024-02-05 16:18:53 +01:00
Sicelo A. Mhlongo
9b6aa786a0 places_for_gps.tsv: use correct name for Swaziland
The name Swaziland was replaced in April 2018. Use correct name for the
country, namely Eswatini

Reference: http://www.times.co.sz/news/118373-kingdom-of-eswatini-change-now-official.html
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2024-01-01 20:11:45 +01:00
Willow Barraco
29ff6e270f Bump version 2023-12-28 09:10:03 +01:00
Willow Barraco
6a024f2122 sxmo_modemaudio.sh allow to brute force setup/reset
Instead, do not reset if it is already done on sxmo_modem.sh
2023-12-27 17:35:27 +01:00
Willow Barraco
5e86c77a2c sxmo_modemaudio.sh swallow if on the target mode 2023-12-27 17:32:36 +01:00
Willow Barraco
f9e8ed1667 Do not resume player before we reset the audio 2023-12-27 17:32:36 +01:00
Willow Barraco
3fe7b2bb1e Fix auto pause of active players
Do not pause_all on pickup, we already do it when rings starts.
Do resume_all on mute_ring.
2023-12-27 17:32:35 +01:00
Willow Barraco
1eb155ce47 Stop the ring before setting up the audio call mode
Trigger hooks sync to prevent noise while picking up calls.
2023-12-27 12:39:50 +01:00
Willow Barraco
2f5fae6e10 Simplify the ringing related code
Mostly using sxmo_jobs.sh to simplify the pid management.

This also cleanup the sxmo_hook_ring.sh to correctly manage the
vibration and ringing pids.

This also prevent the phone to continue to ring a bit after the ring
stopped.
2023-12-27 12:39:49 +01:00
Willow Barraco
eaa596816f sxmo_hook_sms.sh: vibrate while noising 2023-12-27 12:36:15 +01:00
Willow Barraco
b62eda14d6 sxmo_modemaudio.sh: enforce speaker mode after a call
This is another try to solve this problem.
2023-12-27 12:36:15 +01:00
Willow Barraco
18d2845f78 Drop our manual quoting of sms content
ModemManager 1.22.0 just added --messaging-create-sms-with-text:

https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/275

Finally we can use quotes in our sms.

We add -f in sxmo_modemsendsms.sh to give the draft file directly.
2023-12-24 15:46:42 +01:00
Willow Barraco
278d896eaa Update the proximity lock status bar icon when started/stopped 2023-12-24 15:43:27 +01:00
Willow Barraco
1522fd4128 sxmo_modemaudio.sh: fail exit if it actually failed to setup audio
Do not fire sxmo_hook_call_audio if we fails to enable call mode correctly, and
actually exit 1 when it does.

Plus check everything is actually right at the end of the hack hook.
2023-12-24 15:43:26 +01:00
Zach DeCook
fa57046245 Statusbar: indicate when headset mic is primary
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-12-24 15:43:26 +01:00
Willow Barraco
73416c9280 Simplify audio status bar icon
Unify both call and regular mode. Mostly cleanup.
2023-12-24 15:43:23 +01:00
Roberto Castagnola
5e7e07841f Fix bluetooth device list
Signed-off-by: Roberto Castagnola <roberto.castagnola@gmail.com>
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-12-24 15:04:38 +01:00
Aren Moynihan
2cde05382d state: idle transitions shouldn't loop around to unlock
Previously when state=screenoff, sxmo_state.sh idle would set the state
to unlock.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-12-24 15:04:38 +01:00
Aren Moynihan
99f01be21f sxmo_init: remove global default_hooks/<device_name>
This folder has been removed, keeping it here results in getting "::" in
the path, which some shells interpret as $PWD. This is unexpected and
potentially hazardous.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-12-24 15:04:36 +01:00
Willow Barraco
542d6507cf Drop obsolete proximity state handling 2023-12-17 10:16:35 +01:00
Aren Moynihan
853690a704 state: rename down to idle and up to click
These match what the states are used for. These actions aren't the exact
inverse of each other, and with more states could even take different
routes through the available states.

For example if we were to dim the screen before entering lock, the idle
states would be: unlock, dim, lock, screenoff, and the click states
would be unlock, screenoff, lock. Logic would be needed to handle states
not in the click list.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-12-17 10:16:34 +01:00
Willow Barraco
61aa02754f Fix the wake up from screenoff when manually moved here 2023-12-17 10:16:34 +01:00
Willow Barraco
0535059f7d Stop idle_locker if disabled globally 2023-12-17 10:16:33 +01:00
Willow Barraco
97447367f6 Bump version 2023-12-09 19:56:24 +01:00
21d694822a sys menu: include an entry for the WM menu
with the default keybindings, sxmo_wmmenu.sh is reachable by volup x3.
without that mapping, it's unreachable.
having it reachable from the top-level menu allows more input mappings
to be practically usable (for example: vol-up short-press for appmenu,
long-press for sys menu, no third action).

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-11-26 17:48:09 +01:00
f605068505 Apps: add gnome-2048
Gnome 2048 is a mobile-friendly implementation of the 2048 game:
<https://wiki.gnome.org/Apps/2048>

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-11-26 17:45:39 +01:00
8758473866 apps: add Animatch
Animatch is a mobile-friendly "match three" game commisioned by Purism:
<https://gitlab.com/HolyPangolin/animatch/>

video: <https://social.librem.one/system/media_attachments/files/005/973/879/original/7cb0eb9fcde900fd.mp4>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-11-26 17:45:37 +01:00
da7e951159 apps: add Tangram
Tangram is a convergent GTK4 web browser built specifically for running
web-apps like the Mastodon or Lemmy web clients:
<https://github.com/sonnyp/Tangram>

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-11-26 17:45:35 +01:00
9b0f6a3414 apps: add Librewolf
Librewolf is a privacy/security-focused Firefox fork:
<https://librewolf.net/>

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-11-26 17:45:32 +01:00
a264835cdd apps: add Wike
Wike is a convergent GTK4 Wikipedia reader:
<https://github.com/hugolabe/Wike>

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-11-26 17:45:30 +01:00
49aa6be220 apps: add Komikku
Komikku is a convergent GTK4 manga/comic book reader:
<https://gitlab.com/valos/Komikku>

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-11-26 17:45:19 +01:00
9df61b2d32 apps: add KOReader
KOReader is an extremely lightweight, but capable, ebook reader:
<https://github.com/koreader/koreader>

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-11-26 17:45:16 +01:00
b74c03d688 apps: add Gnome Weather
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-11-26 17:45:14 +01:00
af7890dfdf apps: add Cozy
Cozy is an audiobook player:
<https://github.com/geigi/cozy>

it works well in portrait mode. in landscape mode the controls at the
bottom of the screen (play/pause/seek/speed) might not be visible on
small displays unless SXMO_SWAY_SCALE is reduced or some other mechanism
is used to avoid scaling the application.

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-11-26 17:45:12 +01:00
46b64a713a apps: add g4music
g4music is a convergent gtk4 music player:
<https://github.com/neithern/g4music>

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-11-26 17:45:10 +01:00
8d92365ffb apps: add Chatty
Chatty is Purism's multi-protocol instant messaging client:
<https://gitlab.gnome.org/World/Chatty>

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-11-26 17:45:06 +01:00
Willow Barraco
1654cde76d Fix truncated sms on first line return
This problem has been introduced with 05fd5112

This time, we will use the json format with -J instead of parsing
manually this key-value format.
2023-11-07 15:40:08 +01:00
Willow Barraco
824ad04d59 test: run all tests 2023-11-06 14:43:42 +01:00
ArenM
b8c42390be Add test for nerd font icons that are outside the private use areas
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-11-06 14:43:42 +01:00
Willow Barraco
819c5fad58 Strip jobs.lock from sxmo_jobs.sh list output
Move this lock file from the directory where pids are stored.
2023-10-31 11:49:29 +01:00
Willow Barraco
bd6473dcfb sxmo_networks.sh: cleanup notifications
We was still using the plain stdout message from the commands.
2023-10-31 11:29:12 +01:00
Willow Barraco
582b51ccca Support for Nokia N900 2023-10-31 11:28:03 +01:00
hazardchem
e4ffce9a69 sxmo_rss.sh: Allow up to 2 http requests instead of only handling 1st
This changes to sxmo_rss.sh allows up to 2 http requests to be handled as some
rss feeds provide either a link, or a link and enclosure, an example of this is
PostmarketOS Podcast, with a link to the website and a link to the content in
the same file.

When the script detects more than one it breaks them into:
Link {1st http address}
Enclosure {2nd http address}

Otherwise everything happens as per the script originally.

This change line up with how sfeed_curses presents the links.

Signed-off-by: hazardchem <hazardchem@disroot.org>
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-10-31 11:27:44 +01:00
Aren Moynihan
6638fc402b Add logging to sxmo_hook_block_suspend
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-10-31 11:27:44 +01:00
Aren Moynihan
6a3269d358 sxmo_init: run cleanup when killed
If system service manager stops tinydm (e.g. if someone runs service
tinydm restart) it should send sigterm to this script. If we're allowed
a chance to, we should do our best to cleanup in this case.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-10-31 11:27:44 +01:00
Eolien55
f24d0f7e1d sxmo_hook_tailtextlog.sh: fix timezone parsing
This hook deletes the timezone in the logs when displaying it, for
readability purposes. But it only deletes timezones whose UTC offset
is negative. This patch fixes it, so negative and positive offsets are
recognized and deleted.

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-10-29 16:54:34 +01:00
Karel Balej
1b8d58e2ca deviceprofiles: add samsung,coreprimevelte
samsung,coreprimevelte is a smartphone with a basic work-in-progress
mainline support. The volume keys however do already work so specify
their identifier for Sxmo to use.

Signed-off-by: Karel Balej <balejk@matfyz.cz>
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2023-10-26 22:36:27 -07:00
Willow Barraco
8249219793 Add a SXMO_NO_AUDIO env variable to strip some daemons 2023-10-17 09:59:06 +02:00
Willow Barraco
0de5c282ab Use the new -s argument to help lisgd edge detection
The Kobo Clara HD is a device with a very HiDPI screen. It have a
1448x1072 but with a 4 inches screen. Without this change, it is very
difficult to trigger some edge triggers.
2023-10-17 09:59:05 +02:00
Willow Barraco
4e0715d87a Allow to disable modem related features
Usefull on desktop, and e-reader devices. Disable some daemons, status
bar icons, and error messages.
2023-10-17 09:59:05 +02:00
Willow Barraco
1caf280dd8 Support for Kobo Clara HD 2023-10-17 09:59:05 +02:00
Willow Barraco
aa56356463 Strip trailing whitespaces 2023-10-17 09:58:29 +02:00
Willow Barraco
ab79ed6f72 Rename sxmo_state.sh from sxmo_state_switch.sh 2023-10-17 09:58:29 +02:00
Willow Barraco
b09469d965 Unify per-device hooks
The recent patch to support the Nokia N900 offered a new dedicated
inputhandler hook. This would bring the number of those scripts to
three:

- the default three button, touchscreen support one we use on Pinephone
and most of the devices
- the one button e-reader one, which behave differently cause there is a
single state for the e-ink screen devices (no screenoff or screen
locked)
- and now this third one, cause the device got a non multi-touch support
screen, and a physical keyboard

I paused while reviewing this patch cause this is becoming too much
duplication. We had to think about this script, and how to deduplicate
the code as much as possible.

While investigating, I noted that with the recent addition
of sxmo_state_switch.sh, we could probaly unify cleanly the whole
management of the Sxmo state, on every devices.

With a simple refactorisation, I was able to change the available
states with a simple environment variable $SXMO_STATES. The default value
is of course "unlock lock screenoff", but on desktop it will become
"unlock locker", and on e-ink reader just "unlock".

This unify most of the variable code from the inputhandlers, cause all of them
can now call sxmo_state_switch.sh up/down in a common way. The last
pieces of code that is still dependent on the device type was the
sxmo_wakelock.sh part:

On three state mode devices, Sxmo remove the wakelock if the state is
"screenoff" after 3s of inactivity. On Pinenote Sxmo remove it when "unlock"
after 120s of inactivity. On desktop, we currently never suspend.

I managed to unify this by extending the "transition" method from
sxmo_state_switch.sh. The environment variables is
$SXMO_SUSPENDABLE_STATES:

By default (pinephone and other), we use "screenoff 3" as value.
On pinetab "unlock 120", and on desktop nothing explicit (we
never reach screenoff in this mode anyway).

It is possible to define multiple cases, ex "lock 120 screenoff 3", which
means 120s timeout while lock, and 3s timeout while screenoff.

It is now possible for a user, or a future device, to define a brand new
workflow, with different available states, and suspending behaviors.

This change also strip the state hooks of this responsibility, and ensure we
keep control over this behavior.

With those changes, we now can remove completely the subdirectories from the
hooks \o/

The in-screen keyboard specific case will be managed by an environment
variable, to disable it on Nokia 900, or devices that have a physical
keyboard (desktops too).
2023-10-17 09:58:29 +02:00
Willow Barraco
b83b2e4f18 Do not worry if there is no touch input
This also notify while on desktop mode. Let's just swallow this.
2023-10-15 13:40:13 +02:00
Jan Wagemakers
7c487c3e0f add Amazfish to sxmo_hook_apps.sh
Amazfish = companion application for smartwatches.

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-10-14 16:28:18 +02:00
Willow Barraco
bbec613e8a Rename sxmo_jobs.sh from sxmo_daemons.sh
A long time ago I said I should rename this. And I finally did it.
sxmo_jobs.sh is a more appropriate name for the intention behind this script.
2023-10-13 09:20:05 +02:00
Willow Barraco
f479a599f6 Unify sxmo_{w,x}init.sh 2023-10-13 09:19:22 +02:00
Willow Barraco
38e450902f Prefer /run/user instead of /var/run/user 2023-10-13 09:19:21 +02:00
Willow Barraco
e2f767bde8 Do not touch env XDG_RUNTIME_DIR if Sxmo is not running
This was causing problems if sxmo-utils was installed, but not used.
This is a revised version of Aren's patch: Clean up handling of XDG_RUNTIME_DIR
2023-10-13 09:19:21 +02:00
Willow Barraco
86555424ed sxmo_hook_screenoff.sh respect idle inhibitors
Previously, this hook was just removing the wake lock that prevent the
device to suspend. This was only up to sxmo_hook_block_suspend.sh to
prevent the device to suspend if some applications are active.

With this change, we glue the idle inhibitors just before unlocking the wake
lock.

It means that the user now can move the device to screenoff, with an
idle inhibitor programs running, without needing to add a dedicated rule
to the block_suspends hook.

This also remove the need of this sxmo_hold_a_bit 3s wakelock.
2023-10-13 09:19:20 +02:00
Willow Barraco
37b50b6798 sxmo_dmenu.sh: do not set menu mode if the state isn't unlock
If a call is incomming and the proximity doesn't unlock the screen,
cause near initial state, or because it is bugged, then we was setting
the "menu" mode while screenoff. Which means the power button was
picking the dmenu entry instead of unlocking the device.

We disable the "menu" mode if the proximity lock turns the screen off,
so we should not set this mode if the initial state is screenoff.
2023-10-13 09:19:20 +02:00
Willow Barraco
598058494b Add statusbar icon when ethernet hotspoting 2023-10-13 09:18:21 +02:00
Willow Barraco
7ba7990a55 sxmo_wakelock.sh: wrap isenabled behavior 2023-10-13 09:18:20 +02:00
Willow Barraco
c1b2803fcf Cleanup SXMO_SYS_FILES
Drop completly this way of giving access to system resources.
Rely on doas to privilage escalate. This ensure the user is in wheel
group.
2023-10-13 09:18:20 +02:00
Willow Barraco
7a77851c9a Cleanup udev rules
Main goal here is to remove obsoletes rules, and to drop our 666 chmods.
Those are serious security holes. Requiring the user to be in the "input"
group is already very weak. Let's not make this worse.

Brightnessctl embark its own rules, so we can drop our lights related
rules.

We move the touchscreen in a more common by-path folder. We are in the input
group, so lisgd have access to it.

I don't know about stylus related rules, I don't think they are
necessary. Input devices are in the "input" group by default. I don't
think those need to be 666...
2023-10-13 09:18:19 +02:00
Willow Barraco
09a3b63b94 sxmo_bluetoothmenu.sh: fix indexes 2023-10-13 09:18:19 +02:00
Willow Barraco
d13ee22779 sxmo_bluetoothmenu.sh: add pairable toggle 2023-10-13 09:18:18 +02:00
Willow Barraco
db1614b7b7 sxmo_hook_screenoff.sh blink first
Now that blinking is fast, thanks to brightnessctl, we should blink
directly to make state switch consistent.
2023-10-13 09:18:18 +02:00
Willow Barraco
2c961c8c95 sxmo_led.sh switch to brightnessctl 2023-10-13 09:18:17 +02:00
Willow Barraco
03990468c0 sxmo_bluetoothmenu.sh trust command can also fails 2023-10-13 09:18:17 +02:00
Willow Barraco
612f053d0c sxmo_bluetoothmenu.sh full reconnection allow unsuccessfull commmands 2023-10-13 09:18:16 +02:00
Willow Barraco
5be5a97090 sxmo_bluetoothmenu.sh do not remove asynchronously 2023-10-13 09:18:16 +02:00
Willow Barraco
7710b6211f sxmo_bluetoothmenu.sh stop bluetooth_scan on window kill too
Without this, we don't stop the scan if we kill the full reconnection
window.
2023-10-13 09:18:16 +02:00
Willow Barraco
9a5babd048 sxmo_bluetoothmenu.sh full reconnect loop on connection too
We already loop on pair, we should do the same for connect.
2023-10-13 09:18:15 +02:00
Willow Barraco
2dc137ce57 Refact battery monitoring with upower 2023-10-11 14:54:08 +02:00
Willow Barraco
5b6ddc7510 Run sxmo_hook_locker.sh if available 2023-10-11 14:54:08 +02:00
Willow Barraco
e0efe35a2d sxmo_audio.sh drop alsa support
Now that we support Pipewire and Pulseaudio, and that we automatically
determine available output ports, this is useless and badly supported.
2023-10-11 14:54:08 +02:00
Willow Barraco
c33408abb5 Cleanup number on incoming call 2023-10-11 14:54:08 +02:00
pedja
e55d30d2ad Auto rotate screen on physical keyboard opened/closed
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-10-11 14:54:07 +02:00
Paavo Ylönen
df539391e5 Deviceprofile for Motorola Moto G4 Play 2023-10-11 14:54:07 +02:00
b1e5d75162 autorotate: allow all four orientations
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-10-11 14:54:07 +02:00
c7df343008 sxmo_hook_rotate.sh: update docs for CLI args
see `swayrotinvert()` in sxmo_rotate.sh, which calls this hook with "invert"

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-10-11 14:54:04 +02:00
Willow Barraco
2547af4cbc Use a dedicated env variable to remove volume bind
Relying on SXMO_DEVICE_NAME isn't great cause some devices (ex: the
Pinebook Pro) got a device name that isn't "desktop" but are considered
by Sxmo with a desktop mode. Because of the symlink of the hook folder
to desktop.

I think a dedicated environment variable is good enough to cover this
case.
2023-10-10 18:24:22 +02:00
ArenM
25c1827b5f device agnostic bindings for volume and power
- Fallback to using wtype to convert volume / power presses into
  up/down/enter int menu mode if we don't know volume key names. This
  costs some performance, but is only noticeable when scrolling quickly.

- Bind to all power and volume button devices. This will make it
  possible to trigger {volup,voldown,powerbutton}_one events on any
  device, even without a deviceprofile. This is necessary for unlocking
  without a deviceprofile, it's also a big step towards not needing
  deviceprofiles at all.

Chanes from v1:
 - don't use the multikey script when we can't set the repeat rate of
   volume buttons.
 - don't bind to anything on desktop systems
 - remove default values for vol and pwr that were causing issues
 - remove SXMO_VOLUME_BUTTON="none" from pinenote deviceprofile since we
   check if it's empty instead now

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-10-10 18:24:21 +02:00
Zach DeCook
195f77d2cf Icons: switch magnifying glass to proper range
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-10-10 18:24:21 +02:00
Zach DeCook
e1493cff6a Apps: Add Gnome Maps
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-10-10 18:24:20 +02:00
Zach DeCook
0210047512 Apps: Add badwolf (webkit browser)
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-10-10 18:24:20 +02:00
Jan Wagemakers
e99ef4e2e3 add SXMO_VIBRATE_DEV to SHIFT6mq deviceprofile
This makes vibrate work on the shiftphone shift6mq.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-10-10 18:24:19 +02:00
Willow Barraco
b175f17acd Add placeholder hooks to simplify user migrations
Without those, every sxmo_migrate.sh ask the user if they want to remove
those. Adding a placeholder make it easy to differenciate known hooks,
and hooks that has been removed.

This also cleanup, merge or fix some existing hooks.
2023-10-10 17:58:13 +02:00
Aren Moynihan
a4bbfd525f Separate services that are provided by external packages
The services for programs that aren't provided by sxmo-utils often
conflict with services provided by distributions other than alpine. This
provides a flag that package maintainers can use to easily disable them
at build time.

Signed-off-by: Aren Moynihan <aren@peacevolution.org>
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-10-10 17:54:25 +02:00
b579015748 suspend: block if Dino is in a call
this is technically overbroad, in that it blocks whenever Dino is
outputting audio, but in practice that's precise enough & Dino doesn't
expose any API to detect calls specifically.

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-10-08 17:58:34 +02:00
Martin Bila
05fd5112d5 fixed escaped characters conversion from fetched sms
Changes to be committed:
	modified:   scripts/modem/sxmo_modem.sh

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-10-05 20:24:14 +02:00
Jochen Sprickerhof
ae7fd89b46 Use pkill -f for $KEYBOARD
Some pkill implementations match on /proc/pid/stat which is limited to
15 characters [1]. $KEYBOARD defaults to svkbd-mobile-intl which is more
then 15 characters, so use -f to match the full string. Note that sxmo
uses busybox pkill by default which does not have this limit.

[1] https://manpages.debian.org/buster/procps/pgrep.1.en.html (Notes)

This patch was previously applied, and then reverted by a careless
refactor, restore it.

Signed-off-by: Anjandev Momi <anjan@momi.ca>
Signed-off-by: Aren Moynihan <aren@peacevolution.org>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-10-03 22:06:51 +02:00
2db9353edb sxmo_wmmenu.sh: add "Kill window" option
right now sxmo_killwindow.sh is exposed only via the (default) sxmo
input bindings/gestures. exposing this via the menu system allows more
leeway for exploring alternative input bindings.

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-10-02 23:18:45 +02:00
Anjandev Momi
7a7188bddc xiaomi elish: set MONITOR to DSI-1
https://lists.sr.ht/~mil/sxmo-devel/%3C20230807161613.13072-2-noneofyourbusiness%40danwin1210.de%3E#%3C20230903124519.486585ca@workstation.localdomain%3E
2023-09-22 18:33:13 -07:00
Willow Barraco
d92f57f213 Revert "Work-arround the Wob crash"
This reverts commit 55aac86762.

The issue has beed fixed with Wob 0.15.1
2023-09-17 19:44:21 +02:00
Anjandev Momi
0e3315b57b add device profile for mi pad 5 pro 2023-09-17 01:30:13 -07:00
Willow Barraco
17e4e917a7 Add a desktop default device profile
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2023-09-17 01:25:16 -07:00
Willow Barraco
55aac86762 Work-arround the Wob crash
https://github.com/francma/wob/issues/131

This is caused by wob sandboxing, disabling it avoid the issue.
2023-09-17 09:39:12 +02:00
Willow Barraco
0766872097 Deactivate vol key custom repeat for menus
This value seems too fast and cause problems:

https://gitlab.com/postmarketOS/pmaports/-/issues/2282#note_1550179911

I'm in favor of droping this completly. I don't use this repeat behavior
cause it is not precise enough anyway. Waiting a bit longer to browser
large menus seems okay.

I moved this to the multikey_retrocompat cause this script still expect
those values.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-09-13 22:25:41 +02:00
Willow Barraco
c95f3d9e7b Fix Steam pressure-vessel missing xwayland DISPLAY
This cause most game to just not start. Cause the flatpak-portal doesn't
have DISPLAY.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2023-09-09 12:47:37 -07:00
Willow Barraco
ef8254681c Unify sxmo state switch and ensure consistency
If two power handler trigger at the same time, the current behavior is
that we switch two time to the same target state.

This move the flock to a central script that make sure only one switch
is ocurring at the same time. Concurrent switch will wait for the
previous one to finish before guessing the new target state.

This also refactorise the sxmo_proximitylock.sh to make it simple,
stripping the two related proximitylock and proximityunlock states.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2023-09-09 12:47:04 -07:00
Willow Barraco
ee180f6e51 Drop fast wifi reconnection behavior
As this does not works for a long time, and this is mostly Pinephone
specific, we drop this from Sxmo.

If someone want to investigate futher to keep something similar, I would
recomment to find a more global solution than this Sxmo specific trick.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Peter John Hartman <peterjohnhartman@gmail.com>
2023-09-09 09:57:39 -05:00
Willow Barraco
e6c02e3bc3 Differenciate TERMCMD and SXMO_TERMINAL
Without this, sxmo_open.sh and so sxmo_files.sh fails to setup the
correct window titles for terminal desktop programs

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2023-09-09 00:53:01 -07:00
Willow Barraco
e2b2c510a2 sxmo_migrate.sh do not reload environment if already loaded
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2023-09-09 00:45:47 -07:00
Willow Barraco
0acdebf0a7 appscripts: add a sxmo_notes script
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Anjandev Momi <anjan@momi.ca>
2023-09-08 23:57:00 -07:00
Michael Leu
3fbcf32fee apps: add osmin and numberstation
https://github.com/janbar/osmin
https://git.sr.ht/~martijnbraam/numberstation
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-09-08 22:40:30 +02:00
Willow Barraco
a2d5d2ed08 sxmo_screenshot.sh allow to take all output
This is still subject to a bug with touch inputs:

https://github.com/emersion/slurp/issues/140
2023-08-31 10:57:31 +02:00
Willow Barraco
086d8de5f8 sxmo_upgrade.sh: use -a and -i
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-08-30 15:31:23 +02:00
Maarten van Gompel
a9c2c3b4bf integrate lf in context menu
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-08-30 13:41:36 +02:00
Maarten van Gompel
86dcf85612 Apps: add portfolio
A python/gtk file manager for mobile devices, with minimalist aims

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-08-30 13:41:35 +02:00
Willow Barraco
ebe88d9ef9 sxmo_migrate.sh: fix "3 Use your [u]ser version as-is" empty configversion 2023-08-30 11:42:45 +02:00
Willow Barraco
f61bb64aca Integrate nnn
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-08-30 11:16:38 +02:00
Willow Barraco
ebb2c3e47e Integrate epy|epr epub readers
- inhibit idle to leave the screen on while reading
- map vol keys to page scroll when locked
- quit using "q" to store progress

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-08-30 11:16:31 +02:00
Willow Barraco
471dce2b9e Rework terminal handlers to deal correctly with terminals with touch support
This is principally a refactorisation of those handlers, primarily to
strip some cases where foot handle correctly scrolling by itself now.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
2023-08-30 11:16:27 +02:00
Peter John Hartman
22c3f178cd sxiv -> nsxiv
Apparently in edge sxiv has been retired, but there is still nsixv.
Fortunately, our code checks for *sxiv*, so changing this was pretty
simple.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-08-30 08:56:29 +02:00
Raymond Hackley
788810268c Add device profile for Samsung Galaxy E5 (samsung,e5)
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-08-30 08:54:56 +02:00
Willow Barraco
871caa7394 Revert "Remove dead code from setpermissions"
This reverts commit da36357b4f.
2023-08-29 23:40:27 +02:00
Willow Barraco
6ce754385c sxmo_hook_tailtextlog.sh remove leading line "no matching node" 2023-08-29 21:04:39 +02:00
Willow Barraco
4c6840b4ff apps: Add syncthing-gtk 2023-08-29 21:04:39 +02:00
Willow Barraco
56c7df703d Undocumment unknown hook 2023-08-29 20:28:54 +02:00
Willow Barraco
bd41443f55 Strip superd verbose mode by default 2023-08-29 20:27:30 +02:00
Willow Barraco
31dc146bde Simplify deviceprofile check on start hook 2023-08-29 20:27:30 +02:00
Willow Barraco
d42739d1a2 Supress noise while toggleing lisgd 2023-08-29 20:26:17 +02:00
Willow Barraco
69b16dd017 sxmo_vvm.sh: Fix sxmo_hook_smslog.sh 2023-08-29 20:25:17 +02:00
Willow Barraco
d9dd4d4ab6 Also close keyboard on bottomleft gesture 2023-08-29 20:11:39 +02:00
Willow Barraco
3abfb24924 sxmo log and debug should also output to stderr 2023-08-29 20:08:49 +02:00
Willow Barraco
3ecbf9a727 sxmo_brightness.sh quiet brightnessctl 2023-08-29 19:45:07 +02:00
Chris Talbot
4394816f16 mmsdconfig: Use correct default config
As with vvmd, this allows mmsd-tng to look up service providers,
and does not default to T-mobile-USA

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-08-29 19:38:54 +02:00
Chris Talbot
0e39ef1c2d vvmdconfig: Change default config file
This config file allows vvmd to look up providers, and the
previous one was for T-mobile USA

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-08-29 19:38:04 +02:00
Zach DeCook
af86f64500 Apps: Add Tuba
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-08-29 19:08:58 +02:00
Zach DeCook
bd9eca7dd4 Geopard: Add pipe-url to menu
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-08-29 19:08:52 +02:00
Zach DeCook
700bee1659 Apps: Add Amberol
if XDG_MUSIC_DIR is configured, it will be opened on launch
playerctl is required for mpris controls in the menu

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-08-29 19:08:46 +02:00
Zach DeCook
3a70be4fd7 Device Profile: Make vibration strength configurable
Fixes vibration on OnePlus 6

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-08-29 19:06:23 +02:00
ArenM
228b936f08 Remove useless dirname calls
sxmo_common.sh is in $PATH so we can let the shell handle finding it.
Running a script with sh -x <scriptname> can be handy for debugging, but
doesn't work with these because $0 doesn't get set to the full path to
the script.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-08-29 19:03:21 +02:00
ArenM
da36357b4f Remove dead code from setpermissions
/sys/class/wakeup was used when we would check active_count to guess the
wakeup reason.

/sys/power/wakeup_count was a failed attempt to avoid using doas in
sxmo_wakelock.sh.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-08-29 19:03:09 +02:00
0d56424cbc Makefile: use SYSCONFDIR instead of hardcoding /etc
like PREFIX and DESTDIR, SYSCONFDIR is one of the standard GNU
installation directory variables:
<https://www.gnu.org/prep/standards/html_node/Directory-Variables.html>

this is a no-op for any package managers not explicitly setting
SYSCONFDIR, but it makes packaging for distros that don't use FHS paths
(i.e. NixOS) quite a bit easier.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-08-29 18:57:41 +02:00
9e16a9fa47 Makefile: obey PREFIX when installing udev rules
since PREFIX defaults to /usr at the top of this file, this is a no-op
for any package managers that don't explicitly set PREFIX.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-08-29 18:57:41 +02:00
Hanspeter Portner
a69fbb2222 sxmo_networks.sh: support multiple VPNs
Configurations with multiple VPNs currently fail to show the networks
dialog due to a failing sed invocation due to multiple lines in
VPNDEVICE env var:

    $ nmcli con show --active

    NAME         UUID                                  TYPE       DEVICE
    wired        xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  ethernet   eth0
    mullvad-nl5  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  wireguard  mullvad-nl5
    lo           xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  loopback   lo
    wg-forge     xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  wireguard  wg-forge

This patch adds support for arbitrary numbers of VPNs by concatenating
the VPN names with a '|' and running the latter through sed with
support for extended regexp (needed for the '|' interpreted as an or).

Signed-off-by: Peter John Hartman <peterjohnhartman@gmail.com>
2023-08-28 07:11:04 -05:00
Joshua Murphy
a63a678077 sxmo_hook_statusbar.sh: include wireguard when searching for vpn
Signed-off-by: Peter John Hartman <peterjohnhartman@gmail.com>
2023-08-28 06:59:38 -05:00
Willow Barraco
2a1782f397 Make config gesture toggle persistent
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Signed-off-by: Peter John Hartman <peterjohnhartman@gmail.com>
2023-08-28 06:41:15 -05:00
Willow Barraco
0791b182e9 sxmo_modemaudio.sh: fix speaker disabled after a call (and cleanup) 2023-08-22 15:40:42 +02:00
Willow Barraco
095678e77f Comment percentage manual computing 2023-08-11 09:28:39 +02:00
Willow Barraco
d0384a7cae Switch from light to brightnessctl
light has been flagged as orphan by its developper, and dropped from
aports.

https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/49859
https://github.com/haikarainen/light/issues/147

We switch to brightnessctl that works the same, and that also support
flashlight and leds.
2023-08-11 08:50:57 +02:00
Willow Barraco
4a6b4f6981 Reword debug message 2023-07-31 16:41:16 +02:00
7a4ccd3ec7 sxmo_wmmenu: respect SXMO_WORKSPACE_WRAPPING
sxmo_wm.sh uses the `SXMO_WORKSPACE_WRAPPING` variable to control
relative movements. for example, set this to "5" and then the "Next
Workspace" option in the switch menu will cycle WS 1 -> 2 ... -> 5 -> 1.
same for one- and two-finger left/right swipe to switch/move workspaces.

however, absolute movements (via the move menu) only allowed moving to
WS 1-4. a user with non-default `SXMO_WORKSPACE_WRAPPING` could move a
window from WS 5 to WS 4 with this menu, but not from WS 4 back to WS 5.
this patch brings consistency by using `SXMO_WORKSPACE_WRAPPING`
anywhere we would otherwise assume the number of possible workspaces.

Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-07-31 16:39:52 +02:00
Zach DeCook
f9605bc9c8 config: fix keyboard files location
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-07-21 16:30:08 +02:00
Zach DeCook
628a5675b2 suspend toggle: silence rm failure noise
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
2023-07-21 16:30:08 +02:00
Willow Barraco
333ec06d68 Upstream some decent sway configs
- compose key on ralt
- new t and g keybinds
- fix pinentry floating
- add media keybinds
- setup lid open/close
- i now use windowswitcher instead of script (easily available)
2023-07-20 10:22:19 +02:00
Willow Barraco
fc24835fd5 sxmo_screenshot.sh cleanup 2023-07-20 10:22:19 +02:00
Willow Barraco
f57a4b0985 sxmo_wmmenu.sh explicit argument can be wm agnostic 2023-07-20 10:22:18 +02:00
Willow Barraco
5508e06ffe Add mumble app 2023-07-20 10:22:18 +02:00
Willow Barraco
f4479b8d8c Add a pipewire-filter-chain service 2023-07-20 10:22:18 +02:00
Willow Barraco
e0ecf42cb7 sxmo_timer.sh prevent suspension while running 2023-07-15 13:22:34 +02:00
Willow Barraco
853ad37d23 sxmo_timer.sh decrease resource consumption
The stopwatchrun sleep was in the wrong line, and so this was very costy
to use.

Also moved to sxmo_aligned_sleep to avoid overlapping seconds, while
still being the cheapest possible.
2023-07-15 13:22:33 +02:00
Willow Barraco
90f00ef11a sxmo_wakelock.sh do not auto prefix with sxmo_
It is inconsistent with the debug outputs, and is confusing for the
user. sxmo_wakelock.sh should be a tool to manage every lock, not
only the sxmo ones.

Instead we should prefix manually from our scripts.
2023-07-15 13:22:32 +02:00
Willow Barraco
f0888bbd03 sxmo_wakelock.sh simplify watch mode 2023-07-15 12:47:34 +02:00
Willow Barraco
91070791ee sxmo_wakelock.sh Do not debug if unsupported system 2023-07-15 12:47:33 +02:00
Willow Barraco
1373bc682e sxmo_wakelock.sh fix minute and hour units 2023-07-15 12:47:33 +02:00
246 changed files with 5049 additions and 2626 deletions

View File

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

1
.gitattributes vendored Normal file
View File

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

3
.hut.scfg Normal file
View File

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

122
Makefile
View File

@@ -1,45 +1,110 @@
DESTDIR=
PREFIX:=/usr
SYSCONFDIR:=/etc
SHAREDIR=$(PREFIX)/share
MANDIR=$(SHAREDIR)/man
CFLAGS := -Wall -std=c99 -D_POSIX_C_SOURCE=200809L $(CFLAGS)
# use $(PREFIX)/lib/systemd/user for systemd integration
SERVICEDIR:=$(PREFIX)/share/superd/services
# Install services for packages outside sxmo
EXTERNAL_SERVICES:=1
SCDOC=scdoc
SCD2HTML=scd2html
SCD2HTMLFLAGS =
.PHONY: install shellcheck
.PHONY: install test shellcheck shellspec test_legacy_nerdfont docs html-docs \
install-docs install-html-docs install-sway install-dwm install-scripts
VERSION:=1.13.0
VERSION ?= unknown
GITVERSION:=$(shell git describe --tags)
# git archive will expand $Format:true$ to just true, so we can use it to check
# if we should use the version from the tarball, or to generate it now.
ifeq "$Format:true$" "true"
VERSION := $Format:%(describe:tags)$
else
VERSION := $(shell git -c safe.directory="*" describe --tags)
endif
OPENRC:=1
CC ?= $(CROSS_COMPILE)gcc
PROGRAMS = \
programs/sxmo_aligned_sleep \
programs/sxmo_vibrate
programs/sxmo_sleep \
programs/sxmo_vibrate \
programs/sxmo_status_led
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
$(SCDOC) <$< >$@
all: $(PROGRAMS) $(DOCS)
docs: $(DOCS)
test: shellcheck
html-docs: $(HTMLDOCS)
test: shellcheck shellspec test_legacy_nerdfont test_status_led
shellcheck:
find . -type f -name '*.sh' -print0 | xargs -0 shellcheck -x --shell=sh
shellspec: ${PROGRAMS}
shellspec
test_status_led: programs/sxmo_status_led.test
./programs/sxmo_status_led.test
test_legacy_nerdfont: programs/test_legacy_nerdfont
programs/test_legacy_nerdfont < configs/default_hooks/sxmo_hook_icons.sh
programs/sxmo_status_led: LDLIBS := -lm
programs/sxmo_status_led.test: LDLIBS := -lm
programs/test_legacy_nerdfont: LDLIBS := $(shell pkg-config --cflags --libs icu-io)
programs/%: programs/%.c
$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $<
$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $< $(LOADLIBES) $(LDLIBS) -o $@
# only used for sxmo_status_led
programs/%.test: programs/%.c
$(CC) $(CPPFLAGS) $(CFLAGS) -DTEST $(LDFLAGS) $< $(LOADLIBES) $(LDLIBS) -o $@
clean:
rm -f programs/sxmo_aligned_sleep programs/sxmo_vibrate
rm -f ${PROGRAMS} ${DOCS} ${HTMLDOCS} programs/test_legacy_nerdfont programs/sxmo_status_led.test
install: install-sway install-dwm install-scripts install-docs
install-docs: $(DOCS)
cd docs && find . -type f -name '*.7' -exec install -D -m 0644 "{}" "$(DESTDIR)$(MANDIR)/man7/{}" \; && cd ..
cd docs && find . -type f -name '*.7' -exec install -D -m 0644 "{}" "$(DESTDIR)$(MANDIR)/man7/{}" \; && find . -type f -name '*.1' -exec install -D -m 0644 "{}" "$(DESTDIR)$(MANDIR)/man1/{}" \; && cd ..
install-html-docs: $(HTMLDOCS)
cd docs && find . -type f -name '*.html' -exec install -D -m 0644 "{}" "$(DESTDIR)$(PREFIX)/share/doc/sxmo/html/{}" \; && cd ..
install-sway:
install -D -m 0644 -t $(DESTDIR)$(PREFIX)/share/wayland-sessions/ configs/applications/swmo.desktop
@@ -48,34 +113,31 @@ install-dwm:
install -D -m 0644 -t $(DESTDIR)$(PREFIX)/share/xsessions/ configs/applications/sxmo.desktop
install-scripts: $(PROGRAMS)
cd configs && find . -type f -not -name sxmo-setpermissions -exec install -D -m 0644 "{}" "$(DESTDIR)$(PREFIX)/share/sxmo/{}" \; && cd ..
cd configs && find . -type f -not -exec install -D -m 0644 "{}" "$(DESTDIR)$(PREFIX)/share/sxmo/{}" \; && cd ..
rm -rf "$(DESTDIR)$(PREFIX)/share/sxmo/default_hooks/"
cd configs && find default_hooks -type f -exec install -D -m 0755 "{}" "$(DESTDIR)$(PREFIX)/share/sxmo/{}" \; && cd ..
cd configs && find default_hooks -type l -exec cp -R "{}" "$(DESTDIR)$(PREFIX)/share/sxmo/{}" \; && cd ..
[ -n "$(GITVERSION)" ] && echo "$(GITVERSION)" > "$(DESTDIR)$(PREFIX)/share/sxmo/version" || echo "$(VERSION)" > "$(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 ..
# Configs
if [ "$(OPENRC)" = "1" ]; then \
install -D -m 0755 -t $(DESTDIR)/etc/init.d configs/openrc/sxmo-setpermissions; \
fi
install -D -m 0644 -t $(DESTDIR)/usr/lib/udev/rules.d/ configs/udev/*.rules
install -D -m 0644 -t $(DESTDIR)$(PREFIX)/lib/udev/rules.d/ configs/udev/*.rules
install -D -m 0644 -t $(DESTDIR)$(PREFIX)/share/applications/ configs/xdg/mimeapps.list
install -D -m 0640 -t $(DESTDIR)/etc/doas.d/ configs/doas/sxmo.conf
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 0644 -T configs/xorg/monitor.conf $(DESTDIR)$(PREFIX)/share/X11/xorg.conf.d/90-monitor.conf
mkdir -p $(DESTDIR)/etc/NetworkManager/dispatcher.d
mkdir -p $(DESTDIR)$(SYSCONFDIR)/NetworkManager/dispatcher.d
install -D -m 0644 -T configs/appcfg/mpv_input.conf $(DESTDIR)/etc/mpv/input.conf
install -D -m 0644 -T configs/appcfg/mpv_input.conf $(DESTDIR)$(SYSCONFDIR)/mpv/input.conf
install -D -m 0755 -T configs/profile.d/sxmo_init.sh $(DESTDIR)/etc/profile.d/sxmo_init.sh
install -D -m 0755 -T configs/profile.d/sxmo_init.sh $(DESTDIR)$(SYSCONFDIR)/profile.d/sxmo_init.sh
# Migrations
install -D -t $(DESTDIR)$(PREFIX)/share/sxmo/migrations migrations/*
@@ -83,8 +145,8 @@ install-scripts: $(PROGRAMS)
# Bin
install -D -t $(DESTDIR)$(PREFIX)/bin scripts/*/*.sh
install -D programs/sxmo_aligned_sleep $(DESTDIR)$(PREFIX)/bin/
install -D programs/sxmo_vibrate $(DESTDIR)$(PREFIX)/bin/
install -t $(DESTDIR)$(PREFIX)/bin/ ${PROGRAMS}
setcap 'cap_wake_alarm=ep' $(DESTDIR)$(PREFIX)/bin/sxmo_sleep
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 "{}" \;
@@ -93,12 +155,12 @@ install-scripts: $(PROGRAMS)
mkdir -p "$(DESTDIR)$(PREFIX)/share/sxmo/appscripts"
cd scripts/appscripts && find . -name 'sxmo_*.sh' | xargs -I{} ln -fs "$(PREFIX)/bin/{}" "$(DESTDIR)$(PREFIX)/share/sxmo/appscripts/{}" && cd ../..
mkdir -p "$(DESTDIR)$(PREFIX)/share/superd/services"
install -m 0644 -t $(DESTDIR)$(PREFIX)/share/superd/services configs/superd/services/*
mkdir -p "$(DESTDIR)$(SERVICEDIR)"
install -m 0644 -t "$(DESTDIR)$(SERVICEDIR)" configs/services/*
if [ "$(EXTERNAL_SERVICES)" = "1" ]; then \
install -m 0644 -t "$(DESTDIR)$(SERVICEDIR)" configs/external-services/*; \
fi
@echo "-------------------------------------------------------------------">&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 "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 "-------------------------------------------------------------------">&2

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,10 @@
# 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

46
configs/appcfg/wofi.css Normal file
View File

@@ -0,0 +1,46 @@
/* 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 Normal file → Executable file
View File

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

View File

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

View File

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

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

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

View File

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

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

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

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

@@ -1 +0,0 @@
one_button_e_reader

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

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

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

@@ -1 +0,0 @@
three_button_touchscreen

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -8,4 +8,4 @@
# The following parameters are provided:
# $1 = the new orientation
# possible values are "normal", "left" and "right"
# possible values are "normal", "invert", "left" and "right"

View File

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

View File

@@ -17,14 +17,24 @@
. sxmo_common.sh
# do nothing if active call
if ! sxmo_modemcall.sh list_active_calls | grep -q active; then
if [ ! -f "$XDG_CONFIG_HOME"/sxmo/.noring ]; then
mpv --no-resume-playback --quiet --no-video "$SXMO_TEXTSOUND" >> /dev/null 2>&1
fi
if [ ! -f "$XDG_CONFIG_HOME"/sxmo/.novibrate ]; then
sxmo_vibrate 500
fi
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
mpv --no-resume-playback --quiet --no-video "$SXMO_TEXTSOUND" >> /dev/null 2>&1 &
fi
if [ ! -f "$XDG_CONFIG_HOME"/sxmo/.novibrate ]; then
sxmo_vibrate 500 "${SXMO_VIBRATE_STRENGTH:-1}" &
fi
wait

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,21 +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
MMCLI="$(mmcli -m any -J 2>/dev/null)"
if [ -z "$MMCLI" ]; then
sxmo_notify_user.sh "Modem crashed! 30s recovery."
sxmo_wakelock.sh lock modem_crashed 30s
fi
# see the comments in sxmo_hook_lock.sh
# and https://todo.sr.ht/~mil/sxmo-tickets/150
if [ 1 = "$SXMO_RTW_SCAN_INTERVAL" ]; then
echo 1200 > "/sys/module/$SXMO_WIFI_MODULE/parameters/rtw_scan_interval_thr"
fi
# Add here whatever you want to do

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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