From f2013a8ef07503aef3d676644be22392edfe2543 Mon Sep 17 00:00:00 2001 From: Salt Date: Wed, 16 Sep 2020 11:54:48 -0500 Subject: [PATCH 1/6] Add pulse configs --- roles/desktop-common/tasks/main.yml | 2 ++ .../templates/pulse-daemon.conf | 23 +++++++++++++++++++ .../desktop-common/templates/pulse-default.pa | 10 ++++++++ 3 files changed, 35 insertions(+) create mode 100644 roles/desktop-common/templates/pulse-daemon.conf create mode 100644 roles/desktop-common/templates/pulse-default.pa diff --git a/roles/desktop-common/tasks/main.yml b/roles/desktop-common/tasks/main.yml index 8171acc..50bf19f 100644 --- a/roles/desktop-common/tasks/main.yml +++ b/roles/desktop-common/tasks/main.yml @@ -23,6 +23,8 @@ dest: "{{ item.dest }}" mode: "{{ item.mode }}" loop: + - { src: "pulse-daemon.conf", dest: "/etc/pulse/daemon.conf", mode: "0644" } + - { src: "pulse-default.pa", dest: "/etc/pulse/default.pa", mode: "0644" } - { src: "sshd_config", dest: "/etc/ssh/sshd_config", mode: "0644" } - { src: "nomouseaccel.conf", dest: "/etc/X11/xorg.conf.d/90-mouse-acceleration.conf", mode: "0644" } - { src: "touchpad.conf", dest: "/etc/X11/xorg.conf.d/90-touchpad.conf", mode: "0644" } diff --git a/roles/desktop-common/templates/pulse-daemon.conf b/roles/desktop-common/templates/pulse-daemon.conf new file mode 100644 index 0000000..11af05c --- /dev/null +++ b/roles/desktop-common/templates/pulse-daemon.conf @@ -0,0 +1,23 @@ +# Configuration file for the PulseAudio daemon. See pulse-daemon.conf(5) for +# more information. Default values are commented out. Use either ; or # for +# commenting. + +# Bugfixes for my desktop's audio card +realtime-scheduling = no # Fixes a weird stutter issue + +# Sanity +flat-volumes = no + +# Audio Quality +default-sample-format = s32le # Pulse does 16bit sampling by default for some reason +default-sample-rate = 48000 # Higher sample rate than default +alternate-sample-rate = 44100 +resample-method = speex-float-5 # Increase resampling quality +avoid-resampling = true + +default-fragments = 5 # Pulse, why are you so friggin latent by default? +default-fragment-size-msec = 10 + +high-priority = yes +nice-level = -19 + diff --git a/roles/desktop-common/templates/pulse-default.pa b/roles/desktop-common/templates/pulse-default.pa new file mode 100644 index 0000000..46c13c2 --- /dev/null +++ b/roles/desktop-common/templates/pulse-default.pa @@ -0,0 +1,10 @@ +#!/usr/bin/pulseaudio -nF +.include /etc/pulse/default.pa + +# Gets around a weird audio skipping bug on my desktop +.ifexists module-udev-detect.so +load-module module-udev-detect tsched=0 + +# My laptop gets sink suspension popping when using headphones +unload-module module-suspend-on-idle + From 054405e8e10436005885e39b0eb1564166fcea87 Mon Sep 17 00:00:00 2001 From: Salt Date: Wed, 16 Sep 2020 12:29:07 -0500 Subject: [PATCH 2/6] Install Slack via apt instead of snap Not only does this afford me more control but it gets me easier logging --- roles/desktop-common/tasks/packages.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/roles/desktop-common/tasks/packages.yml b/roles/desktop-common/tasks/packages.yml index 196197c..f4c0315 100644 --- a/roles/desktop-common/tasks/packages.yml +++ b/roles/desktop-common/tasks/packages.yml @@ -191,6 +191,7 @@ apt: deb: "{{ item }}" loop: + - "https://downloads.slack-edge.com/linux_releases/slack-desktop-4.8.0-amd64.deb" - "https://github.com/MultiMC/MultiMC5/releases/download/0.6.8/multimc_1.4-1.deb" - "https://zoom.us/client/latest/zoom_amd64.deb" - name: Install desktop applications through pip3 @@ -208,17 +209,12 @@ - sengi - scrcpy # Remote Android viewing - spotify # Forgive me father - - name: Install Snap applications classically - snap: - classic: yes - name: "{{ item }}" - loop: - - slack - name: Remove Snap applications snap: name: - pixelorama - riot-web + - slack state: absent - name: Remove desktop applications through APT apt: From 2a43b55cddfbfa1be95a16657fa692dab2945f1b Mon Sep 17 00:00:00 2001 From: Salt Date: Wed, 16 Sep 2020 12:46:55 -0500 Subject: [PATCH 3/6] Hey I need the default pulse configs whoops --- roles/desktop-common/tasks/main.yml | 1 + .../templates/pulse-client.conf | 3 + .../desktop-common/templates/pulse-default.pa | 73 ++++++++++++++++++- 3 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 roles/desktop-common/templates/pulse-client.conf diff --git a/roles/desktop-common/tasks/main.yml b/roles/desktop-common/tasks/main.yml index 50bf19f..de9808e 100644 --- a/roles/desktop-common/tasks/main.yml +++ b/roles/desktop-common/tasks/main.yml @@ -23,6 +23,7 @@ dest: "{{ item.dest }}" mode: "{{ item.mode }}" loop: + - { src: "pulse-client.conf", dest: "/etc/pulse/client.conf", mode: "0644" } - { src: "pulse-daemon.conf", dest: "/etc/pulse/daemon.conf", mode: "0644" } - { src: "pulse-default.pa", dest: "/etc/pulse/default.pa", mode: "0644" } - { src: "sshd_config", dest: "/etc/ssh/sshd_config", mode: "0644" } diff --git a/roles/desktop-common/templates/pulse-client.conf b/roles/desktop-common/templates/pulse-client.conf new file mode 100644 index 0000000..116187e --- /dev/null +++ b/roles/desktop-common/templates/pulse-client.conf @@ -0,0 +1,3 @@ +# Managed via Ansible +autospawn = no +default-server = unix:/tmp/pulse-server diff --git a/roles/desktop-common/templates/pulse-default.pa b/roles/desktop-common/templates/pulse-default.pa index 46c13c2..464f143 100644 --- a/roles/desktop-common/templates/pulse-default.pa +++ b/roles/desktop-common/templates/pulse-default.pa @@ -1,10 +1,77 @@ #!/usr/bin/pulseaudio -nF -.include /etc/pulse/default.pa +#!/usr/bin/pulseaudio -nF +# +.fail -# Gets around a weird audio skipping bug on my desktop +load-module module-device-restore +load-module module-stream-restore +load-module module-card-restore +load-module module-augment-properties +### Should be after module-*-restore but before module-*-detect +load-module module-switch-on-port-available +### Use hot-plugged devices like Bluetooth or USB automatically (LP: #1702794) +.ifexists module-switch-on-connect.so +load-module module-switch-on-connect +.endif + +# Device detection +.ifexists module-udev-detect.so +load-module module-udev-detect +.else +load-module module-detect +.endif + +# Bluetooth +.ifexists module-bluetooth-policy.so +load-module module-bluetooth-policy +.endif +.ifexists module-bluetooth-discover.so +load-module module-bluetooth-discover +.endif + +# Protocols +.ifexists module-esound-protocol-unix.so +load-module module-esound-protocol-unix +.endif +load-module module-native-protocol-unix auth-group=audio socket=/tmp/pulse-server + +# Load GSettings/paprefs modules +.ifexists module-gsettings.so +.nofail +load-module module-gsettings +.fail +.endif + +load-module module-default-device-restore +load-module module-always-sink +load-module module-intended-roles +load-module module-suspend-on-idle + +### If autoexit on idle is enabled we want to make sure we only quit +### when no local session needs us anymore. +.ifexists module-console-kit.so +load-module module-console-kit +.endif +.ifexists module-systemd-login.so +load-module module-systemd-login +.endif + +# Enable positioned event sounds +load-module module-position-event-sounds +# Cork music/video streams when a phone stream is active +load-module module-role-cork +# Block audio recording for snap confined packages +.ifexists module-snap-policy.so +load-module module-snap-policy +.endif + +load-module module-filter-heuristics +load-module module-filter-apply + +## Gets around a weird audio skipping bug on my desktop .ifexists module-udev-detect.so load-module module-udev-detect tsched=0 -# My laptop gets sink suspension popping when using headphones +## My laptop gets sink suspension popping when using headphones unload-module module-suspend-on-idle From acc12fbaa0d37fd4af77ed8747169a57b8c98b01 Mon Sep 17 00:00:00 2001 From: Salt Date: Wed, 16 Sep 2020 13:36:11 -0500 Subject: [PATCH 4/6] Add basic motd to all machines --- roles/common/tasks/main.yml | 8 ++++++ roles/common/templates/50-ansible-motd.sh | 34 +++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100755 roles/common/templates/50-ansible-motd.sh diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml index 979a085..3187c55 100644 --- a/roles/common/tasks/main.yml +++ b/roles/common/tasks/main.yml @@ -33,6 +33,7 @@ copy: src: "motd-news" dest: "/etc/default/motd-news" + tags: [ motd ] - name: Disable default update-motd tasks file: path: "/etc/update-motd.d/{{ item }}" @@ -49,7 +50,14 @@ - "92-unattended-upgrades" - "95-hwe-eol" - "97-overlayroot" + tags: [ motd ] when: ansible_distribution == "Ubuntu" + - name: Add update-motd tasks + template: + src: 50-ansible-motd.sh + dest: /etc/update-motd.d/50-ansible + mode: "0755" + tags: [ motd ] - name: Configure Ansible user include_tasks: ansibleuser.yml become: yes diff --git a/roles/common/templates/50-ansible-motd.sh b/roles/common/templates/50-ansible-motd.sh new file mode 100755 index 0000000..6d13fe3 --- /dev/null +++ b/roles/common/templates/50-ansible-motd.sh @@ -0,0 +1,34 @@ +#! /bin/sh +# +# 50-ansible-motd.sh +# Copyright (C) 2020 Vintage Salt +# +# Distributed under terms of the MIT license. +# + +# Service statuses +if command -v systemctl > /dev/null 2>&1; then + len=20 + printf "Services:\n" + for unit in \ + 9iron-backup \ + ansible-pull + do + systemctl status $unit > /dev/null 2>&1 + case $? in + 0) + printf " * %-${len}.${len}s\e[32mRunning\e[0m\n" $unit + ;; + 1|2) + printf " * %-${len}.${len}s\e[31mDead\e[0m\n" $unit + ;; + 3) + printf " * %-${len}.${len}s\e[34mExited\e[0m\n" $unit + ;; + *) + printf " * %-${len}.${len}s\e[33mUnknown\e[0m\n" "$unit" + ;; + esac + done +fi + From c351c32c0526ccd2cd61cb86bdd270a994edcc6e Mon Sep 17 00:00:00 2001 From: Salt Date: Wed, 16 Sep 2020 13:59:31 -0500 Subject: [PATCH 5/6] Switch to Spotify through deb I dunno what I broke but I broke it and I don't have these issues with the deb so whatever --- roles/desktop-common/tasks/packages.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/roles/desktop-common/tasks/packages.yml b/roles/desktop-common/tasks/packages.yml index f4c0315..0ee430e 100644 --- a/roles/desktop-common/tasks/packages.yml +++ b/roles/desktop-common/tasks/packages.yml @@ -19,10 +19,14 @@ url: "{{ item }}" loop: - "https://packages.riot.im/debian/riot-im-archive-keyring.gpg" # Element + - "https://download.spotify.com/debian/pubkey.gpg" # Spotify 1 + - "https://download.spotify.com/debian/pubkey_0D811D58.gpg" # Spotify 2 - name: Add repos apt_repository: repo: "{{ item }}" loop: + # Spotify + - "deb http://repository.spotify.com stable non-free" # Monodevelop - "deb https://download.mono-project.com/repo/ubuntu vs-bionic main" # Element @@ -151,6 +155,8 @@ - retroarch - rofi - scrot + - slack-desktop + - spotify-client - steam-installer - syncthing-gtk - telegram-desktop @@ -208,13 +214,13 @@ - discord - sengi - scrcpy # Remote Android viewing - - spotify # Forgive me father - name: Remove Snap applications snap: name: - pixelorama - riot-web - slack + - spotify state: absent - name: Remove desktop applications through APT apt: From 8aa0027bfae67bad29e46234a2ffe230685a8904 Mon Sep 17 00:00:00 2001 From: Salt Date: Wed, 16 Sep 2020 14:28:02 -0500 Subject: [PATCH 6/6] Add new pulseaudio role It's like system mode but not --- playbooks/home.yml | 2 ++ roles/desktop-common/tasks/main.yml | 3 -- roles/pulseaudio/tasks/main.yml | 32 +++++++++++++++++++ .../templates/pulse-client.conf | 0 .../templates/pulse-daemon.conf | 0 .../templates/pulse-default.pa | 0 roles/pulseaudio/templates/pulseaudio.service | 23 +++++++++++++ 7 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 roles/pulseaudio/tasks/main.yml rename roles/{desktop-common => pulseaudio}/templates/pulse-client.conf (100%) rename roles/{desktop-common => pulseaudio}/templates/pulse-daemon.conf (100%) rename roles/{desktop-common => pulseaudio}/templates/pulse-default.pa (100%) create mode 100644 roles/pulseaudio/templates/pulseaudio.service diff --git a/playbooks/home.yml b/playbooks/home.yml index 339bc2e..7952510 100644 --- a/playbooks/home.yml +++ b/playbooks/home.yml @@ -40,6 +40,8 @@ 38306234316364306134396138376230626630633733306432626637616239373838646433343761 3436643661633766616564663937346232353666386531363438 tags: [ desktop ] + - role: pulseaudio + tags: [ pulse, pulseaudio ] - role: desktop-sddm vars: sddm_theme_name: "breeze" diff --git a/roles/desktop-common/tasks/main.yml b/roles/desktop-common/tasks/main.yml index de9808e..8171acc 100644 --- a/roles/desktop-common/tasks/main.yml +++ b/roles/desktop-common/tasks/main.yml @@ -23,9 +23,6 @@ dest: "{{ item.dest }}" mode: "{{ item.mode }}" loop: - - { src: "pulse-client.conf", dest: "/etc/pulse/client.conf", mode: "0644" } - - { src: "pulse-daemon.conf", dest: "/etc/pulse/daemon.conf", mode: "0644" } - - { src: "pulse-default.pa", dest: "/etc/pulse/default.pa", mode: "0644" } - { src: "sshd_config", dest: "/etc/ssh/sshd_config", mode: "0644" } - { src: "nomouseaccel.conf", dest: "/etc/X11/xorg.conf.d/90-mouse-acceleration.conf", mode: "0644" } - { src: "touchpad.conf", dest: "/etc/X11/xorg.conf.d/90-touchpad.conf", mode: "0644" } diff --git a/roles/pulseaudio/tasks/main.yml b/roles/pulseaudio/tasks/main.yml new file mode 100644 index 0000000..3c01464 --- /dev/null +++ b/roles/pulseaudio/tasks/main.yml @@ -0,0 +1,32 @@ +#!/usr/bin/ansible-playbook +# vim:ft=ansible: +--- +- name: Install and configure PulseAudio + block: + - name: Install packages + apt: + name: + - pulseaudio + - name: Template out configs + template: + src: "{{ item.src }}" + dest: "{{ item.dest }}" + mode: "{{ item.mode }}" + loop: + - { src: "pulse-client.conf", dest: "/etc/pulse/client.conf", mode: "0644" } + - { src: "pulse-daemon.conf", dest: "/etc/pulse/daemon.conf", mode: "0644" } + - { src: "pulse-default.pa", dest: "/etc/pulse/default.pa", mode: "0644" } + - { src: "pulseaudio.service", dest: "/etc/systemd/system/pulseaudio.service", mode: "0644" } + - name: Assure pulse user + user: + name: pulseaudio + password: "!" + system: yes + home: /var/lib/pulse + groups: audio + - name: Enable service + systemd: + name: pulseaudio + enabled: yes + daemon_reload: yes + become: yes diff --git a/roles/desktop-common/templates/pulse-client.conf b/roles/pulseaudio/templates/pulse-client.conf similarity index 100% rename from roles/desktop-common/templates/pulse-client.conf rename to roles/pulseaudio/templates/pulse-client.conf diff --git a/roles/desktop-common/templates/pulse-daemon.conf b/roles/pulseaudio/templates/pulse-daemon.conf similarity index 100% rename from roles/desktop-common/templates/pulse-daemon.conf rename to roles/pulseaudio/templates/pulse-daemon.conf diff --git a/roles/desktop-common/templates/pulse-default.pa b/roles/pulseaudio/templates/pulse-default.pa similarity index 100% rename from roles/desktop-common/templates/pulse-default.pa rename to roles/pulseaudio/templates/pulse-default.pa diff --git a/roles/pulseaudio/templates/pulseaudio.service b/roles/pulseaudio/templates/pulseaudio.service new file mode 100644 index 0000000..3d07b92 --- /dev/null +++ b/roles/pulseaudio/templates/pulseaudio.service @@ -0,0 +1,23 @@ +# vim:ft=systemd +# NOTE: This service is ONLY useful IF you have the following: +# * client.conf is set to not autospawn and listen to a socket instead +# * default.pa is configured to start such a socket +# Using this unit file and complaining to me that it doesn't work without +# the other configs in place will result in me not giving a shit + +## THIS UNIT DOES NOT START PULSE IN SYSTEM MODE +## THIS UNIT DOES NOT START PULSE IN SYSTEM MODE +## THIS UNIT DOES NOT START PULSE IN SYSTEM MODE +## THIS UNIT DOES NOT START PULSE IN SYSTEM MODE +## THIS UNIT DOES NOT START PULSE IN SYSTEM MODE +[Unit] +Description=Pulseaudio sound server + +[Service] +User=pulseaudio +Group=pulseaudio +ExecStart=/usr/bin/pulseaudio --disallow-exit +ExecReload=/bin/kill -HUP $MAINPID + +[Install] +WantedBy=multi-user.target