šŸŒ» Lovelace UI ā€¢ Minimalist

could you provide a language file?

Sure, sorry about that.

EN.yaml:

custom_card_heat_pump_language_variables:
  variables:
    custom_card_heat_pump_off: "Off"
    custom_card_heat_pump_dry: "Dry"
    custom_card_heat_pump_heat: "Heat"
    custom_card_heat_pump_heat_cool: "Auto"
    custom_card_heat_pump_cool: "Cool"
    custom_card_heat_pump_fan_only: "Fan Only"

0.0.1

Hello dear Minimalist fans!
It took a long time, but we were not idle! This is a huge release!
The changes are massive, especially in the folder structure. Breaking changes to previous versions and configurations are therefore very likely.

:warning: Breaking Changes ahead!

This is the first version that supports installation and updating via HACS. Because of this we also had to change our folder structure.

The internal templates for cards, chips and popups are now delivered and updated directly via the integration of HACS. These have therefore migrated from the top folder of our repo to a subfolder of the custom_integration. For a better clarity, these were also further divided thematically. This template code for internal cards, chips and popups can now be found on our repo here: UI/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates at main Ā· UI-Lovelace-Minimalist/UI Ā· GitHub
You can still download and copy the code there manually, but you donā€™t have to do that, because the custom_integration will do the updating for you from now on. :slight_smile:

For the custom_cards we have decided that they can still be downloaded and used by you as needed. They are still on the top level of our repo and can be downloaded from there: UI/custom_cards at main Ā· UI-Lovelace-Minimalist/UI Ā· GitHub
Instructions on how to use them in conjunction with the new custom_integration can be found in our new wiki under Configuration - UI Lovelace Minimalist.

If you had previous Minimalist installations, delete them and use the installation via HACS or manually via the ui_lovelace_minalist.zip file of the latest release. You can back up your own custom cards and then put them back under the ui_lovelace_minimalist\custom_cards folder generated by the integration so that they are still available. Please have a look here: Configuration - UI Lovelace Minimalist

A detailed installation and configuration guide can be found in our brand new wiki:
https://ui-lovelace-minimalist.github.io/UI/setup/download/

Please read everything and follow the instructions step by step.

With the new wiki we finally have the possibility to keep up with the development with the documentation. Please keep in mind that this is still a kind of alpha release and things can change.
We are looking forward to your feedback and suggestions. Please open an issue/discussion on our repoitory (Issues Ā· UI-Lovelace-Minimalist/UI Ā· GitHub) or visit us on our Discord server (UI Minimalist).
Unfortunately, we canā€™t guarantee that posts here in the forum thread will be addressed.

All changes of this release can be found here: Release 0.0.1 :rainbow_flag: Ā· UI-Lovelace-Minimalist/UI (github.com)

:heart: Thank you so much for helping out to keep this UI awesome

AndyVRD, CM000n, Damix48, TJohnson93, actions-user, basbruss, bavo, desty2k, eliseo-juan, httpedo13, jp2creation, juvenalandres, mp-se, pierrecle, revin34, rphlwnk, schumijo, sildehoop, stokkie90, telashton, tkwy-rick, vncnt-dev

14 Likes

@tben , can you please edit the starting post and link to our new wiki at Welcome to the UI-Lovelace-Minimalist wiki! - UI Lovelace Minimalist?

1 Like

Could be related in how you reach your ha instance. There might be a related when using https or http.

Not sure where I read it. Bit had the same issue on my main instance.

After HACS Installation the Welcome card is no longer working

Hey guys,

Getting this issue when trying to upgrade from the wiki link.

image

Also, could I get a list of what I need to delete for the upgrade? is it just the minimalist-templates folder?

Thanks :slight_smile:

EDIT

Install though HACS then add the integration

I have just installed the theme via HACS. All seemed to work well, except, I would have expected to be able to select the Minimalist theme in my profile, but it doesnā€™t appear (no theme appear, as it s a new install of HA)

So mine works on mobile but not desktop, Iā€™ll poke around

I assume that you have enabled themes in your Lovelace config as well? Unfortunately a custom_component canā€™t do that for you. Maybe we should include this in our documentation. :slight_smile:
You need an entry in your configuration.yaml like this:

# https://www.home-assistant.io/integrations/frontend/
frontend:
  themes: !include_dir_merge_named themes

Hello! Thanks for creating such a beautiful card!

Been trying to use it for a few weeks but havenā€™t been able :frowning:

button_card_templates.yaml


    list_items_climate:
      styles:
        card:
          - background-color: transparent
          - box-shadow: none
          - padding: 0px
        grid:
          - grid-template-areas: '"item1 item2 item3"'
          - grid-template-columns: 1fr 3fr 1fr
          - grid-template-rows: min-content
          - column-gap: 7px

    widget_icon_signal:
      tap_action:
        action: toggle
      color: var(--google-grey-500)
      show_icon: true
      show_name: false
      size: 20px
      icon: >
        [[[
          if (entity.attributes.fan_mode == 'LOW')
            return 'mdi:network-strength-outline';
          else if (entity.attributes.fan_mode == 'LOW_MID')
            return 'mdi:network-strength-1';
          else if (entity.attributes.fan_mode == 'MID')
            return 'mdi:network-strength-2';
          else if (entity.attributes.fan_mode == 'MID_HIGH')
            return 'mdi:network-strength-3';
          else if (entity.attributes.fan_mode == 'HIGH')
            return 'mdi:network-strength-4';
          else if (entity.attributes.fan_mode == 'NATURE')
            return 'mdi:leaf';
          else
            return 'mdi:network-strength-2';
        ]]]
      styles:
        card:
          - box-shadow: none
          - padding: 0px
          #- background-color: 'rgba(var(--color-theme),0.05)'
          - background-color: transparent
          - border-radius: 100%
          - place-self: center
          - height: 42px
          - width: 42px
        grid:
          - grid-template-areas: '"i"'
        icon:
          - color: "rgba(var(--color-theme),0.9)"
      state:
        - styles:
            icon:
              - color: "#ffffff"
          value: heat
        - styles:
            icon:
              - color: "#ffffff"
          value: dry
        - styles:
            icon:
              - color: "#ffffff"
          value: cool
        - styles:
            icon:
              - color: "#ffffff"
          value: fan_only
        - styles:
            icon:
              - color: "#ffffff"
          value: heat_cool
        - styles:
            icon:
              - color: "#ffffff"
              - display: none
            card:
              - display: none
          value: "off"

climate_temperature_text:
  #tap_action:
  #action: toggle
  color: var(--google-grey-500)
  show_icon: false
  show_name: true
  show_label: true
  size: 20px
  name: >
    [[[
      if (entity.state == 'off')
        return entity.attributes.current_temperature;
      else
        return entity.attributes.temperature;
    ]]]
  label: "Ā°C"
  styles:
    card:
      - background-color: transparent
      - box-shadow: none
      - padding: 0px
      - place-self: center
      - height: 42px
      - font-size: 20px
      - font-weight: bold
    grid:
      - grid-template-areas: '"n" "l"'
    name:
      - font-size: 25px
      - align-self: center
    label:
      - font-size: 15px
      - align-self: center
  state:
    - styles:
        name:
          - color: "#ffffff"
        label:
          - color: rgba(255,255,255,0.3)
      value: heat
    - styles:
        name:
          - color: "#ffffff"
        label:
          - color: rgba(255,255,255,0.3)
      value: dry
    - styles:
        name:
          - color: "#ffffff"
        label:
          - color: rgba(255,255,255,0.3)
      value: cool
    - styles:
        name:
          - color: "#ffffff"
        label:
          - color: rgba(255,255,255,0.3)
      value: fan_only
    - styles:
        name:
          - color: "#ffffff"
        label:
          - color: rgba(255,255,255,0.3)
      value: heat_cool

widget_icon_circle_climate:
  tap_action:
    action: toggle
  color: var(--google-grey-500)
  show_icon: true
  show_name: false
  size: 20px
  styles:
    card:
      - box-shadow: none
      - padding: 0px
      - background-color: "rgba(var(--color-theme),0.05)"
      - border-radius: 50%
      - place-self: center
      - height: 42px
      - width: 42px
    grid:
      - grid-template-areas: '"i"'
    icon:
      - color: "rgba(var(--color-theme),0.9)"
  state:
    - value: "heat"
      styles:
        card:
          - background-color: "#ffffff"
        icon:
          - color: rgba(var(--color-yellow),1)
    - value: "dry"
      styles:
        card:
          - background-color: "#ffffff"
        icon:
          - color: rgba(var(--color-light-yellow),1)
    - value: "cool"
      styles:
        card:
          - background-color: "#ffffff"
        icon:
          - color: rgba(var(--color-blue),1)
    - value: "fan_only"
      styles:
        card:
          - background-color: "#ffffff"
        icon:
          - color: rgba(var(--color-grey),1)
    - value: "heat_cool"
      styles:
        card:
          - background-color: "#ffffff"
        icon:
          - color: rgba(var(--color-green),1)

climate_text_only:
  tap_action:
    action: more-info
  show_icon: false
  label: >-
    [[[ 
         var climate_mode = entity.state;
    ]]]
  styles:
    card:
      - border-radius: 8px
      - padding: 5px 0
  state:
    - styles:
        card:
          - background-color: rgba(var(--color-yellow),1)
        img_cell:
          #- background-color: rgba(var(--color-yellow), 0.2)
          - background-color: rgba(255,255,255,0.2)
        label:
          - color: "#ffffff"
        name:
          - color: "#ffffff"
      value: heat
    - styles:
        card:
          - background-color: rgba(var(--color-light-yellow),1)
        img_cell:
          #- background-color: rgba(var(--color-light-yellow), 0.2)
          - background-color: rgba(255,255,255,0.2)
        label:
          - color: "#ffffff"
        name:
          - color: "#ffffff"
      value: dry
    - styles:
        card:
          - background-color: rgba(var(--color-blue),1)
        img_cell:
          #- background-color: rgba(var(--color-blue), 0.2)
          - background-color: rgba(255,255,255,0.2)
        label:
          - color: "#ffffff"
        name:
          - color: "#ffffff"
      value: cool
    - styles:
        card:
          - background-color: rgba(var(--color-grey),1)
        img_cell:
          #- background-color: rgba(var(--color-grey), 0.2)
          - background-color: rgba(255,255,255,0.2)
        label:
          - color: "#ffffff"
        name:
          - color: "#ffffff"
      value: fan_only
    - styles:
        card:
          - background-color: rgba(var(--color-green),1)
        img_cell:
          #- background-color: rgba(var(--color-green), 0.2)
          - background-color: rgba(255,255,255,0.2)
        label:
          - color: "#ffffff"
        name:
          - color: "#ffffff"
      value: heat_cool

climate_icon_only:
  #tap_action:
    # action: toggle
    # action: call-service
    # service: script.step_hvac_mode
    # service_data:
    #   climate_id: "[[[ return variables.entity ]]]"
  show_name: false
  icon: |
    [[[
        var climate_mode = entity.state;
        var icon = 'mdi:snowflake';
        if (climate_mode == 'heat'){
          var icon = 'mdi:fire';
        } else if(climate_mode == 'dry'){
          var icon = 'mdi:water-percent';
        } else if(climate_mode == 'cool'){
          var icon = 'mdi:snowflake';
        } else if(climate_mode == 'fan_only'){
          var icon = 'mdi:fan';
        } else if(climate_mode == 'heat_cool'){
          var icon = 'mdi:autorenew';
        } else {
          var icon = 'mdi:power';
        }
        return icon ;
    ]]]
  styles:
    card:
      - border-radius: 100%
  state:
    - styles:
        card:
          - background-color: rgba(var(--color-yellow),1)
        icon:
          #- color: rgba(var(--color-yellow),1)
          - color: "#ffffff"
        img_cell:
          #- background-color: rgba(var(--color-yellow), 0.2)
          - background-color: rgba(255,255,255,0.2)
      value: heat
    - styles:
        card:
          - background-color: rgba(var(--color-light-yellow),1)
        icon:
          #- color: rgba(var(--color-light-yellow),1)
          - color: "#ffffff"
        img_cell:
          #- background-color: rgba(var(--color-light-yellow), 0.2)
          - background-color: rgba(255,255,255,0.2)
      value: dry
    - styles:
        card:
          - background-color: rgba(var(--color-blue),1)
        icon:
          #- color: rgba(var(--color-blue),1)
          - color: "#ffffff"
        img_cell:
          #- background-color: rgba(var(--color-blue), 0.2)
          - background-color: rgba(255,255,255,0.2)
      value: cool
    - styles:
        card:
          - background-color: rgba(var(--color-grey),1)
        icon:
          #- color: rgba(var(--color-grey),1)
          - color: "#ffffff"
        img_cell:
          #- background-color: rgba(var(--color-grey), 0.2)
          - background-color: rgba(255,255,255,0.2)
      value: fan_only
    - styles:
        card:
          - background-color: rgba(var(--color-green),1)
        icon:
          #- color: rgba(var(--color-green),1)
          - color: "#ffffff"
        img_cell:
          #- background-color: rgba(var(--color-green), 0.2)
          - background-color: rgba(255,255,255,0.2)
      value: heat_cool
    - styles:
        card:
          - background-color: rgba(var(--color-theme),0.05)
        icon:
          - color: rgba(var(--color-theme),0.9)
        img_cell:
          - background-color: transparent
      value: "off"

list_items_climate_three:
  styles:
    card:
      - box-shadow: none
      - padding: 0px
      - background-color: transparent
    grid:
      - grid-template-areas: '"item1 item2 item3"'
      - grid-template-columns: 1fr 3fr 1fr
      - grid-template-rows: min-content
      - column-gap: 7px

climate_buttons_with_favorite:
  variables:
    entity: climate.default
    name: Default name
  show_name: false
  show_icon: false
  styles:
    card:
      - border-radius: 20px
      - box-shadow: var(--box-shadow)
      - padding: 12px
      # - background-color: |
      #     [[[variables.entity
      #       if (states[variables.entity].state == "heat"){
      #         return 'rgba(var(--color-yellow),1)';
      #       } else if (states[variables.entity].state == "dry"){
      #         return 'rgba(var(--color-light-yellow),1)';
      #       } else if (states[variables.entity].state == "cool"){
      #         return 'rgba(var(--color-blue),1)';
      #       } else if (states[variables.entity].state == "fan_only"){
      #         return 'rgba(var(--color-grey),1)';
      #       } else if (states[variables.entity].state == "heat_cool"){
      #         return 'rgba(var(--color-green),1)';
      #       } else {
      #         return 'white';
      #       }
      #     ]]]
    grid:
      - grid-template-areas: '"item1" "item2"'
      - grid-template-columns: 1fr
      - grid-template-rows: min-content  min-content
      - row-gap: 12px
  state:
    - value: "heat"
      styles:
        card:
          - background-color: rgba(var(--color-yellow),1)
    - value: "dry"
      styles:
        card:
          - background-color: rgba(var(--color-light-yellow),1)
    - value: "cool"
      styles:
        card:
          - background-color: rgba(var(--color-blue),1)
    - value: "fan_only"
      styles:
        card:
          - background-color: rgba(var(--color-grey),1)
    - value: "heat_cool"
      styles:
        card:
          - background-color: rgba(var(--color-green),1)
  custom_fields:
    item1:
      card:
        template: list_items_climate_three
        type: custom:button-card
        custom_fields:
          item1:
            card:
              entity: "[[[ return variables.entity ]]]"
              tap_action:
                action: call-service
                service: script.step_hvac_mode
                service_data:
                  climate_id: "[[[ return variables.entity ]]]"
              template:
                - icon_info
                - climate_icon_only
              type: custom:button-card
          item2:
            card:
              entity: "[[[ return variables.entity ]]]"
              name: "[[[ return variables.name ]]]"
              template:
                - icon_info
                - climate_text_only
              type: custom:button-card
          item3:
            card:
              entity: "[[[ return variables.entity ]]]"
              tap_action:
                action: call-service
                service: script.step_fan_mode
                service_data:
                  climate_id: "[[[ return variables.entity ]]]"
              type: custom:button-card
              template: widget_icon_signal
    item2:
      card:
        template: list_items_climate
        type: custom:button-card
        custom_fields:
          item1:
            card:
              entity: "[[[ return variables.entity ]]]"
              icon: mdi:minus
              tap_action:
                action: >
                  [[[
                    if (entity.attributes.temperature == '16')
                      return 'none';
                    else
                      return 'call-service';
                  ]]]
                service: script.temperature_down
                service_data:
                  climate_id: "[[[ return variables.entity ]]]"
                  value: 1
              type: custom:button-card
              template: widget_icon_circle_climate
          item2:
            card:
              entity: "[[[ return variables.entity ]]]"
              tap_action:
                action: more-info
              type: custom:button-card
              template: climate_temperature_text
          item3:
            card:
              entity: "[[[ return variables.entity ]]]"
              icon: mdi:plus
              tap_action:
                action: >
                  [[[
                    if (entity.attributes.temperature == '30')
                      return 'none';
                    else
                      return 'call-service';
                  ]]]
                service: script.temperature_up
                service_data:
                  climate_id: "[[[ return variables.entity ]]]"
                  value: 1
              type: custom:button-card
              template: widget_icon_circle_climate

ui_lovelace.yaml

views:
  - title: Office
    resources:
        - url: /local/button-card.js
          type: module
    cards:
      - type: vertical-stack
        cards:
          - type: markdown
            content: >
              ## Victor's Office
            card_mod:
                style: |
                    ha-card {
                    font-family: Roboto;
                    height:50px !important;
                    box-shadow: none;
                    background: none; 
                    text-align: center;
                    justify-content: center;
                    margin: 0 auto;
                    padding: 1em;

          - type: 'custom:button-card'
            template: climate_icon_only
            variables:
                entity: climate.office_ac

Any ideas on how to fix it?

Finally , i get this media card working using the code of the custom_card_sonos.

Capture dā€™eĢcran 2022-01-24 aĢ€ 16.54.25

2 Likes

Downloaded the new update through HACS and went through everything to understand the new directory structure. Can anyone get the new card_light template to work? From the documentation they merged a bunch of light templates (i.e. card_light_slider), but for me changing the template to card_light and adding the ulm_card_light_enable_slider attribute in the yaml doesnā€™t do anything. Same with the other variables from the documentation.

Hi, this looks very nice!
I have installed for the first time via HACS, everything seemed to go ok but when I navigate to the dashboard in the sidebar, all I see is a card for the Sun. Should I see any other default cards?
Do I need to edit the YAML for every card I should add?
Thanks

Hi i have installed the new version on HACS, but i cant select the Minimalist theme on settings ?
Nothing about this on Installation - UI Lovelace Minimalist

image
Edit : Ok fix with

frontend:
themes: !include_dir_merge_named themes

Maybe add these on setup/github wiki ?


And on ui_lovelave_minimalist->custom_cards i have nothing, i need to download all custom cards i want, manually ?

Can you share here or in a PM your ui-lovelace.yaml or the file which contains your lovelace dashboard with card_light so I can get a better understanding of what is going wrong

Yes, your auto-generated dashboard only consists for now of a card with the Sun. You can remove that card in the config/ui-lovelace-minimalist/dashboard/ui-lovelace.yaml file and add your own cards with all the templates provided by the integration :slight_smile:

1 Like

Can you share with a code

Hey, thanks!
One the Wiki it says about the prerequisites and mentioned the HACS install method should install them. I did tick the box which said it can install them, however I am unsure it has done anything? Should I just go through and install them in HACS?

" PrerequisitesĀ¶

In order to function correctly, the UI Lovelace Mininmalist ā€œThemeā€ requires some additional integrations and lovelace resources. While we can install most of these for you during the installation via HACS, you will also have to install and configuring them manually in advance for a manual installation."

You could add all listed cards needed like ā€˜custom:button-cardā€™ manually through HACS. If not already done itā€™s easier to go to the integration tab and select configure at UI-minimalist and check the box as in the image below: