{"id":14984464,"url":"https://github.com/petermosmans/ansible-role-customize-gnome","last_synced_at":"2025-04-10T20:34:10.141Z","repository":{"id":44498836,"uuid":"112418633","full_name":"PeterMosmans/ansible-role-customize-gnome","owner":"PeterMosmans","description":"Ansible role that customizes the GNOME desktop. It installs fonts and GNOME extensions from packages or zip files, copies files like desktop backgrounds and GNOME shell tweaks to a host, and modifies user settings.","archived":false,"fork":false,"pushed_at":"2024-02-28T13:57:22.000Z","size":83,"stargazers_count":77,"open_issues_count":6,"forks_count":20,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-24T18:11:26.878Z","etag":null,"topics":["ansible","ansible-role","backgrounds","customization","desktop","fonts","gnome","gnome-shell","gnome-shell-extension","user-settings"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PeterMosmans.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-11-29T02:58:08.000Z","updated_at":"2025-01-22T13:31:56.000Z","dependencies_parsed_at":"2023-02-14T19:46:25.568Z","dependency_job_id":"e00fc424-8fbd-4e9b-800b-a076a7aaa8d9","html_url":"https://github.com/PeterMosmans/ansible-role-customize-gnome","commit_stats":{"total_commits":70,"total_committers":14,"mean_commits":5.0,"dds":0.3857142857142857,"last_synced_commit":"5ca921ee1d8d68728e922d13038347d71b4a6a46"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PeterMosmans%2Fansible-role-customize-gnome","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PeterMosmans%2Fansible-role-customize-gnome/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PeterMosmans%2Fansible-role-customize-gnome/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PeterMosmans%2Fansible-role-customize-gnome/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PeterMosmans","download_url":"https://codeload.github.com/PeterMosmans/ansible-role-customize-gnome/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248290044,"owners_count":21078923,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","ansible-role","backgrounds","customization","desktop","fonts","gnome","gnome-shell","gnome-shell-extension","user-settings"],"created_at":"2024-09-24T14:09:06.631Z","updated_at":"2025-04-10T20:34:10.107Z","avatar_url":"https://github.com/PeterMosmans.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ansible Role: customize-gnome\n\nBuild status for this role:\n[![Build Status](https://travis-ci.org/PeterMosmans/ansible-role-customize-gnome.svg)](https://travis-ci.org/PeterMosmans/ansible-role-customize-gnome)\n\nThis role customizes the GNOME desktop. It installs fonts and GNOME extensions\nfrom packages or zip files, copies files like desktop backgrounds and GNOME\nshell tweaks to a host, and modifies user settings. Settings can be supplied in\ndconf or GSettings format.\n\n## Requirements\n\nThe community.general collection, as specified in ``requirements.yml``. Install\nthe requirements using\n\n```bash\nansible-galaxy install -r requirements.yml\n```\n\nFurthermore, the ``community.general.dconf`` module requires the Python\n``psutil`` module. This module will be installed automatically.\n\n## Role Variables\n\nAll variables specific for this role start with `gnome_`. Available variables\nare listed below:\n\n**gnome_user**: The user whose settings will be modified. Example:\n\n```\ngnome_user: root\n```\n\nIf no `gnome_user` is specified, it will use the `ansible_user_id` variable (the\nuser under which Ansible connects to the node).\n\n**gnome_packages**: A list of packages that will be installed. Example:\n\n```\ngnome_packages:\n  - fonts-roboto\n```\n\n**gnome_fonts**: A list of fonts that will be downloaded from a remote source,\nunzipped and installed into the local fonts directory. Each list item consists\nof an `url`, `name`, and (glob) list of fonts in that zip file to install\n(`fonts`). Example:\n\n```\ngnome_fonts:\n  - url: https://github.com/adobe-fonts/source-code-pro/archive/2.030R-ro/1.050R-it.zip\n    name: SourceCodePro\n    fonts: \"source-code-pro-2.030R-ro-1.050R-it/OTF/*.otf\"\n```\n\n**gnome_files**: A list of files, specifying the source (`src`) and destination\n(`dest`) that will be copied from the host to the guest. Example:\n\n```\ngnome_files:\n  - src: gtk.css\n    dest: /home/{{ gnome_user }}/.config/gtk-3.0/gtk.css\n```\n\n**gnome_extensions**: A list of GNOME shell extensions that will be installed\n(downloaded from a remote source and unzipped to the users' local extensions).\n\nThe properties `url` and/or `name` of each item are loaded dynamically from\n[the web](https://extensions.gnome.org/extension-info/?pk=545) when `id` is\npresent.\n\n```\ngnome_extensions:\n  - id: 545\n```\n\nIf the property `enable` is present and set to a truthy value (e.g. `yes`), the\nextension will be enabled automatically after the installation. Example:\n\n```\ngnome_extensions:\n  - id: 1112\n    enable: yes\n```\n\nInstead of specifying the ID, you can also enforce the `url` and `name` keys.\nExample:\n\n```\ngnome_extensions:\n  - url:\n    \"https://extensions.gnome.org/download-extension/hidetopbar@mathieu.bidon.ca.shell-extension.zip?version_tag=6450\"\n    name: \"hidetopbar@mathieu.bidon.ca\"\n```\n\nNote that a predefined `name` and/or `url` value will not be overridden by\nspecifying the `id`.\n\n**gnome_gsettings**: A list of gsettings entries that will be set for the\n`gnome_user`, using `gsettings`. Each list item consists of a `schema`, `key`\nand `value` entry. Note that values should be contained within single quotes AND\ndouble quotes, due to Ansible's quoting settings for shell commands. Example:\n\n```\ngnome_gsettings:\n  - schema: org.gnome.desktop.interface\n    key: monospace-font-name\n    value: '\"Source Code Pro Medium 16\"'\n```\n\n**gnome_dconf**: A list of dconf entries that will be set for the `gnome_user`,\nusing `dconf`. Each list item consists of a `key` and `value` entry. Example:\n\n```\ngnome_dconf:\n  - key: /org/gnome/desktop/background/show-desktop-icons\n    value: \"false\"\n```\n\n**gtk_version**: The version string of GTK. This is used to create a GTK\nconfiguration directory, if it doesn't exist already. Example:\n\n```\ngtk_version: \"gtk-3.0\"\n```\n\n## Dependencies\n\nNone.\n\n## Example Playbook\n\n```\n- hosts: all\n  become: yes\n  become_method: sudo\n  roles:\n    - role: petermosmans.customize-gnome\n  vars:\n    gnome_dconf:\n      - key: /org/gnome/desktop/background/show-desktop-icons\n        value: \"false\"\n    gnome_extensions:\n      - url: https://extensions.gnome.org/download-extension/hidetopbar@mathieu.bidon.ca.shell-extension.zip?version_tag=6450\n        name: hidetopbar@mathieu.bidon.ca\n      - id: 15\n      - id: 1160\n        url: https://example.com/gnome-extension/1160.zip\n      - id: 1236\n        name: CustomNamedExtension\n      - id: 1267\n        name: CustomNamedExtension2\n        url: https://example.com/gnome-extension/1267.zip\n      - id: 1112\n        enable: yes\n    gnome_files:\n      - src: gtk.css\n        dest: \"/home/{{ gnome_user }}/.config/{{ gtk_version }}/gtk.css\"\n    gnome_fonts:\n      - url: https://github.com/adobe-fonts/source-code-pro/archive/2.030R-ro/1.050R-it.zip\n        name: SourceCodePro\n        fonts: \"source-code-pro-2.030R-ro-1.050R-it/OTF/*.otf\"\n    gnome_gsettings:\n      - schema: org.gnome.desktop.interface\n        key: monospace-font-name\n        value: '\"Source Code Pro Medium 16\"'\n      - schema: org.gnome.shell.extensions.dash-to-panel\n        schemadir: ~/.local/share/gnome-shell/extensions/dash-to-panel@jderose9.github.com/schemas\n        key: panel-position\n        value: TOP\n    gnome_packages:\n      - fonts-roboto\n    gnome_user: peter\n    gtk_version: 3.0\n```\n\nThis example will install the global fonts Roboto, Source Code Pro, the GNOME\nshell extension hidetopbar, and modifies several settings for the user `root`.\n\n## License\n\nGPLv3\n\n## Author Information\n\nInitially created by Peter Mosmans. Contributions by many others: see\nhttps://github.com/PeterMosmans/ansible-role-customize-gnome/graphs/contributors\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpetermosmans%2Fansible-role-customize-gnome","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpetermosmans%2Fansible-role-customize-gnome","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpetermosmans%2Fansible-role-customize-gnome/lists"}