gnome-tv 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,43 @@
1
+ Gnome TV
2
+ ========
3
+
4
+ A GNOME menu entry which:
5
+
6
+ - looks for an available TV stream URL provider (Freebox, Neufbox, <your provider here>...)
7
+ - launches Totem with the associated URL
8
+
9
+
10
+ Install
11
+ -------
12
+
13
+ Using rubygems:
14
+
15
+ gem install gnome-tv
16
+
17
+ Once installed, the following command will add an entry to the GNOME menu with a nice TV icon:
18
+
19
+ gnome-tv-install
20
+
21
+ To do
22
+ -----
23
+
24
+ - Store found provider in ~/.config/gnome-tv, and use it next time gnome-tv is launched.
25
+ - Optimize provider lookup (by country ? DNS ? using NetworkManager ?)
26
+ - Extend the DSL (udp:// streams support ? )
27
+ - Integrate with the preferred applications dialog ?
28
+
29
+
30
+ Adding a new provider
31
+ ---------------------
32
+
33
+ See http://github.com/sebn/gnome-tv/blob/master/lib/providers/freebox.rb
34
+
35
+ Feel free to fork the project and extend the DSL to support your new provider.
36
+
37
+
38
+ License
39
+ -------
40
+
41
+ Copyright © 2010 Sébastien Nicouleaud. See LICENSE file for more details.
42
+
43
+
@@ -0,0 +1,6 @@
1
+ desc 'Run in-place'
2
+ task :run do
3
+ $:.unshift(File.dirname(__FILE__) + '/lib')
4
+ load 'bin/gnome-tv'
5
+ end
6
+
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'gnome_tv'
4
+ GnomeTV.watch
5
+
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'gnome_tv'
4
+ require 'fileutils'
5
+ include FileUtils
6
+
7
+ DESKTOP_FILE = "#{GnomeTV::DATA_DIR}/gnome-tv.desktop"
8
+ ICONS = Dir["#{GnomeTV::DATA_DIR}/icons/**/*.*"]
9
+ PREFIX = "/usr/local/share"
10
+ APPLICATIONS_DIR = "#{PREFIX}/applications"
11
+ ICONS_DIR = "#{PREFIX}/icons/hicolor"
12
+
13
+ mkdir_p APPLICATIONS_DIR unless File.directory? APPLICATIONS_DIR
14
+ install DESKTOP_FILE, APPLICATIONS_DIR
15
+
16
+ ICONS.each do |icon|
17
+ target = File.join(ICONS_DIR, *icon.split('/')[-3..-1])
18
+ target_dir = File.dirname(target)
19
+
20
+ mkdir_p target_dir
21
+ install icon, target
22
+ end
23
+
@@ -0,0 +1,14 @@
1
+ [Desktop Entry]
2
+ Name=Television
3
+ Comment=Watch television
4
+ Exec=gnome-tv
5
+ Icon=tv
6
+ Terminal=false
7
+ Type=Application
8
+ Categories=GTK;GNOME;AudioVideo;Video;
9
+ OnlyShowIn=GNOME;
10
+ X-GNOME-Bugzilla-Bugzilla=GNOME
11
+ X-GNOME-Bugzilla-Product=gnome-desktop
12
+ X-GNOME-Bugzilla-Component=gnome-about
13
+ X-GNOME-Bugzilla-Version=2.30.0
14
+ StartupNotify=true
@@ -0,0 +1,19 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{gnome-tv}
5
+ s.version = '0.1'
6
+ s.authors = ["Sébastien Nicouleaud"]
7
+ s.date = %q{2009-10-18}
8
+ s.default_executable = %q{gnome-tv}
9
+ s.description = %q{Watch TV}
10
+ s.email = %q{sebastien.nicouleaud@gmail.com}
11
+ s.executables = ["gnome-tv", "gnome-tv-install"]
12
+ s.files = `find * -type f`.split("\n")
13
+ s.homepage = %q{http://github.com/sebn/gnome-tv}
14
+ s.require_paths = ["lib"]
15
+ s.rubyforge_project = %q{rack}
16
+ s.rubygems_version = %q{1.3.7}
17
+ s.summary = %q{a modular Ruby webserver interface}
18
+ end
19
+
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,386 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+ <svg
4
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
5
+ xmlns:cc="http://web.resource.org/cc/"
6
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7
+ xmlns:svg="http://www.w3.org/2000/svg"
8
+ xmlns="http://www.w3.org/2000/svg"
9
+ xmlns:xlink="http://www.w3.org/1999/xlink"
10
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12
+ width="48"
13
+ height="48"
14
+ id="svg2"
15
+ sodipodi:version="0.32"
16
+ inkscape:version="0.45+devel"
17
+ sodipodi:docbase="/home/needcoffee/Templates"
18
+ sodipodi:docname="tv.svg"
19
+ version="1.0"
20
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
21
+ <defs
22
+ id="defs4">
23
+ <linearGradient
24
+ inkscape:collect="always"
25
+ id="linearGradient8228">
26
+ <stop
27
+ style="stop-color:#000000;stop-opacity:1;"
28
+ offset="0"
29
+ id="stop8230" />
30
+ <stop
31
+ style="stop-color:#000000;stop-opacity:0;"
32
+ offset="1"
33
+ id="stop8232" />
34
+ </linearGradient>
35
+ <linearGradient
36
+ id="linearGradient7815">
37
+ <stop
38
+ style="stop-color:#000000;stop-opacity:0;"
39
+ offset="0"
40
+ id="stop7817" />
41
+ <stop
42
+ id="stop7823"
43
+ offset="0.5"
44
+ style="stop-color:#000000;stop-opacity:1;" />
45
+ <stop
46
+ style="stop-color:#000000;stop-opacity:0;"
47
+ offset="1"
48
+ id="stop7819" />
49
+ </linearGradient>
50
+ <linearGradient
51
+ inkscape:collect="always"
52
+ id="linearGradient7422">
53
+ <stop
54
+ style="stop-color:#000000;stop-opacity:1;"
55
+ offset="0"
56
+ id="stop7424" />
57
+ <stop
58
+ style="stop-color:#000000;stop-opacity:0;"
59
+ offset="1"
60
+ id="stop7426" />
61
+ </linearGradient>
62
+ <linearGradient
63
+ id="linearGradient6646">
64
+ <stop
65
+ style="stop-color:#eeeeec;stop-opacity:1"
66
+ offset="0"
67
+ id="stop6648" />
68
+ <stop
69
+ style="stop-color:#555753;stop-opacity:1"
70
+ offset="1"
71
+ id="stop6650" />
72
+ </linearGradient>
73
+ <linearGradient
74
+ inkscape:collect="always"
75
+ id="linearGradient6257">
76
+ <stop
77
+ style="stop-color:#555753;stop-opacity:1;"
78
+ offset="0"
79
+ id="stop6259" />
80
+ <stop
81
+ style="stop-color:#2e3436;stop-opacity:1"
82
+ offset="1"
83
+ id="stop6261" />
84
+ </linearGradient>
85
+ <linearGradient
86
+ id="linearGradient5863">
87
+ <stop
88
+ style="stop-color:#000000;stop-opacity:1;"
89
+ offset="0"
90
+ id="stop5865" />
91
+ <stop
92
+ style="stop-color:#2e3436;stop-opacity:1"
93
+ offset="1"
94
+ id="stop5867" />
95
+ </linearGradient>
96
+ <linearGradient
97
+ id="linearGradient5088">
98
+ <stop
99
+ style="stop-color:#ffffff;stop-opacity:0.54347825;"
100
+ offset="0"
101
+ id="stop5090" />
102
+ <stop
103
+ style="stop-color:#729fcf;stop-opacity:1;"
104
+ offset="1"
105
+ id="stop5092" />
106
+ </linearGradient>
107
+ <linearGradient
108
+ id="linearGradient4701"
109
+ inkscape:collect="always">
110
+ <stop
111
+ id="stop4703"
112
+ offset="0"
113
+ style="stop-color:#729fcf;stop-opacity:1" />
114
+ <stop
115
+ id="stop4705"
116
+ offset="1"
117
+ style="stop-color:#3465a4;stop-opacity:1" />
118
+ </linearGradient>
119
+ <linearGradient
120
+ inkscape:collect="always"
121
+ id="linearGradient4301">
122
+ <stop
123
+ style="stop-color:#ffffff;stop-opacity:1;"
124
+ offset="0"
125
+ id="stop4303" />
126
+ <stop
127
+ style="stop-color:#ffffff;stop-opacity:0;"
128
+ offset="1"
129
+ id="stop4305" />
130
+ </linearGradient>
131
+ <linearGradient
132
+ inkscape:collect="always"
133
+ id="linearGradient3145">
134
+ <stop
135
+ style="stop-color:#ffffff;stop-opacity:1;"
136
+ offset="0"
137
+ id="stop3147" />
138
+ <stop
139
+ style="stop-color:#ffffff;stop-opacity:0;"
140
+ offset="1"
141
+ id="stop3149" />
142
+ </linearGradient>
143
+ <linearGradient
144
+ inkscape:collect="always"
145
+ xlink:href="#linearGradient3145"
146
+ id="linearGradient3151"
147
+ x1="7"
148
+ y1="-1"
149
+ x2="12"
150
+ y2="16"
151
+ gradientUnits="userSpaceOnUse"
152
+ gradientTransform="matrix(1,0,0,1.5,-8.9269482e-8,-3)" />
153
+ <linearGradient
154
+ inkscape:collect="always"
155
+ xlink:href="#linearGradient4301"
156
+ id="linearGradient4307"
157
+ x1="-5"
158
+ y1="-7"
159
+ x2="39"
160
+ y2="30"
161
+ gradientUnits="userSpaceOnUse"
162
+ gradientTransform="matrix(0.9166667,0,0,1,1.4999999,0)" />
163
+ <radialGradient
164
+ inkscape:collect="always"
165
+ xlink:href="#linearGradient4701"
166
+ id="radialGradient4699"
167
+ gradientUnits="userSpaceOnUse"
168
+ gradientTransform="matrix(1.6128206,4.953674e-8,-1.796921e-8,0.6499999,-14.707692,8.0499982)"
169
+ cx="24"
170
+ cy="39.923077"
171
+ fx="24"
172
+ fy="39.923077"
173
+ r="20" />
174
+ <linearGradient
175
+ inkscape:collect="always"
176
+ xlink:href="#linearGradient5088"
177
+ id="linearGradient5097"
178
+ gradientUnits="userSpaceOnUse"
179
+ x1="2"
180
+ y1="-4"
181
+ x2="19"
182
+ y2="30"
183
+ gradientTransform="matrix(0.9459461,0,0,1,1.2972975,1.1192092e-6)" />
184
+ <linearGradient
185
+ inkscape:collect="always"
186
+ xlink:href="#linearGradient5863"
187
+ id="linearGradient5872"
188
+ gradientUnits="userSpaceOnUse"
189
+ x1="8"
190
+ y1="37"
191
+ x2="8"
192
+ y2="41"
193
+ gradientTransform="matrix(4.6249999,0,0,1.3333327,-15.312499,-13.49998)" />
194
+ <linearGradient
195
+ inkscape:collect="always"
196
+ xlink:href="#linearGradient6257"
197
+ id="linearGradient6263"
198
+ x1="12.283331"
199
+ y1="41.250008"
200
+ x2="12.283331"
201
+ y2="36.750004"
202
+ gradientUnits="userSpaceOnUse"
203
+ gradientTransform="matrix(0.8108109,0,0,-0.6666662,2.0405412,64.499985)" />
204
+ <radialGradient
205
+ inkscape:collect="always"
206
+ xlink:href="#linearGradient6646"
207
+ id="radialGradient6652"
208
+ cx="12"
209
+ cy="8.4459467"
210
+ fx="12"
211
+ fy="8.4459467"
212
+ r="22"
213
+ gradientTransform="matrix(0.5336804,1.3433128,-1.5602536,0.6818182,19.331795,-10.878352)"
214
+ gradientUnits="userSpaceOnUse" />
215
+ <radialGradient
216
+ inkscape:collect="always"
217
+ xlink:href="#linearGradient7422"
218
+ id="radialGradient7831"
219
+ gradientUnits="userSpaceOnUse"
220
+ gradientTransform="matrix(1,0,0,1.2500003,0,-10.875016)"
221
+ cx="2"
222
+ cy="43.5"
223
+ fx="2"
224
+ fy="43.5"
225
+ r="2" />
226
+ <radialGradient
227
+ inkscape:collect="always"
228
+ xlink:href="#linearGradient7422"
229
+ id="radialGradient7833"
230
+ gradientUnits="userSpaceOnUse"
231
+ gradientTransform="matrix(1,0,0,1.2500003,44,-10.875014)"
232
+ cx="2"
233
+ cy="43.5"
234
+ fx="2"
235
+ fy="43.5"
236
+ r="2" />
237
+ <linearGradient
238
+ inkscape:collect="always"
239
+ xlink:href="#linearGradient7815"
240
+ id="linearGradient7835"
241
+ gradientUnits="userSpaceOnUse"
242
+ x1="6"
243
+ y1="41"
244
+ x2="6"
245
+ y2="46" />
246
+ <linearGradient
247
+ inkscape:collect="always"
248
+ xlink:href="#linearGradient8228"
249
+ id="linearGradient8234"
250
+ x1="10"
251
+ y1="40.999996"
252
+ x2="10"
253
+ y2="35.999996"
254
+ gradientUnits="userSpaceOnUse"
255
+ gradientTransform="translate(0,3.387501e-6)" />
256
+ </defs>
257
+ <sodipodi:namedview
258
+ id="base"
259
+ pagecolor="#ffffff"
260
+ bordercolor="#666666"
261
+ borderopacity="1.0"
262
+ inkscape:pageopacity="0.0"
263
+ inkscape:pageshadow="2"
264
+ inkscape:zoom="13.62465"
265
+ inkscape:cx="34.194079"
266
+ inkscape:cy="17.945107"
267
+ inkscape:document-units="px"
268
+ inkscape:current-layer="layer1"
269
+ inkscape:window-width="1280"
270
+ inkscape:window-height="932"
271
+ inkscape:window-x="0"
272
+ inkscape:window-y="42"
273
+ inkscape:showpageshadow="false"
274
+ width="48px"
275
+ height="48px"
276
+ borderlayer="true"
277
+ gridtolerance="10000">
278
+ <inkscape:grid
279
+ type="xygrid"
280
+ id="grid2173" />
281
+ </sodipodi:namedview>
282
+ <metadata
283
+ id="metadata7">
284
+ <rdf:RDF>
285
+ <cc:Work
286
+ rdf:about="">
287
+ <dc:format>image/svg+xml</dc:format>
288
+ <dc:type
289
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
290
+ <dc:title>TV</dc:title>
291
+ <dc:date>2007-06-06</dc:date>
292
+ <dc:creator>
293
+ <cc:Agent>
294
+ <dc:title>Sebastian Kraft</dc:title>
295
+ </cc:Agent>
296
+ </dc:creator>
297
+ <dc:subject>
298
+ <rdf:Bag>
299
+ <rdf:li>tv</rdf:li>
300
+ <rdf:li>television</rdf:li>
301
+ </rdf:Bag>
302
+ </dc:subject>
303
+ <cc:license
304
+ rdf:resource="GPL" />
305
+ </cc:Work>
306
+ </rdf:RDF>
307
+ </metadata>
308
+ <g
309
+ inkscape:label="Ebene 1"
310
+ inkscape:groupmode="layer"
311
+ id="layer1">
312
+ <g
313
+ id="g7826"
314
+ style="opacity:0.46000001"
315
+ transform="matrix(1,0,0,1.5999988,0,-26.599946)">
316
+ <path
317
+ sodipodi:nodetypes="cscc"
318
+ id="path6654"
319
+ d="M 2,45.999998 C 0.896,45.999998 0,44.879998 0,43.499998 C 0,42.119997 0.896,40.999997 2,40.999997 C 2,40.999997 2,45.999998 2,45.999998 z"
320
+ style="color:#000000;fill:url(#radialGradient7831);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
321
+ <path
322
+ sodipodi:nodetypes="cccc"
323
+ id="path7037"
324
+ d="M 48,43.5 C 48,44.88 47.104,46 46,46 C 46,46 46,40.999999 46,40.999999 C 47.104,40.999999 48,42.119999 48,43.5 z"
325
+ style="color:#000000;fill:url(#radialGradient7833);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
326
+ <path
327
+ id="rect7432"
328
+ d="M 2,41 L 46,41 L 46,46 L 2,46 L 2,41 z"
329
+ style="fill:url(#linearGradient7835);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
330
+ </g>
331
+ <path
332
+ style="fill:#2e3436;fill-opacity:1;stroke:#000000;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
333
+ d="M 6.5611112,5.5 L 2.5000001,7.5 L 2.5000001,43.5 L 45.5,43.5 L 45.5,7.5 L 41.438888,5.5 L 6.5611112,5.5 z"
334
+ id="rect2174"
335
+ sodipodi:nodetypes="ccccccc" />
336
+ <path
337
+ style="fill:url(#linearGradient3151);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
338
+ d="M 7,6 L 41,6 L 45,9 L 3,9 L 7,6 z"
339
+ id="rect2761"
340
+ sodipodi:nodetypes="ccccc" />
341
+ <path
342
+ sodipodi:nodetypes="ccccccc"
343
+ id="path2757"
344
+ d="M 6.9465577,6.5000001 L 3.5,8.0375941 L 3.5,42.5 L 44.5,42.5 L 44.5,8.0375941 L 41.053441,6.5000001 L 6.9465577,6.5000001 z"
345
+ style="fill:none;fill-opacity:1;stroke:url(#radialGradient6652);stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
346
+ <path
347
+ style="fill:url(#radialGradient4699);fill-opacity:1;stroke:#204a87;stroke-width:0.99999988;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
348
+ d="M 5.5,10.5 L 42.5,10.5 L 42.5,35.5 L 5.5,35.5 L 5.5,10.5 z"
349
+ id="rect2759" />
350
+ <path
351
+ style="opacity:0.4;fill:url(#linearGradient4307);fill-opacity:1;stroke:none;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
352
+ d="M 7,12 L 40,12 L 40,18 C 40,18 38.166666,15 28.083333,22 C 17.999999,29 7,24.120301 7,24.120301 L 7,12 z"
353
+ id="rect3536"
354
+ sodipodi:nodetypes="ccczcc" />
355
+ <path
356
+ style="fill:none;fill-opacity:1;stroke:url(#linearGradient5097);stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
357
+ d="M 6.5000003,11.500001 L 41.500002,11.500001 L 41.500002,34.500003 L 6.5000003,34.500003 L 6.5000003,11.500001 z"
358
+ id="rect3534" />
359
+ <path
360
+ style="fill:url(#linearGradient5872);fill-opacity:1;stroke:url(#linearGradient8234);stroke-width:1.00000036000000003;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
361
+ d="M 5.4999998,36.500001 L 42.5,36.500001 L 42.5,40.5 L 5.4999998,40.5 L 5.4999998,36.500001 z"
362
+ id="rect5099" />
363
+ <path
364
+ id="path5874"
365
+ d="M 6.5000006,39.500001 L 36.500001,39.500001 L 36.500001,37.500002 L 6.5000006,37.500002 L 6.5000006,39.500001 z"
366
+ style="fill:none;fill-opacity:1;stroke:url(#linearGradient6263);stroke-width:0.99999987999999995;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
367
+ <path
368
+ style="fill:#2e3436;fill-opacity:1;stroke:#555753;stroke-width:0.99999964;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
369
+ d="M 37.500002,37.499988 L 41.500003,37.499988 L 41.500003,39.500001 L 37.500002,39.500001 L 37.500002,37.499988 z"
370
+ id="path7839" />
371
+ <rect
372
+ style="opacity:1;fill:#4e9a06;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
373
+ id="rect7843"
374
+ width="1"
375
+ height="1"
376
+ x="40"
377
+ y="38" />
378
+ <rect
379
+ y="38"
380
+ x="39"
381
+ height="1"
382
+ width="1"
383
+ id="rect7845"
384
+ style="opacity:1;fill:#8ae234;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
385
+ </g>
386
+ </svg>