MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    Magic mirror dual screen

    Scheduled Pinned Locked Moved General Discussion
    25 Posts 4 Posters 18.9k Views 4 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • 1 Offline
      1a2a3a @MMRIZE
      last edited by

      @MMRIZE hmmm ideally… 1 pi connect to 2 monitor and both monitor running … this is the part I don’t quite get it.

      I want 1 monitor to just display Google photo and the other monitor showing all the informative stuff like calendar news stock etc. would this be more viable running 2 instances of mm? Or 1 instance of mm portraying Google photo on 1 screen and info on another side?

      It feels like the first option is easier?

      I’m happy to go either direction.

      Of course the easiest solution is to buy 2 pi and call it a day. But where’s the fun in that 😅

      S 1 Reply Last reply Reply Quote 0
      • S Offline
        sdetweil @1a2a3a
        last edited by sdetweil

        @1a2a3a MM only displays on one screen… you can run two instances, and have them display on different monitors… from the same mm folder. just two different config files.

        see the MM_CONFIG_FILE env variable

        to get an instance on the other monitor you need to add

        electronOptions:{x:????,width:yyyy},
        

        to the config.js before the modules:{} list

        ??? is the width of the 1st display in pixels
        yyyy is the width of the second monitor

        note that you can also do the MMM-Pages approach, and only display some on a logical page 1 and some on logical page 2 in rotation…

        see my fork for a better way to define that
        https://github.com/sdetweil/MMM-pages

        Sam

        How to add modules

        learning how to use browser developers window for css changes

        1 1 Reply Last reply Reply Quote 0
        • 1 Offline
          1a2a3a @sdetweil
          last edited by

          @sdetweil oh my just that simple 1 config file and I’m done? And when I run pm2 it will flash to 2 as well?

          S 1 Reply Last reply Reply Quote 0
          • S Offline
            sdetweil @1a2a3a
            last edited by sdetweil

            @1a2a3a have to run two scripts, one w the second config file

            Sam

            How to add modules

            learning how to use browser developers window for css changes

            S 1 Reply Last reply Reply Quote 0
            • S Offline
              sdetweil @sdetweil
              last edited by sdetweil

              @sdetweil see the pm2_MagicMirror.json in ~/MagicMirror/installers

              copy, change the name and script name, make a new script mm2.sh
              and the env variable

              pm2 start pm2_MagicMirror.json(new name)
              pm2 save

              that give the app pm2 manages a pretty name

              you can test w another terminal window
              set the env variable, using export variable=
              then create the new config.js, w only the modules u want enabled.
              then npm start

              Sam

              How to add modules

              learning how to use browser developers window for css changes

              BKeyportB 1 Reply Last reply Reply Quote 0
              • BKeyportB Offline
                BKeyport Module Developer @sdetweil
                last edited by

                @sdetweil heck, I’m a little lost there. Can you explain it out a bit better for us? I’m currently running two Magicmirrors back to back with two MM Directories and custom mm.sh files, if I could simplify that, I want to.

                The "E" in "Javascript" stands for "Easy"

                BKeyportB 1 Reply Last reply Reply Quote 0
                • BKeyportB Offline
                  BKeyport Module Developer @BKeyport
                  last edited by BKeyport

                  @BKeyport What I did was two directories, with seperate configs, then mm.sh does:

                  cd /home/bkey1970/MagicMirror
                  DISPLAY=:0 npm start
                  

                  and mm2.sh does:

                  cd /home/bkey1970/MagicMirror2
                  DISPLAY=:0 npm start
                  

                  To get the 2nd on the 2nd monitor, I added:

                          electronOptions: {
                      x: 1920
                  },
                  

                  to the 2nd config.js, right below the address line, and changed the port to 8081.

                  The "E" in "Javascript" stands for "Easy"

                  S 1 Reply Last reply Reply Quote 0
                  • S Offline
                    sdetweil @BKeyport
                    last edited by

                    @BKeyport @1a2a3a

                    copy the second config.js to the first mm config directory as config2.js

                    edit the mm2.sh

                    cd to the first mm directory(instead of the second)
                    and add a line

                    export MM_CONFIG_FILE=${cwd}/config/config2.js
                    npm start

                    now. make sure all the modules needed by both instances are installed in the modules folder of the 1st instance.

                    if they aren’t used by a particular instance, no big deal, same as setting disabled:true on a module config

                    Sam

                    How to add modules

                    learning how to use browser developers window for css changes

                    BKeyportB 1 Reply Last reply Reply Quote 0
                    • BKeyportB Offline
                      BKeyport Module Developer @sdetweil
                      last edited by

                      Interesting - although, now, it’s ignoring the electronOptions: item.

                      The "E" in "Javascript" stands for "Easy"

                      BKeyportB 1 Reply Last reply Reply Quote 0
                      • BKeyportB Offline
                        BKeyport Module Developer @BKeyport
                        last edited by BKeyport

                        Here’s the answer for @1a2a3a (Edited to show below changes)

                        Here’s how to do it cleanly: (replace <username> with your pi login name., with width of first monitor)

                        1. create two starting scripts:

                        First, mm.sh is as follows:

                        cd /home/<username>/MagicMirror
                        DISPLAY=:0 npm start
                        

                        Second, mm2.sh is as follows:

                        cd /home/<username>/MagicMirror
                        export MM_CONFIG_FILE=${pwd}/config/config2.js
                        DISPLAY=:0 npm start
                        
                        1. Two config files in magicmirror/config next:

                        First, config.js (this is your second monitor):

                               var config = { 
                               electronOptions: { x: <width> },
                                address: "0.0.0.0",
                                port: 8080,
                                ipWhitelist: [],
                                language: "en",
                                timeFormat: 12,
                                units: "imperial",
                                //logLevel: ["INFO", "LOG", "WARN", "ERROR", "DEBUG"],
                                modules: [
                        ...
                        

                        Second config2.js (this is your first monitor):

                               var config = { 
                                address: "0.0.0.0",
                                port: 8081,
                                ipWhitelist: [],
                                language: "en",
                                timeFormat: 12,
                                units: "imperial",
                                //logLevel: ["INFO", "LOG", "WARN", "ERROR", "DEBUG"],
                                modules: [
                        ...
                        

                        electronOptions will only work in the file that isn’t redirected to a new config - so use that in the config.js only.

                        The "E" in "Javascript" stands for "Easy"

                        S 1 Reply Last reply Reply Quote 1
                        • 1
                        • 2
                        • 3
                        • 1 / 3
                        • First post
                          Last post
                        Enjoying MagicMirror? Please consider a donation!
                        MagicMirror created by Michael Teeuw.
                        Forum managed by Sam, technical setup by Karsten.
                        This forum is using NodeBB as its core | Contributors
                        Contact | Privacy Policy