75 Commits

Author SHA1 Message Date
Alexander Grothe
fbb6003cf9 Use correct syntax for tag-controlled imports
now it is possible to run just the tasks with the xorg.detect tag:
sudo -H ansible-playbook -i "localhost," --tags="xorg.detect" --connection=local yavdr07.yml
2018-01-07 17:46:55 +01:00
Alexander Grothe
c36056561f Add block for repeated start of xorg-verbose@vt7.service 2018-01-07 17:40:29 +01:00
Alexander Grothe
af3ef457b6 Update Manual.org and Manual.html 2018-01-07 17:35:32 +01:00
Alexander Grothe
98729f7cbd Change order of eventlircd.socket and eventlircd.service start and activation 2018-01-07 17:26:46 +01:00
Alexander Grothe
ffc4707fdc Fix indentation 2018-01-07 14:53:19 +01:00
Alexander Grothe
886fff4f09 First try to improve automatic xorg configuration
in order to prevent wrong screen connection names
2018-01-07 12:56:46 +01:00
Alexander Grothe
c6207490b8 Fix typo 2018-01-05 11:00:21 +01:00
Alexander Grothe
3006830cc1 configure systemd properties for all needed service- and socket-Units
also add more tags to the role
2018-01-05 10:57:31 +01:00
Alexander Grothe
9f42da23f6 ForceFullCompositionPipeline for nvidia cards
to prevent screen tearing when playing video with xineliboutput-sxfe
or other video players which use opengl components
2018-01-03 13:19:59 +01:00
Alexander Grothe
4b8ff236b5 call lircd2uinput-add after lircd has been started 2018-01-01 23:41:03 +01:00
Alexander Grothe
2e8bd59576 Fix systemd drop-in ExecStopCommand 2018-01-01 23:27:47 +01:00
Alexander Grothe
ec0234f938 add missing section header 2018-01-01 23:09:10 +01:00
Alexander Grothe
d09df785b6 add automatic tagging for roles 2018-01-01 23:05:40 +01:00
Alexander Grothe
1d108dc61f Fix name and destination for lirc options file 2018-01-01 23:02:40 +01:00
Alexander Grothe
d8c3b9c5bd Fix indentation 2018-01-01 22:55:59 +01:00
Alexander Grothe
ce941ce722 Fix apt task 2018-01-01 22:54:47 +01:00
Alexander Grothe
2c08b97090 Add dependency to yavdr-remote role for autoinstall-atric-usb 2018-01-01 22:53:47 +01:00
Alexander Grothe
4c96c0a128 Add role for automatic configuration of Atric IR-WakeupUSB to playbook 2018-01-01 22:51:57 +01:00
Alexander Grothe
13209045b8 Add missing template file 2018-01-01 22:46:19 +01:00
Alexander Grothe
27278862a5 Fix syntax error 2018-01-01 22:42:58 +01:00
Alexander Grothe
88254f8e79 add tags to yavdr-remote, add autoinstall-atric-usb role 2018-01-01 22:39:10 +01:00
Alexander Grothe
41e44b67a4 use ansible_managed_file as comment 2018-01-01 22:38:13 +01:00
Alexander Grothe
467c960bf3 Change ansible_managed_file variable 2018-01-01 22:37:42 +01:00
Alexander Grothe
6468b5d432 decrease sleep time 2018-01-01 17:39:00 +01:00
Alexander Grothe
7476635066 remove unnecessary sleep after kodi has been stopped 2018-01-01 17:36:51 +01:00
Alexander Grothe
34a0a0e36c Merge branch 'bionic' of https://github.com/yavdr/yavdr-ansible into bionic 2018-01-01 15:33:11 +01:00
Alexander Grothe
b9c56955b4 Improve KODI stop detection in kodi.service.j2 template 2018-01-01 15:32:30 +01:00
Alexander Grothe
4682af7c3a Add some tags for ppa related tasks 2017-12-28 17:28:43 +01:00
Alexander Grothe
14d05a742b Merge branch 'bionic' of https://github.com/yavdr/yavdr-ansible into bionic 2017-12-28 15:53:21 +01:00
Alexander Grothe
c54313c6e7 Add window rule in rc.xml for vdr-sxfe 2017-12-28 15:52:35 +01:00
seahawk1986
f42fc8f144 Update install-yavdr.sh 2017-12-28 12:21:56 +01:00
seahawk1986
02a1d94108 Update README.md 2017-12-28 09:54:42 +01:00
Alexander Grothe
9440928891 Change rc.xml for openbox to be less restrictive 2017-12-26 20:47:38 +01:00
Alexander Grothe
1689195d42 Add yavdr bootsplash (adds up to 2-3 seconds to boot time)
choose nosplash instead of splash to disable plymouth
2017-12-26 12:58:29 +01:00
Alexander Grothe
8d201c2e62 Remove always tag from playbook 2017-12-22 14:25:54 +01:00
Alexander Grothe
98674ffc4f Set background with feh 2017-12-20 13:31:36 +01:00
Alexander Grothe
2f02f49aa1 Fix action name 2017-12-20 13:25:21 +01:00
Alexander Grothe
07b9f18659 Add missing quote 2017-12-20 13:22:44 +01:00
Alexander Grothe
fb4483c01f fix indentation 2017-12-20 13:22:01 +01:00
Alexander Grothe
4f95b57a9d Download yaVDR Logo, install feh 2017-12-20 13:18:30 +01:00
Alexander Grothe
4b9332b277 Automatically start irexec.service 2017-12-20 11:00:15 +01:00
Alexander Grothe
1befca797e Fix syntax and indentation 2017-12-20 10:52:22 +01:00
Alexander Grothe
fd1d7744fb Add missing quotes at end of string 2017-12-20 10:48:49 +01:00
Alexander Grothe
784ea1d0b2 Fix example list in module documentation 2017-12-20 10:44:05 +01:00
Alexander Grothe
3aadc14dbb Add irexec.service for the user session 2017-12-20 10:43:15 +01:00
Alexander Grothe
ea39de7a21 Merge branch 'bionic' of https://github.com/yavdr/yavdr-ansible into bionic 2017-12-19 20:13:50 +01:00
Alexander Grothe
4c4705e49f Fix condition 2017-12-19 20:10:39 +01:00
seahawk1986
87969286f2 delete block in file if vdr.hide_first_recordinglevel is not set 2017-12-19 20:02:06 +01:00
Alexander Grothe
a84b9b1742 Increase timeout after stopping xlogin@vdr 2017-12-19 15:27:36 +01:00
Alexander Grothe
bde3106c47 Fix order of xlogin package installation and calling write-x11-keyboard-config 2017-12-19 14:43:55 +01:00
Alexander Grothe
0c1f52d986 Merge branch 'bionic' of https://github.com/yavdr/yavdr-ansible into bionic 2017-12-19 12:33:24 +01:00
Alexander Grothe
04662f2b83 Add template for /etc/rc_maps.cfg 2017-12-19 12:32:37 +01:00
seahawk1986
4cf30fabd0 Fix typo 2017-12-19 09:36:32 +01:00
Alexander Grothe
3051e04c53 Add inital i18n translation support
The filter_plugin translate allows to translate strings using yavdr.mo
files from the package yavdr-i18n.

ansible-playbook must be called with an UTF-8 locale (e.g. de_DE.UTF-8), LANG=C or
LANG=POSIX are not allowed.

Usage of the new filter:

"{{ "my string" | translate }}"
2017-12-18 17:55:53 +01:00
Alexander Grothe
767807e3e4 add translation filter 2017-12-18 11:40:33 +01:00
Alexander Grothe
89963fa35b Add .Xresources for user vdr 2017-12-17 15:06:45 +01:00
Alexander Grothe
b9e4f1bc33 Add space 2017-12-17 14:37:03 +01:00
Alexander Grothe
7726ce1399 fix list creation (ansible ignores multiple dictionary definitions) 2017-12-17 13:38:45 +01:00
Alexander Grothe
345e373a52 Add more DVBSky firmware files to list 2017-12-17 12:23:01 +01:00
Alexander Grothe
63bc6828aa Add missing template file 2017-12-17 11:40:39 +01:00
Alexander Grothe
5d6ffd6f4c Fix plugin name and typo 2017-12-17 11:37:28 +01:00
Alexander Grothe
dd0cd703fe Fix syntax error caused by typo 2017-12-17 11:31:53 +01:00
Alexander Grothe
4097b01602 Add comment to write-x11-keyboard-config 2017-12-17 11:28:47 +01:00
Alexander Grothe
b1532f7a7a Move creation of X11 keyboard configuration to external script
heredocs with indentations don't work properly in Ansible shell commands
2017-12-17 11:07:40 +01:00
Alexander Grothe
f94dd32250 remove empty line (which breaks syntax) 2017-12-17 10:41:41 +01:00
Alexander Grothe
7b685ebe98 Set X11 keyboard configuration according to /etc/default/keyboard values 2017-12-17 10:38:12 +01:00
Alexander Grothe
1405c73c87 Install vdr-plugin-pulsectrl and vdr-plugin-osd2web
use the bluecd instead of blue
2017-12-17 10:02:09 +01:00
Alexander Grothe
59685f9a99 Fix video directory path 2017-12-17 09:16:50 +01:00
Alexander Grothe
dabc057ed7 Fix package name 2017-12-16 19:57:02 +01:00
Alexander Grothe
036fd26287 Revert "Use ansible 2.4.1 from ubuntu repositories"
the needed package is still in staging...

This reverts commit 2b749ba457.
2017-12-16 19:34:33 +01:00
Alexander Grothe
2b749ba457 Use ansible 2.4.1 from ubuntu repositories 2017-12-16 19:32:38 +01:00
Alexander Grothe
a7bc7a4386 Fix condition to ubuntu-drivers autoinstall 2017-12-16 18:58:57 +01:00
Alexander Grothe
3708289de7 Recommend sudo -H 2017-12-16 18:02:33 +01:00
Alexander Grothe
048ae4e5d4 We need to use an ansible build from a yavdr PPA (for now) 2017-12-16 17:47:16 +01:00
Alexander Grothe
295a99c622 Change PPAs for experimental bionic packages 2017-12-16 16:33:55 +01:00
41 changed files with 2122 additions and 690 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -135,23 +135,26 @@ cd yavdr-ansible
sudo ./install-yavdr.sh sudo ./install-yavdr.sh
#+END_SRC #+END_SRC
We use a callback to generate tags for all roles autmatically:
#+INCLUDE: "ansible.cfg" src conf
** Install script for local usage ** Install script for local usage
#+BEGIN_SRC shell :tangle install-yavdr.sh :shebang "#!/bin/bash" #+BEGIN_SRC shell :tangle install-yavdr.sh :shebang "#!/bin/bash"
if (( $EUID != 0 )); then if (( $EUID != 0 )); then
echo "This script must be run using sudo or as root" echo "This script must be run using sudo -H or as root"
exit exit
fi fi
apt-get -y install software-properties-common apt-get -y install software-properties-common
# Add repository for ansible # Add repository for ansible
add-apt-repository -y ppa:ansible/ansible add-apt-repository -y ppa:yavdr/experimental-main
# update packages # update packages
apt-get update apt-get update
# install required packages # install required packages
apt-get -y install --no-install-recommends ansible apt-get -y install --no-install-recommends ansible
# TODO: run ansible on local host # TODO: run ansible on local host
ansible-playbook yavdr07.yml -b -i 'localhost_inventory' --connection=local --tags=install ansible-playbook yavdr07.yml -b -i 'localhost_inventory' --connection=local --tags="all"
#+END_SRC #+END_SRC
* Playbooks * Playbooks
** yavdr07.yml ** yavdr07.yml
@@ -186,14 +189,13 @@ The ~yavdr07.yml~ playbook sets up a fully-featured yaVDR installation:
- autoinstall-hauppauge-pvr # install vdr-plugin-pvrinput if a matching card is found - autoinstall-hauppauge-pvr # install vdr-plugin-pvrinput if a matching card is found
- autoinstall-dvbsddevice # install vdr-plugin-dvbsddevice if a matching card is detected - autoinstall-dvbsddevice # install vdr-plugin-dvbsddevice if a matching card is detected
- autoinstall-hardware-irmp # install yavdr-hardware-irmp if a matching usb device is detected - autoinstall-hardware-irmp # install yavdr-hardware-irmp if a matching usb device is detected
- autoinstall-atric-usb # preconfigure lircd for Atric IR-WakeupUSB receiver
- autoinstall-dvbsky-firmware # download an install required firmware files for dvbsky cards - autoinstall-dvbsky-firmware # download an install required firmware files for dvbsky cards
- kodi - kodi
- dvd # set up packages and a udev rule to allow kodi and other players - dvd # set up packages and a udev rule to allow kodi and other players
# to play and eject optical media # to play and eject optical media
- wakeup # set up wakeup methods for rtc etc. - wakeup # set up wakeup methods for rtc etc.
- grub-config # configure grub - grub-config # configure grub
tags:
- always
handlers: handlers:
- import_tasks: handlers/main.yml - import_tasks: handlers/main.yml
@@ -239,19 +241,18 @@ localhost connection=local
# file: group_vars/all # file: group_vars/all
# this is the standard text to put in templates # this is the standard text to put in templates
ansible_managed_file: "*** YAVDR: ANSIBLE MANAGED FILE ***" ansible_managed_file: "*** YAVDR: ANSIBLE MANAGED FILE ***\norigin: {file}"
#+END_SRC #+END_SRC
** PPAs ** PPAs
#+BEGIN_SRC yaml :tangle group_vars/all :mkdirp yes #+BEGIN_SRC yaml :tangle group_vars/all :mkdirp yes
branch: unstable branch: experimental
ppa_owner: 'ppa:yavdr' ppa_owner: 'ppa:yavdr'
# add the following PPAs # add the following PPAs
repositories: repositories:
- '{{ ppa_owner }}/main' - '{{ ppa_owner }}/{{branch}}-main'
- '{{ ppa_owner }}/unstable-main'
- '{{ ppa_owner }}/{{branch}}-vdr' - '{{ ppa_owner }}/{{branch}}-vdr'
- '{{ ppa_owner }}/{{branch}}-yavdr' #- '{{ ppa_owner }}/{{branch}}-yavdr'
- '{{ ppa_owner }}/{{branch}}-kodi' #- '{{ ppa_owner }}/{{branch}}-kodi'
#+END_SRC #+END_SRC
** VDR user, directories, special configuration and plugins ** VDR user, directories, special configuration and plugins
#+BEGIN_SRC yaml :tangle group_vars/all :mkdirp yes #+BEGIN_SRC yaml :tangle group_vars/all :mkdirp yes
@@ -274,14 +275,13 @@ vdr_plugins:
- vdr-plugin-markad - vdr-plugin-markad
- vdr-plugin-restfulapi - vdr-plugin-restfulapi
- vdr-plugin-softhddevice-vpp - vdr-plugin-softhddevice-vpp
#+END_SRC #+END_SRC
** Media directories ** Media directories
#+BEGIN_SRC yaml :tangle group_vars/all :mkdirp yes #+BEGIN_SRC yaml :tangle group_vars/all :mkdirp yes
# dictionary of directories for (shared) files. Automatically exported via NFS and Samba if those roles are enabled # dictionary of directories for (shared) files. Automatically exported via NFS and Samba if those roles are enabled
media_dirs: media_dirs:
audio: /srv/audio audio: /srv/audio
video: /srv/audio video: /srv/video
pictures: /srv/picture pictures: /srv/picture
files: /srv/files files: /srv/files
backups: /srv/backups backups: /srv/backups
@@ -308,6 +308,7 @@ extra_packages:
- tree - tree
- vim - vim
- w-scan - w-scan
- plymouth-theme-yavdr-logo
#+END_SRC #+END_SRC
** System pre-configuration ** System pre-configuration
#+BEGIN_SRC yaml :tangle group_vars/all :mkdirp yes #+BEGIN_SRC yaml :tangle group_vars/all :mkdirp yes
@@ -317,7 +318,7 @@ frontend: vdr
wakeup_method: acpiwakeup wakeup_method: acpiwakeup
grub: grub:
timeout: 0 timeout: 0
boot_options: quiet nosplash boot_options: quiet splash
#+END_SRC #+END_SRC
* Roles * Roles
** install-dependencies ** install-dependencies
@@ -347,6 +348,8 @@ install nvidia-387 from ppa:graphics-drivers/ppa
repo: 'ppa:graphics-drivers/ppa' repo: 'ppa:graphics-drivers/ppa'
state: present state: present
update_cache: yes update_cache: yes
tags:
- ppa
- name: install nvidia-387 and other required packages - name: install nvidia-387 and other required packages
apt: apt:
@@ -356,6 +359,8 @@ install nvidia-387 from ppa:graphics-drivers/ppa
with_items: with_items:
- nvidia-387 - nvidia-387
- nvidia-settings - nvidia-settings
tags:
- packages
#+END_SRC #+END_SRC
** yavdr-common ** yavdr-common
This role is used to set up a basic yaVDR installation. It creates the directories, installs the vdr and other useful packages. This role is used to set up a basic yaVDR installation. It creates the directories, installs the vdr and other useful packages.
@@ -448,6 +453,8 @@ yavdr-common executes the following tasks:
state: present state: present
update_cache: yes update_cache: yes
with_items: '{{ repositories }}' with_items: '{{ repositories }}'
tags:
- ppa
- name: run apt-get dist-upgrade - name: run apt-get dist-upgrade
apt: apt:
@@ -574,6 +581,8 @@ APT::Install-Suggests "0";
modules: True modules: True
gpus: True gpus: True
acpi_power_modes: True acpi_power_modes: True
tags:
- always
- debug: - debug:
var: '{{ item }}' var: '{{ item }}'
@@ -588,6 +597,13 @@ APT::Install-Suggests "0";
- intel_detected - intel_detected
- amd_detected - amd_detected
- virtualbox_detected - virtualbox_detected
- name: known vdr output plugins
set_fact:
vdr_output_plugins:
- softhddevice
- xineliboutput
- xine
#+END_SRC #+END_SRC
** vdr ** vdr
*** tasks *** tasks
@@ -631,11 +647,10 @@ APT::Install-Suggests "0";
blockinfile: blockinfile:
dest: /etc/vdr/conf.d/04-vdr-hide-first-recordinglevel.conf dest: /etc/vdr/conf.d/04-vdr-hide-first-recordinglevel.conf
create: true create: true
state: "{{ 'present' if vdr.hide_first_recording_level else 'absent' }}"
block: | block: |
[vdr] [vdr]
--hide-first-recording-level --hide-first-recording-level
when:
vdr.hide_first_recording_level
- name: create local dir in recdir - name: create local dir in recdir
file: file:
@@ -850,7 +865,7 @@ install_avahi: true
--- ---
# this playbook sets up network services for a yaVDR installation # this playbook sets up network services for a yaVDR installation
- name: apt |install packages for network services - name: apt | install packages for network services
apt: apt:
name: '{{ item }}' name: '{{ item }}'
state: present state: present
@@ -961,25 +976,38 @@ install_avahi: true
#+END_SRC #+END_SRC
** STARTED yavdr-remote ** STARTED yavdr-remote
*** default variables *** default variables
#+BEGIN_SRC yaml :tangle roles/yavdr-remote/defaults/main.yml :mkdirp yes :padline no
lircd0_socket: /var/run/lirc/lircd0
#+END_SRC
*** tasks *** tasks
#+BEGIN_SRC yaml :tangle roles/yavdr-remote/tasks/main.yml :mkdirp yes :padline no #+BEGIN_SRC yaml :tangle roles/yavdr-remote/tasks/main.yml :mkdirp yes :padline no
--- ---
# This role is used to set up the yaVDR remote control configuration. # This role is used to set up the yaVDR remote control configuration.
- name: apt | install yavdr-remote - name: apt | install packages for remote support
apt: apt:
name: yavdr-remote name: '{{ item }}'
state: present state: present
with_items:
- yavdr-remote
- lirc
- eventlircd
- lircd2uinput
tags:
- packages
- name: apt | install eventlircd - name: add systemd drop-in for lircd to use lircd2uinput
apt: block:
name: eventlircd - name: create directory /etc/systemd/system/lircd.service.d/
state: present file:
path: /etc/systemd/system/lircd.service.d/
- name: apt | install lirc state: directory
apt: - name: expand template for /etc/systemd/system/lircd.service.d/lircd2uinput.conf
name: lirc template:
state: present src: templates/lircd.service.d/lircd2uinput.conf.j2
dest: /etc/systemd/system/lircd.service.d/lircd2uinput.conf
tags:
- config
- name: stop, mask and disable lircd.socket, lircd.service and lircd-uinput.service # (the default lirc configuration conflicts with eventlircd) - name: stop, mask and disable lircd.socket, lircd.service and lircd-uinput.service # (the default lirc configuration conflicts with eventlircd)
systemd: systemd:
@@ -992,29 +1020,224 @@ install_avahi: true
- lircd.socket - lircd.socket
- lircd-uinput.service - lircd-uinput.service
ignore_errors: yes ignore_errors: yes
tags:
- systemd
- name: configure vdr to read from a lircd-compatible socket - name: configure vdr to read from a lircd-compatible socket
template: template:
src: templates/03-vdr-lirc.conf.j2 src: templates/03-vdr-lirc.conf.j2
dest: /etc/vdr/conf.d/03-vdr-lirc.conf dest: /etc/vdr/conf.d/03-vdr-lirc.conf
notify: ['Restart VDR'] notify: ['Restart VDR']
tags:
- config
# TODO: upload lircd2uinput package to PPA - name: expand template for /etc/rc_maps.cfg
#- name: install lircd2uinput template:
# tag: install src: templates/rc_maps.cfg.j2
# apt: dest: /etc/rc_maps.cfg
# name: lircd2uinput notify: ['Trigger Udev']
# state: present tags:
# when: - config
# install_eventlircd is defined and install_eventlircd
#+END_SRC #+END_SRC
*** templates *** templates
**** Systemd Drop-in to start vdr with lirc support
#+BEGIN_SRC conf :tangle roles/yavdr-remote/templates/03-vdr-lirc.conf.j2 :mkdirp yes :padline no #+BEGIN_SRC conf :tangle roles/yavdr-remote/templates/03-vdr-lirc.conf.j2 :mkdirp yes :padline no
{% if frontend != 'kodi' %} {% if frontend != 'kodi' %}
[vdr] [vdr]
--lirc=/var/run/lirc/lircd --lirc=/var/run/lirc/lircd
{% endif %} {% endif %}
#+END_SRC #+END_SRC
**** Systemd Drop-in to start lircd2uinput with lircd
#+BEGIN_SRC conf :tangle roles/yavdr-remote/templates/lircd.service.d/lircd2uinput.conf.j2 :mkdirp yes :padline no
[Service]
ExecStartPost=/usr/bin/lircd2uinput-add /var/run/lirc/lircd0
ExecStopPost=/usr/bin/lircd2uinput-remove /var/run/lirc/lircd0
#+END_SRC
**** create /etc/rc_maps.cfg
#+BEGIN_SRC conf :tangle roles/yavdr-remote/templates/rc_maps.cfg.j2 :mkdirp yes :padline no
#
# Keymaps table
#
# This table creates an association between a keycode file and a kernel
# driver. It can be used to automatically override a keycode definition.
#
# Although not yet tested, it is mented to be added at udev.
#
# To use, you just need to run:
# ./ir-keytable -a
#
# Or, if the remote is not the first device:
# ./ir-keytable -a -s rc1 # for RC at rc1
#
# Format:
# driver - name of the driver provided via uevent - use * for any driver
# table - RC keymap table, provided via uevent - use * for any table
# file - file name. If directory is not specified, it will default to
# /etc/rc_keymaps.
# For example:
# driver table file
# cx8800 * ./keycodes/rc5_hauppauge_new
# * rc-avermedia-m135a-rm-jx ./keycodes/kworld_315u
# saa7134 rc-avermedia-m135a-rm-jx ./keycodes/keycodes/nec_terratec_cinergy_xs
# em28xx * ./keycodes/kworld_315u
# * * ./keycodes/rc5_hauppauge_new
# Table to automatically load the rc maps for the bundled IR's provided with the
# devices supported by the linux kernel
#driver table file
,* rc-adstech-dvb-t-pci adstech_dvb_t_pci
,* rc-alink-dtu-m alink_dtu_m
,* rc-anysee anysee
,* rc-apac-viewcomp apac_viewcomp
,* rc-asus-pc39 asus_pc39
,* rc-asus-ps3-100 asus_ps3_100
,* rc-ati-tv-wonder-hd-600 ati_tv_wonder_hd_600
,* rc-ati-x10 ati_x10
,* rc-avermedia-a16d avermedia_a16d
,* rc-avermedia-cardbus avermedia_cardbus
,* rc-avermedia-dvbt avermedia_dvbt
,* rc-avermedia-m135a avermedia_m135a
,* rc-avermedia-m733a-rm-k6 avermedia_m733a_rm_k6
,* rc-avermedia-rm-ks avermedia_rm_ks
,* rc-avermedia avermedia
,* rc-avertv-303 avertv_303
,* rc-azurewave-ad-tu700 azurewave_ad_tu700
,* rc-behold-columbus behold_columbus
,* rc-behold behold
,* rc-budget-ci-old budget_ci_old
,* rc-cec cec
,* rc-cinergy-1400 cinergy_1400
,* rc-cinergy cinergy
,* rc-delock-61959 delock_61959
,* rc-dib0700-nec dib0700_nec
,* rc-dib0700-rc5 dib0700_rc5
,* rc-digitalnow-tinytwin digitalnow_tinytwin
,* rc-digittrade digittrade
,* rc-dm1105-nec dm1105_nec
,* rc-dntv-live-dvb-t dntv_live_dvb_t
,* rc-dntv-live-dvbt-pro dntv_live_dvbt_pro
,* rc-dtt200u dtt200u
,* rc-dvbsky dvbsky
,* rc-em-terratec em_terratec
,* rc-encore-enltv-fm53 encore_enltv_fm53
,* rc-encore-enltv encore_enltv
,* rc-encore-enltv2 encore_enltv2
,* rc-evga-indtube evga_indtube
,* rc-eztv eztv
,* rc-flydvb flydvb
,* rc-flyvideo flyvideo
,* rc-fusionhdtv-mce fusionhdtv_mce
,* rc-gadmei-rm008z gadmei_rm008z
,* rc-genius-tvgo-a11mce genius_tvgo_a11mce
,* rc-gotview7135 gotview7135
,* rc-hauppauge hauppauge
#* rc-imon-mce imon_mce
#* rc-imon-pad imon_pad
,* rc-iodata-bctv7e iodata_bctv7e
,* rc-it913x-v1 it913x_v1
,* rc-it913x-v2 it913x_v2
,* rc-kaiomy kaiomy
,* rc-kworld-315u kworld_315u
,* rc-kworld-pc150u kworld_pc150u
,* rc-kworld-plus-tv-analog kworld_plus_tv_analog
,* rc-leadtek-y04g0051 leadtek_y04g0051
,* rc-lme2510 lme2510
,* rc-manli manli
,* rc-medion-x10-digitainer medion_x10_digitainer
,* rc-medion-x10-or2x medion_x10_or2x
,* rc-medion-x10 medion_x10
,* rc-msi-digivox-ii msi_digivox_ii
,* rc-msi-digivox-iii msi_digivox_iii
,* rc-msi-tvanywhere-plus msi_tvanywhere_plus
,* rc-msi-tvanywhere msi_tvanywhere
,* rc-nebula nebula
,* rc-nec-terratec-cinergy-xs nec_terratec_cinergy_xs
,* rc-norwood norwood
,* rc-npgtech npgtech
,* rc-pctv-sedna pctv_sedna
,* rc-pinnacle-color pinnacle_color
,* rc-pinnacle-grey pinnacle_grey
,* rc-pinnacle-pctv-hd pinnacle_pctv_hd
,* rc-pixelview-002t pixelview_002t
,* rc-pixelview-mk12 pixelview_mk12
,* rc-pixelview-new pixelview_new
,* rc-pixelview pixelview
,* rc-powercolor-real-angel powercolor_real_angel
,* rc-proteus-2309 proteus_2309
,* rc-purpletv purpletv
,* rc-pv951 pv951
,* rc-real-audio-220-32-keys real_audio_220_32_keys
,* rc-reddo reddo
,* rc-snapstream-firefly snapstream_firefly
,* rc-streamzap streamzap
,* rc-su3000 su3000
,* rc-tbs-nec tbs_nec
,* rc-technisat-ts35 technisat_ts35
,* rc-technisat-usb2 technisat_usb2
,* rc-terratec-cinergy-c-pci terratec_cinergy_c_pci
,* rc-terratec-cinergy-s2-hd terratec_cinergy_s2_hd
,* rc-terratec-cinergy-xs terratec_cinergy_xs
,* rc-terratec-slim-2 terratec_slim_2
,* rc-terratec-slim terratec_slim
,* rc-tevii-nec tevii_nec
,* rc-tivo tivo
,* rc-total-media-in-hand-02 total_media_in_hand_02
,* rc-total-media-in-hand total_media_in_hand
,* rc-trekstor trekstor
,* rc-tt-1500 tt_1500
,* rc-twinhan-dtv-cab-ci twinhan_dtv_cab_ci
,* rc-twinhan1027 twinhan_vp1027_dvbs
,* rc-videomate-k100 videomate_k100
,* rc-videomate-s350 videomate_s350
,* rc-videomate-tv-pvr videomate_tv_pvr
,* rc-winfast-usbii-deluxe winfast_usbii_deluxe
,* rc-winfast winfast
# * * a800 # found in a800.c
# * * af9005 # found in af9005-remote.c
# * * cinergyt2 # found in cinergyT2-core.c
# * * dvico_mce # found in cxusb.c
# * * dvico_portable # found in cxusb.c
# * * d680_dmb # found in cxusb.c
# * * dibusb # found in dibusb-common.c
# * * digitv # found in digitv.c
# * * megasky # found in m920x.c
# * * tvwalkerir-kbd-i2c rc-hauppauge /lib/udev/rc_keymaps/rc-hauppaugetwin # found in m920x.c
# * * pinnacle310e # found in m920x.c
# * * haupp # found in nova-t-usb2.c
# * * opera1 # found in opera1.c
# * * vp702x # found in vp702x.c
# * * vp7045 # found in vp7045.c
# Hauppauge PVR 350
ir-kbd-i2c rc-hauppauge /lib/udev/rc_keymaps/rc-hauppauge
# imon-pad
imon rc-imon-pad /lib/udev/rc_keymaps/rc-imon-pad
imon rc-imon-mce /lib/udev/rc_keymaps/rc-imon-mce
# TT-1500/1501
,* rc-tt-1500 /lib/udev/rc_keymaps/rc-tt-1500
budget_ci rc-tt-1500 /lib/udev/rc_keymaps/rc-tt-1501
# rc-rc6-mce
,* rc-rc6-mce /lib/udev/rc_keymaps/rc-rc6-mce
# CIR
ite-cir rc-rc6-mce /lib/udev/rc_keymaps/rc-rc6-mce
nuvoton-cir rc-rc6-mce /lib/udev/rc_keymaps/rc-rc6-mce
# mceusb
mceusb rc-rc6-mce /lib/udev/rc_keymaps/HOPLOrc6
# Skystarhd2
mantis_core * /lib/udev/rc_keymaps/skystarhd2
# Medion X10
ati_remote rc-medion-x10 /lib/udev/rc_keymaps/rc-medion-x10
ati_remote rc-medion-x10-or2x /lib/udev/rc_keymaps/rc-medion-x10-or2x
ati_remote rc-medion-x10-digitainer /lib/udev/rc_keymaps/rc-medion-x10-digitainer
#+END_SRC
*** files *** files
** pulseaudio ** pulseaudio
@@ -1022,7 +1245,7 @@ install_avahi: true
#+BEGIN_SRC yaml :tangle roles/pulseaudio/tasks/main.yml :mkdirp yes :padline no #+BEGIN_SRC yaml :tangle roles/pulseaudio/tasks/main.yml :mkdirp yes :padline no
--- ---
- name: apt | install pulseaudio and pavucontrol - name: apt | install pulseaudio, pavucontrol and vdr-plugin-pulsecontrol
apt: apt:
name: '{{ item }}' name: '{{ item }}'
state: present state: present
@@ -1030,6 +1253,7 @@ install_avahi: true
with_items: with_items:
- pulseaudio - pulseaudio
- pavucontrol - pavucontrol
- vdr-plugin-pulsecontrol
- name: create /etc/asound.conf with pulseaudio as default device - name: create /etc/asound.conf with pulseaudio as default device
template: template:
@@ -1058,6 +1282,7 @@ ctl.!default {
The X-Server is started by using the two systemd units ~xlogin@.service~ and ~x@.service~ provided by the package *xlogin*. The former is enabled (and started) for the vdr user - which results (using the default settings for the user *vdr* with the uid *666*) in the activation of ~xlogin@vdr.service~ when reaching the graphical.target. The X-Server is started by using the two systemd units ~xlogin@.service~ and ~x@.service~ provided by the package *xlogin*. The former is enabled (and started) for the vdr user - which results (using the default settings for the user *vdr* with the uid *666*) in the activation of ~xlogin@vdr.service~ when reaching the graphical.target.
~x@vt7.service~ is started automatically as a dependency of ~xlogin@vdr.service~ and starts the X-server. ~xlogin@vdr.service~ also starts a systemd user session using ~user@666.service~. ~x@vt7.service~ is started automatically as a dependency of ~xlogin@vdr.service~ and starts the X-server. ~xlogin@vdr.service~ also starts a systemd user session using ~user@666.service~.
In order to use the keyboard layout configured during installation for the X-Server the script ~write-x11-keyboard-config~ reads the keyboard configuration from ~/etc/default/keyboard~ when starting ~x@.service~ and writes the file ~/etc/X11/xorg.conf.d/00-keyboard.conf~ (because systemd for Ubuntu (and Debian) has been patched not to create ~/etc/X11/xorg.conf.d/00-keyboard.conf~ according to the ~localectl~ settings).
To prevent stopping the X-server when vdr is running, additional dependencies are set up - see the drop-in rules created in ~/etc/systemd/system/vdr.service.d/~. To prevent stopping the X-server when vdr is running, additional dependencies are set up - see the drop-in rules created in ~/etc/systemd/system/vdr.service.d/~.
@@ -1456,14 +1681,18 @@ b'\xde\xad\xbe\xef'
*** default variables *** default variables
*** tasks *** tasks
**** main.yml
#+BEGIN_SRC yaml :tangle roles/yavdr-xorg/tasks/main.yml :mkdirp yes :padline no #+BEGIN_SRC yaml :tangle roles/yavdr-xorg/tasks/main.yml :mkdirp yes :padline no
--- ---
# file: roles/yavdr-xorg/tasks/main.yml # file: roles/yavdr-xorg/tasks/main.yml
- import_tasks: setup-xorg.yml tags=install,update - import_tasks: setup-xorg.yml
- import_tasks: detect-xorg.yml tags=xorg:detect,install tags: [install,update]
- import_tasks: desktop-session.yml tags=install,update - import_tasks: detect-xorg.yml
tags: [xorg.detect,install]
- import_tasks: desktop-session.yml
tags: [install,update]
#+END_SRC #+END_SRC
**** setup-xorg.yml
#+BEGIN_SRC yaml :tangle roles/yavdr-xorg/tasks/setup-xorg.yml :mkdirp yes :padline no #+BEGIN_SRC yaml :tangle roles/yavdr-xorg/tasks/setup-xorg.yml :mkdirp yes :padline no
--- ---
# file: roles/yavdr-xorg/tasks/setup-xorg.yml # file: roles/yavdr-xorg/tasks/setup-xorg.yml
@@ -1475,6 +1704,7 @@ b'\xde\xad\xbe\xef'
- "/etc/systemd/system/x@.service.d/" - "/etc/systemd/system/x@.service.d/"
- "/etc/systemd/system/vdr.service.d/" - "/etc/systemd/system/vdr.service.d/"
- "/etc/systemd/system/user@{{ vdr.uid }}.service.d/" - "/etc/systemd/system/user@{{ vdr.uid }}.service.d/"
- "/etc/X11/xorg.conf.d/"
- name: systemd-drop-in | add dependency to X-server for vdr.service - name: systemd-drop-in | add dependency to X-server for vdr.service
template: template:
@@ -1491,6 +1721,11 @@ b'\xde\xad\xbe\xef'
src: templates/systemd/vdr-environ.j2 src: templates/systemd/vdr-environ.j2
dest: /etc/systemd/system/vdr.service.d/load-environ.conf dest: /etc/systemd/system/vdr.service.d/load-environ.conf
- name: systemd-drop-in | start vdr.service after network-online.target
template:
src: templates/systemd/network-online.j2
dest: /etc/systemd/system/vdr.service.d/network-online.conf
- name: systemd-drop-in | user@{{ vdr.uid }}.service depends on x@vt7.service - name: systemd-drop-in | user@{{ vdr.uid }}.service depends on x@vt7.service
template: template:
src: templates/user@666.service.d/x-dependency.conf.j2 src: templates/user@666.service.d/x-dependency.conf.j2
@@ -1528,8 +1763,26 @@ b'\xde\xad\xbe\xef'
- read-edid - read-edid
- tmux - tmux
- vdr-plugin-desktop - vdr-plugin-desktop
- vdr-plugin-osd2web
- feh
#- yavdr-xorg #- yavdr-xorg
- name: download yavdr logo
block:
- file:
dest: '/usr/share/yavdr/images'
state: directory
- get_url:
url: 'https://github.com/yavdr/yavdr-base/raw/master/images/yavdr_logo.png'
dest: '/usr/share/yavdr/images/yavdr_logo.png'
- name: command | write keyboard configuration to /etc/X11/xorg.conf.d/00-keyboard.conf
command: write-x11-keyboard-config
creates: /etc/X11/xorg.conf.d/00-keyboard.conf
# NOTE: write-x11-keyboard-config is in the xlogin package
# Ubuntu's systemd is patched, so it does not create the file automatically
- name: apt | install desktop programs - name: apt | install desktop programs
apt: apt:
name: '{{ item }}' name: '{{ item }}'
@@ -1539,7 +1792,7 @@ b'\xde\xad\xbe\xef'
- firefox - firefox
- kiosk-browser - kiosk-browser
#+END_SRC #+END_SRC
**** detect-xorg.yml
#+BEGIN_SRC yaml :tangle roles/yavdr-xorg/tasks/detect-xorg.yml :mkdirp yes :padline no #+BEGIN_SRC yaml :tangle roles/yavdr-xorg/tasks/detect-xorg.yml :mkdirp yes :padline no
--- ---
# file: roles/yavdr-xorg/tasks/detect-xorg.yml # file: roles/yavdr-xorg/tasks/detect-xorg.yml
@@ -1571,7 +1824,40 @@ b'\xde\xad\xbe\xef'
name: x@vt7.service name: x@vt7.service
state: stopped state: stopped
- name: "wait a little bit before starting x-verbose@vt7.service (needed?)" - name: Workaround for wrong connector names on first run
block:
- name: "wait a little bit before starting x-verbose@vt7.service (needed?)"
wait_for:
timeout: 10
- name: "start x-verbose@.service"
systemd:
name: "x-verbose@vt7.service"
state: started
enabled: false
masked: false
daemon_reload: true
- name: "wait a little bit, so X has some time to start up (needed?)"
wait_for:
timeout: 3
- name: "stop x-verbose@vt7.service"
systemd:
name: "x-verbose@vt7.service"
state: stopped
enabled: false
masked: true
tags: first_run
- name: "wait a little bit, so X has some time to shut down (needed?)"
wait_for:
timeout: 3
- name: "trigger udevadm reload"
command: 'udevadm trigger '
- name: "wait a little bit, so udev has some time to reapply rules (needed?)"
wait_for: wait_for:
timeout: 3 timeout: 3
@@ -1623,7 +1909,7 @@ b'\xde\xad\xbe\xef'
- nvidia_detected - nvidia_detected
#+END_SRC #+END_SRC
**** desktop-session.yml
#+BEGIN_SRC yaml :tangle roles/yavdr-xorg/tasks/desktop-session.yml :mkdirp yes :padline no #+BEGIN_SRC yaml :tangle roles/yavdr-xorg/tasks/desktop-session.yml :mkdirp yes :padline no
--- ---
# file: roles/yavdr-xorg/tasks/desktop-session.yml # file: roles/yavdr-xorg/tasks/desktop-session.yml
@@ -1648,6 +1934,14 @@ b'\xde\xad\xbe\xef'
owner: '{{ vdr.user }}' owner: '{{ vdr.user }}'
group: '{{ vdr.group }}' group: '{{ vdr.group }}'
- name: "expand template for vdr's .Xresources"
template:
src: 'templates/.Xresources.j2'
dest: '{{ vdr.home }}/.Xresources'
mode: 0644
owner: '{{ vdr.user }}'
group: '{{ vdr.group }}'
- name: expand template for openbox autostart - name: expand template for openbox autostart
template: template:
src: 'templates/openbox/autostart.j2' src: 'templates/openbox/autostart.j2'
@@ -1706,6 +2000,15 @@ b'\xde\xad\xbe\xef'
src: templates/systemd/user/osd2web.service.j2 src: templates/systemd/user/osd2web.service.j2
dest: '{{ vdr.home }}/.config/systemd/user/osd2web.service' dest: '{{ vdr.home }}/.config/systemd/user/osd2web.service'
- name: create irexec configuration for the session
block:
- template:
src: templates/systemd/user/irexec.service.j2
dest: '{{ vdr.home }}/.config/systemd/user/irexec.service'
- template:
src: templates/.lircrc.j2
dest: '{{ vdr.home }}/.lircrc'
- name: link /usr/bin/start-desktop to /var/lib/vdr/plugins/desktop/starter - name: link /usr/bin/start-desktop to /var/lib/vdr/plugins/desktop/starter
file: file:
src: /usr/bin/start-desktop src: /usr/bin/start-desktop
@@ -1751,8 +2054,7 @@ KillMode=mixed
***** Drop-in snippet for vdr.service ***** Drop-in snippet for vdr.service
#+BEGIN_SRC conf :tangle roles/yavdr-xorg/templates/vdr-xorg.conf :mkdirp yes :padline no #+BEGIN_SRC conf :tangle roles/yavdr-xorg/templates/vdr-xorg.conf :mkdirp yes :padline no
# file: roles/yavdr-xorg/templates/vdr-xorg.conf {{ ansible_managed_file | comment }}
# {{ ansible_managed_file }}
[Unit] [Unit]
After=x@vt7.service After=x@vt7.service
Wants=x@vt7.service Wants=x@vt7.service
@@ -1761,7 +2063,7 @@ Wants=x@vt7.service
***** .xinitrc ***** .xinitrc
#+BEGIN_SRC shell :tangle roles/yavdr-xorg/templates/.xinitrc.j2 :mkdirp yes :padline no #+BEGIN_SRC shell :tangle roles/yavdr-xorg/templates/.xinitrc.j2 :mkdirp yes :padline no
#!/bin/bash #!/bin/bash
# {{ ansible_managed_file }} {{ ansible_managed_file | comment }}
exec openbox-session exec openbox-session
#+END_SRC #+END_SRC
***** xorg.conf ***** xorg.conf
@@ -1838,7 +2140,9 @@ Section "Screen"
Option "ConnectedMonitor" "{{ xorg.primary.connector }}{% if xorg.secondary is defined %}, {{ xorg.secondary.connector }}{% endif %}" Option "ConnectedMonitor" "{{ xorg.primary.connector }}{% if xorg.secondary is defined %}, {{ xorg.secondary.connector }}{% endif %}"
Option "UseDisplayDevice" "{{ xorg.primary.connector }}" Option "UseDisplayDevice" "{{ xorg.primary.connector }}"
Option "CustomEDID" "{{ xorg.primary.connector }}:/etc/X11/edid.{{ xorg.primary.connector }}.bin" Option "CustomEDID" "{{ xorg.primary.connector }}:/etc/X11/edid.{{ xorg.primary.connector }}.bin"
Option "metamodes" "{{ xorg.primary.connector }}: {{ xorg.primary.mode }} +0+0" Option "metamodes" "{{ xorg.primary.connector }}: {{ xorg.primary.mode }} +0+0 {ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}"
Option "AllowIndirectGLXProtocol" "off"
Option "TripleBuffer" "on"
Option "SLI" "Off" Option "SLI" "Off"
Option "MultiGPU" "Off" Option "MultiGPU" "Off"
Option "BaseMosaic" "off" Option "BaseMosaic" "off"
@@ -1877,7 +2181,9 @@ Section "Screen"
Option "ConnectedMonitor" "{{ xorg.secondary.connector }}" Option "ConnectedMonitor" "{{ xorg.secondary.connector }}"
Option "UseDisplayDevice" "{{ xorg.secondary.connector }}" Option "UseDisplayDevice" "{{ xorg.secondary.connector }}"
Option "CustomEDID" "{{ xorg.secondary.connector }}:/etc/X11/edid.{{ xorg.secondary.connector }}.bin" Option "CustomEDID" "{{ xorg.secondary.connector }}:/etc/X11/edid.{{ xorg.secondary.connector }}.bin"
Option "metamodes" "{{ xorg.secondary.connector }}: {{ xorg.secondary.mode }} +0+0" Option "metamodes" "{{ xorg.secondary.connector }}: {{ xorg.secondary.mode }} +0+0 {ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}"
Option "AllowIndirectGLXProtocol" "off"
Option "TripleBuffer" "on"
Option "SLI" "Off" Option "SLI" "Off"
Option "MultiGPU" "Off" Option "MultiGPU" "Off"
Option "BaseMosaic" "off" Option "BaseMosaic" "off"
@@ -2083,12 +2389,37 @@ Section "Screen"
EndSection EndSection
{% endif %} {% endif %}
#+END_SRC #+END_SRC
***** .Xresources
#+BEGIN_SRC shell :tangle roles/yavdr-xorg/templates/.Xresources.j2 :mkdirp yes :padline no
xterm*background: Black
xterm*foreground: grey
XTerm*locale: true
XTerm*metaSendsEscape: true
XTerm*eightBitInput: false
XTerm*backarrowKey: false
XTerm*ttyModes: erase ^?
Xterm*saveLines: 4096
XTerm.vt100.metaSendsEscape: true
XTerm.vt100.geometry: 80x32
XTerm.vt100.renderFont: true
xterm*faceName: xft:DejaVu Sans Mono
xterm*faceSize: 14
xterm*renderFont: true
XTerm.vt100.faceName: xft:DejaVu Sans Mono:size=12:antialias=false
XTerm.vt100.font: 7x13
#+END_SRC
**** vdr **** vdr
#+BEGIN_SRC conf :tangle roles/yavdr-xorg/templates/systemd/vdr-environ.j2 #+BEGIN_SRC conf :tangle roles/yavdr-xorg/templates/systemd/vdr-environ.j2
[Service] [Service]
Environment=XDG_RUNTIME_DIR=/run/user/{{ vdr.uid }}/ Environment=XDG_RUNTIME_DIR=/run/user/{{ vdr.uid }}/
EnvironmentFile=-/var/lib/vdr/.session-env EnvironmentFile=-/var/lib/vdr/.session-env
#+END_SRC #+END_SRC
#+BEGIN_SRC conf :tangle roles/yavdr-xorg/templates/systemd/network-online.j2
[Unit]
After=network-online.target
#+END_SRC
**** Systemd User Session **** Systemd User Session
***** yavdr-desktop.target ***** yavdr-desktop.target
#+BEGIN_SRC shell :tangle roles/yavdr-xorg/templates/systemd/user/yavdr-desktop.target.j2 :mkdirp yes :padline no #+BEGIN_SRC shell :tangle roles/yavdr-xorg/templates/systemd/user/yavdr-desktop.target.j2 :mkdirp yes :padline no
@@ -2125,6 +2456,7 @@ ConditionFileNotEmpty=%h/.second_display
PassEnvironment=XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS PassEnvironment=XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS
EnvironmentFile=%h/.second_display EnvironmentFile=%h/.second_display
ExecStart=/usr/bin/openbox --config-file %h/.config/openbox/rc.xml ExecStart=/usr/bin/openbox --config-file %h/.config/openbox/rc.xml
ExecStartPost=/bin/bash %h/.fehbg
[Install] [Install]
WantedBy=yavdr-desktop.target WantedBy=yavdr-desktop.target
@@ -2140,7 +2472,7 @@ ConditionFileNotEmpty=%h/.second_display
[Service] [Service]
EnvironmentFile=%h/.second_display EnvironmentFile=%h/.second_display
PassEnvironment=XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS PassEnvironment=XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS
ExecStart=/usr/bin/on_vdr -o -c 'kiosk-browser "http://localhost:4444/skins/horchiTft/index.html?theme=blue&onlyView=1"' ExecStart=/usr/bin/on_vdr -o -c 'kiosk-browser "http://localhost:4444/skins/horchiTft/index.html?theme=bluecd&onlyView=1"'
KillSignal=SIGINT KillSignal=SIGINT
[Install] [Install]
@@ -2174,6 +2506,28 @@ RemainAfterExit=True
[Install] [Install]
WantedBy=default.target WantedBy=default.target
#+END_SRC #+END_SRC
**** irexec
irexec.service starts irexec for the user session
#+BEGIN_SRC shell :tangle roles/yavdr-xorg/templates/systemd/user/irexec.service.j2 :mkdirp yes :padline no
[Unit]
Description=LIRC command handler
[Service]
Type=simple
ExecStart=/usr/bin/irexec %h/.lircrc
[Install]
WantedBy=yavdr-desktop.target
#+END_SRC
~/.lircrc contains the irexec configuration
#+BEGIN_SRC shell :tangle roles/yavdr-xorg/templates/.lircrc.j2 :mkdirp yes :padline no
begin
prog = irexec
button = KEY_HOME
config = frontend-dbus-send switchbetween kodi vdr
end
#+END_SRC
**** openbox **** openbox
***** autostart ***** autostart
#+BEGIN_SRC shell :tangle roles/yavdr-xorg/templates/openbox/autostart.j2 :mkdirp yes :shebang #!/bin/bash #+BEGIN_SRC shell :tangle roles/yavdr-xorg/templates/openbox/autostart.j2 :mkdirp yes :shebang #!/bin/bash
@@ -2181,11 +2535,13 @@ WantedBy=default.target
env | grep "DISPLAY\|DBUS_SESSION_BUS_ADDRESS\|XDG_RUNTIME_DIR" > ~/.session-env env | grep "DISPLAY\|DBUS_SESSION_BUS_ADDRESS\|XDG_RUNTIME_DIR" > ~/.session-env
systemctl --user import-environment DISPLAY XAUTHORITY XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS systemctl --user import-environment DISPLAY XAUTHORITY XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS
feh --bg-center "/usr/share/yavdr/images/yavdr_logo.png"
enabled_services=( enabled_services=(
"tmux.service" "detect-second-display.service" "tmux.service" "detect-second-display.service"
"openbox-second.service" "osd2web.service" "openbox-second.service" "osd2web.service"
"yavdr-frontend.service" "pulseaudio.socket" "yavdr-frontend.service" "pulseaudio.socket"
"pulseaudio.service" "wm-exit.service") "pulseaudio.service" "wm-exit.service" "irexec.service")
disabled_services=() disabled_services=()
# enable configured services for the user session # enable configured services for the user session
@@ -2263,7 +2619,7 @@ systemctl --user isolate yavdr-desktop.target
S: shade (roll up/down) S: shade (roll up/down)
D: omnipresent (on all desktops). D: omnipresent (on all desktops).
--> -->
<keepBorder>yes</keepBorder> <keepBorder>no</keepBorder>
<animateIconify>yes</animateIconify> <animateIconify>yes</animateIconify>
<font place="ActiveWindow"> <font place="ActiveWindow">
<name>sans</name> <name>sans</name>
@@ -2530,22 +2886,6 @@ systemctl --user isolate yavdr-desktop.target
<direction>down</direction> <direction>down</direction>
</action> </action>
</keybind> </keybind>
<!-- Keybindings for running applications -->
<keybind key="W-e">
<action name="Execute">
<startupnotify>
<enabled>true</enabled>
<name>Konqueror</name>
</startupnotify>
<command>kfmclient openProfile filemanagement</command>
</action>
</keybind>
<!-- Launch scrot when Print is pressed -->
<keybind key="Print">
<action name="Execute">
<command>scrot</command>
</action>
</keybind>
</keyboard> </keyboard>
<mouse> <mouse>
<dragThreshold>1</dragThreshold> <dragThreshold>1</dragThreshold>
@@ -3005,21 +3345,27 @@ systemctl --user isolate yavdr-desktop.target
<applications> <applications>
<application title="softhddevice"> <application title="softhddevice">
<decor>no</decor> <decor>no</decor>
<maximized>true</maximized> <maximized>yes</maximized>
<!--<skip_pager>yes</skip_pager>-->
<skip_taskbar>no</skip_taskbar>
</application>
<application class="VDR">
<decor>no</decor>
<maximized>yes</maximized>
<!--<skip_pager>yes</skip_pager>--> <!--<skip_pager>yes</skip_pager>-->
<skip_taskbar>no</skip_taskbar> <skip_taskbar>no</skip_taskbar>
</application> </application>
<application title="browser"> <application title="browser">
<decor>no</decor> <decor>no</decor>
<maximized>true</maximized> <maximized>yes</maximized>
<!--<skip_pager>yes</skip_pager>--> <!--<skip_pager>yes</skip_pager>-->
<skip_taskbar>yes</skip_taskbar> <skip_taskbar>no</skip_taskbar>
</application> </application>
<application title="osd2Web"> <application title="osd2Web">
<decor>no</decor> <decor>no</decor>
<maximized>true</maximized> <maximized>yes</maximized>
<!--<skip_pager>yes</skip_pager>--> <!--<skip_pager>yes</skip_pager>-->
<skip_taskbar>yes</skip_taskbar> <skip_taskbar>no</skip_taskbar>
</application> </application>
</applications> </applications>
</openbox_config> </openbox_config>
@@ -3199,12 +3545,10 @@ The tool ubuntu-drivers is used to install the matching driver version for nvidi
- name: use ubuntu-drivers to install additional drivers automatically - name: use ubuntu-drivers to install additional drivers automatically
command: ubuntu-drivers --package-list /etc/yavdr/autoinstalled autoinstall command: ubuntu-drivers --package-list /etc/yavdr/autoinstalled autoinstall
when: when: (ansible_virtualization_type != "virtualbox" and ansible_virtualization_role != "guest") or
- ansible_virtualization_type != "virtualbox" ansible_distribution_version != "16.04"
- ansible_virtualization_role != "guest" # ubuntu-drivers-common tries to autoinstall
- ansible_distribution == "Ubuntu" # conflicting packages for virtualbox in Ubuntu 16.04 :(
- ansible_distribution_version != "16.04" # ubuntu-drivers-common tries to autoinstall
# conflicting packages for virtualbox :(
#+END_SRC #+END_SRC
** autoinstall-virtualbox-guest ** autoinstall-virtualbox-guest
This role installs the guest additions for virtualbox guests on Ubuntu 16.04 This role installs the guest additions for virtualbox guests on Ubuntu 16.04
@@ -3231,6 +3575,77 @@ This role installs the guest additions for virtualbox guests on Ubuntu 16.04
- ansible_distribution == "Ubuntu" - ansible_distribution == "Ubuntu"
- ansible_distribution_version == "16.04" - ansible_distribution_version == "16.04"
#+END_SRC #+END_SRC
** autoinstall-atric-usb
*** dependencies
#+BEGIN_SRC yaml :tangle roles/autoinstall-atric-usb/meta/main.yml :padline no
---
dependencies:
- { role: yavdr-remote }
#+END_SRC
*** tasks
#+BEGIN_SRC yaml :tangle roles/autoinstall-atric-usb/tasks/main.yml :padline no
---
# file roles/autoinstall-atric-usb/tasks/main.yml
- name: install and configure Atric IR-WakeupUSB
block:
- name: apt | install lirc-drv-irman
apt:
name: lirc-drv-irman
state: present
tags:
- packages
- name: write lirc configuration
template:
src: templates/lirc_options.conf.j2
dest: /etc/lirc/lirc_options.conf
tags:
- config
- systemd
- name: enable lircd, eventlircd, lircd2uinput
systemd:
name: '{{ item }}'
enabled: yes
state: started
masked: no
daemon_reload: yes
with_items:
- eventlircd.socket
- eventlircd.service
- lircd2uinput.service
- lircd.service
tags:
- systemd
when: '"04d8:f844" in usb'
#+END_SRC
*** templates
#+BEGIN_SRC conf :tangle roles/autoinstall-atric-usb/templates/lirc_options.conf.j2 :padline no
{{ ansible_managed_file | comment }}
[lircd]
nodaemon = False
driver = irman
device = /dev/irman
output = /var/run/lirc/lircd0
pidfile = /var/run/lirc/lircd0.pid
plugindir = /usr/lib/x86_64-linux-gnu/lirc/plugins
permission = 666
allow-simulate = No
repeat-max = 600
#loglevel = 6
#release = true
#release_suffix = _EVUP
#logfile = ...
#driver-options = ...
[lircmd]
uinput = False
nodaemon = False
#+END_SRC
** autoinstall-satip ** autoinstall-satip
If a Sat>IP Server responds to a discovery request, the package vdr-plugin-satip is installed. If a Sat>IP Server responds to a discovery request, the package vdr-plugin-satip is installed.
*** tasks *** tasks
@@ -4060,9 +4475,9 @@ options:
default: ":0" default: ":0"
description: description:
- the DISPLAY variable to use when calling xrandr - the DISPLAY variable to use when calling xrandr
preferred_outpus: preferred_outputs:
required: False required: False
default: ["HDMI", "DP", "DVI", "VGA", "TV": 0] default: ["HDMI", "DP", "DVI", "VGA", "TV"]
description: description:
- ranking of the preferred display connectors - ranking of the preferred display connectors
preferred_refreshrates: preferred_refreshrates:

View File

@@ -3,10 +3,11 @@ ansible playbooks for yaVDR
## Usage: ## Usage:
On a Ubuntu Server 16.04.x Installation run the following commands: On a Ubuntu Server 18.04.x (or minimal) Installation run the following commands:
``` ```
sudo apt-get install git sudo apt-get install git
git clone https://github.com/yavdr/yavdr-ansible git clone https://github.com/yavdr/yavdr-ansible
cd yavdr-ansible cd yavdr-ansible
git checkout bionic
sudo ./install-yavdr.sh sudo ./install-yavdr.sh
``` ```

3
ansible.cfg Normal file
View File

@@ -0,0 +1,3 @@
[defaults]
callback_plugins = plugins/callbacks
callback_whitelist = auto_tags

View File

@@ -0,0 +1,34 @@
# Copyright (c) 2017 Ansible Project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
ANSIBLE_METADATA = {
'metadata_version': '1.1',
'status': ['preview'],
'supported_by': 'yavdr'
}
import gettext
from ansible.errors import AnsibleFilterError
from ansible.utils import helpers
def translate_yavdr(text):
gettext.textdomain('yavdr')
try:
return gettext.gettext(text)
except:
return text
# ---- Ansible filters ----
class FilterModule(object):
''' URI filter '''
def filters(self):
return {
'translate': translate_yavdr
}

View File

@@ -2,16 +2,15 @@
# file: group_vars/all # file: group_vars/all
# this is the standard text to put in templates # this is the standard text to put in templates
ansible_managed_file: "*** YAVDR: ANSIBLE MANAGED FILE ***" ansible_managed_file: "*** YAVDR: ANSIBLE MANAGED FILE ***\norigin: {file}"
branch: unstable branch: experimental
ppa_owner: 'ppa:yavdr' ppa_owner: 'ppa:yavdr'
# add the following PPAs # add the following PPAs
repositories: repositories:
- '{{ ppa_owner }}/main' - '{{ ppa_owner }}/{{branch}}-main'
- '{{ ppa_owner }}/unstable-main'
- '{{ ppa_owner }}/{{branch}}-vdr' - '{{ ppa_owner }}/{{branch}}-vdr'
- '{{ ppa_owner }}/{{branch}}-yavdr' #- '{{ ppa_owner }}/{{branch}}-yavdr'
- '{{ ppa_owner }}/{{branch}}-kodi' #- '{{ ppa_owner }}/{{branch}}-kodi'
# properties of the user vdr and vdr-related options # properties of the user vdr and vdr-related options
vdr: vdr:
user: vdr user: vdr
@@ -34,7 +33,7 @@ vdr_plugins:
# dictionary of directories for (shared) files. Automatically exported via NFS and Samba if those roles are enabled # dictionary of directories for (shared) files. Automatically exported via NFS and Samba if those roles are enabled
media_dirs: media_dirs:
audio: /srv/audio audio: /srv/audio
video: /srv/audio video: /srv/video
pictures: /srv/picture pictures: /srv/picture
files: /srv/files files: /srv/files
backups: /srv/backups backups: /srv/backups
@@ -52,10 +51,11 @@ extra_packages:
- tree - tree
- vim - vim
- w-scan - w-scan
- plymouth-theme-yavdr-logo
frontend: vdr frontend: vdr
#system: #system:
# shutdown: poweroff # shutdown: poweroff
wakeup_method: acpiwakeup wakeup_method: acpiwakeup
grub: grub:
timeout: 0 timeout: 0
boot_options: quiet nosplash boot_options: quiet splash

View File

@@ -1,16 +1,16 @@
#!/bin/bash #!/bin/bash
if (( $EUID != 0 )); then if (( $EUID != 0 )); then
echo "This script must be run using sudo or as root" echo "This script must be run using sudo -H or as root"
exit exit
fi fi
apt-get -y install software-properties-common apt-get -y install software-properties-common
# Add repository for ansible # Add repository for ansible
add-apt-repository -y ppa:ansible/ansible add-apt-repository -y ppa:yavdr/experimental-main
# update packages # update packages
apt-get update apt-get update
# install required packages # install required packages
apt-get -y install --no-install-recommends ansible apt-get -y install --no-install-recommends ansible
# TODO: run ansible on local host # TODO: run ansible on local host
ansible-playbook yavdr07.yml -b -i 'localhost_inventory' --connection=local --tags=install ansible-playbook yavdr07.yml -b -i 'localhost_inventory' --connection=local --tags="all"

View File

@@ -23,9 +23,9 @@ options:
default: ":0" default: ":0"
description: description:
- the DISPLAY variable to use when calling xrandr - the DISPLAY variable to use when calling xrandr
preferred_outpus: preferred_outputs:
required: False required: False
default: ["HDMI", "DP", "DVI", "VGA", "TV": 0] default: ["HDMI", "DP", "DVI", "VGA", "TV"]
description: description:
- ranking of the preferred display connectors - ranking of the preferred display connectors
preferred_refreshrates: preferred_refreshrates:

View File

@@ -0,0 +1,48 @@
"""
This module implements an Ansible plugin that is triggered at the start of a playbook.
The plugin dynamically generates a tag for each role. Each tag has the same name as its role.
The advantage of this is that it saves you some boilerplate, because you don't have to wrap
all tasks of a role in an additional block and assign a tag to that.
Additionally, it works automatically when you add new roles to your playbook.
Usage is exactly the same as without this plugin:
ansible-playbook --tags=some_tag provision.yml
Here, the "some_tag" tag was generated dynamically (assuming there is a "some_tag" role).
Installation:
1. Place this file in `plugins/callbacks/auto_tags.py` (relative to your playbook root)
2. Add the following two lines to your `ansible.cfg` file:
callback_plugins = plugins/callbacks
callback_whitelist = auto_tags
"""
from __future__ import print_function
from ansible.plugins.callback import CallbackBase
class CallbackModule(CallbackBase):
"""
Ansible supports several types of plugins. We are using the *callback* type here, since
it seemed the best choice for our use case, because it allows you to hook into the start
of a playbook.
"""
def v2_playbook_on_start(self, playbook):
"""
Dynamically add a tag of the same name to each role.
Note: Plays, roles, task_blocks and tasks can have tags.
"""
plays = playbook.get_plays()
# Note: Although identical roles are shared between plays we cannot deduplicate them,
# since Ansible treats them as different objects internally
roles = [role for play in plays for role in play.get_roles()]
# Note: Tags for roles are set dynamically in `_load_role_data` instead of in __init__
# I don't know why they do that.
for role in roles:
role_name = role._role_name
if role_name not in role.tags:
role.tags += [role_name]

View File

@@ -0,0 +1,3 @@
---
dependencies:
- { role: yavdr-remote }

View File

@@ -0,0 +1,36 @@
---
# file roles/autoinstall-atric-usb/tasks/main.yml
- name: install and configure Atric IR-WakeupUSB
block:
- name: apt | install lirc-drv-irman
apt:
name: lirc-drv-irman
state: present
tags:
- packages
- name: write lirc configuration
template:
src: templates/lirc_options.conf.j2
dest: /etc/lirc/lirc_options.conf
tags:
- config
- systemd
- name: enable lircd, eventlircd, lircd2uinput
systemd:
name: '{{ item }}'
enabled: yes
state: started
masked: no
daemon_reload: yes
with_items:
- eventlircd.socket
- eventlircd.service
- lircd2uinput.service
- lircd.service
tags:
- systemd
when: '"04d8:f844" in usb'

View File

@@ -0,0 +1,21 @@
{{ ansible_managed_file | comment }}
[lircd]
nodaemon = False
driver = irman
device = /dev/irman
output = /var/run/lirc/lircd0
pidfile = /var/run/lirc/lircd0.pid
plugindir = /usr/lib/x86_64-linux-gnu/lirc/plugins
permission = 666
allow-simulate = No
repeat-max = 600
#loglevel = 6
#release = true
#release_suffix = _EVUP
#logfile = ...
#driver-options = ...
[lircmd]
uinput = False
nodaemon = False

View File

@@ -3,12 +3,11 @@
- name: determine needed firmware files by device ids - name: determine needed firmware files by device ids
block: block:
- name: add firmware for DVBSky S952 V3 to variable dvbsky_firmware_files if a card has been detected - name: add firmware files for DVBSky if a card has been detected
set_fact: set_fact:
dvbsky_firmware_files: "{{dvbsky_firmware_files}} + ['dvb-demod-m88rs6000.fw']" dvbsky_firmware_files: ['dvb-demod-m88ds3103.fw', 'dvb-demod-m88rs6000.fw', 'dvb-tuner-si2158-a20-01.fw', 'dvb-demod-si2168-a20-01.fw', 'dvb-demod-si2168-a30-01.fw', 'dvb-demod-si2168-b40-01.fw', 'dvb-fe-ds300x.fw', 'dvb-fe-ds3103.fw', 'dvb-fe-rs6000.fw']
when: when:
- '"1ade:3038" in pci' - '"1ade:3038" in pci'
- ansible_distribution_version >= '15.04' #driver only included since Kernel 3.19
when: when:
- not dvbsky_firmware_files - not dvbsky_firmware_files

View File

@@ -10,9 +10,7 @@
- name: use ubuntu-drivers to install additional drivers automatically - name: use ubuntu-drivers to install additional drivers automatically
command: ubuntu-drivers --package-list /etc/yavdr/autoinstalled autoinstall command: ubuntu-drivers --package-list /etc/yavdr/autoinstalled autoinstall
when: when: (ansible_virtualization_type != "virtualbox" and ansible_virtualization_role != "guest") or
- ansible_virtualization_type != "virtualbox" ansible_distribution_version != "16.04"
- ansible_virtualization_role != "guest" # ubuntu-drivers-common tries to autoinstall
- ansible_distribution == "Ubuntu" # conflicting packages for virtualbox in Ubuntu 16.04 :(
- ansible_distribution_version != "16.04" # ubuntu-drivers-common tries to autoinstall
# conflicting packages for virtualbox :(

View File

@@ -5,6 +5,8 @@
modules: True modules: True
gpus: True gpus: True
acpi_power_modes: True acpi_power_modes: True
tags:
- always
- debug: - debug:
var: '{{ item }}' var: '{{ item }}'
@@ -19,3 +21,10 @@
- intel_detected - intel_detected
- amd_detected - amd_detected
- virtualbox_detected - virtualbox_detected
- name: known vdr output plugins
set_fact:
vdr_output_plugins:
- softhddevice
- xineliboutput
- xine

View File

@@ -8,4 +8,4 @@
with_items: with_items:
- kodi - kodi
- kodi-pvr-vdr-vnsi - kodi-pvr-vdr-vnsi
- kodi-eventclients-xbmc-send - kodi-eventclients-kodi-send # for ubuntu packages, team-xbmc uses "kodi-eventclients-xbmc-send for some reason

View File

@@ -6,7 +6,7 @@ Type=simple
PassEnvironment=DISPLAY XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS PassEnvironment=DISPLAY XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS
ExecStartPre=-/usr/bin/set-kodi-display ExecStartPre=-/usr/bin/set-kodi-display
ExecStart=/usr/bin/kodi -l /run/lirc/lircd ExecStart=/usr/bin/kodi -l /run/lirc/lircd
ExecStop=/bin/bash -c "/usr/bin/kodi-send --action=QUIT; while /usr/bin/pgrep kodi; do sleep 1; done; sleep 1" ExecStop=/bin/bash -c "/usr/bin/kodi-send --action=QUIT; while ps -p $MAINPID -o comm=; do sleep .25; done"
TimeoutStopSec=10 TimeoutStopSec=10
SuccessExitStatus=0 127 SuccessExitStatus=0 127
Restart=on-failure Restart=on-failure

View File

@@ -5,6 +5,8 @@
repo: 'ppa:graphics-drivers/ppa' repo: 'ppa:graphics-drivers/ppa'
state: present state: present
update_cache: yes update_cache: yes
tags:
- ppa
- name: install nvidia-387 and other required packages - name: install nvidia-387 and other required packages
apt: apt:
@@ -14,3 +16,5 @@
with_items: with_items:
- nvidia-387 - nvidia-387
- nvidia-settings - nvidia-settings
tags:
- packages

View File

@@ -1,6 +1,6 @@
--- ---
- name: apt | install pulseaudio and pavucontrol - name: apt | install pulseaudio, pavucontrol and vdr-plugin-pulsecontrol
apt: apt:
name: '{{ item }}' name: '{{ item }}'
state: present state: present
@@ -8,6 +8,7 @@
with_items: with_items:
- pulseaudio - pulseaudio
- pavucontrol - pavucontrol
- vdr-plugin-pulsecontrol
- name: create /etc/asound.conf with pulseaudio as default device - name: create /etc/asound.conf with pulseaudio as default device
template: template:

View File

@@ -30,11 +30,10 @@
blockinfile: blockinfile:
dest: /etc/vdr/conf.d/04-vdr-hide-first-recordinglevel.conf dest: /etc/vdr/conf.d/04-vdr-hide-first-recordinglevel.conf
create: true create: true
state: "{{ 'present' if vdr.hide_first_recording_level else 'absent' }}"
block: | block: |
[vdr] [vdr]
--hide-first-recording-level --hide-first-recording-level
when:
vdr.hide_first_recording_level
- name: create local dir in recdir - name: create local dir in recdir
file: file:

View File

@@ -10,6 +10,8 @@
state: present state: present
update_cache: yes update_cache: yes
with_items: '{{ repositories }}' with_items: '{{ repositories }}'
tags:
- ppa
- name: run apt-get dist-upgrade - name: run apt-get dist-upgrade
apt: apt:

View File

@@ -1,7 +1,7 @@
--- ---
# this playbook sets up network services for a yaVDR installation # this playbook sets up network services for a yaVDR installation
- name: apt |install packages for network services - name: apt | install packages for network services
apt: apt:
name: '{{ item }}' name: '{{ item }}'
state: present state: present

View File

@@ -1,20 +1,30 @@
--- ---
# This role is used to set up the yaVDR remote control configuration. # This role is used to set up the yaVDR remote control configuration.
- name: apt | install yavdr-remote - name: apt | install packages for remote support
apt: apt:
name: yavdr-remote name: '{{ item }}'
state: present state: present
with_items:
- yavdr-remote
- lirc
- eventlircd
- lircd2uinput
tags:
- packages
- name: apt | install eventlircd - name: add systemd drop-in for lircd to use lircd2uinput
apt: block:
name: eventlircd - name: create directory /etc/systemd/system/lircd.service.d/
state: present file:
path: /etc/systemd/system/lircd.service.d/
- name: apt | install lirc state: directory
apt: - name: expand template for /etc/systemd/system/lircd.service.d/lircd2uinput.conf
name: lirc template:
state: present src: templates/lircd.service.d/lircd2uinput.conf.j2
dest: /etc/systemd/system/lircd.service.d/lircd2uinput.conf
tags:
- config
- name: stop, mask and disable lircd.socket, lircd.service and lircd-uinput.service # (the default lirc configuration conflicts with eventlircd) - name: stop, mask and disable lircd.socket, lircd.service and lircd-uinput.service # (the default lirc configuration conflicts with eventlircd)
systemd: systemd:
@@ -27,18 +37,21 @@
- lircd.socket - lircd.socket
- lircd-uinput.service - lircd-uinput.service
ignore_errors: yes ignore_errors: yes
tags:
- systemd
- name: configure vdr to read from a lircd-compatible socket - name: configure vdr to read from a lircd-compatible socket
template: template:
src: templates/03-vdr-lirc.conf.j2 src: templates/03-vdr-lirc.conf.j2
dest: /etc/vdr/conf.d/03-vdr-lirc.conf dest: /etc/vdr/conf.d/03-vdr-lirc.conf
notify: ['Restart VDR'] notify: ['Restart VDR']
tags:
- config
# TODO: upload lircd2uinput package to PPA - name: expand template for /etc/rc_maps.cfg
#- name: install lircd2uinput template:
# tag: install src: templates/rc_maps.cfg.j2
# apt: dest: /etc/rc_maps.cfg
# name: lircd2uinput notify: ['Trigger Udev']
# state: present tags:
# when: - config
# install_eventlircd is defined and install_eventlircd

View File

@@ -0,0 +1,3 @@
[Service]
ExecStartPost=/usr/bin/lircd2uinput-add /var/run/lirc/lircd0
ExecStopPost=/usr/bin/lircd2uinput-remove /var/run/lirc/lircd0

View File

@@ -0,0 +1,182 @@
#
# Keymaps table
#
# This table creates an association between a keycode file and a kernel
# driver. It can be used to automatically override a keycode definition.
#
# Although not yet tested, it is mented to be added at udev.
#
# To use, you just need to run:
# ./ir-keytable -a
#
# Or, if the remote is not the first device:
# ./ir-keytable -a -s rc1 # for RC at rc1
#
# Format:
# driver - name of the driver provided via uevent - use * for any driver
# table - RC keymap table, provided via uevent - use * for any table
# file - file name. If directory is not specified, it will default to
# /etc/rc_keymaps.
# For example:
# driver table file
# cx8800 * ./keycodes/rc5_hauppauge_new
# * rc-avermedia-m135a-rm-jx ./keycodes/kworld_315u
# saa7134 rc-avermedia-m135a-rm-jx ./keycodes/keycodes/nec_terratec_cinergy_xs
# em28xx * ./keycodes/kworld_315u
# * * ./keycodes/rc5_hauppauge_new
# Table to automatically load the rc maps for the bundled IR's provided with the
# devices supported by the linux kernel
#driver table file
* rc-adstech-dvb-t-pci adstech_dvb_t_pci
* rc-alink-dtu-m alink_dtu_m
* rc-anysee anysee
* rc-apac-viewcomp apac_viewcomp
* rc-asus-pc39 asus_pc39
* rc-asus-ps3-100 asus_ps3_100
* rc-ati-tv-wonder-hd-600 ati_tv_wonder_hd_600
* rc-ati-x10 ati_x10
* rc-avermedia-a16d avermedia_a16d
* rc-avermedia-cardbus avermedia_cardbus
* rc-avermedia-dvbt avermedia_dvbt
* rc-avermedia-m135a avermedia_m135a
* rc-avermedia-m733a-rm-k6 avermedia_m733a_rm_k6
* rc-avermedia-rm-ks avermedia_rm_ks
* rc-avermedia avermedia
* rc-avertv-303 avertv_303
* rc-azurewave-ad-tu700 azurewave_ad_tu700
* rc-behold-columbus behold_columbus
* rc-behold behold
* rc-budget-ci-old budget_ci_old
* rc-cec cec
* rc-cinergy-1400 cinergy_1400
* rc-cinergy cinergy
* rc-delock-61959 delock_61959
* rc-dib0700-nec dib0700_nec
* rc-dib0700-rc5 dib0700_rc5
* rc-digitalnow-tinytwin digitalnow_tinytwin
* rc-digittrade digittrade
* rc-dm1105-nec dm1105_nec
* rc-dntv-live-dvb-t dntv_live_dvb_t
* rc-dntv-live-dvbt-pro dntv_live_dvbt_pro
* rc-dtt200u dtt200u
* rc-dvbsky dvbsky
* rc-em-terratec em_terratec
* rc-encore-enltv-fm53 encore_enltv_fm53
* rc-encore-enltv encore_enltv
* rc-encore-enltv2 encore_enltv2
* rc-evga-indtube evga_indtube
* rc-eztv eztv
* rc-flydvb flydvb
* rc-flyvideo flyvideo
* rc-fusionhdtv-mce fusionhdtv_mce
* rc-gadmei-rm008z gadmei_rm008z
* rc-genius-tvgo-a11mce genius_tvgo_a11mce
* rc-gotview7135 gotview7135
* rc-hauppauge hauppauge
#* rc-imon-mce imon_mce
#* rc-imon-pad imon_pad
* rc-iodata-bctv7e iodata_bctv7e
* rc-it913x-v1 it913x_v1
* rc-it913x-v2 it913x_v2
* rc-kaiomy kaiomy
* rc-kworld-315u kworld_315u
* rc-kworld-pc150u kworld_pc150u
* rc-kworld-plus-tv-analog kworld_plus_tv_analog
* rc-leadtek-y04g0051 leadtek_y04g0051
* rc-lme2510 lme2510
* rc-manli manli
* rc-medion-x10-digitainer medion_x10_digitainer
* rc-medion-x10-or2x medion_x10_or2x
* rc-medion-x10 medion_x10
* rc-msi-digivox-ii msi_digivox_ii
* rc-msi-digivox-iii msi_digivox_iii
* rc-msi-tvanywhere-plus msi_tvanywhere_plus
* rc-msi-tvanywhere msi_tvanywhere
* rc-nebula nebula
* rc-nec-terratec-cinergy-xs nec_terratec_cinergy_xs
* rc-norwood norwood
* rc-npgtech npgtech
* rc-pctv-sedna pctv_sedna
* rc-pinnacle-color pinnacle_color
* rc-pinnacle-grey pinnacle_grey
* rc-pinnacle-pctv-hd pinnacle_pctv_hd
* rc-pixelview-002t pixelview_002t
* rc-pixelview-mk12 pixelview_mk12
* rc-pixelview-new pixelview_new
* rc-pixelview pixelview
* rc-powercolor-real-angel powercolor_real_angel
* rc-proteus-2309 proteus_2309
* rc-purpletv purpletv
* rc-pv951 pv951
* rc-real-audio-220-32-keys real_audio_220_32_keys
* rc-reddo reddo
* rc-snapstream-firefly snapstream_firefly
* rc-streamzap streamzap
* rc-su3000 su3000
* rc-tbs-nec tbs_nec
* rc-technisat-ts35 technisat_ts35
* rc-technisat-usb2 technisat_usb2
* rc-terratec-cinergy-c-pci terratec_cinergy_c_pci
* rc-terratec-cinergy-s2-hd terratec_cinergy_s2_hd
* rc-terratec-cinergy-xs terratec_cinergy_xs
* rc-terratec-slim-2 terratec_slim_2
* rc-terratec-slim terratec_slim
* rc-tevii-nec tevii_nec
* rc-tivo tivo
* rc-total-media-in-hand-02 total_media_in_hand_02
* rc-total-media-in-hand total_media_in_hand
* rc-trekstor trekstor
* rc-tt-1500 tt_1500
* rc-twinhan-dtv-cab-ci twinhan_dtv_cab_ci
* rc-twinhan1027 twinhan_vp1027_dvbs
* rc-videomate-k100 videomate_k100
* rc-videomate-s350 videomate_s350
* rc-videomate-tv-pvr videomate_tv_pvr
* rc-winfast-usbii-deluxe winfast_usbii_deluxe
* rc-winfast winfast
# * * a800 # found in a800.c
# * * af9005 # found in af9005-remote.c
# * * cinergyt2 # found in cinergyT2-core.c
# * * dvico_mce # found in cxusb.c
# * * dvico_portable # found in cxusb.c
# * * d680_dmb # found in cxusb.c
# * * dibusb # found in dibusb-common.c
# * * digitv # found in digitv.c
# * * megasky # found in m920x.c
# * * tvwalkerir-kbd-i2c rc-hauppauge /lib/udev/rc_keymaps/rc-hauppaugetwin # found in m920x.c
# * * pinnacle310e # found in m920x.c
# * * haupp # found in nova-t-usb2.c
# * * opera1 # found in opera1.c
# * * vp702x # found in vp702x.c
# * * vp7045 # found in vp7045.c
# Hauppauge PVR 350
ir-kbd-i2c rc-hauppauge /lib/udev/rc_keymaps/rc-hauppauge
# imon-pad
imon rc-imon-pad /lib/udev/rc_keymaps/rc-imon-pad
imon rc-imon-mce /lib/udev/rc_keymaps/rc-imon-mce
# TT-1500/1501
* rc-tt-1500 /lib/udev/rc_keymaps/rc-tt-1500
budget_ci rc-tt-1500 /lib/udev/rc_keymaps/rc-tt-1501
# rc-rc6-mce
* rc-rc6-mce /lib/udev/rc_keymaps/rc-rc6-mce
# CIR
ite-cir rc-rc6-mce /lib/udev/rc_keymaps/rc-rc6-mce
nuvoton-cir rc-rc6-mce /lib/udev/rc_keymaps/rc-rc6-mce
# mceusb
mceusb rc-rc6-mce /lib/udev/rc_keymaps/HOPLOrc6
# Skystarhd2
mantis_core * /lib/udev/rc_keymaps/skystarhd2
# Medion X10
ati_remote rc-medion-x10 /lib/udev/rc_keymaps/rc-medion-x10
ati_remote rc-medion-x10-or2x /lib/udev/rc_keymaps/rc-medion-x10-or2x
ati_remote rc-medion-x10-digitainer /lib/udev/rc_keymaps/rc-medion-x10-digitainer

View File

@@ -21,6 +21,14 @@
owner: '{{ vdr.user }}' owner: '{{ vdr.user }}'
group: '{{ vdr.group }}' group: '{{ vdr.group }}'
- name: "expand template for vdr's .Xresources"
template:
src: 'templates/.Xresources.j2'
dest: '{{ vdr.home }}/.Xresources'
mode: 0644
owner: '{{ vdr.user }}'
group: '{{ vdr.group }}'
- name: expand template for openbox autostart - name: expand template for openbox autostart
template: template:
src: 'templates/openbox/autostart.j2' src: 'templates/openbox/autostart.j2'
@@ -79,6 +87,15 @@
src: templates/systemd/user/osd2web.service.j2 src: templates/systemd/user/osd2web.service.j2
dest: '{{ vdr.home }}/.config/systemd/user/osd2web.service' dest: '{{ vdr.home }}/.config/systemd/user/osd2web.service'
- name: create irexec configuration for the session
block:
- template:
src: templates/systemd/user/irexec.service.j2
dest: '{{ vdr.home }}/.config/systemd/user/irexec.service'
- template:
src: templates/.lircrc.j2
dest: '{{ vdr.home }}/.lircrc'
- name: link /usr/bin/start-desktop to /var/lib/vdr/plugins/desktop/starter - name: link /usr/bin/start-desktop to /var/lib/vdr/plugins/desktop/starter
file: file:
src: /usr/bin/start-desktop src: /usr/bin/start-desktop

View File

@@ -28,7 +28,40 @@
name: x@vt7.service name: x@vt7.service
state: stopped state: stopped
- name: "wait a little bit before starting x-verbose@vt7.service (needed?)" - name: Workaround for wrong connector names on first run
block:
- name: "wait a little bit before starting x-verbose@vt7.service (needed?)"
wait_for:
timeout: 10
- name: "start x-verbose@.service"
systemd:
name: "x-verbose@vt7.service"
state: started
enabled: false
masked: false
daemon_reload: true
- name: "wait a little bit, so X has some time to start up (needed?)"
wait_for:
timeout: 3
- name: "stop x-verbose@vt7.service"
systemd:
name: "x-verbose@vt7.service"
state: stopped
enabled: false
masked: true
tags: first_run
- name: "wait a little bit, so X has some time to shut down (needed?)"
wait_for:
timeout: 3
- name: "trigger udevadm reload"
command: 'udevadm trigger '
- name: "wait a little bit, so udev has some time to reapply rules (needed?)"
wait_for: wait_for:
timeout: 3 timeout: 3

View File

@@ -1,5 +1,8 @@
--- ---
# file: roles/yavdr-xorg/tasks/main.yml # file: roles/yavdr-xorg/tasks/main.yml
- import_tasks: setup-xorg.yml tags=install,update - import_tasks: setup-xorg.yml
- import_tasks: detect-xorg.yml tags=xorg:detect,install tags: [install,update]
- import_tasks: desktop-session.yml tags=install,update - import_tasks: detect-xorg.yml
tags: [xorg.detect,install]
- import_tasks: desktop-session.yml
tags: [install,update]

View File

@@ -8,6 +8,7 @@
- "/etc/systemd/system/x@.service.d/" - "/etc/systemd/system/x@.service.d/"
- "/etc/systemd/system/vdr.service.d/" - "/etc/systemd/system/vdr.service.d/"
- "/etc/systemd/system/user@{{ vdr.uid }}.service.d/" - "/etc/systemd/system/user@{{ vdr.uid }}.service.d/"
- "/etc/X11/xorg.conf.d/"
- name: systemd-drop-in | add dependency to X-server for vdr.service - name: systemd-drop-in | add dependency to X-server for vdr.service
template: template:
@@ -24,6 +25,11 @@
src: templates/systemd/vdr-environ.j2 src: templates/systemd/vdr-environ.j2
dest: /etc/systemd/system/vdr.service.d/load-environ.conf dest: /etc/systemd/system/vdr.service.d/load-environ.conf
- name: systemd-drop-in | start vdr.service after network-online.target
template:
src: templates/systemd/network-online.j2
dest: /etc/systemd/system/vdr.service.d/network-online.conf
- name: systemd-drop-in | user@{{ vdr.uid }}.service depends on x@vt7.service - name: systemd-drop-in | user@{{ vdr.uid }}.service depends on x@vt7.service
template: template:
src: templates/user@666.service.d/x-dependency.conf.j2 src: templates/user@666.service.d/x-dependency.conf.j2
@@ -61,8 +67,26 @@
- read-edid - read-edid
- tmux - tmux
- vdr-plugin-desktop - vdr-plugin-desktop
- vdr-plugin-osd2web
- feh
#- yavdr-xorg #- yavdr-xorg
- name: download yavdr logo
block:
- file:
dest: '/usr/share/yavdr/images'
state: directory
- get_url:
url: 'https://github.com/yavdr/yavdr-base/raw/master/images/yavdr_logo.png'
dest: '/usr/share/yavdr/images/yavdr_logo.png'
- name: command | write keyboard configuration to /etc/X11/xorg.conf.d/00-keyboard.conf
command: write-x11-keyboard-config
creates: /etc/X11/xorg.conf.d/00-keyboard.conf
# NOTE: write-x11-keyboard-config is in the xlogin package
# Ubuntu's systemd is patched, so it does not create the file automatically
- name: apt | install desktop programs - name: apt | install desktop programs
apt: apt:
name: '{{ item }}' name: '{{ item }}'

View File

@@ -0,0 +1,16 @@
xterm*background: Black
xterm*foreground: grey
XTerm*locale: true
XTerm*metaSendsEscape: true
XTerm*eightBitInput: false
XTerm*backarrowKey: false
XTerm*ttyModes: erase ^?
Xterm*saveLines: 4096
XTerm.vt100.metaSendsEscape: true
XTerm.vt100.geometry: 80x32
XTerm.vt100.renderFont: true
xterm*faceName: xft:DejaVu Sans Mono
xterm*faceSize: 14
xterm*renderFont: true
XTerm.vt100.faceName: xft:DejaVu Sans Mono:size=12:antialias=false
XTerm.vt100.font: 7x13

View File

@@ -0,0 +1,5 @@
begin
prog = irexec
button = KEY_HOME
config = frontend-dbus-send switchbetween kodi vdr
end

View File

@@ -1,3 +1,3 @@
#!/bin/bash #!/bin/bash
# {{ ansible_managed_file }} {{ ansible_managed_file | comment }}
exec openbox-session exec openbox-session

View File

@@ -3,11 +3,13 @@
env | grep "DISPLAY\|DBUS_SESSION_BUS_ADDRESS\|XDG_RUNTIME_DIR" > ~/.session-env env | grep "DISPLAY\|DBUS_SESSION_BUS_ADDRESS\|XDG_RUNTIME_DIR" > ~/.session-env
systemctl --user import-environment DISPLAY XAUTHORITY XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS systemctl --user import-environment DISPLAY XAUTHORITY XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS
feh --bg-center "/usr/share/yavdr/images/yavdr_logo.png"
enabled_services=( enabled_services=(
"tmux.service" "detect-second-display.service" "tmux.service" "detect-second-display.service"
"openbox-second.service" "osd2web.service" "openbox-second.service" "osd2web.service"
"yavdr-frontend.service" "pulseaudio.socket" "yavdr-frontend.service" "pulseaudio.socket"
"pulseaudio.service" "wm-exit.service") "pulseaudio.service" "wm-exit.service" "irexec.service")
disabled_services=() disabled_services=()
# enable configured services for the user session # enable configured services for the user session

View File

@@ -54,7 +54,7 @@
S: shade (roll up/down) S: shade (roll up/down)
D: omnipresent (on all desktops). D: omnipresent (on all desktops).
--> -->
<keepBorder>yes</keepBorder> <keepBorder>no</keepBorder>
<animateIconify>yes</animateIconify> <animateIconify>yes</animateIconify>
<font place="ActiveWindow"> <font place="ActiveWindow">
<name>sans</name> <name>sans</name>
@@ -321,22 +321,6 @@
<direction>down</direction> <direction>down</direction>
</action> </action>
</keybind> </keybind>
<!-- Keybindings for running applications -->
<keybind key="W-e">
<action name="Execute">
<startupnotify>
<enabled>true</enabled>
<name>Konqueror</name>
</startupnotify>
<command>kfmclient openProfile filemanagement</command>
</action>
</keybind>
<!-- Launch scrot when Print is pressed -->
<keybind key="Print">
<action name="Execute">
<command>scrot</command>
</action>
</keybind>
</keyboard> </keyboard>
<mouse> <mouse>
<dragThreshold>1</dragThreshold> <dragThreshold>1</dragThreshold>
@@ -796,21 +780,27 @@
<applications> <applications>
<application title="softhddevice"> <application title="softhddevice">
<decor>no</decor> <decor>no</decor>
<maximized>true</maximized> <maximized>yes</maximized>
<!--<skip_pager>yes</skip_pager>-->
<skip_taskbar>no</skip_taskbar>
</application>
<application class="VDR">
<decor>no</decor>
<maximized>yes</maximized>
<!--<skip_pager>yes</skip_pager>--> <!--<skip_pager>yes</skip_pager>-->
<skip_taskbar>no</skip_taskbar> <skip_taskbar>no</skip_taskbar>
</application> </application>
<application title="browser"> <application title="browser">
<decor>no</decor> <decor>no</decor>
<maximized>true</maximized> <maximized>yes</maximized>
<!--<skip_pager>yes</skip_pager>--> <!--<skip_pager>yes</skip_pager>-->
<skip_taskbar>yes</skip_taskbar> <skip_taskbar>no</skip_taskbar>
</application> </application>
<application title="osd2Web"> <application title="osd2Web">
<decor>no</decor> <decor>no</decor>
<maximized>true</maximized> <maximized>yes</maximized>
<!--<skip_pager>yes</skip_pager>--> <!--<skip_pager>yes</skip_pager>-->
<skip_taskbar>yes</skip_taskbar> <skip_taskbar>no</skip_taskbar>
</application> </application>
</applications> </applications>
</openbox_config> </openbox_config>

View File

@@ -0,0 +1,2 @@
[Unit]
After=network-online.target

View File

@@ -0,0 +1,9 @@
[Unit]
Description=LIRC command handler
[Service]
Type=simple
ExecStart=/usr/bin/irexec %h/.lircrc
[Install]
WantedBy=yavdr-desktop.target

View File

@@ -9,6 +9,7 @@ ConditionFileNotEmpty=%h/.second_display
PassEnvironment=XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS PassEnvironment=XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS
EnvironmentFile=%h/.second_display EnvironmentFile=%h/.second_display
ExecStart=/usr/bin/openbox --config-file %h/.config/openbox/rc.xml ExecStart=/usr/bin/openbox --config-file %h/.config/openbox/rc.xml
ExecStartPost=/bin/bash %h/.fehbg
[Install] [Install]
WantedBy=yavdr-desktop.target WantedBy=yavdr-desktop.target

View File

@@ -7,7 +7,7 @@ ConditionFileNotEmpty=%h/.second_display
[Service] [Service]
EnvironmentFile=%h/.second_display EnvironmentFile=%h/.second_display
PassEnvironment=XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS PassEnvironment=XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS
ExecStart=/usr/bin/on_vdr -o -c 'kiosk-browser "http://localhost:4444/skins/horchiTft/index.html?theme=blue&onlyView=1"' ExecStart=/usr/bin/on_vdr -o -c 'kiosk-browser "http://localhost:4444/skins/horchiTft/index.html?theme=bluecd&onlyView=1"'
KillSignal=SIGINT KillSignal=SIGINT
[Install] [Install]

View File

@@ -1,5 +1,4 @@
# file: roles/yavdr-xorg/templates/vdr-xorg.conf {{ ansible_managed_file | comment }}
# {{ ansible_managed_file }}
[Unit] [Unit]
After=x@vt7.service After=x@vt7.service
Wants=x@vt7.service Wants=x@vt7.service

View File

@@ -48,7 +48,9 @@ Section "Screen"
Option "ConnectedMonitor" "{{ xorg.primary.connector }}{% if xorg.secondary is defined %}, {{ xorg.secondary.connector }}{% endif %}" Option "ConnectedMonitor" "{{ xorg.primary.connector }}{% if xorg.secondary is defined %}, {{ xorg.secondary.connector }}{% endif %}"
Option "UseDisplayDevice" "{{ xorg.primary.connector }}" Option "UseDisplayDevice" "{{ xorg.primary.connector }}"
Option "CustomEDID" "{{ xorg.primary.connector }}:/etc/X11/edid.{{ xorg.primary.connector }}.bin" Option "CustomEDID" "{{ xorg.primary.connector }}:/etc/X11/edid.{{ xorg.primary.connector }}.bin"
Option "metamodes" "{{ xorg.primary.connector }}: {{ xorg.primary.mode }} +0+0" Option "metamodes" "{{ xorg.primary.connector }}: {{ xorg.primary.mode }} +0+0 {ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}"
Option "AllowIndirectGLXProtocol" "off"
Option "TripleBuffer" "on"
Option "SLI" "Off" Option "SLI" "Off"
Option "MultiGPU" "Off" Option "MultiGPU" "Off"
Option "BaseMosaic" "off" Option "BaseMosaic" "off"
@@ -87,7 +89,9 @@ Section "Screen"
Option "ConnectedMonitor" "{{ xorg.secondary.connector }}" Option "ConnectedMonitor" "{{ xorg.secondary.connector }}"
Option "UseDisplayDevice" "{{ xorg.secondary.connector }}" Option "UseDisplayDevice" "{{ xorg.secondary.connector }}"
Option "CustomEDID" "{{ xorg.secondary.connector }}:/etc/X11/edid.{{ xorg.secondary.connector }}.bin" Option "CustomEDID" "{{ xorg.secondary.connector }}:/etc/X11/edid.{{ xorg.secondary.connector }}.bin"
Option "metamodes" "{{ xorg.secondary.connector }}: {{ xorg.secondary.mode }} +0+0" Option "metamodes" "{{ xorg.secondary.connector }}: {{ xorg.secondary.mode }} +0+0 {ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}"
Option "AllowIndirectGLXProtocol" "off"
Option "TripleBuffer" "on"
Option "SLI" "Off" Option "SLI" "Off"
Option "MultiGPU" "Off" Option "MultiGPU" "Off"
Option "BaseMosaic" "off" Option "BaseMosaic" "off"

View File

@@ -27,14 +27,13 @@
- autoinstall-hauppauge-pvr # install vdr-plugin-pvrinput if a matching card is found - autoinstall-hauppauge-pvr # install vdr-plugin-pvrinput if a matching card is found
- autoinstall-dvbsddevice # install vdr-plugin-dvbsddevice if a matching card is detected - autoinstall-dvbsddevice # install vdr-plugin-dvbsddevice if a matching card is detected
- autoinstall-hardware-irmp # install yavdr-hardware-irmp if a matching usb device is detected - autoinstall-hardware-irmp # install yavdr-hardware-irmp if a matching usb device is detected
- autoinstall-atric-usb # preconfigure lircd for Atric IR-WakeupUSB receiver
- autoinstall-dvbsky-firmware # download an install required firmware files for dvbsky cards - autoinstall-dvbsky-firmware # download an install required firmware files for dvbsky cards
- kodi - kodi
- dvd # set up packages and a udev rule to allow kodi and other players - dvd # set up packages and a udev rule to allow kodi and other players
# to play and eject optical media # to play and eject optical media
- wakeup # set up wakeup methods for rtc etc. - wakeup # set up wakeup methods for rtc etc.
- grub-config # configure grub - grub-config # configure grub
tags:
- always
handlers: handlers:
- import_tasks: handlers/main.yml - import_tasks: handlers/main.yml