Skip to content

Commit

Permalink
Add support for themes to riot-web
Browse files Browse the repository at this point in the history
  • Loading branch information
spantaleev committed Feb 26, 2020
1 parent cebadf4 commit 37f3a2d
Show file tree
Hide file tree
Showing 7 changed files with 93 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/inventory/*
!/inventory/.gitkeep
!/inventory/host_vars/.gitkeep
/roles/*/files/scratchpad
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
# 2020-02-26

## Riot-web themes are here

The playbook now makes it easy to install custom riot-web themes.

To learn more, take a look at our [riot-web documentation on Themes](docs/configuring-playbook-riot-web.md#themes).


# 2020-02-24

## Customize the server name in Riot's login page
Expand Down
11 changes: 11 additions & 0 deletions docs/configuring-playbook-riot-web.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,14 @@ Alternatively, **if there is no pre-defined variable** for a riot-web setting yo
- or, you can **extend and override the default configuration** ([`config.json.j2`](../roles/matrix-riot-web/templates/config.json.j2)) by making use of the `matrix_riot_web_configuration_extension_json_` variable. You can find information about this in [`roles/matrix-riot-web/defaults/main.yml`](../roles/matrix-riot-web/defaults/main.yml).

- or, if extending the configuration is still not powerful enough for your needs, you can **override the configuration completely** using `matrix_riot_web_configuration_default` (or `matrix_riot_web_configuration`). You can find information about this in [`roles/matrix-riot-web/defaults/main.yml`](../roles/matrix-riot-web/defaults/main.yml).


## Themes

To change the look of riot-web, you can define your own themes manually by using the `matrix_riot_web_settingDefaults_custom_themes` setting.

Or better yet, you can automatically pull it all themes provided by the [aaronraimist/riot-web-themes](https://github.com/aaronraimist/riot-web-themes) project by simply flipping a flag (`matrix_riot_web_themes_enabled: true`).

If you make your own theme, we encourage you to submit it to the **aaronraimist/riot-web-themes** project, so that the whole community could easily enjoy it.

Note that for a custom theme to work well, all riot-web/riot-desktop instances that you use must have the same theme installed.
15 changes: 15 additions & 0 deletions roles/matrix-riot-web/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,21 @@ matrix_riot_web_registration_enabled: false
# Controls whether Riot shows the presence features
matrix_riot_web_enable_presence_by_hs_url: ~

# Controls whether custom riot-web themes will be installed.
# When enabled, all themes found in the `matrix_riot_web_themes_repository_url` repository
# will be installed and enabled automatically.
matrix_riot_web_themes_enabled: false
matrix_riot_web_themes_repository_url: https://github.com/aaronraimist/riot-web-themes

# Controls the `settingsDefault.custom_themes` setting of the riot-web configuration.
# You can use this setting to define custom themes.
#
# Also, look at `matrix_riot_web_themes_enabled` for a way to pull in a bunch of custom themes automatically.
# If you define your own themes here and set `matrix_riot_web_themes_enabled: true`, your themes will be preserved as well.
#
# Note that for a custom theme to work well, all riot-web/riot-desktop instances that you use must have the same theme installed.
matrix_riot_web_settingDefaults_custom_themes: []

# Default riot-web configuration template which covers the generic use case.
# You can customize it by controlling the various variables inside it.
#
Expand Down
6 changes: 6 additions & 0 deletions roles/matrix-riot-web/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@
- setup-all
- setup-riot-web

- import_tasks: "{{ role_path }}/tasks/prepare_riot_web_themes.yml"
when: run_setup|bool
tags:
- setup-all
- setup-riot-web

- import_tasks: "{{ role_path }}/tasks/setup_riot_web.yml"
when: run_setup|bool
tags:
Expand Down
48 changes: 48 additions & 0 deletions roles/matrix-riot-web/tasks/prepare_riot_web_themes.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
---

#
# Tasks related to setting up riot-web themes
#

- block:
- name: Ensure riot-web themes repository is pulled
git:
repo: "{{ matrix_riot_web_themes_repository_url }}"
dest: "{{ role_path }}/files/scratchpad/riot-web-themes"

- name: Find all riot-web theme files
find:
paths: "{{ role_path }}/files/scratchpad/riot-web-themes"
patterns: "*.json"
recurse: true
register: matrix_riot_web_theme_file_list

- name: Read riot-web theme
slurp:
path: "{{ item.path }}"
register: "matrix_riot_web_theme_file_contents"
with_items: "{{ matrix_riot_web_theme_file_list.files }}"

- name: Load riot-web theme
set_fact:
matrix_riot_web_settingDefaults_custom_themes: "{{ matrix_riot_web_settingDefaults_custom_themes + [item['content'] | b64decode | from_json] }}"
with_items: "{{ matrix_riot_web_theme_file_contents.results }}"

run_once: true
delegate_to: 127.0.0.1
become: false
when: matrix_riot_web_themes_enabled|bool


# #
# # Tasks related to getting rid of riot-web themes (if it was previously enabled)
# #

- name: Ensure riot-web themes repository is removed
file:
path: "{{ role_path }}/files/scratchpad/riot-web-themes"
state: absent
run_once: true
delegate_to: 127.0.0.1
become: false
when: "not matrix_riot_web_themes_enabled|bool"
3 changes: 3 additions & 0 deletions roles/matrix-riot-web/templates/config.json.j2
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
"base_url": {{ matrix_riot_web_default_is_url|string|to_json }}
}
},
"settingDefaults": {
"custom_themes": {{ matrix_riot_web_settingDefaults_custom_themes|to_json }}
},
"disable_custom_urls": {{ matrix_riot_web_disable_custom_urls|to_json }},
"disable_guests": {{ matrix_riot_web_disable_guests|to_json }},
"brand": {{ matrix_riot_web_brand|to_json }},
Expand Down

0 comments on commit 37f3a2d

Please sign in to comment.