diff --git a/ansible/playbooks/install_rviz_theme.yaml b/ansible/playbooks/install_rviz_theme.yaml new file mode 100644 index 00000000000..a30b0900ddf --- /dev/null +++ b/ansible/playbooks/install_rviz_theme.yaml @@ -0,0 +1,4 @@ +- name: Install RViz theme + hosts: localhost + roles: + - autoware.dev_env.qt5ct_setup diff --git a/ansible/playbooks/universe.yaml b/ansible/playbooks/universe.yaml index e443c041bc5..ce32248d98b 100644 --- a/ansible/playbooks/universe.yaml +++ b/ansible/playbooks/universe.yaml @@ -62,3 +62,6 @@ # ONNX files and other artifacts - role: autoware.dev_env.artifacts when: prompt_download_artifacts == 'y' + + # Qt5ct setup (RViz theme) + - role: autoware.dev_env.qt5ct_setup diff --git a/ansible/roles/qt5ct_setup/README.md b/ansible/roles/qt5ct_setup/README.md new file mode 100644 index 00000000000..41fc944eb4e --- /dev/null +++ b/ansible/roles/qt5ct_setup/README.md @@ -0,0 +1,60 @@ +# qt5ct_setup Ansible role + +## Overview + +The `qt5ct_setup` Ansible role automates the configuration of the `qt5ct` environment for Autoware. +It won't affect the system-wide configuration. + +## Installation + +Follow the instructions below to **install** or **update** the custom theme for `RViz2` in Autoware. + +> **Important:** Both commands must be run when you want to update the theme. + +```bash +cd ~/autoware # The root directory of the cloned repository +ansible-galaxy collection install -f -r "ansible-galaxy-requirements.yaml" +ansible-playbook autoware.dev_env.install_rviz_theme --ask-become-pass +``` + +## How to use the custom theme in RViz2 + +To apply a custom theme to RViz2, you can use the `qt5ct` platform theme. Follow these steps to ensure that the `QT_QPA_PLATFORMTHEME` environment variable is set correctly for your RViz2 instance when used with Autoware. + +### Manual setup for running RViz2 + +Before running RViz2 manually, set the `QT_QPA_PLATFORMTHEME` environment variable to `qt5ct`. +This ensures that the custom theme settings are applied. + +```bash +export QT_QPA_PLATFORMTHEME=qt5ct +``` + +Then, start RViz2 as usual. + +```bash +rviz2 +``` + +### Automatic setup in Autoware + +In Autoware, the `QT_QPA_PLATFORMTHEME` environment variable is automatically set within the main [autoware.launch.xml](https://github.com/autowarefoundation/autoware_launch/blob/main/autoware_launch/launch/autoware.launch.xml) file. +Therefore, you do not need to manually set this environment variable when launching Autoware. + +In the `autoware.launch.xml` file, RViz2 is configured with the following `` element: + +```xml + + + +``` + +This configuration automatically sets the `QT_QPA_PLATFORMTHEME` to `qt5ct` when RViz2 is launched as part of Autoware. +It also includes additional options such as respawn behavior and custom RViz2 configurations. diff --git a/ansible/roles/qt5ct_setup/defaults/main.yml b/ansible/roles/qt5ct_setup/defaults/main.yml new file mode 100644 index 00000000000..bdaab0e3e6d --- /dev/null +++ b/ansible/roles/qt5ct_setup/defaults/main.yml @@ -0,0 +1 @@ +# defaults file for qt5ct_setup diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/downarrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/downarrow.svg new file mode 100644 index 00000000000..22a70a5fbc9 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/downarrow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/uparrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/uparrow.svg new file mode 100644 index 00000000000..b283329b32b --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/active/uparrow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-end.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-end.svg new file mode 100755 index 00000000000..decd600a806 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-end.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-more.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-more.svg new file mode 100755 index 00000000000..669c8ee6b77 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/branch-more.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/downarrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/downarrow.svg new file mode 100755 index 00000000000..22a70a5fbc9 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/downarrow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/leftarrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/leftarrow.svg new file mode 100755 index 00000000000..a1b5eb770c3 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/leftarrow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_checked.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_checked.svg new file mode 100755 index 00000000000..462030e6b75 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_checked.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_unchecked.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_unchecked.svg new file mode 100755 index 00000000000..73e58ac050b --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/radiobutton_unchecked.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/rightarrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/rightarrow.svg new file mode 100755 index 00000000000..31224808311 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/rightarrow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/uparrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/uparrow.svg new file mode 100755 index 00000000000..b283329b32b --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/uparrow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/vline.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/vline.svg new file mode 100755 index 00000000000..67f84120ce2 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/disabled/vline.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/add.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/add.svg new file mode 100644 index 00000000000..c747fc89c49 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-closed.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-closed.svg new file mode 100755 index 00000000000..43acdf27491 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-closed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-end.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-end.svg new file mode 100755 index 00000000000..87f7840f363 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-end.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-more.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-more.svg new file mode 100755 index 00000000000..9f8af0ba8c3 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-more.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-open.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-open.svg new file mode 100755 index 00000000000..d22353f4e9e --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/branch-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_disabled.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_disabled.svg new file mode 100644 index 00000000000..f737c436438 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_disabled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_enabled.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_enabled.svg new file mode 100644 index 00000000000..d9eee3a1e08 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_enabled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_hovered.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_hovered.svg new file mode 100644 index 00000000000..b49a8cf315b --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_hovered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_pressed.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_pressed.svg new file mode 100644 index 00000000000..5d3bccb1941 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_checked_pressed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_disabled.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_disabled.svg new file mode 100644 index 00000000000..8f9b9ae512c --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_disabled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_enabled.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_enabled.svg new file mode 100644 index 00000000000..797fb421df9 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_enabled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_hovered.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_hovered.svg new file mode 100644 index 00000000000..43b20a76820 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_hovered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_pressed.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_pressed.svg new file mode 100644 index 00000000000..a39172c056a --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_indeterminate_pressed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_disabled.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_disabled.svg new file mode 100644 index 00000000000..873587b1985 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_disabled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_enabled.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_enabled.svg new file mode 100644 index 00000000000..265a55067f5 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_enabled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_hovered.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_hovered.svg new file mode 100644 index 00000000000..27990330dc2 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_hovered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_pressed.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_pressed.svg new file mode 100644 index 00000000000..e9c0436eb7e --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/checkbox_unchecked_pressed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/close.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/close.svg new file mode 100755 index 00000000000..fed396b0d88 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/downarrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/downarrow.svg new file mode 100755 index 00000000000..8176e8f50b0 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/downarrow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/float.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/float.svg new file mode 100755 index 00000000000..bb2383e4ec7 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/float.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/leftarrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/leftarrow.svg new file mode 100755 index 00000000000..e595c0d652d --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/leftarrow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/minus.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/minus.svg new file mode 100644 index 00000000000..7be3c893e40 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/more.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/more.svg new file mode 100644 index 00000000000..c11e849e587 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/more.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked.svg new file mode 100755 index 00000000000..ea2d8183e3d --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked_invert.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked_invert.svg new file mode 100755 index 00000000000..92003b1b80c --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_checked_invert.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked.svg new file mode 100755 index 00000000000..ec6ee7a3213 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked_invert.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked_invert.svg new file mode 100755 index 00000000000..5defd965a50 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/radiobutton_unchecked_invert.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/rightarrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/rightarrow.svg new file mode 100755 index 00000000000..4845aa5975c --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/rightarrow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/sizegrip.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/sizegrip.svg new file mode 100755 index 00000000000..6a3d5ec4839 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/sizegrip.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/slider.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/slider.svg new file mode 100755 index 00000000000..ecd7581285f --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/slider.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/splitter-horizontal.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/splitter-horizontal.svg new file mode 100644 index 00000000000..6be8cb04a16 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/splitter-horizontal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/splitter-vertical.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/splitter-vertical.svg new file mode 100644 index 00000000000..d4819f465e5 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/splitter-vertical.svg @@ -0,0 +1,3 @@ + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/tab_close.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/tab_close.svg new file mode 100755 index 00000000000..3c758445d0a --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/tab_close.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-horizontal.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-horizontal.svg new file mode 100755 index 00000000000..0d639307250 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-horizontal.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-vertical.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-vertical.svg new file mode 100755 index 00000000000..b6b267ead6f --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/toolbar-handle-vertical.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/uparrow.svg b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/uparrow.svg new file mode 100755 index 00000000000..cab8eba2ab5 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware-rviz-icons/primary/uparrow.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/ansible/roles/qt5ct_setup/files/autoware.qss b/ansible/roles/qt5ct_setup/files/autoware.qss new file mode 100644 index 00000000000..d0e2af381f7 --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/autoware.qss @@ -0,0 +1,1392 @@ +/* ------------------------------------------------------------------------ */ +/* QtMaterial - https://github.com/UN-GCPDS/qt-material +/* By Yeison Cardona - GCPDS +/* ------------------------------------------------------------------------ */ + +* { + color: #ffffff; + font-family: Roboto, sans-serif; + font-size: 13px; + line-height: 13px; + selection-color: #0f1417; +} + +*:focus { + outline: none; +} + +/* Basic widgets */ + +QWidget { + background-color: #0f1417; +} + +QGroupBox, +QFrame { + background-color: #0f1417; +} + +QGroupBox.fill_background, +QFrame.fill_background { + background-color: #0f1417; +} + +QSplitter { + background-color: transparent; + border: none; +} + +QStatusBar { + color: #ffffff; + background-color: #0f1417; + border-radius: 0px; +} + +QScrollArea, +QStackedWidget, +QWidget > QToolBox, +QToolBox > QWidget, +QTabWidget > QWidget { + border: none; +} + +QTabWidget::pane { + border: none; +} + +/* ------------------------------------------------------------------------ */ +/* Inputs */ + +QDateEdit, +QDateTimeEdit, +QSpinBox, +QDoubleSpinBox, +QComboBox, +QLineEdit { + color: #ffffff; + padding-left: 16px; + border-radius: 0px; + height: 24px; + background-color: #0f1417; +} + +QListView { + color: #ffffff; + height: 24px; + background-color: #1b2023; + selection-background-color: #303538; + selection-color: #ffffff; +} + +QPlainTextEdit { + padding: 8px 0px; + background-color: #0f1417; + border: 2px solid #0f1417; +} + +QTextEdit { + padding: 8px 0px; + background-color: #0f1417; +} + +QSpinBox, +QDoubleSpinBox { + color: #ffffff; + background-color: #292d30; + height: 24px; + border-bottom: 1px solid #DFE3E7; + selection-background-color: #84c2e6; +} + +QAbstractSpinBox { + padding: 2px; +} + +QDateEdit:disabled, +QDateTimeEdit:disabled, +QSpinBox:disabled, +QDoubleSpinBox:disabled, +QTextEdit:disabled, +QLineEdit:disabled { + color: rgba(255, 255, 255, 0.2); + background-color: rgba(35, 38, 41, 0.3); + border: 2px solid #232629; + border-width: 0 0 2px 0; + padding: 0px 16px; + border-radius: 0px; + height: 24px; +} + +/* ------------------------------------------------------------------------ */ +/* QComboBox */ + +QDateEdit, +QComboBox { + color: #ffffff; + height: 24px; + background-color: #292d30; + border-bottom: 1px solid #DFE3E7; +} + +QDateEdit:disabled, +QComboBox:disabled { + color: rgba(255, 255, 255, 0.2); + background-color: rgba(35, 38, 41, 0.3); + border-bottom: 2px solid #232629; +} + +QDateEdit::drop-down, +QComboBox::drop-down { + border: none; +} + +QDateEdit::down-arrow, +QComboBox::down-arrow { + image: url("/icons_path/active/downarrow.svg"); +} + +QDateEdit::down-arrow:focus, +QComboBox::down-arrow:focus { + image: url("/icons_path/primary/downarrow.svg"); +} + +QDateEdit::down-arrow:disabled, +QComboBox::down-arrow:disabled { + image: url("/icons_path/disabled/downarrow.svg"); +} + +QDateEdit QAbstractItemView, +QComboBox QAbstractItemView { + background-color: #0f1417; + padding: 4px; +} + +QDateEdit[frame="false"], +QComboBox[frame="false"] { + color: #ffffff; + background-color: transparent; + border: 1px solid transparent; +} + +QDateEdit[frame="false"]:disabled, +QComboBox[frame="false"]:disabled { + color: rgba(255, 255, 255, 0.2); +} + +/* ------------------------------------------------------------------------ */ +/* Spin buttons */ + +QDateTimeEdit::up-button, +QDoubleSpinBox::up-button, +QSpinBox::up-button { + subcontrol-origin: border; + subcontrol-position: top right; + width: 20px; + image: url("/icons_path/active/uparrow.svg"); + border-width: 0px; + margin-top: 5px; +} + +QTreeView QDateTimeEdit::up-button, +QTreeView QDoubleSpinBox::up-button, +QTreeView QSpinBox::up-button { + margin-top: 0px; +} + +QDateTimeEdit::up-button:disabled, +QDoubleSpinBox::up-button:disabled, +QSpinBox::up-button:disabled { + image: url("/icons_path/disabled/uparrow.svg"); +} + +QDateTimeEdit::down-button, +QDoubleSpinBox::down-button, +QSpinBox::down-button { + subcontrol-origin: border; + subcontrol-position: bottom right; + width: 20px; + image: url("/icons_path/active/downarrow.svg"); + border-width: 0px; + border-top-width: 0; + margin-bottom: 5px; +} + +QTreeView QDateTimeEdit::down-button, +QTreeView QDoubleSpinBox::down-button, +QTreeView QSpinBox::down-button { + margin-bottom: 0px; +} + +QDateTimeEdit::down-button:disabled, +QDoubleSpinBox::down-button:disabled, +QSpinBox::down-button:disabled { + image: url("/icons_path/disabled/downarrow.svg"); +} + +/* ------------------------------------------------------------------------ */ +/* QPushButton */ + +QPushButton { + text-transform: capitalize; + margin: 0px; + padding: 0px 16px; + height: 24px; + font-weight: bold; + color: #003546; + border: 2px solid rgba(255, 255, 255, 0); + border-radius: 14px; + background-color: #8bd0f0; +} + +QPushButton:checked, +QPushButton:pressed { + color: #003546; + background-color: #84c2e6; +} + +QPushButton:hover { + background-color: #84c2e6; + color: #003546; + border: 2px solid rgba(255, 255, 255, 0); +} + +QPushButton:flat { + margin: 0px; + color: #84c2e6; + border: none; + background-color: transparent; +} + +QPushButton:flat:hover { + background-color: #84c2e6; +} + +QPushButton:flat:pressed, +QPushButton:flat:checked { + background-color: #699bb8; +} + +QPushButton:disabled { + color: #6e7276; + background-color: #292d30; + border: 2px solid rgba(255, 255, 255, 0); +} + +QPushButton:flat:disabled { + color: #6e7276; + background-color: #292d30; + border: none; +} + +QPushButton:checked:disabled { + color: #6e7276; + background-color: #0f1417; + border: 2px solid rgba(255, 255, 255, 0); +} + +QToolButton:focus, +QPushButton:focus { + background-color: #84c2e6; +} + +QPushButton:checked:focus, +QPushButton:pressed:focus { + background-color: #699bb8; +} + +QPushButton:flat:focus { + border: none; + background-color: #84c2e6; +} + +/* ------------------------------------------------------------------------ */ +/* QTabBar */ + +QTabBar { + text-transform: capitalize; + font-weight: bold; +} + +QTabBar::tab { + color: #ffffff; + border-top: 2px solid rgba(255, 255, 255, 0); +} + +QTabBar::tab:bottom, +QTabBar::tab:top { + padding: 0 16px; + height: 28px; +} + +QTabBar::tab:left, +QTabBar::tab:right { + padding: 16px 0; + width: 28px; +} + +QTabBar::tab:top:selected, +QTabBar::tab:top:hover { + border-bottom: 2px solid #8bd0f0; +} + +QTabBar::tab:bottom:selected, +QTabBar::tab:bottom:hover { + border-top: 2px solid #8bd0f0; +} + +QTabBar::tab:right:selected, +QTabBar::tab:right:hover { + border-left: 2px solid #8bd0f0; +} + +QTabBar::tab:left:selected, +QTabBar::tab:left:hover { + border-right: 2px solid #8bd0f0; +} + +QTabBar::tab:hover { + color: #fff; + background-color: #303538; +} + +QTabBar::tab:selected { + color: #fff; + background-color: #292d30; +} + +/* pressed state */ +QTabBar::tab:pressed { + color: #fff; + background-color: #383b3f; +} + +QTabBar QToolButton:hover, +QTabBar QToolButton { + border: 0px; + background-color: #232629; +} + +QTabBar QToolButton::up-arrow { + image: url("/icons_path/primary/uparrow.svg"); + width: 28px; +} + +QTabBar QToolButton::down-arrow { + image: url("/icons_path/primary/downarrow.svg"); + width: 28px; +} + +QTabBar QToolButton::right-arrow { + image: url("/icons_path/disabled/rightarrow.svg"); + height: 28px; +} + +QTabBar QToolButton::left-arrow { + image: url("/icons_path/disabled/leftarrow.svg"); + height: 28px; +} + +QTabBar::close-button { + image: url("/icons_path/primary/tab_close.svg"); +} + +QTabBar::close-button:hover { + image: url("/icons_path/primary/tab_close.svg"); +} + +/* ------------------------------------------------------------------------ */ +/* QGroupBox */ + +QGroupBox { + padding: 16px; + padding-top: 36px; + text-transform: capitalize; +} + +QGroupBox::title { + color: #dfe3e7; + subcontrol-origin: margin; + subcontrol-position: top left; + padding: 16px; + background-color: transparent; + height: 36px; +} + +/* ------------------------------------------------------------------------ */ +/* QRadioButton and QCheckBox labels */ + +QRadioButton, +QCheckBox { + color: #84c2e6; + line-height: 12px; + height: 24px; + background-color: transparent; + spacing: 5px; +} + +QRadioButton:disabled, +QCheckBox:disabled { + color: #8bd0f0; +} + +/* ------------------------------------------------------------------------ */ +/* QRadioButton Indicator */ + +QRadioButton::indicator:checked { + image: url("/icons_path/primary/radiobutton_checked.svg"); +} + +QRadioButton::indicator:unchecked { + image: url("/icons_path/primary/radiobutton_unchecked.svg"); +} + +QRadioButton::indicator:checked:disabled { + image: url("/icons_path/disabled/radiobutton_checked.svg"); +} + +QRadioButton::indicator:unchecked:disabled { + image: url("/icons_path/disabled/radiobutton_unchecked.svg"); +} + +/* ------------------------------------------------------------------------ */ +/* QDockWidget */ + +QDockWidget { + color: #ffffff; + text-transform: capitalize; + border: 2px solid #232629; + titlebar-close-icon: url("/icons_path/primary/close.svg"); + titlebar-normal-icon: url("/icons_path/primary/float.svg"); + border-radius: 4px; +} + +QDockWidget::title { + text-align: left; + padding-left: 36px; + padding: 3px; + margin-top: 4px; +} + +/* ------------------------------------------------------------------------ */ +/* QMenu */ + +QMenu { + background-color: #1b2023; + margin: 10px; +} + +QMenu::item { + height: 14px; + margin: 4px; + padding: 0px; + color: #ffffff; +} + +QMenu::item:selected { + background-color: #303538; + margin-top: 0px; + margin-bottom: 0px; +} + +QMenu::item:disabled { + color: rgba(255, 255, 255, 0.3); +} + +QMenu::separator { + height: 1px; + margin: 2px; + background-color:#40484C; +} + +QMenu::right-arrow { + image: url("/icons_path/primary/rightarrow.svg"); + width: 16px; + height: 16px; +} + +QMenu::right-arrow:selected { + image: url("/icons_path/disabled/rightarrow.svg"); +} + +/* QMenu Checkboxes */ + +QMenu::indicator:non-exclusive:unchecked { + image: url("/icons_path/primary/checkbox_unchecked_enabled.svg"); +} + +QMenu::indicator:non-exclusive:unchecked:selected { + image: url("/icons_path/primary/checkbox_unchecked_hovered.svg"); +} + +QMenu::indicator:non-exclusive:checked { + image: url("/icons_path/primary/checkbox_checked_enabled.svg"); +} + +QMenu::indicator:non-exclusive:checked:selected { + image: url("/icons_path/primary/checkbox_checked_hovered.svg"); +} + +/* QMenu Radiobuttons */ + +QMenu::indicator:exclusive:unchecked { + image: url("/icons_path/primary/radiobutton_unchecked.svg"); +} + +QMenu::indicator:exclusive:unchecked:selected { + image: url("/icons_path/primary/radiobutton_unchecked_invert.svg"); +} + +QMenu::indicator:exclusive:checked { + image: url("/icons_path/primary/radiobutton_checked.svg"); +} + +QMenu::indicator:exclusive:checked:selected { + image: url("/icons_path/primary/radiobutton_checked_invert.svg"); +} + +/* ------------------------------------------------------------------------ */ +/* QMenuBar */ + +QMenuBar { + background-color: #0f1417; + color: #ffffff; + border-bottom: 2px solid rgba(255, 255, 255, 0); +} + +QMenuBar::item { + /* height: 32px; */ + padding: 4px; + background-color: transparent; + color: #ffffff; +} + +QMenuBar::item:selected, +QMenuBar::item:pressed { + color: #ffffff; + background-color: #303538; +} + +/* ------------------------------------------------------------------------ */ +/* QToolBox */ + +QToolBox::tab { + background-color: #0f1417; + color: #ffffff; + text-transform: capitalize; + border-radius: 4px; + padding-left: 15px; +} + +QToolBox::tab:selected, +QToolBox::tab:hover { + background-color: #84c2e6; +} + +/* ------------------------------------------------------------------------ */ +/* QProgressBar */ + +QProgressBar { + border-radius: 0; + background-color: #0f1417; + text-align: center; + color: transparent; +} + +QProgressBar::chunk { + background-color: #84c2e6; +} + +/* ------------------------------------------------------------------------ */ +/* QScrollBar */ + +QScrollBar { + border: 0; + background: rgba(255, 255, 255, 0.15); + border-radius: 5px; +} + +QScrollBar:horizontal { + height: 10px; +} + +QScrollBar:vertical { + width: 10px; +} + +QScrollBar::handle { + background: #8bd0f0; + border-radius: 5px; +} + +QScrollBar::handle:horizontal { + min-width: 24px; +} + +QScrollBar::handle:vertical { + min-height: 24px; +} + +QScrollBar::handle:hover { + background-color: #84c2e6; +} + +QScrollBar::handle:pressed { + background-color: #699bb8; +} + +QScrollBar::add-line:vertical, +QScrollBar::sub-line:vertical, +QScrollBar::add-line:horizontal, +QScrollBar::sub-line:horizontal { + border: 0; + background: transparent; + width: 0px; + height: 0px; +} + +QScrollBar::sub-page:horizontal, +QScrollBar::add-page:horizontal, +QScrollBar::sub-page:vertical, +QScrollBar::add-page:vertical { + background: transparent; +} + +/* ------------------------------------------------------------------------ */ +/* QScrollBar-Big */ + +QScrollBar.big:horizontal { + border: 0; + background: #232629; + height: 36px; +} + +QScrollBar.big:vertical { + border: 0; + background: #232629; + width: 36px; +} + +QScrollBar.big::handle, +QScrollBar.big::handle:vertical:hover, +QScrollBar.big::handle:horizontal:hover { + background: #84c2e6; +} + +QScrollBar.big::handle:horizontal { + min-width: 24px; +} + +QScrollBar.big::handle:vertical { + min-height: 24px; +} + +QScrollBar.big::add-line:vertical, +QScrollBar.big::sub-line:vertical, +QScrollBar.big::add-line:horizontal, +QScrollBar.big::sub-line:horizontal { + border: 0; + background: transparent; + width: 0px; + height: 0px; +} + +/* ------------------------------------------------------------------------ */ +/* QSlider */ +QSlider { + min-height: 20px; + min-width: 20px; +} + +QSlider:horizontal { + min-height: 30px; + min-width: 30px; +} + +QSlider:vertical { +} + +QSlider::groove:horizontal { + border: 1px solid #262626; + height: 4px; + background: #0f1417; + margin: 0; +} + +QSlider::groove:vertical { + width: 4px; + background: #0f1417; + margin: 12px 0; +} + +QSlider::handle:horizontal { + width: 22px; + height: 18px; + margin: -9px -9px; +} + +QSlider::handle:vertical { + background: #84c2e6; + width: 9px; + height: 9px; + min-height: 0px; + margin: -9px -18px; +} + +QSlider::add-page { + background: #5e5e5e; +} + +QSlider::sub-page { + background: #84c2e6; +} + +/* ------------------------------------------------------------------------ */ +/* QLabel */ + +QLabel { + border: none; + background: transparent; + color: #ffffff; +} + +QLabel:disabled { + color: rgba(255, 255, 255, 0.2); +} + +/* ------------------------------------------------------------------------ */ +/* VLines and HLinex */ + +QFrame[frameShape="4"] { + border-width: 1px 0 0 0; + background: none; +} + +QFrame[frameShape="5"] { + border-width: 0 1px 0 0; + background: none; +} + +QFrame[frameShape="4"], +QFrame[frameShape="5"] { + border-color: #0f1417; +} + +/* ------------------------------------------------------------------------ */ +/* QToolBar */ + +QToolBar { + background: #0f1417; + border: 0px solid; +} + +QToolBar:horizontal { + /* border-bottom: 1px solid rgba(132, 194, 230, 0.7); */ + border-top: 1px solid rgba(132, 194, 230, 0.7); +} + +QToolBar:vertical { + border-right: 1px solid rgba(132, 194, 230, 0.7); + border-left: 1px solid rgba(132, 194, 230, 0.7); +} + +QToolBar::handle:horizontal { + image: url("/icons_path/primary/toolbar-handle-horizontal.svg"); +} + +QToolBar::handle:vertical { + image: url("/icons_path/primary/toolbar-handle-vertical.svg"); +} + +QToolBar::separator:horizontal { + border-top: 1px solid rgba(132, 194, 230, 0.7); + border-bottom: 1px solid rgba(132, 194, 230, 0.7); + width: 1px; +} + +QToolBar::separator:vertical { + border-top: 1px solid rgba(132, 194, 230, 0.7); + border-bottom: 1px solid rgba(132, 194, 230, 0.7); + height: 1px; +} + +/* ------------------------------------------------------------------------ */ +/* QToolButton */ + +QToolButton { + background: #171c1f; + border: 0px; + margin: 2px; + padding: 2px; + border-radius: 15px; + color: #8bd0f0; +} + +QToolButton:hover { + background: #262931; +} + +QToolButton:pressed { + background: #2d303a; +} + +QToolButton:checked { + background: #2d303a; + border: 1px solid #8bd0f0; +} + +/* ------------------------------------------------------------------------ */ +/* General viewers */ + +QTableView { + background-color: #0f1417; + border: 1px solid #232629; + border-radius: 4px; +} + +QTreeView, +QListView { + margin: 0px; + border: 0px; +} + +QTableView::item, +QTreeView::item, +QListView::item { + padding: 2px; + min-height: 12px; + color: #ffffff; + border-color: transparent; +} + +QListView::item { + margin-left: 0px; + margin-right: 2px; + background-color: #1b2023; +} + +/* ------------------------------------------------------------------------ */ +/* Items Selection */ + +QTableView::item:selected, +QTreeView::item:selected, +QListView::item:selected { + background-color: #303538; + color: #ffffff; +} + +QTableView::item:selected:focus, +QTreeView::item:selected:focus, +QListView::item:selected:focus { + color: #ffffff; +} + +QTableView::item:disabled { + color: #bdbdbd; + background-color: #303538; +} + +/* ------------------------------------------------------------------------ */ +/* QTreeView */ + +QTreeView::branch { + background-color: transparent; +} + +QTreeView::branch:hover { + background-color: transparent; +} + +QTreeView::branch:selected { + background-color: #303538; +} + +QTreeView::branch:closed:has-children:has-siblings, +QTreeView::branch:closed:has-children:!has-siblings { + image: url("/icons_path/primary/branch-closed.svg"); + margin-left: -8px; +} + +QTreeView::branch:open:has-children:!has-siblings, +QTreeView::branch:open:has-children:has-siblings { + image: url("/icons_path/primary/branch-open.svg"); + margin-left: -8px; +} + +/* Commented in case decided to show the branch icons */ +/* +QTreeView::branch:has-siblings:!adjoins-item { + border-image: url("/icons_path/disabled/vline.svg"); +} + +QTreeView::branch:has-siblings:adjoins-item { + border-image: url("/icons_path/disabled/branch-more.svg"); +} + +QTreeView::branch:!has-children:!has-siblings:adjoins-item, +QTreeView::branch:has-children:!has-siblings:adjoins-item { + border-image: url("/icons_path/disabled/branch-end.svg"); +} */ + +QTreeView QHeaderView::section { + border: none; +} + +/* QTableView */ + +QTableCornerButton::section { + background-color: #0f1417; + border-radius: 0px; + border-right: 1px solid; + border-bottom: 1px solid; + border-color: #31363b; +} + +QHeaderView { + border: none; +} + +QHeaderView::section { + color: rgba(255, 255, 255, 0.7); + text-transform: capitalize; + background-color: #0f1417; + padding: 4px 6px; + border-radius: 0px; + border-right: 1px solid; + border-bottom: 1px solid; + border-color: #31363b; +} + +QHeaderView::section:vertical { +} + +QHeaderView::section:horizontal { +} + +/* ------------------------------------------------------------------------ */ +/* QLCDNumber */ + +QLCDNumber { + color: #84c2e6; + background-color: #699bb8; + border: 1px solid rgba(132, 194, 230, 0.3); + border-radius: 4px; +} + +/* ------------------------------------------------------------------------ */ +/* QCalendarWidget */ + +QCalendarWidget { + min-height: 300px; +} + +#qt_calendar_prevmonth { + qproperty-icon: url("/icons_path/primary/leftarrow.svg"); +} + +#qt_calendar_nextmonth { + qproperty-icon: url("/icons_path/primary/rightarrow.svg"); +} + +/* ------------------------------------------------------------------------ */ +/* Inline QLineEdit */ + +QTreeView QLineEdit, +QTableView QLineEdit, +QListView QLineEdit { + color: #ffffff; + background-color: #0f1417; + /* border: 1px solid unset; */ + border-radius: unset; + padding: unset; + padding-left: unset; + height: unset; + border-width: unset; + border-top-left-radius: unset; + border-top-right-radius: unset; +} + +/* ------------------------------------------------------------------------ */ +/* QToolTip */ + +QToolTip { + padding: 4px; + border: 1px solid #31363b; + border-radius: 4px; + color: #ffffff; + background-color: #0f1417; +} + +/* ------------------------------------------------------------------------ */ +/* QDialog */ + +/* linux */ +QDialog QToolButton, +QDialog QToolButton:hover, +QDialog QToolButton:pressed, +QDialog QToolButton:checked { + border: 0px; + height: unset; + margin: unset; + padding: unset; + border-right: unset; + border-left: unset; + background-color: #84c2e6; + color: #ffffff; + border-radius: 8px; +} + +QDialog QToolButton:disabled { + background-color: #0f1417; + color: #ffffff; +} + +/* ------------------------------------------------------------------------ */ +/* Grips */ + +QMainWindow::separator:vertical, +QSplitter::handle:horizontal { + image: url("/icons_path/primary/splitter-vertical.svg"); + background-color: rgba(255, 255, 255, 0.03); + width: 15px; +} + +QMainWindow::separator:horizontal, +QSplitter::handle:vertical { + image: url("/icons_path/primary/splitter-horizontal.svg"); + background-color: rgba(255, 255, 255, 0.03); + height: 15px; +} + +QSizeGrip { + image: url("/icons_path/primary/sizegrip.svg"); + background-color: transparent; +} + +QMenuBar QToolButton:hover, +QMenuBar QToolButton:pressed, +QMenuBar QToolButton { + border-width: 0; + border-image: url("/icons_path/primary/rightarrow.svg"); + background-color: transparent; +} + +/* ------------------------------------------------------------------------ */ +/* Focus */ + +QDateTimeEdit:focus, +QSpinBox:focus, +QDoubleSpinBox:focus, +QComboBox:focus { + color: #fff; + border-bottom: 2px solid #8bd0f0; + background-color: #303538; +} + + +QDateTimeEdit::up-button:focus, +QDoubleSpinBox::up-button:focus, +QSpinBox::up-button:focus { + image: url("/icons_path/primary/uparrow.svg"); +} + +QDateTimeEdit::down-button:focus, +QDoubleSpinBox::down-button:focus, +QSpinBox::down-button:focus { + image: url("/icons_path/primary/downarrow.svg"); +} + +/* Special cases from rviz source code */ + +QToolButton[toolTip="Add a new tool"] { + qproperty-iconSize: 16px 16px; + qproperty-icon: url("/icons_path/primary/add.svg"); + background: #171c1f; + border: 0px; + margin: 2px; + padding: 0px; + border-radius: 12px; + width: 24px; + height: 24px; +} + +QToolButton[toolTip="Add a new tool"]:hover { + background: #262931; +} + +QToolButton[toolTip="Add a new tool"]:pressed { + background: #2d303a; +} + +QToolButton[toolTip="Remove a tool from the toolbar"] { + qproperty-iconSize: 16px 16px; + qproperty-icon: url("/icons_path/primary/minus.svg"); + background: #171c1f; + border: 0px; + margin: 2px; + padding: 0px; + border-radius: 12px; + width: 24px; + height: 24px; +} + +QToolButton[toolTip="Remove a tool from the toolbar"]:hover { + background: #262931; +} + +QToolButton[toolTip="Remove a tool from the toolbar"]:pressed { + background: #2d303a; +} + +QDialog { + background-color: #1b2023; +} + +QGroupBox[title="Tool Type"] > QTextBrowser { + background-color: #1b2023; +} + +QGroupBox[title="Tool Type"] { + background-color: #1b2023; +} +QGroupBox[title="Tool Type"] > QTreeView { + background-color: #1b2023; +} + +QGroupBox[title="Panel Name"] { + background-color: #1b2023; +} + +QGroupBox[title="Panel Name"] > QLineEdit { + background-color: #1b2023; +} + +QGroupBox[title="Panel Type"] > QTextBrowser { + background-color: #1b2023; +} + +QGroupBox[title="Panel Type"] { + background-color: #1b2023; +} +QGroupBox[title="Panel Type"] > QTreeView { + background-color: #1b2023; +} + +QGroupBox[title="Create visualization"] { + background-color: #1b2023; +} + +QGroupBox[title="Create visualization"] > QTextBrowser { + background-color: #1b2023; +} +QGroupBox[title="Display Name"] { + background-color: #1b2023; +} + +QGroupBox[title="Display Name"] > QLineEdit { + background-color: #1b2023; +} + +QGroupBox[title="Create visualization"] > QTabWidget { + background-color: #1b2023; +} + +QGroupBox[title="Create visualization"] QTabWidget QTreeWidget { + background-color: #1b2023; + color: white; +} +QGroupBox[title="Create visualization"] QCheckBox { + background-color: #1b2023; + color: white; +} + +QGroupBox[title="Create visualization"] QTabWidget::pane { + background-color: #1b2023; +} + +QGroupBox[title="Create visualization"] QTabBar::tab { + background-color: #1b2023; + color: white; +} + +QGroupBox[title="Create visualization"] QTabBar::tab:selected { + background-color: #383b3f; + border-bottom: 2px solid #8bd0f0; +} + +QGroupBox[title="Create visualization"] QTabBar::tab:!selected { + background-color: #1b2023; + border-bottom: 2px solid #1b2023; +} + +QGroupBox[title="Create visualization"] QTabBar::tab:hover { + color: #fff; + background-color: #292d30; + border-bottom: 2px solid #8bd0f0; +} + +QGroupBox[title="Create visualization"] QTabBar::tab:pressed { + color: #fff; + background-color: #383b3f; + border-bottom: 2px solid #8bd0f0; +} + +QGroupBox[title="Create visualization"] QFrame { + background-color: #1b2023; + border: none; + margin: 0px; + padding: 0px; +} + +QComboBox { + padding: 2px; + margin: 0px; +} + +/* QLineEdit */ +QLineEdit { + border-top-left-radius: 0px; + border-top-right-radius: 0px; + selection-background-color: #84c2e6; + +} + +QLineEdit > QPushButton { + qproperty-icon: url("/icons_path/primary/more.svg"); + qproperty-iconSize: 16px 16px; + qproperty-text: ""; + margin: 0px; + padding: 0px; + background: transparent; + border-radius: 0px; +} + +QLineEdit > QPushButton:hover { + background: transparent; + border-radius: 0px; +} + +/* Not entirely sure if this affects anything other than the close button */ +QDockWidget QToolButton { + qproperty-icon: url("/icons_path/primary/close.svg"); + qproperty-iconSize: 16px 16px; + background: transparent; +} + +QDockWidget QToolButton:hover { + background: #262931; +} + +/* Style the list view of the QComboBox */ +QComboBox QAbstractItemView { + background-color: #1b2023; + height: 16px; +} +QComboBox { + selection-background-color: #303538; + selection-color: #fff; +} + + +QGroupBox[title="Create visualization"] QCheckBox::indicator:enabled:checked, +QGroupBox[title="Create visualization"] QCheckBox::indicator:enabled:checked:selected, +QGroupBox[title="Create visualization"] QCheckBox::indicator:enabled:checked:focus, +QGroupBox[title="Create visualization"] QCheckBox::indicator:checked, +QTreeView::indicator:enabled:checked, +QTreeView::indicator:enabled:checked:selected, +QTreeView::indicator:enabled:checked:focus, +QTreeView::indicator:checked { + image: url("/icons_path/primary/checkbox_checked_enabled.svg"); +} + +QGroupBox[title="Create visualization"] QCheckBox::indicator:checked:selected:active, +QTreeView::indicator:checked:selected:active { + image: url("/icons_path/primary/checkbox_checked_hovered.svg"); +} + +QGroupBox[title="Create visualization"] QCheckBox::indicator:disabled:checked, +QGroupBox[title="Create visualization"] QCheckBox::indicator:disabled:checked:selected, +QGroupBox[title="Create visualization"] QCheckBox::indicator:disabled:checked:focus, +QGroupBox[title="Create visualization"] QCheckBox::indicator:checked:disabled, +QTreeView::indicator:disabled:checked, +QTreeView::indicator:disabled:checked:selected, +QTreeView::indicator:disabled:checked:focus, +QTreeView::indicator:checked:disabled { + image: url("/icons_path/primary/checkbox_checked_disabled.svg"); +} + +QGroupBox[title="Create visualization"] QCheckBox::indicator:enabled:unchecked, +QGroupBox[title="Create visualization"] QCheckBox::indicator:enabled:unchecked:selected, +QGroupBox[title="Create visualization"] QCheckBox::indicator:enabled:unchecked:focus, +QGroupBox[title="Create visualization"] QCheckBox::indicator:unchecked, +QTreeView::indicator:enabled:unchecked, +QTreeView::indicator:enabled:unchecked:selected, +QTreeView::indicator:enabled:unchecked:focus, +QTreeView::indicator:unchecked { + image: url("/icons_path/primary/checkbox_unchecked_enabled.svg"); +} + +QGroupBox[title="Create visualization"] QCheckBox::indicator:unchecked:selected:active, +QTreeView::indicator:unchecked:selected:active { + image: url("/icons_path/primary/checkbox_unchecked_hovered.svg"); +} + +QGroupBox[title="Create visualization"] QCheckBox::indicator:disabled:unchecked, +QGroupBox[title="Create visualization"] QCheckBox::indicator:disabled:unchecked:selected, +QGroupBox[title="Create visualization"] QCheckBox::indicator:disabled:unchecked:focus, +QGroupBox[title="Create visualization"] QCheckBox::indicator:unchecked:disabled, +QTreeView::indicator:disabled:unchecked, +QTreeView::indicator:disabled:unchecked:selected, +QTreeView::indicator:disabled:unchecked:focus, +QTreeView::indicator:unchecked:disabled { + image: url("/icons_path/primary/checkbox_unchecked_disabled.svg"); +} + +QGroupBox[title="Create visualization"] QCheckBox::indicator:enabled:indeterminate, +QGroupBox[title="Create visualization"] QCheckBox::indicator:enabled:indeterminate:selected, +QGroupBox[title="Create visualization"] QCheckBox::indicator:enabled:indeterminate:focus, +QGroupBox[title="Create visualization"] QCheckBox::indicator:indeterminate, +QTreeView::indicator:enabled:indeterminate, +QTreeView::indicator:enabled:indeterminate:selected, +QTreeView::indicator:enabled:indeterminate:focus, +QTreeView::indicator:indeterminate { + image: url("/icons_path/primary/checkbox_indeterminate_enabled.svg"); +} + +QGroupBox[title="Create visualization"] QCheckBox::indicator:indeterminate:selected:active, +QTreeView::indicator:indeterminate:selected:active { + image: url("/icons_path/primary/checkbox_indeterminate_hovered.svg"); +} + +QGroupBox[title="Create visualization"] QCheckBox::indicator:disabled:indeterminate, +QGroupBox[title="Create visualization"] QCheckBox::indicator:disabled:indeterminate:selected, +QGroupBox[title="Create visualization"] QCheckBox::indicator:disabled:indeterminate:focus, +QGroupBox[title="Create visualization"] QCheckBox::indicator:indeterminate:disabled, +QTreeView::indicator:disabled:indeterminate, +QTreeView::indicator:disabled:indeterminate:selected, +QTreeView::indicator:disabled:indeterminate:focus, +QTreeView::indicator:indeterminate:disabled { + image: url("/icons_path/primary/checkbox_indeterminate_disabled.svg"); +} +QGroupBox[title="Create visualization"] QCheckBox::indicator, +QTreeView::indicator { + width: 20px; + height: 20px; +} + + +QTreeView::item:disabled { + color: #888888; +} + + +QTreeView QComboBox, +QTreeView QSpinBox, +QTreeView QDoubleSpinBox { + border: 0px; +} + +QTreeView QComboBox:focus, +QTreeView QSpinBox:focus, +QTreeView QDoubleSpinBox:focus { + border: 0px; +} diff --git a/ansible/roles/qt5ct_setup/files/qt5ct.conf b/ansible/roles/qt5ct_setup/files/qt5ct.conf new file mode 100644 index 00000000000..90c386c617f --- /dev/null +++ b/ansible/roles/qt5ct_setup/files/qt5ct.conf @@ -0,0 +1,35 @@ +[Appearance] +color_scheme_path=/usr/share/qt5ct/colors/darker.conf +custom_palette=true +icon_theme=ubuntu-mono-dark +standard_dialogs=default +style=Fusion + +[Fonts] +fixed=@Variant(\0\0\0@\0\0\0\f\0R\0o\0\x62\0o\0t\0o\xbf\xf0\0\0\0\0\0\0\0\0\0\r\x5\x1\0\x32\x10) +general=@Variant(\0\0\0@\0\0\0\f\0R\0o\0\x62\0o\0t\0o\xbf\xf0\0\0\0\0\0\0\0\0\0\r\x5\x1\0\x32\x10) + +[Interface] +activate_item_on_single_click=1 +buttonbox_layout=3 +cursor_flash_time=1000 +dialog_buttons_have_icons=1 +double_click_interval=400 +gui_effects=@Invalid() +keyboard_scheme=2 +menus_have_icons=true +show_shortcuts_in_context_menus=true +stylesheets=autoware_stylesheet_path +toolbutton_style=0 +underline_shortcut=1 +wheel_scroll_lines=3 + +[QSSEditor] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\t\xde\0\0\x2~\0\0\f`\0\0\x4\x95\0\0\t\xde\0\0\x2\xa3\0\0\f`\0\0\x4\x95\0\0\0\0\0\0\0\0\n\0\0\0\t\xde\0\0\x2\xa3\0\0\f`\0\0\x4\x95) + +[SettingsWindow] +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\f\x9c\0\0\x4\x19\0\0\xfz\0\0\a\x3\0\0\f\x9c\0\0\x4>\0\0\xfz\0\0\a\x3\0\0\0\0\0\0\0\0\xf\0\0\0\f\x9c\0\0\x4>\0\0\xfz\0\0\a\x3) + +[Troubleshooting] +force_raster_widgets=2 +ignored_applications=@Invalid() diff --git a/ansible/roles/qt5ct_setup/meta/main.yml b/ansible/roles/qt5ct_setup/meta/main.yml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/ansible/roles/qt5ct_setup/tasks/main.yml b/ansible/roles/qt5ct_setup/tasks/main.yml new file mode 100644 index 00000000000..fbb6c912117 --- /dev/null +++ b/ansible/roles/qt5ct_setup/tasks/main.yml @@ -0,0 +1,81 @@ +- name: Install qt5ct + ansible.builtin.apt: + name: qt5ct + state: present + become: true + +- name: Install rsync + ansible.builtin.package: + name: rsync + state: present + become: true + +- name: Remove qt5ct from auto-start + ansible.builtin.file: + path: /etc/X11/Xsession.d/99qt5ct + state: absent + become: true + +- name: Set variable qt5ct_config_dir + ansible.builtin.set_fact: + qt5ct_config_dir: "{{ ansible_env.HOME }}/.config/qt5ct" + +- name: Ensure qt5ct_config_dir exists + ansible.builtin.file: + path: "{{ qt5ct_config_dir }}" + state: directory + mode: "0755" + +- name: Print the role_path + ansible.builtin.debug: + msg: "The role_path is: {{ role_path }}" + +- name: Set icons_path variable + ansible.builtin.set_fact: + icons_path: "{{ qt5ct_config_dir }}/autoware-rviz-icons" + +- name: Remove autoware-rviz-icons folder if it exists + ansible.builtin.file: + path: "{{ icons_path }}" + state: absent + +# Replace rsync with synchronize which is an ansible wrapper for rsync +- name: Copy autoware-rviz-icons to the qt5ct config directory + ansible.posix.synchronize: + src: "{{ role_path }}/files/autoware-rviz-icons/" + dest: "{{ icons_path }}/" + mode: push + +- name: Fix the paths in the qss file + ansible.builtin.replace: + path: "{{ role_path }}/files/autoware.qss" + regexp: /icons_path/ + replace: "{{ icons_path }}/" + +- name: Ensure qt5ct_config_dir/qss exists + ansible.builtin.file: + path: "{{ qt5ct_config_dir }}/qss" + state: directory + mode: "0755" + +- name: Copy autoware.qss to the qt5ct qss directory + ansible.builtin.copy: + src: "{{ role_path }}/files/autoware.qss" + dest: "{{ qt5ct_config_dir }}/qss/autoware.qss" + force: true + backup: true + mode: "0644" + +- name: Fix the paths in the config file + ansible.builtin.replace: + path: "{{ role_path }}/files/qt5ct.conf" + regexp: autoware_stylesheet_path + replace: "{{ qt5ct_config_dir }}/qss/autoware.qss" + +- name: Copy qt5ct.conf to the config directory + ansible.builtin.copy: + src: "{{ role_path }}/files/qt5ct.conf" + dest: "{{ ansible_env.HOME }}/.config/qt5ct/qt5ct.conf" + force: true + backup: true + mode: "0644"