diff --git a/local.yml b/local.yml index b0691d6..e14956b 100644 --- a/local.yml +++ b/local.yml @@ -130,7 +130,7 @@ - include_tasks: tasks/workstation/shared/software/dwm.yml - include_tasks: tasks/workstation/linux/software/i3.yml - + # Polished Desktop Environments # - include_tasks: tasks/workstation/freebsd/software/gnome.yml when: ansible_system == "FreeBSD" @@ -139,7 +139,7 @@ block: - include_tasks: tasks/workstation/linux/software/gnome.yml when: ansible_service_mgr == "systemd" - + - include_tasks: tasks/workstation/linux/software/cinnamon.yml - include_tasks: tasks/workstation/linux/software/lxqt.yml when: ansible_system == "Linux" @@ -174,6 +174,8 @@ - include_tasks: tasks/workstation/shared/settings/gnome.yml when: not mobile + - include_tasks: tasks/workstation/shared/settings/cinnamon.yml + when: not mobile - include_tasks: tasks/workstation/linux/cron/ansible.yml when: ansible_system == "Linux" and not mobile diff --git a/tasks/workstation/shared/settings/cinnamon.yml b/tasks/workstation/shared/settings/cinnamon.yml new file mode 100644 index 0000000..973af76 --- /dev/null +++ b/tasks/workstation/shared/settings/cinnamon.yml @@ -0,0 +1,338 @@ +--- +# 20260731 - Hyperling +# Cinnakon settings, copied from GNOME settings. + +# Temporarily removed while it's broken: +# , 'com.vscodium.codium.desktop', 'codium.desktop' +- name: Workstation | Account Management | Cinnamon | Facts + set_fact: + # Only do multiple entries per line if they are for the same exact program. + cinnamon_favorites: "[ 'org.gnome.Terminal.desktop' + , 'org.gnome.Console.desktop' + , 'gnome-system-monitor.desktop', 'org.gnome.SystemMonitor.desktop' + , 'org.gnome.Nautilus.desktop' + , 'io.gitlab.librewolf-community.desktop', 'librewolf.desktop' + , 'org.mozilla.firefox.desktop', 'firefox.desktop' + , 'com.vscodium.codium.desktop' + , 'codium.desktop' + , 'org.shotcut.Shotcut.desktop' + , 'io.lmms.LMMS.desktop' + , 'app.grayjay.Grayjay.desktop' + , 'io.lbry.lbry-app.desktop', 'lbry.desktop' + , 'com.valvesoftware.Steam.desktop' + , 'net.lutris.Lutris.desktop' + , 'mullvad-vpn.desktop' + , 'network.loki.Session.desktop' + , 'org.signal.Signal.desktop', 'signal-desktop.desktop' + , 'org.telegram.desktop.desktop' + , 'com.discordapp.Discord.desktop' + ]" + dconf_terminal: gnome-terminal + dconf_theme: Adwaita-dark + dconf_icons: Adwaita +# 2024-01-28 Not currently using local email clients. +#, 'org.gnome.Evolution.desktop' +#, 'chat.delta.desktop.desktop', 'deltachat.desktop' +#, 'org.gnome.Geary.desktop' +#, 'org.mozilla.Thunderbird.desktop' +# 2025-01-01 +# Reduce the amount of icons on the sidebar, things that may get added back. +#, 'org.godotengine.Godot.desktop' +# 2025-03-07 Removed in place of a 2nd VS Codium install (apt version). +#, 'com.visualstudio.code-oss.desktop', 'code-oss.desktop' +# 2025-03-21 Not really using Android Studio now that Flutter is working. +#, 'com.google.AndroidStudio.desktop' +# 2025-08-31 Not used a whole lot, installed again just to explore. +#, 'im.riot.Riot.desktop' +#, 'chat.simplex.simplex.desktop' + +- name: Workstation | Account Management | Cinnamon | Facts (NixOS) + set_fact: + dconf_terminal: kgx + when: ansible_distribution in ("NixOS") + +- name: Workstation | Account Management | Cinnamon | Facts (Ubuntu) + set_fact: + dconf_theme: Yaru-purple-dark + dconf_icons: Yaru-purple-dark + when: ansible_distribution in ("Ubuntu") + +# Make sure Gnome-Tweaks is installed +- name: Workstation | Account Management | Cinnamon | Install Dependencies + package: + name: + - "{{ gnome_tweaks }}" + - "{{ dconf_editor }}" + - "{{ psutil }}" + state: present + when: ansible_distribution not in ("NixOS") + +# Apply dconf settings through RC files due to distros without working psutil. +# Use the command 'dconf watch /' then change settings to see find these values. +- name: Workstation | Account Management | Cinnamon | Settings + blockinfile: + path: "{{ user_user.home }}/{{ item }}" + block: | + # Disable Cinnamon Settings While Converting From GNOME + if [[ 1 == 0 ]]; then + + ## Temporary Variables + Functions ## + + dconf_count=1 + function inc_dconf() { + dconf_count=$(( dconf_count + 1 )) + } + + ## Dash to Dock ## + + dconf write /org/gnome/shell/extensions/dash-to-dock/dock-position \ + "'LEFT'" && inc_dconf && + dconf write /org/gnome/shell/extensions/dash-to-dock/dock-fixed \ + true && inc_dconf && + dconf write /org/gnome/shell/extensions/dash-to-dock/dash-max-icon-size \ + 24 && inc_dconf && + + dconf write /org/gnome/shell/favorite-apps \ + "{{ gnome_favorites }}" && inc_dconf && + + dconf write /org/gnome/shell/extensions/dash-to-dock/apply-custom-theme \ + true && inc_dconf && + dconf write /org/gnome/shell/extensions/dash-to-dock/custom-theme-shrink \ + true && inc_dconf && + + dconf write /org/gnome/shell/extensions/dash-to-dock/dock-fixed \ + false && inc_dconf && + dconf write /org/gnome/shell/extensions/dash-to-dock/intellihide-mode \ + "'ALL_WINDOWS'" && inc_dconf && + + ## Generic ## + + dconf write /org/gnome/desktop/interface/color-scheme \ + "'prefer-dark'" && inc_dconf && + dconf write /org/gnome/desktop/interface/gtk-theme \ + "'{{ dconf_theme }}'" && inc_dconf && + dconf write /org/gnome/desktop/interface/icon-theme \ + "'{{ dconf_icons }}'" && inc_dconf && + + dconf write /org/gnome/desktop/interface/clock-show-date \ + true && inc_dconf && + dconf write /org/gnome/desktop/interface/clock-format \ + "'24h'" && inc_dconf && + dconf write /org/gnome/desktop/interface/clock-show-seconds \ + true && inc_dconf && + dconf write /org/gnome/desktop/interface/clock-show-weekday \ + true && inc_dconf && + dconf write /org/gnome/desktop/calendar/show-weekdate \ + true && inc_dconf && + + dconf write /org/gnome/desktop/interface/show-battery-percentage \ + true && inc_dconf && + + dconf write /org/gnome/desktop/wm/preferences/button-layout \ + "'appmenu:minimize,maximize,close'" && inc_dconf && + + dconf write /org/gnome/desktop/wm/preferences/num-workspaces \ + 1 && inc_dconf && + dconf write /org/gnome/mutter/dynamic-workspaces \ + false && inc_dconf && + + dconf write /org/gnome/mutter/edge-tiling \ + true && inc_dconf && + dconf write /org/gnome/desktop/interface/enable-hot-corners \ + false && inc_dconf && + + dconf write /org/gnome/mutter/center-new-windows \ + true && inc_dconf && + + dconf write /org/gnome/desktop/notifications/show-banners \ + true && inc_dconf && + dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution-alarm-notify/enable-sound-alerts \ + false && inc_dconf && + dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution-alarm-notify/enable \ + false && inc_dconf && + dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution/enable-sound-alerts \ + false && inc_dconf && + dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution/enable \ + false && inc_dconf && + + # Stop Update Notifications + + dconf write /org/gnome/software/allow-updates \ + false && inc_dconf && + dconf write /org/gnome/software/download-updates \ + false && inc_dconf && + dconf write /org/gnome/software/download-updates-notify \ + false && inc_dconf && + + # Red Mode (Night Light) + ( + typeset -l redmode + redmode="{{ redmode }}" + if [[ $redmode == "true" ]]; then + dconf write /org/gnome/settings-daemon/plugins/color/night-light-enabled \ + true && inc_dconf + fi + ) && + dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-automatic \ + false && inc_dconf && + #dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-from \ + # 2.0 && inc_dconf && + #dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-to \ + # 1.99 && inc_dconf && + dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-from \ + 19.00 && inc_dconf && + dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-to \ + 07.00 && inc_dconf && + + # 1700 is max through GNOME Settings, looks pretty red but can still see green vs blue. + # 1200 is max on f.lux type apps, pretty difficult to see the difference between green and blue. + # 0500 is the max on Red Moon, super intense on a laptop, not as much on a phone screen. + # - Basically makes everything like the dash of a Z31 300ZX, lol. + dconf write /org/gnome/settings-daemon/plugins/color/night-light-temperature \ + "uint32 1700" && inc_dconf && + + ## Keyboard Shortcuts ## + + dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/binding \ + "'t'" && inc_dconf && + dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/command \ + "'{{ dconf_terminal }}'" && inc_dconf && + dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/name \ + "'Open Terminal'" && inc_dconf && + + dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/binding \ + "'t'" && inc_dconf && + dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/command \ + "'{{ dconf_terminal }}'" && inc_dconf && + dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/name \ + "'Open Terminal 2'" && inc_dconf && + + dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings " + [ '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/' + , '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/' + ]" && inc_dconf && + + ## Privacy ## + + dconf write /org/gnome/desktop/privacy/disable-camera \ + true && inc_dconf && + dconf write /org/gnome/desktop/privacy/disable-microphone \ + true && inc_dconf && + + dconf write /org/gnome/desktop/privacy/recent-files-max-age \ + 7 && inc_dconf && + dconf write /org/gnome/desktop/privacy/remember-recent-files \ + false && inc_dconf && + + dconf write /org/gnome/desktop/privacy/old-files-age \ + "uint32 14" && inc_dconf && + dconf write /org/gnome/desktop/privacy/remove-old-trash-files \ + true && inc_dconf && + dconf write /org/gnome/desktop/privacy/remove-old-temp-files \ + true && inc_dconf && + + dconf write /org/gnome/desktop/notifications/show-in-lock-screen \ + false && inc_dconf && + dconf write /org/gnome/desktop/screensaver/lock-enabled \ + true && inc_dconf && + dconf write /org/gnome/desktop/screensaver/lock-delay \ + "uint32 0" && inc_dconf && + dconf write /org/gnome/desktop/session/idle-delay \ + "uint32 900" && inc_dconf && + dconf write /org/gnome/settings-daemon/plugins/power/sleep-inactive-ac-type \ + "'nothing'" && inc_dconf && + dconf write /org/gnome/settings-daemon/plugins/power/power-button-action \ + "'nothing'" && inc_dconf && + + dconf write /org/gnome/desktop/media-handling/autorun-never \ + true && inc_dconf && + + ## Gnome Terminal ## + + # TBD: Do not start new tabs in previous tab's directory. + # The profile ID is likely unique and will need to be retrieved first. + #/org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/preserve-working-directory + #'never' + + ## Wellbeing ## + + dconf write /org/gnome/desktop/screen-time-limits/daily-limit-enabled \ + true && inc_dconf && + dconf write /org/gnome/desktop/screen-time-limits/daily-limit-seconds \ + "uint32 33333" && inc_dconf && + dconf write /org/gnome/desktop/screen-time-limits/grayscale \ + true && inc_dconf && + dconf write /org/gnome/desktop/screen-time-limits/history-enabled \ + true && inc_dconf && + + #dconf write /org/gnome/desktop/break-reminders/selected-breaks \ + # "['eyesight', 'movement']" && inc_dconf && + #dconf write /org/gnome/desktop/break-reminders/selected-breaks \ + # "['movement']" && inc_dconf && + dconf write /org/gnome/desktop/break-reminders/selected-breaks \ + "@as []" && inc_dconf && + + dconf write /org/gnome/desktop/break-reminders/eyesight/duration-seconds \ + "uint32 180" && inc_dconf && + dconf write /org/gnome/desktop/break-reminders/eyesight/interval-seconds \ + "uint32 1800" && inc_dconf && + + dconf write /org/gnome/desktop/break-reminders/eyesight/countdown \ + false && inc_dconf && + dconf write /org/gnome/desktop/break-reminders/eyesight/delay-seconds \ + "uint32 180" && inc_dconf && + dconf write /org/gnome/desktop/break-reminders/eyesight/fade-screen \ + true && inc_dconf && + dconf write /org/gnome/desktop/break-reminders/eyesight/notify \ + false && inc_dconf && + dconf write /org/gnome/desktop/break-reminders/eyesight/notify-overdue \ + false && inc_dconf && + dconf write /org/gnome/desktop/break-reminders/eyesight/notify-upcoming \ + false && inc_dconf && + dconf write /org/gnome/desktop/break-reminders/eyesight/play-sound \ + false && inc_dconf && + dconf write /org/gnome/desktop/break-reminders/eyesight/interval-seconds \ + "uint32 1800" && inc_dconf && + + dconf write /org/gnome/desktop/break-reminders/movement/duration-seconds \ + "uint32 180" && inc_dconf && + dconf write /org/gnome/desktop/break-reminders/movement/interval-seconds \ + "uint32 1800" && inc_dconf && + + dconf write /org/gnome/desktop/break-reminders/movement/countdown \ + false && inc_dconf && + dconf write /org/gnome/desktop/break-reminders/movement/delay-seconds \ + "uint32 60" && inc_dconf && + dconf write /org/gnome/desktop/break-reminders/movement/fade-screen \ + false && inc_dconf && + dconf write /org/gnome/desktop/break-reminders/movement/notify \ + false && inc_dconf && + dconf write /org/gnome/desktop/break-reminders/movement/notify-overdue \ + false && inc_dconf && + dconf write /org/gnome/desktop/break-reminders/movement/notify-upcoming \ + false && inc_dconf && + dconf write /org/gnome/desktop/break-reminders/movement/play-sound \ + false && inc_dconf && + + ## Success ## + + sleep 0 || + + ## Error Catch ## + + echo "ERROR: DConf setting# $dconf_count failed!" + + ## Cleanup ## + + unset -f inc_dconf + unset dconf_count + + fi # End Disable Cinnamon Settings + marker: '# {mark} MANAGED BY ANSIBLE | Cinnamon Settings' + state: present + create: yes + backup: yes + become_user: "{{ user }}" + loop: + - .bashrc + - .zshrc