From ac8114ae87b3907a3c492027206b825e93c2431c Mon Sep 17 00:00:00 2001 From: Zachary Seguin Date: Sat, 14 Apr 2018 16:18:19 -0400 Subject: [PATCH] Add gui role --- playbooks/test.yml | 1 + roles/gui/files/chrome-kerberos.json | 3 + roles/gui/files/firefox-kerberos.js | 5 + roles/gui/files/lightdm-gtk-greeter.conf | 63 +++++ roles/gui/files/lightdm.conf | 5 + roles/gui/files/reset_xsession.sh | 6 + roles/gui/files/xsession-reset.desktop | 3 + roles/gui/files/xsession.desktop | 4 + roles/gui/tasks/main.yml | 342 +++++++++++++++++++++++ 9 files changed, 432 insertions(+) create mode 100644 roles/gui/files/chrome-kerberos.json create mode 100644 roles/gui/files/firefox-kerberos.js create mode 100644 roles/gui/files/lightdm-gtk-greeter.conf create mode 100644 roles/gui/files/lightdm.conf create mode 100755 roles/gui/files/reset_xsession.sh create mode 100644 roles/gui/files/xsession-reset.desktop create mode 100644 roles/gui/files/xsession.desktop create mode 100644 roles/gui/tasks/main.yml diff --git a/playbooks/test.yml b/playbooks/test.yml index e827a56..e887dc6 100644 --- a/playbooks/test.yml +++ b/playbooks/test.yml @@ -7,3 +7,4 @@ - csc-packages - csc-filesystems - general-use + - gui diff --git a/roles/gui/files/chrome-kerberos.json b/roles/gui/files/chrome-kerberos.json new file mode 100644 index 0000000..d92ca7c --- /dev/null +++ b/roles/gui/files/chrome-kerberos.json @@ -0,0 +1,3 @@ +{ + "AuthServerWhitelist": "*.csclub.uwaterloo.ca" +} diff --git a/roles/gui/files/firefox-kerberos.js b/roles/gui/files/firefox-kerberos.js new file mode 100644 index 0000000..3615052 --- /dev/null +++ b/roles/gui/files/firefox-kerberos.js @@ -0,0 +1,5 @@ +// This file can be used to configure global preferences for Firefox +// Example: Homepage +//pref("browser.startup.homepage", "http://www.weebls-stuff.com/wab/"); + +pref("network.negotiate-auth.trusted-uris", ".csclub.uwaterloo.ca"); diff --git a/roles/gui/files/lightdm-gtk-greeter.conf b/roles/gui/files/lightdm-gtk-greeter.conf new file mode 100644 index 0000000..49a8583 --- /dev/null +++ b/roles/gui/files/lightdm-gtk-greeter.conf @@ -0,0 +1,63 @@ +# LightDM GTK+ Configuration +# Available configuration options listed below. +# +# Appearance: +# theme-name = GTK+ theme to use +# icon-theme-name = Icon theme to use +# background = Background file to use, either an image path or a color (e.g. #772953) +# user-background = false|true ("true" by default) Display user background (if available) +# transition-duration = Length of time (in milliseconds) to transition between background images ("500" by default) +# transition-type = ease-in-out|linear|none ("ease-in-out" by default) +# +# Fonts: +# font-name = Font to use +# xft-antialias = false|true Whether to antialias Xft fonts +# xft-dpi = Resolution for Xft in dots per inch (e.g. 96) +# xft-hintstyle = none|slight|medium|hintfull What degree of hinting to use +# xft-rgba = none|rgb|bgr|vrgb|vbgr Type of subpixel antialiasing +# +# Login window: +# active-monitor = Monitor to display greeter window (name or number). Use #cursor value to display greeter at monitor with cursor. Can be a semicolon separated list +# position = x y ("50% 50%" by default) Login window position +# default-user-image = Image used as default user icon, path or #icon-name +# hide-user-image = false|true ("false" by default) +# +# Panel: +# panel-position = top|bottom ("top" by default) +# clock-format = strftime-format string, e.g. %H:%M +# indicators = semi-colon ";" separated list of allowed indicator modules. Built-in indicators include "~a11y", "~language", "~session", "~power", "~clock", "~host", "~spacer". Unity indicators can be represented by short name (e.g. "sound", "power"), service file name, or absolute path +# +# Accessibility: +# a11y-states = states of accessibility features: "name" - save state on exit, "-name" - disabled at start (default value for unlisted), "+name" - enabled at start. Allowed names: contrast, font, keyboard, reader. +# keyboard = command to launch on-screen keyboard (e.g. "onboard") +# keyboard-position = x y[;width height] ("50%,center -0;50% 25%" by default) Works only for "onboard" +# reader = command to launch screen reader (e.g. "orca") +# +# Security: +# allow-debugging = false|true ("false" by default) +# screensaver-timeout = Timeout (in seconds) until the screen blanks when the greeter is called as lockscreen +# +# Template for per-monitor configuration: +# [monitor: name] +# background = overrides default value +# user-background = overrides default value +# laptop = false|true ("false" by default) Marks monitor as laptop display +# transition-duration = overrides default value +# +[greeter] +#background= +#user-background= +#theme-name= +#icon-theme-name= +#font-name= +#xft-antialias= +#xft-dpi= +#xft-hintstyle= +#xft-rgba= +#indicators= +#clock-format= +#keyboard= +#reader= +#position= +#screensaver-timeout= +hide-user-image=true \ No newline at end of file diff --git a/roles/gui/files/lightdm.conf b/roles/gui/files/lightdm.conf new file mode 100644 index 0000000..dfae438 --- /dev/null +++ b/roles/gui/files/lightdm.conf @@ -0,0 +1,5 @@ +[SeatDefaults] +user-session=xsession +greeter-hide-users=true +allow-guest=false +greeter-session=lightdm-gtk-greeter diff --git a/roles/gui/files/reset_xsession.sh b/roles/gui/files/reset_xsession.sh new file mode 100755 index 0000000..d341348 --- /dev/null +++ b/roles/gui/files/reset_xsession.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +if zenity --question --text "Are you sure you want to reset your xsession config file? (will be backed up in ~/.xsession-backup)"; then + mv .xsession .xsession-backup + cp /users/skel/.xsession . +fi diff --git a/roles/gui/files/xsession-reset.desktop b/roles/gui/files/xsession-reset.desktop new file mode 100644 index 0000000..70d5104 --- /dev/null +++ b/roles/gui/files/xsession-reset.desktop @@ -0,0 +1,3 @@ +[Desktop Entry] +Name=Reset user-defined session +Exec=/usr/local/bin/reset_xsession.sh diff --git a/roles/gui/files/xsession.desktop b/roles/gui/files/xsession.desktop new file mode 100644 index 0000000..7dc1d2a --- /dev/null +++ b/roles/gui/files/xsession.desktop @@ -0,0 +1,4 @@ +[Desktop Entry] +Name=User-defined session +Exec=/etc/X11/Xsession +Type=Application diff --git a/roles/gui/tasks/main.yml b/roles/gui/tasks/main.yml new file mode 100644 index 0000000..429c9de --- /dev/null +++ b/roles/gui/tasks/main.yml @@ -0,0 +1,342 @@ +--- + +- name: Install X server and utilities + apt: + name: '{{ item }}' + state: present + cache_valid_time: 3600 + with_items: + - xorg + - xsel + - gksu + - arandr + - redshift + +- name: Install terminal emulators + apt: + name: '{{ item }}' + state: present + cache_valid_time: 3600 + with_items: + - rxvt + - rxvt-unicode-256color + - gnome-terminal + - xfce4-terminal + - konsole + - yakuake + +- name: Install web browsers + apt: + name: '{{ item }}' + state: present + cache_valid_time: 3600 + with_items: + - firefox + - google-chrome-stable + - chromium-browser + - epiphany-browser + - midori + +- name: Create directories for browser configuration + file: + path: '{{ item }}' + state: directory + with_items: + - /etc/opt/chrome/policies/managed + - /etc/firefox + +- name: Copy browser configuration + copy: + src: '{{ item.src }}' + dest: '{{ item.dest }}' + with_items: + - src: chrome-kerberos.json + dest: /etc/opt/chrome/policies/managed/csc-kerberos.json + - src: firefox-kerberos.js + dest: /etc/firefox/syspref.js + +- name: Install Flash player + apt: + name: flashplugin-installer + state: present + cache_valid_time: 3600 + +- name: Install mail clients + apt: + name: '{{ item }}' + state: present + cache_valid_time: 3600 + with_items: + - claws-mail + - thunderbird + - empathy + - pidgin + - pidgin-otr + +- name: Install office applications + apt: + name: '{{ item }}' + state: present + cache_valid_time: 3600 + with_items: + - scribus + - gimp + - xfig + - dia + - inkscape + - libreoffice + - fontforge + - xpdf + - evince + - djview4 + - krita + +- name: Install xubuntu-desktop + apt: + name: xubuntu-desktop + state: present + cache_valid_time: 3600 + +- name: Install window managers + apt: + name: '{{ item }}' + state: present + cache_valid_time: 3600 + with_items: + - xmonad + - libghc-xmonad-contrib-dev + - stumpwm + - wmii + - awesome + - openbox + - openbox-gnome-session + - openbox-kde-session + - i3-wm + +- name: Install desktop environments + apt: + name: '{{ item }}' + state: present + cache_valid_time: 3600 + with_items: + - plasma-desktop + - unity + - gnome + - lxde + - lxde-common + - mate-desktop-environment + - cinnamon-desktop-environment + +- name: Install dbus-user-session (to fix login failures) + apt: + name: dbus-user-session + state: present + cache_valid_time: 3600 + +- name: Disable xscreensaver for xfce4 users + file: + dest: /etc/xdg/autostart/xscreensaver.desktop + state: absent + +- name: Copy xsession sample configuration and reset script + copy: + src: '{{ item.src }}' + dest: '{{ item.dest }}' + with_items: + - src: xsession.desktop + dest: /usr/share/xsessions/xsession.desktop + - src: xsession-reset.desktop + dest: /usr/share/xsessions/xsession-reset.desktop + - src: reset_xsession.sh + dest: /usr/local/bin/reset_xsession.sh + +- name: Disable xsessions + shell: rename 's/$/\.disabled/' /usr/share/xsessions/*.desktop + +- name: Restore sample xsessions + shell: mv /usr/share/xsessions/{{ item }}.desktop.disabled /usr/share/xsessions/{{ item }}.desktop + args: + creates: /usr/share/xsessions/{{ item }}.desktop + removes: /usr/share/xsessions/{{ item }}.desktop.disabled + with_items: + - xsession + - xsession-reset + +- name: Configure lightdm + copy: + src: '{{ item.src }}' + dest: '{{ item.dest }}' + with_items: + - src: lightdm.conf + dest: /etc/lightdm/lightdm.conf + - src: lightdm-gtk-greeter.conf + dest: /etc/lightdm/lightdm-gtk-greeter.conf + +- name: Install widgets + apt: + name: '{{ item }}' + state: present + cache_valid_time: 3600 + with_items: + - xmobar + - i3status + - i3blocks + - dzen2 + - dunst + +- name: Install lockers + apt: + name: '{{ item }}' + state: present + cache_valid_time: 3600 + with_items: + - i3lock + - light-locker + +- name: Install fonts + apt: + name: '{{ item }}' + state: present + cache_valid_time: 3600 + with_items: + - console-setup + - xfonts-terminus + - gsfonts + - gsfonts-x11 + - fonts-dejavu + - fonts-opensymbol + - fonts-freefont-ttf + +- name: Install editors + apt: + name: '{{ item }}' + state: present + cache_valid_time: 3600 + with_items: + - vim-gnome + - lyx + - emacs + - emacs24 + +- name: Install networking tools + apt: + name: '{{ item }}' + state: present + cache_valid_time: 3600 + with_items: + - wireshark + - clusterssh + +- name: Install printing/postscript tools + apt: + name: '{{ item }}' + state: present + cache_valid_time: 3600 + with_items: + - gv + - ghostscript-x + +- name: Install math tools + apt: + name: '{{ item }}' + state: present + cache_valid_time: 3600 + with_items: + - gnuplot-x11 + - rocs + +- name: Install CAD tools + apt: + name: '{{ item }}' + state: present + cache_valid_time: 3600 + with_items: + - carmetal + - xtrkcad + - freecad + - pythoncad + +- name: Install media tools + apt: + name: '{{ item }}' + state: present + cache_valid_time: 3600 + with_items: + - pavucontrol + - vlc + - mpv + - cheese + - amarok + - audacity + - audacious + - lmms + - k3b + - ardour + - imagemagick + - blender + +- name: Install image tools + apt: + name: '{{ item }}' + state: present + cache_valid_time: 3600 + with_items: + - feh + - hugin + - enblend + - enfuse + - hugin-tools + - gthumb + - eog + +- name: Install electronics tools + apt: + name: '{{ item }}' + state: present + cache_valid_time: 3600 + with_items: + - geda + - arduino + - ngspice + - bristol + - cl-rlc + - electric + - gerbv + - gnucap + - gpsim + - gsmc + - gspiceui + - gtkwave + - linsmith + - oregano + - pcb + - pcb-gtk + - tkgate + - xcircuit + - kic + - kicad + +- name: Install virtualization tools + apt: + name: '{{ item }}' + state: present + cache_valid_time: 3600 + with_items: + - virtualbox + - virt-manager + - virt-viewer + +- name: Install misc. tools + apt: + name: '{{ item }}' + state: present + cache_valid_time: 3600 + with_items: + - workrave + - remmina + +- name: Install idle-python + apt: + name: idle-python2.7 + state: present + cache_valid_time: 3600