A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

Subcategories

  • Share your custom style sheets with the community!

    24 Topics
    302 Posts
    J
    @jerryy622 Hey Jerry, This sounds fantastic! Please share your scripts or a link as to where to find the info! I would love to have this kind of thing running on my TV so i can view it when i switch to the HDMI channel that my Pi would be hooked to! I would love to see some screen shots of what you created also! Joe
  • You have questions regarding CSS?

    114 Topics
    680 Posts
    R
    @kool said Bumping this back up. Pleeeease help Dear @kool , if you are using url as suggested by Sam ( @sdetweil ), you are nearly done. As far as I can see from my rookie perspective you do have some redundancies in your config.js (e.g. the unit section: units, tempUnits, windUnits) ) but this shouldn’t disturb. As far as I understood you can delete these icontables because you do not use the icon-font but try to use some images from sigle file-URLs instead - so you can delete the whole section iconTable {} with all entries. In addition you have to adapt (see above, Sam’s tip) the URL of all you images in your custom.css file. (pls. double check, if the files are really in these locations) You wrote in your current css .weatherforecast .wi-day-sunny { content: url("/home/kool/MagicMirror/css/icons/6fas/day.svg") !important; } IF your weather-icon files are really in this directory (/home/kool/MagicMirror/css/icons/6fas/) than your css should be as follows: .weatherforecast .wi-day-sunny { content: url("/css/icons/6fas/day.svg"); You do not need the !important flag (in my case) second wrong thing besides the URL is your qualifier. you are using .weatherforecast .wi-something .... This cannot be recognized because .weatherforecast is not defined. At first you have to decide if you want to have different icons for the current weather and for the weather forecast. (In my case this is true). IF you would like to have this you have to differentiate the two instances of the weather-module by a “classes” definition. For example your first instance of the weather module (current weather) than should be module: "weather", position: "top_right", // Adjust position as needed classes: "weather_current", config: { weatherProvider: "openmeteo", // Specify the Open-Meteo provider apiBase: "https://api.open-meteo.com/v1", // REQUIRED: Base URL for Open-Meteo lat: xxxx, // REQUIRED: Latitude of the location lon: xxxx, // REQUIRED: Longitude of the location maxNumberOfDays: 8, // OPTIONAL: Number of forecast days (default is 5) pastDays: 0, // OPTIONAL: Number of past days of data to include (default is 0) units: "imperial", // Set this to 'imperial' for Fahrenheit and miles per hour tempUnits: "imperial", // Make sure to match with 'imperial' windUnits: "imperial", type: "current", // OPTIONAL: Change to "current" if only current weather data is desired } }, (pay attention for the third line: classes: “weather_current”, ) THIS is your qualifier if you are about to diffrentiate between current weather and weather forecast image-wise. (“weather_current” is just an example! you can name it like you want every name is suitable and OK, only pay attention that all of these namings are strictly case sensitive, so Weather is NOT the same as weather" Your correct line for custom.css than is: .weather_current .wi-day-sunny { content: url("/css/icons/6fas/day.svg"); and the same dance than for your second instance with DIFFERENT classes-clause in config.js (e.g. a " classes: “weather_forecast”, " in the definition of the second weather instance ) results in a custom.css entry like this: .weather_forecast .wi-day-sunny { content: url("/css/icons/some_other_directory_with_smaller_icons/day.svg"); Because the “forecast instance” of the weather module is (in my case) organized as table I found it really useful to differentite these logos - big ones for current, smaller ones for the forecast: [image: 1744630855324-screenfloat-bildschirmfoto-von-sublime-text-am-14_04_2025-13_38_51-14_04_2025-13-38-51.jpg] If You do NOT like to differentiate the current and forecast instance you do NOT need the classes-phrase in config.js and your correct qualifier is the name of the module (so “weather” ) and your custom.css entry is like this: .weather .wi-day-sunny { content: url("/css/icons/6fas/day.svg"); And this than is valid for both instances. Keep in mind that there are a LOT more weather conditions than the two times 5 conditions you have defined in your current custom.css! my own definition for the current weather for your reference: .weather_current .wi-fog { content: url("/css/icons/current/wsymbol_0007_fog.png"); } .weather_current .wi-cloudy { content: url("/css/icons/current/wsymbol_0002_sunny_intervals.png"); } .weather_current .wi-cloudy-windy { content: url("/css/icons/current/wsymbol_0004_black_low_cloud.png"); } .weather_current .wi-rain { content: url("/css/icons/current/wsymbol_0018_cloudy_with_heavy_rain.png"); } .weather_current .wi-showers { content: url("/css/icons/current/wsymbol_0017_cloudy_with_light_rain.png"); } .weather_current .wi-thunderstorm { content: url("/css/icons/current/wsymbol_0024_thunderstorms.png"); } .weather_current .wi-snow { content: url("/css/icons/current/wsymbol_0019_cloudy_with_light_snow.png"); } .weather_current .wi-snowflake-cold { content: url("/css/icons/current/wsymbol_0020_cloudy_with_heavy_snow.png"); } .weather_current .wi-na { content: url("/css/icons/current/wsymbol_0999_unknown.png"); } .weather_current .wi-day-sunny { content: url("/css/icons/current/wsymbol_0001_sunny.png"); } .weather_current .wi-day-cloudy { content: url("/css/icons/current/wsymbol_0043_mostly_cloudy.png"); } .weather_current .wi-day-cloudy-gusts { content: url("/css/icons/current/wsymbol_0004_black_low_cloud.png"); } .weather_current .wi-day-cloudy-windy { content: url("/css/icons/current/wsymbol_0004_black_low_cloud.png"); } .weather_current .wi-cloudy-windy { content: url("/css/icons/current/wsymbol_0004_black_low_cloud.png"); } .weather_current .wi-day-fog { content: url("/css/icons/current/wsymbol_0007_fog.png"); } .weather_current .wi-day-hail { content: url("/css/icons/current/wsymbol_0015_heavy_hail_showers.png"); } .weather_current .wi-day-haze { content: url("/css/icons/current/wsymbol_0005_hazy_sun.png"); } .weather_current .wi-day-lightning { content: url("/css/icons/current/wsymbol_0016_thundery_showers.png"); } .weather_current .wi-day-rain { content: url("/css/icons/current/wsymbol_0085_extreme_rain_showers.png"); } .weather_current .wi-day-rain-mix { content: url("/css/icons/current/wsymbol_0009_light_rain_showers.png"); } .weather_current .wi-day-rain-wind { content: url("/css/icons/current/wsymbol_0010_heavy_rain_showers.png"); } .weather_current .wi-day-showers { content: url("/css/icons/current/wsymbol_0018_cloudy_with_heavy_rain.png"); } .weather_current .wi-day-sleet { content: url("/css/icons/current/wsymbol_0087_heavy_sleet_showers.png"); } .weather_current .wi-day-sleet-storm { content: url("/css/icons/current/wsymbol_0089_heavy_sleet.png"); } .weather_current .wi-day-snow { content: url("/css/icons/current/wsymbol_0011_light_snow_showers.png"); } .weather_current .wi-day-snow-thunderstorm { content: url("/css/icons/current/wsymbol_0057_thundery_snow_showers.png"); } .weather_current .wi-day-snow-wind { content: url("/css/icons/current/wsymbol_0053_blowing_snow.png"); } .weather_current .wi-day-sprinkle { content: url("/css/icons/current/wsymbol_0009_light_rain_showers.png"); } .weather_current .wi-day-storm-showers { content: url("/css/icons/current/wsymbol_0018_cloudy_with_heavy_rain.png"); } .weather_current .wi-day-sunny-overcast { content: url("/css/icons/current/wsymbol_0002_sunny_intervals.png"); } .weather_current .wi-day-thunderstorm { content: url("/css/icons/current/wsymbol_0024_thunderstorms.png"); } .weather_current .wi-day-windy { content: url("/css/icons/current/wsymbol_0060_windy.png"); } .weather_current .wi-solar-eclipse { content: url("/css/icons/current/wsymbol_0005_hazy_sun.png"); } .weather_current .wi-hot { content: url("/css/icons/current/wsymbol_0045_hot.png"); } .weather_current .wi-day-cloudy-high { content: url("/css/icons/current/wsymbol_0006_mist.png"); } .weather_current .wi-day-light-wind { content: url("/css/icons/current/wsymbol_0060_windy.png"); } .weather_current .wi-night-clear { content: url("/css/icons/current/wsymbol_0008_clear_sky_night.png"); } .weather_current .wi-night-alt-cloudy { content: url("/css/icons/current/wsymbol_0041_partly_cloudy_night.png"); } .weather_current .wi-night-alt-partly-cloudy { content: url("/css/icons/current/wsymbol_0041_partly_cloudy_night.png"); } .weather_current .wi-night-alt-cloudy-gusts { content: url("/css/icons/current/wsymbol_0041_partly_cloudy_night.png"); } .weather_current .wi-night-alt-cloudy-windy { content: url("/css/icons/current/wsymbol_0041_partly_cloudy_night.png"); } .weather_current .wi-night-alt-hail { content: url("/css/icons/current/wsymbol_0031_heavy_hail_showers_night.png"); } .weather_current .wi-night-alt-lightning { content: url("/css/icons/current/wsymbol_0032_thundery_showers_night.png"); } .weather_current .wi-night-alt-rain { content: url("/css/icons/current/wsymbol_0025_light_rain_showers_night.png"); } .weather_current .wi-night-alt-rain-mix { content: url("/css/icons/current/wsymbol_0026_heavy_rain_showers_night.png"); } .weather_current .wi-night-alt-rain-wind { content: url("/css/icons/current/wsymbol_0026_heavy_rain_showers_night.png"); } .weather_current .wi-night-alt-showers { content: url("/css/icons/current/wsymbol_0025_light_rain_showers_night.png"); } .weather_current .wi-night-alt-sleet { content: url("/css/icons/current/wsymbol_0029_sleet_showers_night.png"); } .weather_current .wi-night-alt-sleet-storm { content: url("/css/icons/current/wsymbol_0029_sleet_showers_night.png"); } .weather_current .wi-night-alt-snow { content: url("/css/icons/current/wsymbol_0028_heavy_snow_showers_night.png"); } .weather_current .wi-night-alt-snow-thunderstorm { content: url("/css/icons/current/wsymbol_0075_thundery_snow_showers_night.png"); } .weather_current .wi-night-alt-snow-wind { content: url("/css/icons/current/wsymbol_0071_blowing_snow_night.png"); } .weather_current .wi-night-alt-sprinkle { content: url("/css/icons/current/wsymbol_0025_light_rain_showers_night.png"); } .weather_current .wi-night-alt-storm-showers { content: url("/css/icons/current/wsymbol_0026_heavy_rain_showers_night.png"); } .weather_current .wi-night-alt-thunderstorm { content: url("/css/icons/current/wsymbol_0032_thundery_showers_night.png"); } .weather_current .wi-night-cloudy { content: url("/css/icons/current/wsymbol_0041_partly_cloudy_night.png"); } .weather_current .wi-night-cloudy-gusts { content: url("/css/icons/current/wsymbol_0044_mostly_cloudy_night.png"); } .weather_current .wi-night-cloudy-windy { content: url("/css/icons/current/wsymbol_0044_mostly_cloudy_night.png"); } .weather_current .wi-night-fog { content: url("/css/icons/current/wsymbol_0064_fog_night.png"); } .weather_current .wi-night-hail { content: url("/css/icons/current/wsymbol_0039_cloudy_with_heavy_hail_night.png"); } .weather_current .wi-night-lightning { content: url("/css/icons/current/wsymbol_0032_thundery_showers_night.png"); } .weather_current .wi-night-partly-cloudy { content: url("/css/icons/current/wsymbol_0041_partly_cloudy_night.png"); } .weather_current .wi-night-rain { content: url("/css/icons/current/wsymbol_0025_light_rain_showers_night.png"); } .weather_current .wi-night-rain-mix { content: url("/css/icons/current/wsymbol_0026_heavy_rain_showers_night.png"); } .weather_current .wi-night-rain-wind { content: url("/css/icons/current/wsymbol_0025_light_rain_showers_night.png"); } .weather_current .wi-night-showers { content: url("/css/icons/current/wsymbol_0026_heavy_rain_showers_night.png"); } .weather_current .wi-night-sleet { content: url("/css/icons/current/wsymbol_0029_sleet_showers_night.png"); } .weather_current .wi-night-sleet-storm { content: url("/css/icons/current/wsymbol_0029_sleet_showers_night.png"); } .weather_current .wi-night-snow { content: url("/css/icons/current/wsymbol_0027_light_snow_showers_night.png"); } .weather_current .wi-night-snow-thunderstorm { content: url("/css/icons/current/wsymbol_0075_thundery_snow_showers_night.png"); } .weather_current .wi-night-snow-wind { content: url("/css/icons/current/wsymbol_0028_heavy_snow_showers_night.png"); } .weather_current .wi-night-sprinkle { content: url("/css/icons/current/wsymbol_0025_light_rain_showers_night.png"); } .weather_current .wi-night-storm-showers { content: url("/css/icons/current/wsymbol_0026_heavy_rain_showers_night.png"); } .weather_current .wi-night-thunderstorm { content: url("/css/icons/current/wsymbol_0032_thundery_showers_night.png"); } HTH & good luck! Ralf
  • Adjust individual table column widths?

    7
    1
    0 Votes
    7 Posts
    1k Views
    M
    @jimmy_382837 @MMRIZE said in Adjust individual table column widths?: I haven’t examined the rendered HTML yet, but hardcoded style attributes in HTML code are prior than CSS. In case; You should modify source code of the module to change the result. (Or consider to use monkey-patch) The rendered result is not hard-coded, so you can adjust it with only CSS. This is an example. (Anyway, your config was not exactly matched with your previous screenshot…) .MMM-OpenWeatherMapForecast .module-content { width: inherit; /* I don't know why, but it was defined as 300px, might be an issue when you adjust the dimension. so have to reset */ } .MMM-OpenWeatherMapForecast, .MMM-OpenWeatherMapForecast .wrapper { width: 500px; /* give a custom width to a module */ } .MMM-OpenWeatherMapForecast .forecast-item .time { /* Some customizing for `time` cell for example.*/ width: 200px; background-color: rgb(127 127 127/ 50%); color: white; font-weight: bold; } [image: 1695627179700-702a0fac-1c29-4e4a-87a6-1fbcda563fa4-image-resized.png]
  • MMM-jast

    4
    0 Votes
    4 Posts
    790 Views
    BKeyportB
    @ankonaskiff17 I actually do just that, however, many modules, like this one don’t use the standard variables. So, I have to set each one manually, thusly: from my custom.css :root { --gap-body-top: 5px; --gap-body-right: 5px; --gap-body-bottom: 5px; --gap-body-left: 5px; --gap-modules: 15px; --color-text: #ddd; --color-text-dimmed: #666; --color-text-bright: #fff; --color-background: #000; --font-size: 21px; --font-size-xsmall: 0.75rem; --font-size-small: 1rem; --font-size-medium: 1.5rem; --font-size-large: 3.25rem; --font-size-xlarge: 3.75rem; } … Example module change: /* Flipclock - Set size */ .tick-flip, .tick-text-inline { font-size: var(--font-size-xlarge); }
  • MMM-ValuesByNotification, CSS Advice...

    8
    2
    0 Votes
    8 Posts
    708 Views
    BKeyportB
    @wishmaster270 Great start, now to adjust to fit… 🤣 Edit: here I am adjusting it and trying to figure out why it wouldn’t move up to the bar, then I realized, you had it in Top Center. 😞😞😞😞😖😖😖😖
  • Move the number in each day of monthly calendar

    3
    0 Votes
    3 Posts
    419 Views
    plainbrokeP
    @MMRIZE Thank you so much. I would have never come to that conclusion.
  • Current Weather Not Dimmed

    4
    0 Votes
    4 Posts
    664 Views
    ankonaskiff17A
    @Elkanah Glad I could help. You can stack modules one after the other because in some respects something like top_left has no bottom. You can have modules below the bottom of the physical monitor. If you want modules in a particular order, arrange them that way in config.js If you are looking for a particular color or say colors that compliment each other you can do a search on “hex color codes” and you will get the hex nomenclature for every color imaginable. Some colors you can just say “black” or “white” and that will work but I’ve personally stuck with using the hex codes for the most part.
  • Move Default Weather Forecast Class

    3
    0 Votes
    3 Posts
    614 Views
    ankonaskiff17A
    @HotMacaroon Did you put both modules in same region, top_right? I have almost identical setup on an MM and if you put both in same region you should not run into that problem because they will position themselves properly as far as what you are trying to do. Is one in top_right and second in a different region? I have like 5 modules, all in top_left in my case. Also note these are in config.js NOT doing anything with CSS With CSS issues like @sdetweil has told me a 100 times, do that with developer tools and my experience is that there is a little trial & error in getting module CSS to look right because of different branded monitor/TV and different screen sizes. Two identical modules should drop with no need to tweak CSS on one and not the other. If you want a particular order, that is dependent on placement of module in the config.js file. Second picture all modules top_left [image: 1687723503367-top_left.jpg] [image: 1687724052342-alltopleft.jpg]
  • MMM-SystemStatsHow to change color of the icons.

    6
    1
    0 Votes
    6 Posts
    2k Views
    S
    @edd189 see https://forum.magicmirror.builders/topic/14862/help-with-a-couple-css-issues?_=1686341739097
  • calendar

    10
    0 Votes
    10 Posts
    2k Views
    J
    @sdetweil - Thanks Sam. This will help when I work on cleaning up my display overall, as i do have multiple instances of both calendar and weather running!
  • How to add more items per line in weather or any other module?

    7
    0 Votes
    7 Posts
    2k Views
    S
    Ah ok, i dont think the user with the screenshot i posted above is paying 40 dollars a month to show 5 icons in a line in the dashboard, this has more to do with CSS rather than the config within the module itself
  • Edit CSS of only one instance of module

    7
    0 Votes
    7 Posts
    991 Views
    S
    @bugsounet yes maybe too
  • MMM-CalendarExt3

    12
    1 Votes
    12 Posts
    4k Views
    S
    @videogame95 the GoogkeAssistant author has asked us not to provide support for his modules here.
  • Change digit fonts for default clock module

    4
    0 Votes
    4 Posts
    985 Views
    S
    @leomirror there are three or four approaches 1 the module documents the classes it uses 2 the module provides a css file that uses the classes it uses 3 you read the source code of the module ( I did this) 4 you use the developers window to examine the content to get the classes see https://forum.magicmirror.builders/topic/14862/help-with-a-couple-css-issues?_=1680719852507 clock module does not do 1 or 2 I wasn’t near a system to do 4 if you had two instances of the clock module and wanted the styles to be different, you would use the module identifier as the key selector #id_name1 .time { color:red; } #id_name2 .time { color:blue; } you could find that name thru option 4 also the css thing before the { is called the selector clause, operated left to right https://www.w3schools.com/cssref/css_selectors.php
  • how to inspect elements in MM

    4
    0 Votes
    4 Posts
    887 Views
    A
    @sdetweil I am grateful for your enlightening message and the added link, That’s going to be very helpful and intereresting. And I am going to move to MMM-CalendarExt3. Many thanks.
  • Help with a couple CSS issues

    22
    0 Votes
    22 Posts
    26k Views
    S
    @sdetweil All help at the bottom of the curve is appreciated. Thank you. Cheers
  • Extreme basic question!

    3
    0 Votes
    3 Posts
    741 Views
    S
    @chris_d the string of things before the { is called the selector clause. this gives u the ability to ‘select’ the html elements you want to apply the styles to I use this cheat sheet to view the different choices https://www.w3schools.com/cssref/css_selectors.php the selector can be very complex here is one from my MMM-Config module .possibly-hidden-tab div:nth-child(2) > div > div >div >ul >li:only-child >a[rel*="Item 1"] { display: none; }
  • Negative Margins - .region.fullscreen ??

    2
    0 Votes
    2 Posts
    401 Views
    BKeyportB
    @dlee my guess is to make sure to cover the entire screen, and not leave any edge.
  • MMM-CalendarEXT2 - changing font size of view title

    10
    0 Votes
    10 Posts
    2k Views
    S
    @Whitling2k glad it worked out.
  • Clock margin

    3
    0 Votes
    3 Posts
    610 Views
    R
    @sdetweil bullet worked perfectly, but I just found out after trying your sitting Google assistant when it loaded it put the clock right back in the center so Google assistant was taking over the top bar. Now I have another problem lol But it worked. That’s the only thing I didn’t try was position absolute thanks for your help I appreciate it
  • Spacing on forecast for weather module?

    2
    0 Votes
    2 Posts
    421 Views
    S
    @junkmale tableClass is the link to the custom.css values for styling .weather .(tableClass name u picked) { font-size: color: ... etc } if u don’t have any info in custom.css for that classname(you picked), you get nothing different than the module provided (if any) oh… don’t ever edit our files… it will break upgrades… (or any module provided file) ALL CSS goes in custom.css ALL config goes in config.js
  • MMM-Weather sizing?

    1
    0 Votes
    1 Posts
    428 Views
    N6NGN
    I can’t figure out how to size the whole MMM-Weather image module. On one of my screens it fits perfectly on the other larger screen it overwrites the calendar times. How do I manage to reduce the overall size of the MMM-Weather module image? Thanks all N6NG Dennis