Skip to main content

lightweight SMS reader/composer for systems with access to a Sierra em73xx modem (like the Thinkpad X250), with simple xmobar integration

Project description

A simple SMS client written in Python + Tkinter which uses the em73xx library. Originally written for my Thinkpad X250 (which uses this chip) it was mainly written for use with xmobar - with a text-mode summary so you can quickly see any unread messages, and a lightweight GUI to read and send messages.

TODO

  • clean-up the UI, make it match the xmonad style I have (using ttk style in xsms/style.py)

  • reply, mark as [un]read, delete/archive functionality

Install

Either retrieve from pypi using pip:

$ pip install xsms

or clone this repo, and install using setup.py:

$ git clone https://github.com/smcl/xsms
$ cd xsms
$ python setup.py install

Using

Once xsms is installed you can either launch it standalone …

$ python -m xsms --device=/dev/ttyACM0

… or add it to xmobarrc, like the below (which takes advantage of the ability to specify the font via tags to easily get some icons from Font Awesome):

-- assumes you have Font Awesome installed and used here:
-- additionalFonts = ["xft:FontAwesome-10"],
Run Com "/usr/bin/python" [ "-m", "xsms", "-d", "/dev/ttyACM0", "-p", "1234", "-r", "<fn=1></fn>", "-u", "<fn=1></fn> %d" ] "xsms" 600,

This will result in an xmobar entry like the below:

xsms-xmobar.png

xsms-xmobar.png

… and if you want to be able to click the icon to raise the GUI, you can:

template = "%StdinReader% }{ ... stuff ... <action=`python -m xsms -g -d /dev/ttyACM0 -p 1234`>%xsms%</action> ... "
xsms-inbox.png

xsms-inbox.png

For a quick reference of the switches and parameters supported, invoke python -m xms --help:

$ python -m xsms --help
usage: __main__.py [-h] [-d DEVICE] [-g] [-p PIN] [-r READ_FORMAT]
                   [-u UNREAD_FORMAT]

xsms - an sms client for linux systems with an em73xx modem

optional arguments:
  -h, --help            show this help message and exit
  -d DEVICE, --device DEVICE
  -g, --gui
  -p PIN, --pin PIN
  -r READ_FORMAT, --read_format READ_FORMAT
  -u UNREAD_FORMAT, --unread_format UNREAD_FORMAT

Problems

If you’ve having a problem like the below…

$ python -m xsms --device /dev/ttyACM0 --pin 1234
Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
      "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
      exec code in run_globals
  File "/home/sean/dev/py/xsms/xsms/__main__.py", line 63, in <module>
      modem = Modem(args.device, pin=args.pin)
  File "/usr/local/lib/python2.7/dist-packages/em73xx-0.5-py2.7.egg/em73xx/modem.py", line 23, in __init__
module>
      self.device = serial.Serial(dev, bps, timeout=1)
  File "/usr/lib/python2.7/dist-packages/serial/serialutil.py", line 182, in __init__
      self.open()
  File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 247, in open
      raise SerialException(msg.errno, "could not open port {}: {}".format(self._port, msg))
serial.serialutil.SerialException: [Errno 16] could not open port /dev/ttyACM0: [Errno 16] Device or resource busy: '/dev/ttyACM0'

… then it’s possible that the ModemManager service is accessing the device already. It’s not currently possible to use em73xx together with the modem. You can kill it off and retry:

$ sudo systemctl stop ModemManager
$ python -m xsms --device /dev/ttyACM0 --pin 1234
5

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xsms-0.6.tar.gz (6.8 kB view details)

Uploaded Source

File details

Details for the file xsms-0.6.tar.gz.

File metadata

  • Download URL: xsms-0.6.tar.gz
  • Upload date:
  • Size: 6.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for xsms-0.6.tar.gz
Algorithm Hash digest
SHA256 7ef6f52c6422b5d3148517711af410cd792fa8fc2eca514cc29e93430a813d42
MD5 adc89c3b6fa6ef9bcda29dc519760921
BLAKE2b-256 4dbbf1d77452da192f3f3bae0bc5b12bb6ff017f12d7a393917cba5a0a6b7c49

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page