轻量级短消息阅读器/作曲家,用于能够访问Sierra EM73xx调制解调器(如ThinkPad X250)的系统,具有简单的XmoBar集成

xsms的Python项目详细描述


一个简单的用python+tkinter编写的sms客户端,它使用em73xx 图书馆。最初是为我的ThinkPad X250(使用这个芯片)而写的 它主要是与xmobar一起使用的—带有文本模式摘要,因此 您可以快速看到任何未读的消息,以及一个可供阅读的轻量级gui 并发送消息。

待办事项

  • 清理ui,使其与xmonad风格匹配(使用ttk xsms/style.py中的样式)
  • 回复,标记为[取消]读取,删除/存档功能

安装

使用pip从pypi检索:

$ pip install xsms

或者克隆此repo,并使用setup.py

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

使用

一旦安装了xsms,您就可以单独启动它…

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

…或者将其添加到xmobarrc,如下所示(它利用了 能够通过标签指定字体,以便从字体中轻松获取一些图标 太棒了):

-- 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,

这将导致如下的xmobar条目:

xsms-xmobar.png

xsms-xmobar.png

…如果你想点击图标来启动图形用户界面,你可以 可以:

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

xsms-inbox.png

要快速参考所支持的开关和参数,请调用 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

问题

如果您遇到如下问题…

$ 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'

…那么modemmanager服务可能正在访问 设备已经存在。目前无法将EM73xx与 调制解调器。您可以关闭它并重试:

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将Scanner对象作为构造函数参数传递给UserInterface类   spring未能启动bean“subtocolWebSocketHandler”;嵌套的例外是java。lang.IllegalArgumentException:没有处理程序   Java EE应用程序中后台服务的多线程Java线程(设置守护进程和优先级)?   java Pull to refresh返回列表的第一个位置   无法将comparator类转换为java。可比的   java将json从servlet传递到dojo   JavaHibernate:将子类实例转换为超类实例   java警告调用servlet类时非法反射访问   java静态变量值   java@Entity和@embeddeble之间有什么区别   java将作业配置导入公共作业配置类(注释配置)   sql公共表表达式(以values语句开头)在java中给出错误   java在ImageJ中使用ImageProcessor   java PostgreSQL executeBatch()会随着时间的推移而变慢   java在安卓中以表格形式排列sqllite表数据?   java中SVG的swing定制呈现   java删除与另一个实体映射的实体   java何时/如何添加ListView适配器,使用back按钮恢复它?(片段)   java为什么IBinder和Binder之间的类型转换不是非法的?   java在方法参数列表中使用ArrayList或List