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

Subcategories

  • Any suggestions or wishes for the forum?

    103 Topics
    720 Posts
    S
    @OrangeMirror the current docker setup will only work for multiple instances IF you use the MM_CONFIG_FILE environment variable to run instances off different config files, or the MM_PORT env variable to override the port if using the same config.js all the files will come from the ONE folder tree ~/magicmirror so this means you would have to setup multiple entries in the compose.yaml to launch multiple instances (with the different config parms) You have to change the container name too this is because all the DATA used by the container is external (on docker host filesystem) and not IN the container an example NOT using docker, but same idea here https://docs.magicmirror.builders/configuration/introduction.html#advanced-configuration-and-frequently-asked-how-to-configure-examples
  • Community task: Check automated translations

    1
    0 Votes
    1 Posts
    330 Views
    KristjanESPERANTOK
    Hey everyone, MagicMirror is currently available in 47 languages. However, a lot of these translations are incomplete. I have used translation tools to fill the gaps and compiled the results in a pull request (https://github.com/MagicMirrorOrg/MagicMirror/pull/3794). If you know a language other than German, Esperanto and English, please take a look at the PR and give us feedback.
  • Which version of Debian to use

    20
    0 Votes
    20 Posts
    3k Views
    S
    @DarrenO-0 it also works on wayland compositor get a short view of the desktop before MM comes up
  • Tide Chart Module

    8
    0 Votes
    8 Posts
    5k Views
    F
    @Area-49 this is a really simple and elegant way to display the tides. I couldnt help but notice the name as well, im looking for a tide chart for my relatives on the Kenai in Alaska who fish Halibut. Can you provide any guidance on the cron job code and how/where you downloaded/hosted the xtides? thanks
  • Skylight Calendar DIY Build

    13
    0 Votes
    13 Posts
    4k Views
    M
    @mmmallday I’d love to see your setup. I have many of the modules configured, but I want it to have a similar look-and-feel to Skylight. Unfortunately, UI/UX and CSS is not my strong suit. How does yours look?
  • node clientonly for Windows

    9
    1 Votes
    9 Posts
    597 Views
    S
    looks like electron (browser) is confused about the os running
  • Auto Start on Windows 11

    7
    0 Votes
    7 Posts
    766 Views
    S
    @Krowyn only thing i can think is the cd MagicMirror failed because the current directory is not correct where is this bat file located? maybe it should be cd %USERPROFILE%\MagicMirror npm run start:windows
  • new Raspi OS release

    19
    2 Votes
    19 Posts
    3k Views
    mumblebajM
    @sdetweil So, I have not seen any issues thus far other than having to figure out the screen blanking for me on Labwc, I have to test the wlopm, but for now I have switched back to Wayfire. No other issues in logs etc.
  • Modul MMM-AssistantMK2

    4
    0 Votes
    4 Posts
    438 Views
    S
    @Future.Mirror we had a good Google Assistant. the author left and took his modules w him Amazon has killed software versions of an Alexa device https://forum.magicmirror.builders/topic/16069/alexa-implementations-now-more-difficult-and-some-features-will-stop-working biggest thing is you cant access skills unless your ‘alexa device’ is certified., which sw only cannot be since then they have frozen the sdk, dropped all support for hardware developers, … there are some other voice interfaces, search the 3rd party list linked above with ‘voice’ but they are very limited in function. hide/show some modules., and voice reco is not particularly good i wouldn’t call them assistants
  • Camera implementation

    6
    0 Votes
    6 Posts
    542 Views
    S
    @jaimegarzont no. sorry.
  • troubleshooting

    7
    0 Votes
    7 Posts
    572 Views
    R
    @sdetweil those wake up in the night thoughts may be some of my best work… lol… Thanks again!
  • Bugsounet and MMM-Pir

    68
    0 Votes
    68 Posts
    20k Views
    F
    Thank you @gullymat. Very interesting comparision!
  • Looking for feedback and advice

    15
    3
    0 Votes
    15 Posts
    2k Views
    S
    @Xsoldier2000 the thing you see on github IS a web page dynamically constructed from a list of files in the project repository AND a rendering of a readme if one is found, and some other github project mgmt services, issues, fixes, …
  • i need help w pi imager and ssh, headless, oops, user error

    15
    0 Votes
    15 Posts
    3k Views
    S
    @rkorell i knew you were teasing me. thank you for that!
  • Create a clone of MMM-Webview

    6
    0 Votes
    6 Posts
    849 Views
    JohanbaJ
    @sdetweil Thank a mil for the info I am going to try and update my config as such, and see how to get this going i might reach out again if I am struggling
  • New module installer

    51
    4
    1 Votes
    51 Posts
    15k Views
    S
    Just added search in the installer
  • MMM-update - Please help beginner and need help

    17
    0 Votes
    17 Posts
    3k Views
    S
    @Rberry91 did you fix this?
  • Google fit or any health module

    2
    1 Votes
    2 Posts
    250 Views
    S
    @kmanne none have been updated.
  • MMM-Carousel CSS influence

    2
    2 Votes
    2 Posts
    450 Views
    S
    @chrisfr1976 for educational purposes, before you go reinstalling a module you THINK has been modified, do git status in the module folder this will tell you if any shipped files have been changed git diff will show you WHAT changed
  • Question about backup script

    30
    1 Votes
    30 Posts
    6k Views
    R
    @sdetweil Your: git config --local user.name “my name” git config --local user.email “my email” plus git config --local user.password “myverylonggithubtoken” does the trick… The stackoverflow article is confusing to me but your suggestion is there :-) Thanks a lot! Warm regards, Ralf
  • Contrasting text on changing background

    4
    0 Votes
    4 Posts
    1k Views
    B
    @sdetweil said in Contrasting text on changing background: @mwm341 I want that too. text over photos. haven’t figured out a way yet. I kludged something together today with the MMM-Wallpaper module. It’s not elegant, but it’s been working for me so far. What I’m doing is having the module draw the image onto an off-screen canvas and compute its average brightness using the luminance formula. Based on whether this brightness exceeds a defined threshold (115 has been working for me), the module then updates a global CSS variable with either a light or dark text color. I’m using color: var(--dynamic-text-color); as the variable. Since it’s determining global brightness, it can still “miss” picking a good color for each module. Depending on compute load, I’m thinking an update would be to determine that brightness value for each quadrant of an image then creating a variable for each quadrant and setting the text style in those areas to that color. A downside to this approach is that it won’t work perfectly with different display aspect ratios, but if you’re only ever using a 16:9 display that would be mitigated. Brightness function: // Helper function to compute average brightness of an image. getAverageBrightness: function(image, callback) { var canvas = document.createElement("canvas"); var width = image.naturalWidth; var height = image.naturalHeight; canvas.width = width; canvas.height = height; var context = canvas.getContext("2d"); context.drawImage(image, 0, 0, width, height); try { var imageData = context.getImageData(0, 0, width, height); } catch (error) { console.error("Error accessing image data:", error); callback(255); // Assume bright background if error. return; } var data = imageData.data; var colorSum = 0; var pixels = data.length / 4; for (var i = 0; i < data.length; i += 4) { var r = data[i]; var g = data[i + 1]; var b = data[i + 2]; // Calculate brightness using the luminance formula. var brightness = 0.299 * r + 0.587 * g + 0.114 * b; colorSum += brightness; } var averageBrightness = colorSum / pixels; callback(averageBrightness); }, Updated onImageLoaded function: onImageLoaded: function(imageData, element) { var self = this; return () => { self.resetLoadImageTimer(); element.className = `wallpaper ${self.config.crossfade ? "crossfade-image" : ""}`; element.style.opacity = 1; // Analyze the image brightness and adjust text color accordingly. // This will update both the module's caption and a global CSS variable. self.getAverageBrightness(element, function(brightness) { var threshold = 128; // Adjust this threshold as needed. var textColor = brightness > threshold ? "black" : "white"; self.title.style.color = textColor; // Set a global CSS variable for dynamic text color. document.documentElement.style.setProperty('--dynamic-text-color', textColor); }); self.title.style.display = "none"; setTimeout(() => { var caption = imageData.caption; if (self.config.caption && caption) { self.title.innerHTML = caption; self.title.style.display = "initial"; } if (self.imageElement !== null) { self.content.removeChild(self.imageElement); } self.imageElement = self.nextImageElement; self.nextImageElement = null; }, self.config.crossfade ? 1000 : 0); }; },