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>
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.
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!
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>
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>
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.
* Make icon_prn a nerd-font icons. It was using a font awesome code
point, which we don't install with sxmo.
* Fix phone locked and laptop icons that weren't automatically updated
* Fix brightness icon in legacy nerd-fonts range and move it to
sxmo_hook_icons from sxmo_brightness
* Use standard Unicode arrows instead of nerd-fonts ones
* Use icon variables for arrows in sxmo_wmmenu.sh
* Add variable for audio icon & use in sxmo_audio.sh
* Remove no stray break space from sxmo_contactmenu
* Remove up arrow character from reddit script
* use only icon variables in modemtext
* Update icons breakpoints
Signed-off-by: Willow Barraco <contact@willowbarraco.fr>
Several places where dash behaves differently than bash:
* read in dash has to have a variable.
* use command -v as type is not POSIX
Signed-off-by: Tzafrir Cohen <tzafrir@debian.org>
Signed-off-by: Anjandev Momi <anjan@momi.ca>
Sed is called only once
now it interprets `5m37s` as `5m + 37s` -> `5*60s + 37s` -> `5*60 + 37`
before, it was `5m37s` -> `5*60s37s` -> `5*60*137*1`. the problem is
that the script does not insert a `+` between each non-number characters
and numbers. it does now, and will understand combinations of seconds,
minutes and hours.
Note, the script will interpret `5m37s` and `37s5m` exactly the same way
This may not be necessary if the user uses by themselves`+` to separate
diffent units, though I think the current behavior is very misleading.
Signed-off-by: Anjandev Momi <anjan@momi.ca>
This is more flexible and makes packaging much easier - especially
on distros using non-standard paths like NixOS
This version of the patch has xdg_data_path default to 1 instance,
making usage simpler. The function is also documented a bit more
clearly.
Signed-off-by: Stacy Harper <contact@stacyharper.net>
* handle exiting menus with escape
* replace if statements with case, where reasonable
* using shell string operations instead of forking
* use sxmo_dmenu_with_kb instead of opening and closing the keyboard
* remove extra options to sxmo_terminal and sxmo_bemenu (some of them
were causing problems)
Signed-off-by: Peter John Hartman <peterjohnhartman@gmail.com>
This was supposed to be part of the appscript cleanup patch, but I
forgot to rebase it.
NOTE: the first patch might not apply without this one
Signed-off-by: Peter John Hartman <peterjohnhartman@gmail.com>
- Move sxmo icons in sxmo_icons.sh
This script should be loaded when icons are needed
- Move init env variable setups in a /etc/profile.d/sxmo_init.sh
This script is loaded by tinydm and for ssh/tty logins.
The logged in user can re-trigger check_sxmo_wm if they toggle wm.
- sxmo_commons.sh now only load aliases. It can be loaded by scripts to
ensure busybox compatibility
- moved some parts of ~/.config/sxmo/xinit to ~/.config/sxmo/profile
This file also is loaded just before starting sway. It goal is to setup
env variables dedicated to sxmo
~/.config/sxmo/xinit only goal is now to trigger some dwm dedicated
things (as ~/.config/sxmo/sway can start exec commands to)
To recap, loads orders are :
tinydm:
/etc/profile.d/* # do not set SXMO_WM
~/.profile
sxmo_winit.sh:
~/.config/sxmo/profile
sxmo_xinit.sh:
~/.config/sxmo/profile
~/.config/sxmo/xinit # to start sxmo_hooks.sh
ssh/tty:
/etc/profile.d/* # will set SXMO_WM
~/.profile
- unify sxmo_winit.sh and sxmo_init.sh
Signed-off-by: Stacy Harper <contact@stacyharper.net>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
Any sane linux system will have a posix compliant shell at /bin/sh
This change will allow us to better detect running scripts using pgrep.
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
We dont use guesswm and rely on a SXMO_WM env variable. We now use
guesswm for non wm action (from ssh, console, rtc wakes, etc). It will
try to setup needed variables.
This way, we avoid to run sxmo_wm.sh and to check variables everytime.
This allow the user to manage sxmo_screenlock.sh from ssh and to run a
desktop software with "sxmo_wm.sh exec foot" by example.
We remove the "ssh" wm cause it does not really make sense anyway.
The sxmo_rtcwake.sh dont try to setup variables anymore cause the user
must use "sxmo_wm.sh exec" if they want to start a destkop software
anyway.
We remove the "xorg" check everywhere cause that make no sense. We
keep the xorg prefixed methods for common xorgs cases.
Signed-off-by: Stacy Harper <contact@stacyharper.net>
Signed-off-by: Anjandev Momi <anjan@momi.ca>
In sxmo_modemmonitor.sh checkfornewtexts() we should skip MMS and SMS WAPs,
which will be SMS messages with text of "--" or no TEXTDATA at all. Hence,
there are a couple small checks in checkfornewtexts() to do that.
As well, there is a further dbus-monitor call in sxmo_modemmonitor.sh that
monitors org.ofono.mms.Service for 'MessageAdded' to process a new MMS messages.
Most of the action happens in sxmo_modemmonitor.sh processmms().
An MMS message might be either a message with an attachment to one recipient
OR a message with multiple recipients ('Group Chat') and no attachments (or
some attachments).
Attachments get placed in ~/.local/share/sxmo/modem/$PHONENUMBER/attachments/.
They are named $PAYLOAD.jpeg, $PAYLOAD.mp3, etc., where $PAYLOAD is the unique
id that mmsd-tng assigns the mms and stores in ~/.mms/modemanager/. (Note that
since the PAYLOAD file remains on the filesystem, we could just re-extract the
attachments whenever we want them. This might be an improvement down the road.)
If there are multiple recipients, we will make a "unique" new phone number out
of *all* the numbers involved (to and from) for each group chat. For instance,
if you and Bob and Suzie are on a group chat you will have a number like
+15551234567+16661234567+17771234567 in ~/.local/share/sxmo/modem. You can
treat this like a normal number (i.e., give it a contact name, reply to it,
etc.)
Once an MMS message has arrived, one notification will be made like normal.
If there are attachments, clicking on the notification will open them all using
sxmo_open.sh.
You can also go to the message (via Texts) and click View Attachments to run
sxmo_files.sh on the attachments directory.
You can also Add an attachment when you compose a message. There is a basic
ability to Delete attachments too.
I've also reversed the contact lists so the CONTACTNAME is on the left and PHONENUMBER on
the right, otherwise with large phonenumbers it was hard to see who the CONTACTNAME is.
=== MMSD-TNG CONFIGURATION TIPS AND TRIPS ===
sxmo's mms requires mmsd-tng that includes the mmsctl program. Right now, this is
in the latest git head. See https://gitlab.com/kop316/mmsd/-/merge_requests/52.
To compile with this on edit meson_options.txt and set mmsctl to true. Then build as normal
via mmsd-tng's README. (We can also just do: gcc -o mmsctl mmsctl.c -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -ldbus-1 -ljson-c)
sxmo's mms does not require any configuration on top of what is needed to get mmsd-tng to work.
However, mmsd-tng can be a bit of a tricky thing to confugre, so here are some tips:
1. mmsd-tng includes example configurations in its README. A helpful list is here:
https://gitlab.gnome.org/GNOME/mobile-broadband-provider-info
Here is an example (works with "Mint Mobile" which uses T-Mobile):
~/.mms/modemmanager/mms
[Modem Manager]
CarrierMMSC=http://wholesale.mmsmvno.com/mms/wapenc
MMS_APN=Ultra
CarrierMMSProxy=NULL
DefaultModemNumber=NULL
AutoProcessOnConnection=true
AutoProcessSMSWAP=true
[Settings]
UseDeliveryReports=false
AutoCreateSMIL=false
ForceCAres=false
TotalMaxAttachmentSize=1100000
MaxAttachments=25
2. mmsd-tng must use the *modem's* dns to resolve mms files. Since
NetworkManager rewrites /etc/resolv.conf with both wifi and modem active, I
found it easiest to have a static /etc/resolv.conf and to set
/etc/NetworkManager/NetworkManager.conf dns=none.
User must have grim and slurp installed.
We should add those programs to the swmo ui metapackage
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
Opening all following files only is meaningfull for pictures or videos
but crazy when openning pdfs with zathura by example.
Signed-off-by: Stacy Harper <contact@stacyharper.net>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
This is a huge patch for Swmo, Sxmo over Sway.
It is Dwm backward compatible so dwm users should not expect regressions.
If you install all dependencies, you then can toggle between Sway and Dwm using a new config entry. It will reboot the phone.
This commit also contains:
* Make the modemmonitor bullet proof
* various other smaller fixes
Signed-off-by: Stacy Harper <contact@stacyharper.net>
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>
We originally switched off codemadness-frontends / idiotbox because it was
no longer functional. Nowadays it works again and is substantially faster
then ytdl.
Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>