Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/splattael/libnotify
Ruby bindings for libnotify using FFI.
https://github.com/splattael/libnotify
ffi libnotify ruby
Last synced: 9 days ago
JSON representation
Ruby bindings for libnotify using FFI.
- Host: GitHub
- URL: https://github.com/splattael/libnotify
- Owner: splattael
- License: mit
- Created: 2009-12-06T22:08:59.000Z (almost 15 years ago)
- Default Branch: master
- Last Pushed: 2018-01-09T16:18:09.000Z (almost 7 years ago)
- Last Synced: 2024-10-23T07:38:37.582Z (16 days ago)
- Topics: ffi, libnotify, ruby
- Language: Ruby
- Homepage: https://github.com/splattael/libnotify
- Size: 222 KB
- Stars: 135
- Watchers: 4
- Forks: 16
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Libnotify
[![Build Status](https://img.shields.io/travis/splattael/libnotify.svg?branch=master)](https://travis-ci.org/splattael/libnotify) [![Gem Version](https://img.shields.io/gem/v/libnotify.svg)](https://rubygems.org/gems/libnotify) [![Code Climate](https://img.shields.io/codeclimate/github/splattael/libnotify.svg)](https://codeclimate.com/github/splattael/libnotify) [![Inline docs](http://inch-ci.org/github/splattael/libnotify.svg?branch=master)](http://inch-ci.org/github/splattael/libnotify)
Ruby bindings for libnotify using FFI.
[Gem](https://rubygems.org/gems/libnotify) |
[Source](https://github.com/splattael/libnotify) |
[RDoc](http://rubydoc.info/github/splattael/libnotify/master)![libnotify](https://github.com/splattael/libnotify/raw/master/etc/libnotify-gnome3.png)
![libnotify](https://github.com/splattael/libnotify/raw/master/etc/libnotify-ubuntu.png)## Usage
### Hash Syntax
```ruby
require 'libnotify'
Libnotify.show(:body => "hello", :summary => "world", :timeout => 2.5)
```### Block Syntax
```ruby
require 'libnotify'n = Libnotify.new do |notify|
notify.summary = "hello"
notify.body = "world"
notify.timeout = 1.5 # 1.5 (s), 1000 (ms), "2", nil, false
notify.urgency = :critical # :low, :normal, :critical
notify.append = false # default true - append onto existing notification
notify.transient = true # default false - keep the notifications around after display
notify.icon_path = "/usr/share/icons/gnome/scalable/emblems/emblem-default.svg"
endn.show!
```### Mixed Syntax
```ruby
require 'libnotify'# Mixed syntax
options = {:body => "world", :timeout => 20}
Libnotify.show(options) do |opts|
opts.timeout = 1.5 # overrides :timeout in options
end
```### Managing Icon Paths
```ruby
require 'libnotify'# Icon path auto-detection
Libnotify.icon_dirs << "/usr/share/icons/gnome/*/"
Libnotify.show(:icon_path => "emblem-default.png")
Libnotify.show(:icon_path => :"emblem-default")
```### Updating existing notification and closing it
```ruby
# Update pre-existing notification then close it
n = Libnotify.new(:summary => "hello", :body => "world")
n.update # identical to show! if not shown beforeKernel.sleep 1
n.update(:body => "my love") do |notify|
notify.summary = "goodbye"
endKernel.sleep 1
n.close
```## Installation
```bash
gem install libnotify
```You'll need libnotify. On Debian just type:
```bash
apt-get install libnotify1
```## Testing
```bash
git clone git://github.com/splattael/libnotify.git
cd libnotify
(gem install bundler)
bundle install
rake
```### Code coverage
```bash
COVERAGE=1 rake
```## Caveats
### Ubuntu
`timeout` and `append` options might not work on Ubuntu.
See GH #21 for details.
https://github.com/splattael/libnotify/issues/21#issuecomment-19114127## Authors
* Peter Leitzen (https://github.com/splattael)
## [Contributors](https://github.com/splattael/libnotify/graphs/contributors)
* Dennis Collective (https://github.com/denniscollective)
* Daniel Mack (https://github.com/zonque)
* Nuisance of Cats (https://github.com/nuisanceofcats)
* Jason Staten (https://github.com/statianzo)
* Jeremy Lawler (https://github.com/jlawler)
* Kero van Gelder (https://github.com/keroami)
* René Föhring (https://github.com/rrrene)
* Cezary Baginski (https://github.com/e2)
* robisacommonusername (https://github.com/robisacommonusername)
* Fernando Briano (https://github.com/picandocodigo)## License
[MIT License](http://www.opensource.org/licenses/MIT)
## TODO
* Unify show/update interface
-> simplifies code* Turn FFI module into a class
-> more plugabble* Support newer features of `libnotify`
-> actions, hints?
See https://developer-next.gnome.org/libnotify/0.7/NotifyNotification.html* Support older versions of `libnotify`
-> prior `0.4`?