From a702833aa45357e8b50155b20bf2e6e89f3e4e08 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Fri, 25 Nov 2022 15:53:43 -0500 Subject: [PATCH] Add kanshi for both FreeBSD and Linux. --- ansible/group_vars/all | 1 + ansible/roles/alacritty/tasks/main.yaml | 2 +- ansible/roles/firefox/tasks/main.yaml | 2 +- ansible/roles/fonts/tasks/main.yaml | 2 +- ansible/roles/gpg/tasks/freebsd.yaml | 2 +- ansible/roles/gpg/templates/gpg-agent.conf.j2 | 4 +-- ansible/roles/graphics/tasks/main.yaml | 2 +- ansible/roles/kanshi/files/config_kanshi | 7 +++++ ansible/roles/kanshi/files/kanshi.service | 11 +++++++ .../files/sway_config_files/exec_kanshi.conf | 1 + ansible/roles/kanshi/meta/main.yaml | 3 ++ ansible/roles/kanshi/tasks/common.yaml | 20 +++++++++++++ ansible/roles/kanshi/tasks/freebsd.yaml | 5 ++++ ansible/roles/kanshi/tasks/linux.yaml | 6 ++++ ansible/roles/kanshi/tasks/main.yaml | 2 ++ ansible/roles/kanshi/tasks/peruser.yaml | 29 +++++++++++++++++++ .../roles/kanshi/tasks/peruser_freebsd.yaml | 9 ++++++ ansible/roles/kanshi/tasks/peruser_linux.yaml | 17 +++++++++++ ansible/roles/sway/defaults/main.yaml | 1 - ansible/roles/sway/meta/main.yaml | 1 + ansible/roles/sway/tasks/main.yaml | 2 +- ansible/roles/sway/tasks/peruser.yaml | 5 ---- .../files/sway_config_files/waybar.conf | 0 ansible/roles/waybar/tasks/main.yaml | 2 +- ansible/roles/waybar/tasks/peruser.yaml | 10 +++++++ 25 files changed, 131 insertions(+), 15 deletions(-) create mode 100644 ansible/group_vars/all create mode 100644 ansible/roles/kanshi/files/config_kanshi create mode 100644 ansible/roles/kanshi/files/kanshi.service create mode 100644 ansible/roles/kanshi/files/sway_config_files/exec_kanshi.conf create mode 100644 ansible/roles/kanshi/meta/main.yaml create mode 100644 ansible/roles/kanshi/tasks/common.yaml create mode 100644 ansible/roles/kanshi/tasks/freebsd.yaml create mode 100644 ansible/roles/kanshi/tasks/linux.yaml create mode 100644 ansible/roles/kanshi/tasks/main.yaml create mode 100644 ansible/roles/kanshi/tasks/peruser.yaml create mode 100644 ansible/roles/kanshi/tasks/peruser_freebsd.yaml create mode 100644 ansible/roles/kanshi/tasks/peruser_linux.yaml rename ansible/roles/{sway => waybar}/files/sway_config_files/waybar.conf (100%) diff --git a/ansible/group_vars/all b/ansible/group_vars/all new file mode 100644 index 0000000..6dc5884 --- /dev/null +++ b/ansible/group_vars/all @@ -0,0 +1 @@ +install_graphics: false diff --git a/ansible/roles/alacritty/tasks/main.yaml b/ansible/roles/alacritty/tasks/main.yaml index 9123a57..888f733 100644 --- a/ansible/roles/alacritty/tasks/main.yaml +++ b/ansible/roles/alacritty/tasks/main.yaml @@ -1,2 +1,2 @@ - import_tasks: tasks/common.yaml - when: install_graphics is defined and install_graphics + when: install_graphics diff --git a/ansible/roles/firefox/tasks/main.yaml b/ansible/roles/firefox/tasks/main.yaml index 9123a57..888f733 100644 --- a/ansible/roles/firefox/tasks/main.yaml +++ b/ansible/roles/firefox/tasks/main.yaml @@ -1,2 +1,2 @@ - import_tasks: tasks/common.yaml - when: install_graphics is defined and install_graphics + when: install_graphics diff --git a/ansible/roles/fonts/tasks/main.yaml b/ansible/roles/fonts/tasks/main.yaml index 9123a57..888f733 100644 --- a/ansible/roles/fonts/tasks/main.yaml +++ b/ansible/roles/fonts/tasks/main.yaml @@ -1,2 +1,2 @@ - import_tasks: tasks/common.yaml - when: install_graphics is defined and install_graphics + when: install_graphics diff --git a/ansible/roles/gpg/tasks/freebsd.yaml b/ansible/roles/gpg/tasks/freebsd.yaml index bdd91e2..07972d4 100644 --- a/ansible/roles/gpg/tasks/freebsd.yaml +++ b/ansible/roles/gpg/tasks/freebsd.yaml @@ -9,7 +9,7 @@ state: present - name: Install packages - when: install_graphics is defined and install_graphics + when: install_graphics package: name: - pinentry-qt5 diff --git a/ansible/roles/gpg/templates/gpg-agent.conf.j2 b/ansible/roles/gpg/templates/gpg-agent.conf.j2 index 31ce5df..2007686 100644 --- a/ansible/roles/gpg/templates/gpg-agent.conf.j2 +++ b/ansible/roles/gpg/templates/gpg-agent.conf.j2 @@ -4,8 +4,8 @@ use-standard-socket default-cache-ttl 600 max-cache-ttl 7200 display :0 -{% if install_graphics is defined and install_graphics and os_flavor == "linux" %} +{% if install_graphics and os_flavor == "linux" %} pinentry-program /usr/bin/pinentry-qt -{% elif install_graphics is defined and install_graphics and os_flavor == "freebsd" %} +{% elif install_graphics and os_flavor == "freebsd" %} pinentry-program /usr/local/bin/pinentry-qt5 {% endif %} diff --git a/ansible/roles/graphics/tasks/main.yaml b/ansible/roles/graphics/tasks/main.yaml index 9123a57..888f733 100644 --- a/ansible/roles/graphics/tasks/main.yaml +++ b/ansible/roles/graphics/tasks/main.yaml @@ -1,2 +1,2 @@ - import_tasks: tasks/common.yaml - when: install_graphics is defined and install_graphics + when: install_graphics diff --git a/ansible/roles/kanshi/files/config_kanshi b/ansible/roles/kanshi/files/config_kanshi new file mode 100644 index 0000000..abcc739 --- /dev/null +++ b/ansible/roles/kanshi/files/config_kanshi @@ -0,0 +1,7 @@ +profile docked { + output eDP-1 disable + output "Dell Inc. DELL U3014 P1V6N35M329L" enable +} +profile laptop { + output eDP-1 enable +} diff --git a/ansible/roles/kanshi/files/kanshi.service b/ansible/roles/kanshi/files/kanshi.service new file mode 100644 index 0000000..5ca1513 --- /dev/null +++ b/ansible/roles/kanshi/files/kanshi.service @@ -0,0 +1,11 @@ +[Unit] +Description=Dynamic output configuration for Wayland compositors +Documentation=https://github.com/emersion/kanshi +BindsTo=graphical.target + +[Service] +Type=simple +ExecStart=/usr/bin/kanshi + +[Install] +WantedBy=graphical.target diff --git a/ansible/roles/kanshi/files/sway_config_files/exec_kanshi.conf b/ansible/roles/kanshi/files/sway_config_files/exec_kanshi.conf new file mode 100644 index 0000000..a6a3ab9 --- /dev/null +++ b/ansible/roles/kanshi/files/sway_config_files/exec_kanshi.conf @@ -0,0 +1 @@ +exec kanshi diff --git a/ansible/roles/kanshi/meta/main.yaml b/ansible/roles/kanshi/meta/main.yaml new file mode 100644 index 0000000..1b377a2 --- /dev/null +++ b/ansible/roles/kanshi/meta/main.yaml @@ -0,0 +1,3 @@ +dependencies: + - users + diff --git a/ansible/roles/kanshi/tasks/common.yaml b/ansible/roles/kanshi/tasks/common.yaml new file mode 100644 index 0000000..9148139 --- /dev/null +++ b/ansible/roles/kanshi/tasks/common.yaml @@ -0,0 +1,20 @@ +- name: Install packages + package: + name: + - kanshi + state: present + +- import_tasks: tasks/freebsd.yaml + when: 'os_flavor == "freebsd"' + +- import_tasks: tasks/linux.yaml + when: 'os_flavor == "linux"' + +- include_tasks: + file: tasks/peruser.yaml + apply: + become: yes + become_user: "{{ initialize_user }}" + loop: "{{ users | dict2items | community.general.json_query('[?value.initialize==`true`].key') }}" + loop_control: + loop_var: initialize_user diff --git a/ansible/roles/kanshi/tasks/freebsd.yaml b/ansible/roles/kanshi/tasks/freebsd.yaml new file mode 100644 index 0000000..b417174 --- /dev/null +++ b/ansible/roles/kanshi/tasks/freebsd.yaml @@ -0,0 +1,5 @@ +# - name: Install packages +# package: +# name: +# - foo +# state: present diff --git a/ansible/roles/kanshi/tasks/linux.yaml b/ansible/roles/kanshi/tasks/linux.yaml new file mode 100644 index 0000000..e1835f0 --- /dev/null +++ b/ansible/roles/kanshi/tasks/linux.yaml @@ -0,0 +1,6 @@ +# - name: Install packages +# pacman: +# name: +# - foo +# state: present +# update_cache: true diff --git a/ansible/roles/kanshi/tasks/main.yaml b/ansible/roles/kanshi/tasks/main.yaml new file mode 100644 index 0000000..888f733 --- /dev/null +++ b/ansible/roles/kanshi/tasks/main.yaml @@ -0,0 +1,2 @@ +- import_tasks: tasks/common.yaml + when: install_graphics diff --git a/ansible/roles/kanshi/tasks/peruser.yaml b/ansible/roles/kanshi/tasks/peruser.yaml new file mode 100644 index 0000000..f51d387 --- /dev/null +++ b/ansible/roles/kanshi/tasks/peruser.yaml @@ -0,0 +1,29 @@ +- include_role: + name: per_user + +- name: Create directories + file: + name: "{{ account_homedir.stdout }}/{{ item }}" + state: directory + mode: 0700 + owner: "{{ account_name.stdout }}" + group: "{{ group_name.stdout }}" + loop: + - ".config/kanshi" + +- name: Copy files + copy: + src: "files/{{ item.src }}" + dest: "{{ account_homedir.stdout }}/{{ item.dest }}" + mode: 0600 + owner: "{{ account_name.stdout }}" + group: "{{ group_name.stdout }}" + loop: + - src: config_kanshi + dest: .config/kanshi/config + +- import_tasks: tasks/peruser_freebsd.yaml + when: 'os_flavor == "freebsd"' + +- import_tasks: tasks/peruser_linux.yaml + when: 'os_flavor == "linux"' diff --git a/ansible/roles/kanshi/tasks/peruser_freebsd.yaml b/ansible/roles/kanshi/tasks/peruser_freebsd.yaml new file mode 100644 index 0000000..e6c7344 --- /dev/null +++ b/ansible/roles/kanshi/tasks/peruser_freebsd.yaml @@ -0,0 +1,9 @@ +- name: Configure dotfiles (conf directory) + copy: + src: "files/sway_config_files/{{ item }}.conf" + dest: "{{ account_homedir.stdout }}/.config/sway/config.d/{{ item }}.conf" + mode: 0600 + owner: "{{ account_name.stdout }}" + group: "{{ group_name.stdout }}" + loop: + - exec_kanshi diff --git a/ansible/roles/kanshi/tasks/peruser_linux.yaml b/ansible/roles/kanshi/tasks/peruser_linux.yaml new file mode 100644 index 0000000..d1a38f6 --- /dev/null +++ b/ansible/roles/kanshi/tasks/peruser_linux.yaml @@ -0,0 +1,17 @@ +- name: Copy files + copy: + src: "files/{{ item.src }}" + dest: "{{ account_homedir.stdout }}/{{ item.dest }}" + mode: 0600 + owner: "{{ account_name.stdout }}" + group: "{{ group_name.stdout }}" + loop: + - src: kanshi.service + dest: .config/systemd/user/kanshi.service + +- name: Enable services + systemd: + name: kanshi.service + daemon_reload: yes + enabled: true + scope: user diff --git a/ansible/roles/sway/defaults/main.yaml b/ansible/roles/sway/defaults/main.yaml index 87226ed..8780a54 100644 --- a/ansible/roles/sway/defaults/main.yaml +++ b/ansible/roles/sway/defaults/main.yaml @@ -8,4 +8,3 @@ default_sway_conf_files: - screenshots - notifications - disable_focus_follows_mouse - - waybar diff --git a/ansible/roles/sway/meta/main.yaml b/ansible/roles/sway/meta/main.yaml index 261642d..5649fdc 100644 --- a/ansible/roles/sway/meta/main.yaml +++ b/ansible/roles/sway/meta/main.yaml @@ -2,3 +2,4 @@ dependencies: - users - build # for aurutils on linux - waybar + - kanshi diff --git a/ansible/roles/sway/tasks/main.yaml b/ansible/roles/sway/tasks/main.yaml index 9123a57..888f733 100644 --- a/ansible/roles/sway/tasks/main.yaml +++ b/ansible/roles/sway/tasks/main.yaml @@ -1,2 +1,2 @@ - import_tasks: tasks/common.yaml - when: install_graphics is defined and install_graphics + when: install_graphics diff --git a/ansible/roles/sway/tasks/peruser.yaml b/ansible/roles/sway/tasks/peruser.yaml index 5f815e4..5a753cf 100644 --- a/ansible/roles/sway/tasks/peruser.yaml +++ b/ansible/roles/sway/tasks/peruser.yaml @@ -11,7 +11,6 @@ loop: - ".config/sway" - ".config/sway/config.d" - - ".config/waybar" - ".config/xdg-desktop-portal-wlr" - ".config/mako" @@ -29,10 +28,6 @@ dest: .config/sway/bliss.jpg - src: spaceglenda300.jpg dest: .config/sway/spaceglenda300.jpg - - src: waybar_config.json - dest: .config/waybar/config - - src: style.css - dest: .config/waybar/style.css - src: xdg-desktop-portal-wlr-config dest: .config/xdg-desktop-portal-wlr/config - src: electron-flags.conf diff --git a/ansible/roles/sway/files/sway_config_files/waybar.conf b/ansible/roles/waybar/files/sway_config_files/waybar.conf similarity index 100% rename from ansible/roles/sway/files/sway_config_files/waybar.conf rename to ansible/roles/waybar/files/sway_config_files/waybar.conf diff --git a/ansible/roles/waybar/tasks/main.yaml b/ansible/roles/waybar/tasks/main.yaml index 9123a57..888f733 100644 --- a/ansible/roles/waybar/tasks/main.yaml +++ b/ansible/roles/waybar/tasks/main.yaml @@ -1,2 +1,2 @@ - import_tasks: tasks/common.yaml - when: install_graphics is defined and install_graphics + when: install_graphics diff --git a/ansible/roles/waybar/tasks/peruser.yaml b/ansible/roles/waybar/tasks/peruser.yaml index 23147b1..4a68307 100644 --- a/ansible/roles/waybar/tasks/peruser.yaml +++ b/ansible/roles/waybar/tasks/peruser.yaml @@ -24,6 +24,16 @@ - src: style.css dest: .config/waybar/style.css +- name: Configure dotfiles (conf directory) + copy: + src: "files/sway_config_files/{{ item }}.conf" + dest: "{{ account_homedir.stdout }}/.config/sway/config.d/{{ item }}.conf" + mode: 0600 + owner: "{{ account_name.stdout }}" + group: "{{ group_name.stdout }}" + loop: + - waybar + - import_tasks: tasks/peruser_freebsd.yaml when: 'os_flavor == "freebsd"'