From 336e7d08bf718b0ce1d68598db9ec21542edbdb7 Mon Sep 17 00:00:00 2001 From: Swapnil Date: Fri, 11 Mar 2022 14:29:12 +0530 Subject: [PATCH] :tada: Created Playbook --- playbook/group_vars/all | 0 playbook/hosts | 2 + playbook/roles/role-one/defaults/main.yml | 14 ++ playbook/roles/role-one/tasks/conky.yml | 25 +++ .../roles/role-one/tasks/general-changes.yml | 53 ++++++ playbook/roles/role-one/tasks/global-menu.yml | 32 ++++ .../roles/role-one/tasks/lightdm-greeter.yml | 46 +++++ playbook/roles/role-one/tasks/main.yml | 21 +++ .../roles/role-one/tasks/picom-compositor.yml | 34 ++++ playbook/roles/role-one/tasks/plank-dock.yml | 111 ++++++++++++ .../roles/role-one/tasks/rofi-launcher.yml | 12 ++ .../role-one/tasks/theme-icon-cursor-font.yml | 94 ++++++++++ .../roles/role-one/tasks/xfce-panel-menu.yml | 34 ++++ .../role-one/tasks/xfce-panel-plugins.yml | 148 ++++++++++++++++ .../roles/role-one/templates/conky.desktop | 9 + .../roles/role-one/templates/desktop.dockitem | 2 + .../roles/role-one/templates/firefox.dockitem | 2 + .../role-one/templates/launchpad.dockitem | 2 + .../roles/role-one/templates/lightdm.conf | 163 ++++++++++++++++++ .../role-one/templates/mate-calc.dockitem | 2 + .../templates/org.xfce.Parole.dockitem | 2 + .../roles/role-one/templates/plank.desktop | 11 ++ .../roles/role-one/templates/thunar.dockitem | 2 + .../role-one/templates/thunderbird.dockitem | 2 + .../roles/role-one/templates/trash.dockitem | 2 + .../roles/role-one/templates/web-greeter.yml | 33 ++++ .../templates/xfce4-terminal.dockitem | 2 + playbook/roles/role-one/vars/main.yml | 34 ++++ playbook/setup.yml | 7 + readme.txt | 13 +- xpple_menu.zip | Bin 0 -> 28154 bytes 31 files changed, 908 insertions(+), 6 deletions(-) create mode 100644 playbook/group_vars/all create mode 100644 playbook/hosts create mode 100644 playbook/roles/role-one/defaults/main.yml create mode 100644 playbook/roles/role-one/tasks/conky.yml create mode 100644 playbook/roles/role-one/tasks/general-changes.yml create mode 100644 playbook/roles/role-one/tasks/global-menu.yml create mode 100644 playbook/roles/role-one/tasks/lightdm-greeter.yml create mode 100644 playbook/roles/role-one/tasks/main.yml create mode 100644 playbook/roles/role-one/tasks/picom-compositor.yml create mode 100644 playbook/roles/role-one/tasks/plank-dock.yml create mode 100644 playbook/roles/role-one/tasks/rofi-launcher.yml create mode 100644 playbook/roles/role-one/tasks/theme-icon-cursor-font.yml create mode 100644 playbook/roles/role-one/tasks/xfce-panel-menu.yml create mode 100644 playbook/roles/role-one/tasks/xfce-panel-plugins.yml create mode 100644 playbook/roles/role-one/templates/conky.desktop create mode 100644 playbook/roles/role-one/templates/desktop.dockitem create mode 100644 playbook/roles/role-one/templates/firefox.dockitem create mode 100644 playbook/roles/role-one/templates/launchpad.dockitem create mode 100644 playbook/roles/role-one/templates/lightdm.conf create mode 100644 playbook/roles/role-one/templates/mate-calc.dockitem create mode 100644 playbook/roles/role-one/templates/org.xfce.Parole.dockitem create mode 100644 playbook/roles/role-one/templates/plank.desktop create mode 100644 playbook/roles/role-one/templates/thunar.dockitem create mode 100644 playbook/roles/role-one/templates/thunderbird.dockitem create mode 100644 playbook/roles/role-one/templates/trash.dockitem create mode 100644 playbook/roles/role-one/templates/web-greeter.yml create mode 100644 playbook/roles/role-one/templates/xfce4-terminal.dockitem create mode 100644 playbook/roles/role-one/vars/main.yml create mode 100644 playbook/setup.yml create mode 100644 xpple_menu.zip diff --git a/playbook/group_vars/all b/playbook/group_vars/all new file mode 100644 index 0000000..e69de29 diff --git a/playbook/hosts b/playbook/hosts new file mode 100644 index 0000000..2a2a56e --- /dev/null +++ b/playbook/hosts @@ -0,0 +1,2 @@ +[nodes] +node ansible_host=142.132.171.211 ansible_ssh_private_key_file=~/.ssh/id_rsa ansible_ssh_common_args='-o StrictHostKeyChecking=no' \ No newline at end of file diff --git a/playbook/roles/role-one/defaults/main.yml b/playbook/roles/role-one/defaults/main.yml new file mode 100644 index 0000000..0a61878 --- /dev/null +++ b/playbook/roles/role-one/defaults/main.yml @@ -0,0 +1,14 @@ +--- +update_xfce_bigsur_file_url: "https://www.opencode.net/lsteam/xfce-big-sur-setup-file/-/raw/master/update-xfce-bigsur.zip" + +whitesur_gtk_theme_git: https://github.com/vinceliuice/WhiteSur-gtk-theme.git +whitesur_icon_theme_git: https://github.com/vinceliuice/WhiteSur-icon-theme.git +whitesur_cursors_git: https://github.com/vinceliuice/WhiteSur-cursors.git + +xpple_menu_url: https://git.bitmessage.org/swapnil/customize-xfce-anisble/raw/branch/master/xpple_menu.zip + +web_greeter_git: https://github.com/Antergos/web-greeter.git + +lightdm_webkit2_theme_glorious_git: https://github.com/manilarome/lightdm-webkit2-theme-glorious.git + +picom_git: https://github.com/ibhagwan/picom.git \ No newline at end of file diff --git a/playbook/roles/role-one/tasks/conky.yml b/playbook/roles/role-one/tasks/conky.yml new file mode 100644 index 0000000..380c231 --- /dev/null +++ b/playbook/roles/role-one/tasks/conky.yml @@ -0,0 +1,25 @@ +--- + +- name: Conky | Install dependencies + apt: + name: + - conky-all + - jq + - curl +- name: Conky | Create ~/.conky directory + file: + path: /root/.conky + state: directory + +- name: Conky | Copy conky config + copy: + src: /root/Downloads/update-xfce-bigsur/conky/ + dest: /root/.conky + remote_src: yes + +- name: Conky | Add conky to startup + template: + src: conky.desktop + dest: "{{ autostart_path }}/conky.desktop" + owner: root + mode: '0644' diff --git a/playbook/roles/role-one/tasks/general-changes.yml b/playbook/roles/role-one/tasks/general-changes.yml new file mode 100644 index 0000000..b5fd7e4 --- /dev/null +++ b/playbook/roles/role-one/tasks/general-changes.yml @@ -0,0 +1,53 @@ +--- + +- name: General Changes | Install xfce4 + apt: + name: xfce4 + state: latest + +- name: General Changes | Hide icons + xfconf: + channel: "xfce4-desktop" + property: "/desktop-icons/style" + value_type: "int" + value: 0 + +- name: General Changes | Update Window Manager | cycle_draw_frame + xfconf: + channel: xfwm4 + property: /general/cycle_draw_frame + value_type: bool + value: "false" + +- name: General Changes | Update Window Manager | placement_mode + xfconf: + channel: xfwm4 + property: /general/placement_mode + value_type: string + value: center + +- name: General Changes | Update Window Manager | show_dock_shadow + xfconf: + channel: xfwm4 + property: /general/show_dock_shadow + value_type: bool + value: "false" + +- name: General Changes | Download and Unzip update-xfce-bigsur.zip + unarchive: + src: "{{ update_xfce_bigsur_file_url }}" + dest: /root/Downloads + remote_src: yes + +- name: General Changes | Copy wallpapers to ~/Pictures + copy: + src: /root/Downloads/update-xfce-bigsur/wallpapers + dest: /root/Pictures + remote_src: yes + +- name: General Changes | Change wallpaper + xfconf: + channel: "xfce4-desktop" + property: "/backdrop/screen0/monitorscreen/workspace0/last-image" + value_type: "string" + value: "/root/Pictures/wallpapers/Yosemite.png" diff --git a/playbook/roles/role-one/tasks/global-menu.yml b/playbook/roles/role-one/tasks/global-menu.yml new file mode 100644 index 0000000..6d20c57 --- /dev/null +++ b/playbook/roles/role-one/tasks/global-menu.yml @@ -0,0 +1,32 @@ +--- + +- name: Global menu | Install dependencies + apt: + name: + - vala-panel-appmenu-common + - bamfdaemon + - xfce4-appmenu-plugin + - unity-gtk-module-common + - unity-gtk2-module + - unity-gtk3-module + +- name: Global menu | Update settings | Modules + xfconf: + channel: xsettings + property: /Gtk/Modules + value_type: string + value: unity-gtk-module + +- name: Global menu | Update settings | ShellShowsMenubar + xfconf: + channel: xsettings + property: /Gtk/ShellShowsMenubar + value_type: bool + value: "true" + +- name: Global menu | Update settings | ShellShowsAppmenu + xfconf: + channel: xsettings + property: /Gtk/ShellShowsAppmenu + value_type: bool + value: "true" diff --git a/playbook/roles/role-one/tasks/lightdm-greeter.yml b/playbook/roles/role-one/tasks/lightdm-greeter.yml new file mode 100644 index 0000000..cafbd43 --- /dev/null +++ b/playbook/roles/role-one/tasks/lightdm-greeter.yml @@ -0,0 +1,46 @@ +--- + +- name: LightDM-Webkit2-Greeter | Install whither + pip: + name: whither + state: latest + +- name: LightDM-Webkit2-Greeter | Install dependencies + apt: + name: + - liblightdm-gobject-1-dev + - python3-gi + +- name: LightDM-Webkit2-Greeter | Clone web-greeter + git: + repo: "{{ web_greeter_git }}" + dest: /tmp/greeter + +- name: LightDM-Webkit2-Greeter | Install web-greeter + shell: + cmd: "cd /tmp/greeter && make install" + +- name: LightDM-Webkit2-Greeter | Clone lightdm-webkit2-theme-glorious + git: + repo: "{{ lightdm_webkit2_theme_glorious_git }}" + dest: /usr/share/lightdm-webkit/themes/glorious + +- name: LightDM-Webkit2-Greeter | Place lightdm.conf + template: + src: lightdm.conf + dest: "{{ lightdm_path }}/lightdm.conf" + owner: root + mode: '0644' + +- name: LightDM-Webkit2-Greeter | Place web-greeter.yml + template: + src: web-greeter.yml + dest: "{{ lightdm_path }}/web-greeter.yml" + owner: root + mode: '0644' + +- name: LightDM-Webkit2-Greeter | Copy wallpapers + copy: + src: /root/Pictures/wallpapers + dest: /usr/share/backgrounds + remote_src: yes diff --git a/playbook/roles/role-one/tasks/main.yml b/playbook/roles/role-one/tasks/main.yml new file mode 100644 index 0000000..979553f --- /dev/null +++ b/playbook/roles/role-one/tasks/main.yml @@ -0,0 +1,21 @@ +--- + +- include_tasks: general-changes.yml + +- include_tasks: theme-icon-cursor-font.yml + +- include_tasks: global-menu.yml + +- include_tasks: xfce-panel-menu.yml + +- include_tasks: xfce-panel-plugins.yml + +- include_tasks: plank-dock.yml + +- include_tasks: rofi-launcher.yml + +- include_tasks: conky.yml + +- include_tasks: lightdm-greeter.yml + +- include_tasks: picom-compositor.yml \ No newline at end of file diff --git a/playbook/roles/role-one/tasks/picom-compositor.yml b/playbook/roles/role-one/tasks/picom-compositor.yml new file mode 100644 index 0000000..9349a27 --- /dev/null +++ b/playbook/roles/role-one/tasks/picom-compositor.yml @@ -0,0 +1,34 @@ +--- + +- name: Picom | Install dependencies + apt: + name: "{{ picom_dependency }}" + state: present + +- name: Picom | Clone picom repository + git: + repo: "{{ picom_git }}" + dest: /tmp/picom + recursive: yes + +- name: Picom | Build and Install picom + shell: "cd /tmp/picom && meson --buildtype=release . build && ninja -C build && sudo ninja -C build install" + +- name: Picom | Copy picom config + copy: + src: /root/Downloads/update-xfce-bigsur/picom + dest: /root/.config/ + remote_src: yes + +- name: Picom | Add picom to startup + copy: + src: /root/.config/picom/picom.desktop + dest: /root/.config/autostart/ + remote_src: yes + +- name: Picom | Disable compositing + xfconf: + channel: xfwm4 + property: /general/use_compositing + value_type: bool + value: "false" diff --git a/playbook/roles/role-one/tasks/plank-dock.yml b/playbook/roles/role-one/tasks/plank-dock.yml new file mode 100644 index 0000000..479b7a5 --- /dev/null +++ b/playbook/roles/role-one/tasks/plank-dock.yml @@ -0,0 +1,111 @@ +--- + +- name: Plank Dock | Install plank dock + apt: + name: + - plank + state: latest + +- name: Plank Dock | Copy plank themes + copy: + src: /root/Downloads/WhiteSur-gtk-theme/src/other/plank/ + dest: /root/.local/share/plank/themes/ + remote_src: yes + +- name: Plank Dock | Remove panel-2 + xfconf: + channel: xfce4-panel + property: /panels + value_type: int + value: [1] + force_array: yes + +- name: Plank Dock | Copy icons + copy: + src: /root/Downloads/update-xfce-bigsur/icons/launchpad.svg + dest: /root/.local/share/icons/ + remote_src: yes + +- name: Plank Dock | Ensure that plank_dock_launcher_path exists + file: + path: "{{ plank_dock_launcher_path }}" + state: directory + +- name: Plank Dock | Remove all *.dockitem files + shell: + cmd: "rm -f {{ plank_dock_launcher_path }}/*.dockitem" + +- name: Plank Dock | Add launchpad.dockitem to dock + template: + src: launchpad.dockitem + dest: "{{ plank_dock_launcher_path }}/launchpad.dockitem" + owner: root + mode: '0644' + +- name: Plank Dock | Add thunar.dockitem to dock + template: + src: thunar.dockitem + dest: "{{ plank_dock_launcher_path }}/thunar.dockitem" + owner: root + mode: '0644' + +- name: Plank Dock | Add org.xfce.Parole.dockitem to dock + template: + src: org.xfce.Parole.dockitem + dest: "{{ plank_dock_launcher_path }}/org.xfce.Parole.dockitem" + owner: root + mode: '0644' + +- name: Plank Dock | Add thunderbird.dockitem to dock + template: + src: thunderbird.dockitem + dest: "{{ plank_dock_launcher_path }}/thunderbird.dockitem" + owner: root + mode: '0644' + +- name: Plank Dock | Add firefox.dockitem to dock + template: + src: firefox.dockitem + dest: "{{ plank_dock_launcher_path }}/firefox.dockitem" + owner: root + mode: '0644' + +- name: Plank Dock | Add xfce4-terminal.dockitem to dock + template: + src: xfce4-terminal.dockitem + dest: "{{ plank_dock_launcher_path }}/xfce4-terminal.dockitem" + owner: root + mode: '0644' + +- name: Plank Dock | Add mate-calc.dockitem to dock + template: + src: mate-calc.dockitem + dest: "{{ plank_dock_launcher_path }}/mate-calc.dockitem" + owner: root + mode: '0644' + +- name: Plank Dock | Add desktop.dockitem to dock + template: + src: desktop.dockitem + dest: "{{ plank_dock_launcher_path }}/desktop.dockitem" + owner: root + mode: '0644' + +- name: Plank Dock | Add trash.dockitem to dock + template: + src: trash.dockitem + dest: "{{ plank_dock_launcher_path }}/trash.dockitem" + owner: root + mode: '0644' + +- name: Plank Dock | Ensure autostart directory exists + file: + path: "{{ autostart_path }}" + state: directory + +- name: Plank Dock | Add plank to autostart + template: + src: plank.desktop + dest: "{{ autostart_path }}/plank.desktop" + owner: root + mode: '0644' diff --git a/playbook/roles/role-one/tasks/rofi-launcher.yml b/playbook/roles/role-one/tasks/rofi-launcher.yml new file mode 100644 index 0000000..0f5476a --- /dev/null +++ b/playbook/roles/role-one/tasks/rofi-launcher.yml @@ -0,0 +1,12 @@ +--- + +- name: Rofi Launcher | Install dependencies + apt: + name: + - rofi + +- name: Rofi Launcher | Copy rofi config + copy: + src: /root/Downloads/update-xfce-bigsur/rofi + dest: /root/.config/ + remote_src: yes diff --git a/playbook/roles/role-one/tasks/theme-icon-cursor-font.yml b/playbook/roles/role-one/tasks/theme-icon-cursor-font.yml new file mode 100644 index 0000000..21df3f3 --- /dev/null +++ b/playbook/roles/role-one/tasks/theme-icon-cursor-font.yml @@ -0,0 +1,94 @@ +--- + +- name: Theme-icons-cursor-fonts | install dependencies + apt: + name: + - gtk2-engines-murrine + - sassc + +- name: Theme-icons-cursor-fonts | clone WhiteSur-gtk-theme + git: + repo: "{{ whitesur_gtk_theme_git }}" + dest: /root/Downloads/WhiteSur-gtk-theme + +- name: Theme-icons-cursor-fonts | Install WhiteSur-gtk-theme + shell: + cmd: "cd /root/Downloads/WhiteSur-gtk-theme && ./install.sh -c dark -c light" + +- name: Theme-icons-cursor-fonts | clone WhiteSur-icon-theme + git: + repo: "{{ whitesur_icon_theme_git }}" + dest: /root/Downloads/WhiteSur-icon-theme + +- name: Theme-icons-cursor-fonts | Install WhiteSur-icon-theme + shell: + cmd: "cd /root/Downloads/WhiteSur-icon-theme && ./install.sh" + +- name: Theme-icons-cursor-fonts | clone WhiteSur-cursors + git: + repo: "{{ whitesur_cursors_git }}" + dest: /root/Downloads/WhiteSur-cursors + +- name: Theme-icons-cursor-fonts | Install WhiteSur-cursors + shell: + cmd: "cd /root/Downloads/WhiteSur-cursors && ./install.sh" + +- name: Theme-icons-cursor-fonts | Create ~/.fonts directory + file: + path: /root/.fonts + state: directory + +- name: Theme-icons-cursor-fonts | copy fonts + copy: + src: /root/Downloads/update-xfce-bigsur/fonts/ + dest: /root/.fonts + remote_src: yes + +- name: Theme-icons-cursor-fonts | Update settings Theme + xfconf: + channel: xsettings + property: /Net/ThemeName + value_type: string + value: WhiteSur-dark + +- name: Theme-icons-cursor-fonts | Update settings Icon Theme + xfconf: + channel: xsettings + property: /Net/IconThemeName + value_type: string + value: WhiteSur-dark + +- name: Theme-icons-cursor-fonts | Update settings Font + xfconf: + channel: xsettings + property: /Gtk/FontName + value_type: string + value: "San Francisco Display 10" + +- name: Theme-icons-cursor-fonts | Update settings Monospace Font + xfconf: + channel: xsettings + property: /Gtk/MonospaceFontName + value_type: string + value: "Iosevka Term 10" + +- name: Theme-icons-cursor-fonts | Update general Theme + xfconf: + channel: xfwm4 + property: /general/theme + value_type: string + value: WhiteSur-dark + +- name: Theme-icons-cursor-fonts | Update general Button Layout + xfconf: + channel: xfwm4 + property: /general/button_layout + value_type: string + value: "CHM|" + +- name: Theme-icons-cursor-fonts | Update general Title Font + xfconf: + channel: xfwm4 + property: /general/title_font + value_type: string + value: "San Francisco Display Medium 9" diff --git a/playbook/roles/role-one/tasks/xfce-panel-menu.yml b/playbook/roles/role-one/tasks/xfce-panel-menu.yml new file mode 100644 index 0000000..b860a2a --- /dev/null +++ b/playbook/roles/role-one/tasks/xfce-panel-menu.yml @@ -0,0 +1,34 @@ +--- + +- name: Xfce Pannel | Xpple Menu - Create directory to store xpple menu + file: + path: /root/Downloads/xpple_menu/ + state: directory + +- name: Xfce Pannel | Xpple Menu - Download and Unzip + unarchive: + src: "{{ xpple_menu_url }}" + dest: /root/Downloads/xpple_menu/ + remote_src: yes + +- name: Xfce Pannel | Xpple Menu - Ensure that applications directory exists + file: + path: /root/.local/share/applications/ + state: directory + +- name: Xfce Pannel | Xpple Menu - Copy applications + copy: + src: /root/Downloads/xpple_menu/applications/ + dest: /root/.local/share/applications/ + remote_src: yes + +- name: Xfce Pannel | Xpple Menu - Create ./config/menu/ directory + file: + path: /root/.config/menu/ + state: directory + +- name: Xfce Pannel | Xpple Menu - Copy xpple.menu + copy: + src: /root/Downloads/xpple_menu/xpple.menu + dest: /root/.config/menu/ + remote_src: yes diff --git a/playbook/roles/role-one/tasks/xfce-panel-plugins.yml b/playbook/roles/role-one/tasks/xfce-panel-plugins.yml new file mode 100644 index 0000000..805ce8f --- /dev/null +++ b/playbook/roles/role-one/tasks/xfce-panel-plugins.yml @@ -0,0 +1,148 @@ +--- + +- name: Xfce Panel | Add separator - plugin-26 + xfconf: + channel: xfce4-panel + property: /plugins/plugin-26 + value_type: string + value: separator + +- name: Xfce Panel | Modify separator - plugin-26 + xfconf: + channel: xfce4-panel + property: /plugins/plugin-26/style + value_type: uint + value: 0 + +- name: Xfce Panel | Add separator - plugin-27 + xfconf: + channel: xfce4-panel + property: /plugins/plugin-27 + value_type: string + value: separator + +- name: Xfce Panel | Modify separator - plugin-27 + xfconf: + channel: xfce4-panel + property: /plugins/plugin-27/style + value_type: uint + value: 0 + +- name: Xfce Panel | Modify separator - plugin-3 + xfconf: + channel: xfce4-panel + property: /plugins/plugin-3/expand + value_type: bool + value: "false" + +- name: Xfce Panel | Add keyboard Layout - plugin-28 + xfconf: + channel: xfce4-panel + property: /plugins/plugin-28 + value_type: string + value: xkb + +- name: Xfce Panel | Modify keyboard - plugin-28 - display-type + xfconf: + channel: xfce4-panel + property: /plugins/plugin-28/display-type + value_type: uint + value: 1 + +- name: Xfce Panel | Modify keyboard - plugin-28 - display-name + xfconf: + channel: xfce4-panel + property: /plugins/plugin-28/display-name + value_type: uint + value: 1 + +- name: Xfce Panel | Modify keyboard - plugin-28 - display-scale + xfconf: + channel: xfce4-panel + property: /plugins/plugin-28/display-scale + value_type: uint + value: 50 + +- name: Xfce Panel | Modify keyboard - plugin-28 - group-policy + xfconf: + channel: xfce4-panel + property: /plugins/plugin-28/group-policy + value_type: uint + value: 0 + +- name: Xfce Panel | Modify keyboard - plugin-28 - display-tooltip-icon + xfconf: + channel: xfce4-panel + property: /plugins/plugin-28/display-tooltip-icon + value_type: bool + value: "true" + +- name: Xfce Panel | Add weather - plugin-29 + xfconf: + channel: xfce4-panel + property: /plugins/plugin-29 + value_type: string + value: weather + +- name: Xfce Panel | Add Appmenu - plugin-30 + xfconf: + channel: xfce4-panel + property: /plugins/plugin-30 + value_type: string + value: appmenu + +- name: Xfce Panel | Modify Appmenu - plugin-30 - use-bold-name + xfconf: + channel: xfce4-panel + property: /plugins/plugin-30/use-bold-name + value_type: bool + value: "true" + +- name: Xfce Panel | Modify applicationsmenu - plugin-1 - custom-menu + xfconf: + channel: xfce4-panel + property: /plugins/plugin-1/use-custom-menu + value_type: bool + value: "true" + +- name: Xfce Panel | Modify applicationsmenu - plugin-1 - custom-menu-file + xfconf: + channel: xfce4-panel + property: /plugins/plugin-1/custom-menu-file + value_type: string + value: /root/.config/menu/xpple.menu + +- name: Xfce Panel | Modify applicationsmenu - plugin-1 - button-icon + xfconf: + channel: xfce4-panel + property: /plugins/plugin-1/button-icon + value_type: string + value: start-here + +- name: Xfce Panel | Modify applicationsmenu - plugin-1 - show-button-title + xfconf: + channel: xfce4-panel + property: /plugins/plugin-1/show-button-title + value_type: bool + value: "false" + +- name: Xfce Panel | Modify Actions Buttons - plugin-14 - appearance + xfconf: + channel: xfce4-panel + property: /plugins/plugin-14/appearance + value_type: uint + value: 0 + +- name: Xfce Panel | Modify Actions Buttons - plugin-14 - style + xfconf: + channel: xfce4-panel + property: /plugins/plugin-14/items + value_type: string + value: ["-lock-screen", "-switch-user", "-separator", "-suspend", "-hibernate", "-hybrid-sleep", "-separator", "-shutdown", "-restart", "-separator", "+logout", "-logout-dialog"] + +- name: Xfce Panel | Rearrange Plugins + xfconf: + channel: xfce4-panel + property: /panels/panel-1/plugin-ids + value_type: int + value: [26,1,3,30,5,29,28,6,7,8,9,10,11,12,13,14,27] diff --git a/playbook/roles/role-one/templates/conky.desktop b/playbook/roles/role-one/templates/conky.desktop new file mode 100644 index 0000000..c3d92ec --- /dev/null +++ b/playbook/roles/role-one/templates/conky.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Type=Application +Exec=/root/.conky/MX-CoreBlue/start_conky.sh +Hidden=false +NoDisplay=false +Name=conky +Comment=conky +X-GNOME-Autostart-Delay=2 +X-GNOME-Autostart-enabled=true \ No newline at end of file diff --git a/playbook/roles/role-one/templates/desktop.dockitem b/playbook/roles/role-one/templates/desktop.dockitem new file mode 100644 index 0000000..ef7b2ba --- /dev/null +++ b/playbook/roles/role-one/templates/desktop.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=docklet://desktop \ No newline at end of file diff --git a/playbook/roles/role-one/templates/firefox.dockitem b/playbook/roles/role-one/templates/firefox.dockitem new file mode 100644 index 0000000..b4d9740 --- /dev/null +++ b/playbook/roles/role-one/templates/firefox.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///usr/share/applications/firefox.desktop \ No newline at end of file diff --git a/playbook/roles/role-one/templates/launchpad.dockitem b/playbook/roles/role-one/templates/launchpad.dockitem new file mode 100644 index 0000000..6ac285b --- /dev/null +++ b/playbook/roles/role-one/templates/launchpad.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///root/.local/share/applications/Launchpad.desktop \ No newline at end of file diff --git a/playbook/roles/role-one/templates/lightdm.conf b/playbook/roles/role-one/templates/lightdm.conf new file mode 100644 index 0000000..7e3fa64 --- /dev/null +++ b/playbook/roles/role-one/templates/lightdm.conf @@ -0,0 +1,163 @@ +# +# General configuration +# +# start-default-seat = True to always start one seat if none are defined in the configuration +# greeter-user = User to run greeter as +# minimum-display-number = Minimum display number to use for X servers +# minimum-vt = First VT to run displays on +# lock-memory = True to prevent memory from being paged to disk +# user-authority-in-system-dir = True if session authority should be in the system location +# guest-account-script = Script to be run to setup guest account +# logind-check-graphical = True to on start seats that are marked as graphical by logind +# log-directory = Directory to log information to +# run-directory = Directory to put running state in +# cache-directory = Directory to cache to +# sessions-directory = Directory to find sessions +# remote-sessions-directory = Directory to find remote sessions +# greeters-directory = Directory to find greeters +# backup-logs = True to move add a .old suffix to old log files when opening new ones +# dbus-service = True if LightDM provides a D-Bus service to control it +# +[LightDM] +#start-default-seat=true +#greeter-user=lightdm +#minimum-display-number=0 +#minimum-vt=7 +#lock-memory=true +#user-authority-in-system-dir=false +#guest-account-script=guest-account +#logind-check-graphical=false +#log-directory=/var/log/lightdm +#run-directory=/var/run/lightdm +#cache-directory=/var/cache/lightdm +#sessions-directory=/usr/share/lightdm/sessions:/usr/share/xsessions:/usr/share/wayland-sessions +#remote-sessions-directory=/usr/share/lightdm/remote-sessions +#greeters-directory=$XDG_DATA_DIRS/lightdm/greeters:$XDG_DATA_DIRS/xgreeters +#backup-logs=true +#dbus-service=true + +# +# Seat configuration +# +# Seat configuration is matched against the seat name glob in the section, for example: +# [Seat:*] matches all seats and is applied first. +# [Seat:seat0] matches the seat named "seat0". +# [Seat:seat-thin-client*] matches all seats that have names that start with "seat-thin-client". +# +# type = Seat type (local, xremote) +# pam-service = PAM service to use for login +# pam-autologin-service = PAM service to use for autologin +# pam-greeter-service = PAM service to use for greeters +# xserver-command = X server command to run (can also contain arguments e.g. X -special-option) +# xmir-command = Xmir server command to run (can also contain arguments e.g. Xmir -special-option) +# xserver-config = Config file to pass to X server +# xserver-layout = Layout to pass to X server +# xserver-allow-tcp = True if TCP/IP connections are allowed to this X server +# xserver-share = True if the X server is shared for both greeter and session +# xserver-hostname = Hostname of X server (only for type=xremote) +# xserver-display-number = Display number of X server (only for type=xremote) +# xdmcp-manager = XDMCP manager to connect to (implies xserver-allow-tcp=true) +# xdmcp-port = XDMCP UDP/IP port to communicate on +# xdmcp-key = Authentication key to use for XDM-AUTHENTICATION-1 (stored in keys.conf) +# greeter-session = Session to load for greeter +# greeter-hide-users = True to hide the user list +# greeter-allow-guest = True if the greeter should show a guest login option +# greeter-show-manual-login = True if the greeter should offer a manual login option +# greeter-show-remote-login = True if the greeter should offer a remote login option +# user-session = Session to load for users +# allow-user-switching = True if allowed to switch users +# allow-guest = True if guest login is allowed +# guest-session = Session to load for guests (overrides user-session) +# session-wrapper = Wrapper script to run session with +# greeter-wrapper = Wrapper script to run greeter with +# guest-wrapper = Wrapper script to run guest sessions with +# display-setup-script = Script to run when starting a greeter session (runs as root) +# display-stopped-script = Script to run after stopping the display server (runs as root) +# greeter-setup-script = Script to run when starting a greeter (runs as root) +# session-setup-script = Script to run when starting a user session (runs as root) +# session-cleanup-script = Script to run when quitting a user session (runs as root) +# autologin-guest = True to log in as guest by default +# autologin-user = User to log in with by default (overrides autologin-guest) +# autologin-user-timeout = Number of seconds to wait before loading default user +# autologin-session = Session to load for automatic login (overrides user-session) +# autologin-in-background = True if autologin session should not be immediately activated +# exit-on-failure = True if the daemon should exit if this seat fails +# +[Seat:*] +#type=local +#pam-service=lightdm +#pam-autologin-service=lightdm-autologin +#pam-greeter-service=lightdm-greeter +#xserver-command=X +#xmir-command=Xmir +#xserver-config= +#xserver-layout= +#xserver-allow-tcp=false +#xserver-share=true +#xserver-hostname= +#xserver-display-number= +#xdmcp-manager= +#xdmcp-port=177 +#xdmcp-key= +greeter-session=web-greeter +#greeter-hide-users=false +#greeter-allow-guest=true +#greeter-show-manual-login=false +#greeter-show-remote-login=true +#user-session=default +#allow-user-switching=true +#allow-guest=true +#guest-session= +#session-wrapper=lightdm-session +#greeter-wrapper= +#guest-wrapper= +#display-setup-script= +#display-stopped-script= +#greeter-setup-script= +#session-setup-script= +#session-cleanup-script= +#autologin-guest=false +#autologin-user= +#autologin-user-timeout=0 +#autologin-in-background=false +#autologin-session= +#exit-on-failure=false + +# +# XDMCP Server configuration +# +# enabled = True if XDMCP connections should be allowed +# port = UDP/IP port to listen for connections on +# listen-address = Host/address to listen for XDMCP connections (use all addresses if not present) +# key = Authentication key to use for XDM-AUTHENTICATION-1 or blank to not use authentication (stored in keys.conf) +# hostname = Hostname to report to XDMCP clients (defaults to system hostname if unset) +# +# The authentication key is a 56 bit DES key specified in hex as 0xnnnnnnnnnnnnnn. Alternatively +# it can be a word and the first 7 characters are used as the key. +# +[XDMCPServer] +#enabled=false +#port=177 +#listen-address= +#key= +#hostname= + +# +# VNC Server configuration +# +# enabled = True if VNC connections should be allowed +# command = Command to run Xvnc server with +# port = TCP/IP port to listen for connections on +# listen-address = Host/address to listen for VNC connections (use all addresses if not present) +# width = Width of display to use +# height = Height of display to use +# depth = Color depth of display to use +# +[VNCServer] +#enabled=false +#command=Xvnc +#port=5900 +#listen-address= +#width=1024 +#height=768 +#depth=8 \ No newline at end of file diff --git a/playbook/roles/role-one/templates/mate-calc.dockitem b/playbook/roles/role-one/templates/mate-calc.dockitem new file mode 100644 index 0000000..a84e1af --- /dev/null +++ b/playbook/roles/role-one/templates/mate-calc.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///usr/share/applications/mate-calc.desktop \ No newline at end of file diff --git a/playbook/roles/role-one/templates/org.xfce.Parole.dockitem b/playbook/roles/role-one/templates/org.xfce.Parole.dockitem new file mode 100644 index 0000000..9a1dacd --- /dev/null +++ b/playbook/roles/role-one/templates/org.xfce.Parole.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///usr/share/applications/org.xfce.Parole.desktop \ No newline at end of file diff --git a/playbook/roles/role-one/templates/plank.desktop b/playbook/roles/role-one/templates/plank.desktop new file mode 100644 index 0000000..117ab0b --- /dev/null +++ b/playbook/roles/role-one/templates/plank.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Type=Application +Exec=plank +Hidden=false +NoDisplay=false +Name[en_US]=plank +Name=plank +Comment[en_US]=plank +Comment=plank +X-GNOME-Autostart-Delay=2 +X-GNOME-Autostart-enabled=true \ No newline at end of file diff --git a/playbook/roles/role-one/templates/thunar.dockitem b/playbook/roles/role-one/templates/thunar.dockitem new file mode 100644 index 0000000..649d786 --- /dev/null +++ b/playbook/roles/role-one/templates/thunar.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///usr/share/applications/thunar.desktop \ No newline at end of file diff --git a/playbook/roles/role-one/templates/thunderbird.dockitem b/playbook/roles/role-one/templates/thunderbird.dockitem new file mode 100644 index 0000000..f607006 --- /dev/null +++ b/playbook/roles/role-one/templates/thunderbird.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///usr/share/applications/thunderbird.desktop \ No newline at end of file diff --git a/playbook/roles/role-one/templates/trash.dockitem b/playbook/roles/role-one/templates/trash.dockitem new file mode 100644 index 0000000..8626441 --- /dev/null +++ b/playbook/roles/role-one/templates/trash.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=docklet://trash \ No newline at end of file diff --git a/playbook/roles/role-one/templates/web-greeter.yml b/playbook/roles/role-one/templates/web-greeter.yml new file mode 100644 index 0000000..d362387 --- /dev/null +++ b/playbook/roles/role-one/templates/web-greeter.yml @@ -0,0 +1,33 @@ +# +# branding: +# background_images_dir: Path to directory that contains background images for use by themes. +# logo_image: Path to logo image for use by greeter themes. +# user_image: Default user image/avatar. This is used by themes when user has no .face image. +# +# NOTE: Paths must be accessible to the lightdm system user account (so they cannot be anywhere in /home) +# +branding: + background_images_dir: /usr/share/backgrounds + logo_image: /usr/share/web-greeter/themes/default/img/antergos-logo-user.png + user_image: /usr/share/web-greeter/themes/default/img/antergos.png + +# +# greeter: +# debug_mode: Enable debug mode for the greeter as well as greeter themes. +# detect_theme_errors: Provide an option to load a fallback theme when theme errors are detected. +# screensaver_timeout: Blank the screen after this many seconds of inactivity. +# secure_mode: Don't allow themes to make remote http requests. +# theme: Greeter theme to use. +# time_format: A moment.js format string so the greeter can generate localized time for display. +# time_language: Language to use when displaying the time or "auto" to use the system's language. +# +# NOTE: See moment.js documentation for format string options: http://momentjs.com/docs/#/displaying/format +# +greeter: + debug_mode: True + detect_theme_errors: True + screensaver_timeout: 300 + secure_mode: True + theme: glorious + time_format: LT + time_language: auto \ No newline at end of file diff --git a/playbook/roles/role-one/templates/xfce4-terminal.dockitem b/playbook/roles/role-one/templates/xfce4-terminal.dockitem new file mode 100644 index 0000000..9448282 --- /dev/null +++ b/playbook/roles/role-one/templates/xfce4-terminal.dockitem @@ -0,0 +1,2 @@ +[PlankDockItemPreferences] +Launcher=file:///usr/share/applications/xfce4-terminal.desktop \ No newline at end of file diff --git a/playbook/roles/role-one/vars/main.yml b/playbook/roles/role-one/vars/main.yml new file mode 100644 index 0000000..8c24b91 --- /dev/null +++ b/playbook/roles/role-one/vars/main.yml @@ -0,0 +1,34 @@ + +plank_dock_launcher_path: /root/.config/plank/dock1/launchers +autostart_path: /root/.config/autostart +lightdm_path: /etc/lightdm + +picom_dependency: + - cmake + - meson + - ninja-build + - git + - pkg-config + - asciidoc + - libxext-dev + - libxcb1-dev + - libxcb-damage0-dev + - libxcb-xfixes0-dev + - libxcb-shape0-dev + - libxcb-render-util0-dev + - libxcb-render0-dev + - libxcb-randr0-dev + - libxcb-composite0-dev + - libxcb-image0-dev + - libxcb-present-dev + - libxcb-xinerama0-dev + - libxcb-glx0-dev + - libpixman-1-dev + - libdbus-1-dev + - libconfig-dev + - libgl1-mesa-dev + - libpcre2-dev + - libevdev-dev + - uthash-dev + - libev-dev + - libx11-xcb-dev diff --git a/playbook/setup.yml b/playbook/setup.yml new file mode 100644 index 0000000..a3106ae --- /dev/null +++ b/playbook/setup.yml @@ -0,0 +1,7 @@ +--- + +- name: Apply role-one to all nodes + hosts: all + remote_user: root + roles: + - role-one diff --git a/readme.txt b/readme.txt index 9fd4564..b7e9afb 100644 --- a/readme.txt +++ b/readme.txt @@ -4,8 +4,8 @@ - use xfconf-query for most changes - Hide icons - - xfce4-desktop : "desktop-icons/style" -t "int" -s 0 OR iterare through all icons(in file-icons properties) and set value to false - + - xfce4-desktop : "desktop-icons/style" -t "int" -s 0 + - xfwm4 "general/cycle_draw_frame" type="bool" set to false "general/placement_mode" type="string" set to center "general/show_dock_shadow" type="bool" set to false @@ -33,11 +33,12 @@ - xsettings : "Net/ThemeName" type="string" set to "WhiteSur-dark" : "Net/IconThemeName" type="string" set to "WhiteSur-dark" - : "Gtk/FontName" type="string" set to "San Francisco Display Regular" (maybe? cant find other setting for font) - : How to set monospace one? + : "Gtk/FontName" type="string" set to "San Francisco Display 10" + : "Gtk/MonospaceFontName" type="string" set to "Iosevka Term 10" + - xfwm4 : "general/theme" type="string" set to "WhiteSur-dark" - : "general/button_layout" type="string" value="O|HMC" set to "CHM|" (need to test) . How to hide arrow buttons? - : "general/title_font" set to "San Francisco Display Medium" + : "general/button_layout" type="string" value="O|HMC" set to "CHM|" + : "general/title_font" set to "San Francisco Display Medium 9" - Global menu - sudo apt install vala-panel-appmenu-common bamfdaemon // xfce4-appmenu-plugin diff --git a/xpple_menu.zip b/xpple_menu.zip new file mode 100644 index 0000000000000000000000000000000000000000..321ad26a97a64a4913afffce9ca6d0e35d2993e9 GIT binary patch literal 28154 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 literal 0 HcmV?d00001