Replies: 22 comments 2 replies
-
|
Hi, last year I worked with a picframe user to get two screens running, but using functionality needing the desktop #438 The latest |
Beta Was this translation helpful? Give feedback.
-
|
OK so this seems to work mainly apart from the screen sleeping. It might be possible to do that using the
#!/bin/bash
wlr-randr --output HDMI-A-2 --right-of HDMI-A-1
source /home/pi/venv_picframe/bin/activate
picframe /home/pi/picframe_data/config/configuration.yaml&
picframe /home/pi/picframe_data2/config/configuration.yaml&
|
Beta Was this translation helpful? Give feedback.
-
|
I presume display_y is the height of A 1? Jus’ chicken… (B’CAW!)
David Gursky • Washington, DC
[EMail] • [Facebook] • [LinkedIn]
…On Sun, Jan 25, 2026 at 5:02 PM Paddy ***@***.***> wrote:
OK so this seems to work mainly apart from the screen sleeping. It might
be possible to do that using the echo off | sudo tee
/sys/class/drm/card1-HDMI-A-1/status route rather than wlr-randr. I will
investigate that next but I suspect labwc automatically redirects output
to the other HDMI if one of them gets turned off, and confuses things.
1. Follow thedigitalpictureframe.com one click instructions (until
it's merged with the main branch you might want to install from dev
branch, which is mentioned in other posts on this issues forum (search 'dev
branch'))
2. Create a new folder for pictures you want to show on screen 2
/home/pi/Pictures2, possibly DeletedPictures2
3. cp /home/pi/picframe_data/ /home/pi/picframe_data2/
4. Edit /home/pi/picframe_data2/config/configuration.yaml to set
display_x to the width of HDMI-A-1 (silk screened as HDMI 0) display_w
to the width of HDMI-A-2 (HDMI 1) and display_h to the height of
HDMI-A-2
5. If you're going to use http you will need to set up a different
port, say 9001, and if you use mqtt you will need a different device_id
6. Also in configuration.yaml change pic_dir to use Pictures2. You can
set the two instances of picframe to behave differently using all the
options in the config file. Save the changes.
7. Edit the /home/pi/start_picframe.sh file
#!/bin/bash
wlr-randr --output HDMI-A-2 --right-of HDMI-A-1source /home/pi/venv_picframe/bin/activate
picframe /home/pi/picframe_data/config/configuration.yaml&
picframe /home/pi/picframe_data2/config/configuration.yaml&
8. systemctl --user restart picframe.service
—
Reply to this email directly, view it on GitHub
<#579 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AB4WPGGSESS3GQQ2WVICHKD4IU4PFAVCNFSM6AAAAACSOEQ32GVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTKNRQGA2TMMQ>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
|
Never mind — I knew that. I didn’t REMEMBER that, but I knew it.
#SeniorMoment.
I am going off to eat my tapioca and play bingo now…. 🤣
David Gursky • Washington, DC
[EMail] • [Facebook] • [LinkedIn]
…On Mon, Jan 26, 2026 at 3:11 AM Paddy ***@***.***> wrote:
David, No. What those display_ settings are doing is positioning the
output of the pi3d.Display relative to "HDMI space" and how much to scale
the output. If you use (0, 0, null, null) pi3d gets the dimensions from the
graphics processor and outputs the display surface starting in top left
corner. The second HDMI screen is placed immediately to the --right-of
the first one using the wlr-randr instruction but the y offset is zero.
So the instructions to pi3d for outputting the second GPU display surface
are (width of first display, 0, width of second display, height of second
display)
Paddy
—
Reply to this email directly, view it on GitHub
<#579 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AB4WPGF3NZWJTTH66OMBYE34IXD4DAVCNFSM6AAAAACSOEQ32GVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTKNRQGM2DCOI>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
|
;) I've never thought about this before but do you (they) use the same bingo hints in the US as here (UK) i.e. "Two fat ladies", "Two little ducks"? All a mystery. |
Beta Was this translation helpful? Give feedback.
-
|
Great. Now I have Madeline Kahn singing “Oh sweet mystery of life” from
/Young Frankenstein/ (“BLÜCHER!”) running through my brain….
I have no idea about bingo hints.
David Gursky • Washington, DC
[EMail] • [Facebook] • [LinkedIn]
…On Mon, Jan 26, 2026 at 3:43 AM Paddy ***@***.***> wrote:
;) I've never thought about this before but do you (they) use the same
bingo hints in the US as here (UK) i.e. "Two fat ladies", "Two little
ducks"? All a mystery.
—
Reply to this email directly, view it on GitHub
<#579 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AB4WPGHIEGIABD6MFXQ4US34IXHTLAVCNFSM6AAAAACSOEQ32GVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTKNRQGM3TGNI>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
|
P.S. I rather assumed that videos would be out of the question when two picframe instances were running but I find that @helgeerbe had the foresight to pass |
Beta Was this translation helpful? Give feedback.
-
|
I don’t even use videos now. 😉
David Gursky • Washington, DC
[EMail] • [Facebook] • [LinkedIn]
…On Mon, Jan 26, 2026 at 7:38 AM Paddy ***@***.***> wrote:
P.S. I rather assumed that videos would be out of the question when two
picframe instances were running but I find that @helgeerbe
<https://github.com/helgeerbe> had the foresight to pass x,y,w,h
parameters to the VideoStreamer instance and everything works seamlessly.
I imagine two hi-res videos or ones with audio might cause hiccups if both
windows played at the same time, but on this RPi4 with 1GB ram, it seems
fine.
—
Reply to this email directly, view it on GitHub
<#579 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AB4WPGGID5JXZDSLUUWT2CD4IYDD3AVCNFSM6AAAAACSOEQ32GVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTKNRQGU3TKOA>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
|
So here is the latest...
Despite what appears to be a successful install, when I launch picframe with the Portrait Mode configuration,yaml, the images still show up in Landscape mode on HDMI-A-1 FYSA, my home directory for picframe is /home/picframe; user name is picframe. The root data directories are /home/picframe/picframe-landscape_data and /home/picframe/picframe-portrait_data. Imagery is location in /home/picframe/picframe-Imagery/Landscape and /home/picframe/picframe-Imagery/Portrait configuration.yamls are attached. Landscape -- configuration.yaml A comparison of the files appears correct: |
Beta Was this translation helpful? Give feedback.
-
|
And for good measure, here is the output from wlr-randr. |
Beta Was this translation helpful? Give feedback.
-
|
Hi Dave, I just noticed the the absence of the The mention of GUI makes me think you are following the desktop OS route, is that so? Anyway I will test rotating the screens on my setup here by adding to the |
Beta Was this translation helpful? Give feedback.
-
|
I can try booting to CLI and see what happens.
David Gursky • Washington, DC
[EMail] • [Facebook] • [LinkedIn]
…On Wed, Jan 28, 2026 at 3:38 AM Paddy ***@***.***> wrote:
Hi Dave, I just noticed the the absence of the --right-of in the wlr-randr
command line in the pi OS and was going to add a comment. It must be the
default behaviour to do that anyway as the two screens worked despite it. I
changed it to --pos and that seemed fine.
The mention of GUI makes me think you are following the desktop OS route,
is that so? Anyway I will test rotating the screens on my setup here by
adding to the start_picframe.sh and see what happens!
—
Reply to this email directly, view it on GitHub
<#579 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AB4WPGEM5ZIOKS7SI44YWXT4JBYRRAVCNFSM6AAAAACSOEQ32GVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTKNRSGYYDEMA>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
|
(David, not Dave. Never been called Dave save for one of my High School history teachers.) So if I boot to the CLI (Command Line Interpreter for those of you in the studio audience), I can get
There isn't an orientation parameter in |
Beta Was this translation helpful? Give feedback.
-
|
Oops, sorry if I've restarted the school history teacher nightmares. I have two screen running here, one of them rotated 270 and fitting nicely. To answer your last question, the setup in I've gone round in circles trying to use As I say, my setup is on trixie 64bit lite, vanilla source venv_picframe/bin/activate
python -m pip install git+https://github.com/helgeerbe/picframe@devThis is my minimum working #!/bin/bash
wlr-randr --output HDMI-A-2 --transform 270
source /home/pi/venv_picframe/bin/activate # Activate Python virtual environment
picframe /home/pi/picframe_data/config/configuration.yaml&
picframe /home/pi/picframe_data2/config/configuration.yaml&and the changes to display_x: 1152 # width of HDMI-A-1
display_y: 0
display_w: 1080
display_h: 1920It might not be relevant to you, but the video seems to work on the rotated screen OK. I've not tried the peripherals but they might work. Getting the monitor to blank and come back on eventually worked using Hopefully you can tease something useful out of this feedback, and get your monitors working as you want. Paddy (name given to me by a French teacher, long ago!) |
Beta Was this translation helpful? Give feedback.
-
|
To quote the (US) band *Bowling for Soup*, "High School never ends
<https://youtu.be/jrxI_euTX4A?si=39UcUNAQetVVrG5A>"
I may just rebuild my test system at this point to ensure I am consistent
with your build.
*David Gursky • Washington, DC*
[Google Mail ***@***.***>] *•* [Outlook Mail ***@***.***>]
*•* [Facebook <https://www.facebook.com/dmgursky>] *•* [LinkedIn
<https://www.linkedin.com/in/dgursky/>]
…On Wed, Jan 28, 2026 at 12:48 PM Paddy ***@***.***> wrote:
Oops, sorry if I've restarted the school history teacher nightmares.
I have two screen running here, one of them rotated 270 and fitting nicely.
To answer your last question, the setup in configuration.yaml "isn't
aware" of the way the HDMI output will eventually be used. So if the the
monitor is rotated 90 degrees you need to set the display_w to the height
(which has now become the width) and display_h to the width.
I've gone round in circles trying to use --pos with the output to
HDMI-A-1 being "bounced" to HDMI-A-2 leaving the default screen blank!
Don't know why... it must have been chance that it seemed to work before.
As I say, my setup is on trixie 64bit lite, vanilla
thedigitalpictureframe.com one-click setup (apart from commenting out all
the samba and mosquitto stuff) I then installed picframe dev branch to
replace main using
source venv_picframe/bin/activate
python -m pip install ***@***.***
This is my minimum working start_picframe.sh
#!/bin/bash
wlr-randr --output HDMI-A-2 --transform 270
source /home/pi/venv_picframe/bin/activate # Activate Python virtual environment
picframe /home/pi/picframe_data/config/configuration.yaml&
picframe /home/pi/picframe_data2/config/configuration.yaml&
and the changes to ~/picframe_data2/config/configuration.yaml are just
(and setting http to work on port 9001)
display_x: 1152 # width of HDMI-A-1
display_y: 0
display_w: 1080
display_h: 1920
It might not be relevant to you, but the video seems to work on the
rotated screen OK. I've not tried the peripherals but they might work.
Getting the monitor to blank and come back on eventually worked using echo
on | sudo tee /sys/class/drm/card0-HDMI-A-1/status though I had to use
os.system() rather than subprocess functions. More importantly, to get
the monitors to come back on it was critical to have them both off then
switch HDMI-A-1 on *before* HDMI-A-2
Hopefully you can tease something useful out of this feedback, and get
your monitors working as you want.
Paddy (name given to me by a French teacher, long ago!)
—
Reply to this email directly, view it on GitHub
<#579 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AB4WPGGJ5MOVH3HHYMEKNZ34JDZAFAVCNFSM6AAAAACSOEQ32GVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTKNRTGE2DKMI>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
|
Success at last.
I rebuilt the Pi using your commands as a basis:
# Set up the Python virtual environment
mkdir venv_picframe
python -m venv /home/picframe/venv_picframe
# Install picframe from the dev branch
python -m pip install ***@***.***
# Configure picframe
picframe -i ./
# Picture directory -- /home/picframe/picframe-Imagery/{Landscape,Portrait}
# Deleted directory -- /home/picframe/picframe-Imagery/Deleted
# Locale -- en-US_UTF-8
# Duplicate data directory (picframe-Landscape_data and
picframe-Portrait_data
tar -cf picframe.tar picframe_data
mv picframe_data picframe-Landscape_data
tar -xf picframe.tar
mv picframe_data picframe-Portrait_data
I then modified
~/picframe-{Landscape,Portrait}_data/config/configuration.yaml to match
their directories, and ~/picframe-Portrait_data/config/configuration.yaml
to match the rotated screen
diff ./picframe-{Landscape,Portrait}_data/config/configuration.yaml
9,10c9,10
< font_file:
"/home/picframe/picframe-Landscape_data/data/fonts/NotoSans-Regular.ttf"
< shader: "/home/picframe/picframe-Landscape_data/data/shaders/blend_new"
---
font_file:
"/home/picframe/picframe-Portrait_data/data/fonts/NotoSans-Regular.ttf"
shader: "/home/picframe/picframe-Portrait_data/data/shaders/blend_new"
27c27,28
< display_x: 0 # offset from left of screen
(can be negative)
---
# display_x: 0 # offset from left of screen
(can be negative)
display_x: 1920
29,30c30,33
< display_w: null # width of display surface
(null->None will use max returned by hardware)
< display_h: null # height of display surface
---
# display_w: null # width of display surface
(null->None will use max returned by hardware)
display_w: 1080
# display_h: null # height of display surface
display_h: 1920
32c35,36
< display_hdmi: "HDMI-A-1" # default="HDMI-A-1" which is
marked "HDMI 0" and is nearest the power. Change to "HDMI-A-2" if you use
"HDMI 1"
---
# display_hdmi: "HDMI-A-1" # default="HDMI-A-1" which is
marked "HDMI 0" and is nearest the power. Change to "HDMI-A-2" if you use
"HDMI 1"
display_hdmi: "HDMI-A-2"
47c51
< mat_resource_folder: "/home/picframe/picframe-Landscape_data/data/mat"
---
mat_resource_folder: "/home/picframe/picframe-Portrait_data/data/mat"
65c69
< pic_dir: "/home/picframe/picframe-Imagery/Landscape"
---
pic_dir: "/home/picframe/picframe-Imagery/Portrait"
70c74
< no_files_img:
"/home/picframe/picframe-Landscape_data/data/no_pictures.jpg"
---
no_files_img:
"/home/picframe/picframe-Portrait_data/data/no_pictures.jpg"
108c112
< db_file: "/home/picframe/picframe-Landscape_data/data/pictureframe.db3"
---
db_file: "/home/picframe/picframe-Portrait_data/data/pictureframe.db3"
129c133
< path: "/home/picframe/picframe-Landscape_data/html"
---
path: "/home/picframe/picframe-Portrait_data/html"
Finally, I created start-picframe.sh:
#!/bin/bash
wlr-randr --output HDMI-A-2 --transform 90 --pos 1920,0
# Set orientation (90° clockwise rotation, 1920 pixels away from origin
[upper left of HDMI-A-1)
source /home/picframe/venv_picframe/bin/activate
# Activate Python virtual environment
picframe /home/picframe/picframe-Landscape_data/config/configuration.yaml &
# Landscape
sleep 10
# Sleep for half the transition time
picframe /home/picframe/picframe-Portrait_data/config/configuration.yaml &
# Portrait
Now to get it to automagically start on reboot.
*David Gursky • Washington, DC*
[Google Mail ***@***.***>] *•* [Outlook Mail ***@***.***>]
*•* [Facebook <https://www.facebook.com/dmgursky>] *•* [LinkedIn
<https://www.linkedin.com/in/dgursky/>]
…On Wed, Jan 28, 2026 at 1:52 PM David Gursky ***@***.***> wrote:
To quote the (US) band *Bowling for Soup*, "High School never ends
<https://youtu.be/jrxI_euTX4A?si=39UcUNAQetVVrG5A>"
I may just rebuild my test system at this point to ensure I am consistent
with your build.
*David Gursky • Washington, DC*
[Google Mail ***@***.***>] *•* [Outlook Mail
***@***.***>] *•* [Facebook <https://www.facebook.com/dmgursky>
] *•* [LinkedIn <https://www.linkedin.com/in/dgursky/>]
On Wed, Jan 28, 2026 at 12:48 PM Paddy ***@***.***> wrote:
> Oops, sorry if I've restarted the school history teacher nightmares.
>
> I have two screen running here, one of them rotated 270 and fitting
> nicely.
>
> To answer your last question, the setup in configuration.yaml "isn't
> aware" of the way the HDMI output will eventually be used. So if the the
> monitor is rotated 90 degrees you need to set the display_w to the
> height (which has now become the width) and display_h to the width.
>
> I've gone round in circles trying to use --pos with the output to
> HDMI-A-1 being "bounced" to HDMI-A-2 leaving the default screen blank!
> Don't know why... it must have been chance that it seemed to work before.
>
> As I say, my setup is on trixie 64bit lite, vanilla
> thedigitalpictureframe.com one-click setup (apart from commenting out
> all the samba and mosquitto stuff) I then installed picframe dev branch to
> replace main using
>
> source venv_picframe/bin/activate
> python -m pip install ***@***.***
>
> This is my minimum working start_picframe.sh
>
> #!/bin/bash
> wlr-randr --output HDMI-A-2 --transform 270
> source /home/pi/venv_picframe/bin/activate # Activate Python virtual environment
>
> picframe /home/pi/picframe_data/config/configuration.yaml&
> picframe /home/pi/picframe_data2/config/configuration.yaml&
>
> and the changes to ~/picframe_data2/config/configuration.yaml are just
> (and setting http to work on port 9001)
>
> display_x: 1152 # width of HDMI-A-1
> display_y: 0
> display_w: 1080
> display_h: 1920
>
> It might not be relevant to you, but the video seems to work on the
> rotated screen OK. I've not tried the peripherals but they might work.
>
> Getting the monitor to blank and come back on eventually worked using echo
> on | sudo tee /sys/class/drm/card0-HDMI-A-1/status though I had to use
> os.system() rather than subprocess functions. More importantly, to get
> the monitors to come back on it was critical to have them both off then
> switch HDMI-A-1 on *before* HDMI-A-2
>
> Hopefully you can tease something useful out of this feedback, and get
> your monitors working as you want.
>
> Paddy (name given to me by a French teacher, long ago!)
>
> —
> Reply to this email directly, view it on GitHub
> <#579 (comment)>,
> or unsubscribe
> <https://github.com/notifications/unsubscribe-auth/AB4WPGGJ5MOVH3HHYMEKNZ34JDZAFAVCNFSM6AAAAACSOEQ32GVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTKNRTGE2DKMI>
> .
> You are receiving this because you authored the thread.Message ID:
> ***@***.***>
>
|
Beta Was this translation helpful? Give feedback.
-
|
I have found one bug, but it is unclear if the bug is in picframe or
Wayland. I shut down the screens (wlr-randr --display HDMI-A-{1,2} --off)
then turned them back on.
Well, I will let a picture tell the story.
Ummm, oops? 🤣
*David Gursky • Washington, DC*
[Google Mail ***@***.***>] *•* [Outlook Mail ***@***.***>]
*•* [Facebook <https://www.facebook.com/dmgursky>] *•* [LinkedIn
<https://www.linkedin.com/in/dgursky/>]
…On Wed, Jan 28, 2026 at 10:31 PM David Gursky ***@***.***> wrote:
Success at last.
I rebuilt the Pi using your commands as a basis:
# Set up the Python virtual environment
mkdir venv_picframe
python -m venv /home/picframe/venv_picframe
# Install picframe from the dev branch
python -m pip install ***@***.***
# Configure picframe
picframe -i ./
# Picture directory -- /home/picframe/picframe-Imagery/{Landscape,Portrait}
# Deleted directory -- /home/picframe/picframe-Imagery/Deleted
# Locale -- en-US_UTF-8
# Duplicate data directory (picframe-Landscape_data and
picframe-Portrait_data
tar -cf picframe.tar picframe_data
mv picframe_data picframe-Landscape_data
tar -xf picframe.tar
mv picframe_data picframe-Portrait_data
I then modified
~/picframe-{Landscape,Portrait}_data/config/configuration.yaml to match
their directories, and ~/picframe-Portrait_data/config/configuration.yaml
to match the rotated screen
diff ./picframe-{Landscape,Portrait}_data/config/configuration.yaml
9,10c9,10
< font_file:
"/home/picframe/picframe-Landscape_data/data/fonts/NotoSans-Regular.ttf"
< shader: "/home/picframe/picframe-Landscape_data/data/shaders/blend_new"
---
> font_file:
"/home/picframe/picframe-Portrait_data/data/fonts/NotoSans-Regular.ttf"
> shader: "/home/picframe/picframe-Portrait_data/data/shaders/blend_new"
27c27,28
< display_x: 0 # offset from left of screen
(can be negative)
---
> # display_x: 0 # offset from left of screen
(can be negative)
> display_x: 1920
29,30c30,33
< display_w: null # width of display surface
(null->None will use max returned by hardware)
< display_h: null # height of display surface
---
> # display_w: null # width of display surface
(null->None will use max returned by hardware)
> display_w: 1080
> # display_h: null # height of display surface
> display_h: 1920
32c35,36
< display_hdmi: "HDMI-A-1" # default="HDMI-A-1" which is
marked "HDMI 0" and is nearest the power. Change to "HDMI-A-2" if you use
"HDMI 1"
---
> # display_hdmi: "HDMI-A-1" # default="HDMI-A-1" which is
marked "HDMI 0" and is nearest the power. Change to "HDMI-A-2" if you use
"HDMI 1"
> display_hdmi: "HDMI-A-2"
47c51
< mat_resource_folder: "/home/picframe/picframe-Landscape_data/data/mat"
---
> mat_resource_folder: "/home/picframe/picframe-Portrait_data/data/mat"
65c69
< pic_dir: "/home/picframe/picframe-Imagery/Landscape"
---
> pic_dir: "/home/picframe/picframe-Imagery/Portrait"
70c74
< no_files_img:
"/home/picframe/picframe-Landscape_data/data/no_pictures.jpg"
---
> no_files_img:
"/home/picframe/picframe-Portrait_data/data/no_pictures.jpg"
108c112
< db_file: "/home/picframe/picframe-Landscape_data/data/pictureframe.db3"
---
> db_file: "/home/picframe/picframe-Portrait_data/data/pictureframe.db3"
129c133
< path: "/home/picframe/picframe-Landscape_data/html"
---
> path: "/home/picframe/picframe-Portrait_data/html"
Finally, I created start-picframe.sh:
#!/bin/bash
wlr-randr --output HDMI-A-2 --transform 90 --pos 1920,0
# Set orientation (90° clockwise rotation, 1920 pixels away from origin
[upper left of HDMI-A-1)
source /home/picframe/venv_picframe/bin/activate
# Activate Python virtual environment
picframe /home/picframe/picframe-Landscape_data/config/configuration.yaml
& # Landscape
sleep 10
# Sleep for half the transition time
picframe /home/picframe/picframe-Portrait_data/config/configuration.yaml &
# Portrait
Now to get it to automagically start on reboot.
*David Gursky • Washington, DC*
[Google Mail ***@***.***>] *•* [Outlook Mail
***@***.***>] *•* [Facebook <https://www.facebook.com/dmgursky>
] *•* [LinkedIn <https://www.linkedin.com/in/dgursky/>]
On Wed, Jan 28, 2026 at 1:52 PM David Gursky ***@***.***> wrote:
> To quote the (US) band *Bowling for Soup*, "High School never ends
> <https://youtu.be/jrxI_euTX4A?si=39UcUNAQetVVrG5A>"
>
> I may just rebuild my test system at this point to ensure I am consistent
> with your build.
>
> *David Gursky • Washington, DC*
> [Google Mail ***@***.***>] *•* [Outlook Mail
> ***@***.***>] *•* [Facebook <https://www.facebook.com/dmgursky>
> ] *•* [LinkedIn <https://www.linkedin.com/in/dgursky/>]
>
>
> On Wed, Jan 28, 2026 at 12:48 PM Paddy ***@***.***> wrote:
>
>> Oops, sorry if I've restarted the school history teacher nightmares.
>>
>> I have two screen running here, one of them rotated 270 and fitting
>> nicely.
>>
>> To answer your last question, the setup in configuration.yaml "isn't
>> aware" of the way the HDMI output will eventually be used. So if the the
>> monitor is rotated 90 degrees you need to set the display_w to the
>> height (which has now become the width) and display_h to the width.
>>
>> I've gone round in circles trying to use --pos with the output to
>> HDMI-A-1 being "bounced" to HDMI-A-2 leaving the default screen blank!
>> Don't know why... it must have been chance that it seemed to work before.
>>
>> As I say, my setup is on trixie 64bit lite, vanilla
>> thedigitalpictureframe.com one-click setup (apart from commenting out
>> all the samba and mosquitto stuff) I then installed picframe dev branch to
>> replace main using
>>
>> source venv_picframe/bin/activate
>> python -m pip install ***@***.***
>>
>> This is my minimum working start_picframe.sh
>>
>> #!/bin/bash
>> wlr-randr --output HDMI-A-2 --transform 270
>> source /home/pi/venv_picframe/bin/activate # Activate Python virtual environment
>>
>> picframe /home/pi/picframe_data/config/configuration.yaml&
>> picframe /home/pi/picframe_data2/config/configuration.yaml&
>>
>> and the changes to ~/picframe_data2/config/configuration.yaml are just
>> (and setting http to work on port 9001)
>>
>> display_x: 1152 # width of HDMI-A-1
>> display_y: 0
>> display_w: 1080
>> display_h: 1920
>>
>> It might not be relevant to you, but the video seems to work on the
>> rotated screen OK. I've not tried the peripherals but they might work.
>>
>> Getting the monitor to blank and come back on eventually worked using echo
>> on | sudo tee /sys/class/drm/card0-HDMI-A-1/status though I had to use
>> os.system() rather than subprocess functions. More importantly, to get
>> the monitors to come back on it was critical to have them both off then
>> switch HDMI-A-1 on *before* HDMI-A-2
>>
>> Hopefully you can tease something useful out of this feedback, and get
>> your monitors working as you want.
>>
>> Paddy (name given to me by a French teacher, long ago!)
>>
>> —
>> Reply to this email directly, view it on GitHub
>> <#579 (comment)>,
>> or unsubscribe
>> <https://github.com/notifications/unsubscribe-auth/AB4WPGGJ5MOVH3HHYMEKNZ34JDZAFAVCNFSM6AAAAACSOEQ32GVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTKNRTGE2DKMI>
>> .
>> You are receiving this because you authored the thread.Message ID:
>> ***@***.***>
>>
>
|
Beta Was this translation helpful? Give feedback.
-
|
Short term fix in place.
Bkgd. I have a pair of scripts on my DPFs (Digital Picture Frames) to turn
the screens on and off via the iOS Shortcuts app.
flame-on.sh:
#!/bin/bash
# Turn off display
wlr-randr --output HDMI-A-1 --on
And (not surprisingly) flame-off.sh
#!/bin/bash
# Turn off displays
wlr-randr --output HDMI-A-1 --off
Needless to say, on my dual screen DPFs, the wlr-randr commands are
duplicated for HDMI-A-2.
My fix is I added a reboot to the end of flame-off.sh:
#!/bin/bash
# Turn off displays
wlr-randr --output HDMI-A-1 --on
wlr-randr --output HDMI-A-2 --on
# When you turn the displays back on, picframe is confused and renders the
pictures on the opposite displays, so
# if A-1 is Landscape and A-2 is Portrait, the Landscape pictures are
rendered on A-2 and the Portraits on A-1.
#
# The patch solution is to reboot the Pi
sudo reboot now
*David Gursky • Washington, DC*
[Google Mail ***@***.***>] *•* [Outlook Mail ***@***.***>]
*•* [Facebook <https://www.facebook.com/dmgursky>] *•* [LinkedIn
<https://www.linkedin.com/in/dgursky/>]
…On Wed, Jan 28, 2026 at 10:47 PM David Gursky ***@***.***> wrote:
I have found one bug, but it is unclear if the bug is in picframe or
Wayland. I shut down the screens (wlr-randr --display HDMI-A-{1,2} --off)
then turned them back on.
Well, I will let a picture tell the story.
Ummm, oops? 🤣
*David Gursky • Washington, DC*
[Google Mail ***@***.***>] *•* [Outlook Mail
***@***.***>] *•* [Facebook <https://www.facebook.com/dmgursky>
] *•* [LinkedIn <https://www.linkedin.com/in/dgursky/>]
On Wed, Jan 28, 2026 at 10:31 PM David Gursky ***@***.***> wrote:
> Success at last.
>
> I rebuilt the Pi using your commands as a basis:
>
> # Set up the Python virtual environment
> mkdir venv_picframe
> python -m venv /home/picframe/venv_picframe
>
> # Install picframe from the dev branch
>
> python -m pip install ***@***.***
>
> # Configure picframe
> picframe -i ./
> # Picture directory --
> /home/picframe/picframe-Imagery/{Landscape,Portrait}
> # Deleted directory -- /home/picframe/picframe-Imagery/Deleted
> # Locale -- en-US_UTF-8
>
> # Duplicate data directory (picframe-Landscape_data and
> picframe-Portrait_data
> tar -cf picframe.tar picframe_data
> mv picframe_data picframe-Landscape_data
> tar -xf picframe.tar
> mv picframe_data picframe-Portrait_data
>
> I then modified
> ~/picframe-{Landscape,Portrait}_data/config/configuration.yaml to match
> their directories, and ~/picframe-Portrait_data/config/configuration.yaml
> to match the rotated screen
>
> diff ./picframe-{Landscape,Portrait}_data/config/configuration.yaml
> 9,10c9,10
> < font_file:
> "/home/picframe/picframe-Landscape_data/data/fonts/NotoSans-Regular.ttf"
> < shader:
> "/home/picframe/picframe-Landscape_data/data/shaders/blend_new"
> ---
> > font_file:
> "/home/picframe/picframe-Portrait_data/data/fonts/NotoSans-Regular.ttf"
> > shader: "/home/picframe/picframe-Portrait_data/data/shaders/blend_new"
> 27c27,28
> < display_x: 0 # offset from left of screen
> (can be negative)
> ---
> > # display_x: 0 # offset from left of screen
> (can be negative)
> > display_x: 1920
> 29,30c30,33
> < display_w: null # width of display surface
> (null->None will use max returned by hardware)
> < display_h: null # height of display surface
> ---
> > # display_w: null # width of display surface
> (null->None will use max returned by hardware)
> > display_w: 1080
> > # display_h: null # height of display surface
> > display_h: 1920
> 32c35,36
> < display_hdmi: "HDMI-A-1" # default="HDMI-A-1" which is
> marked "HDMI 0" and is nearest the power. Change to "HDMI-A-2" if you use
> "HDMI 1"
> ---
> > # display_hdmi: "HDMI-A-1" # default="HDMI-A-1" which is
> marked "HDMI 0" and is nearest the power. Change to "HDMI-A-2" if you use
> "HDMI 1"
> > display_hdmi: "HDMI-A-2"
> 47c51
> < mat_resource_folder: "/home/picframe/picframe-Landscape_data/data/mat"
> ---
> > mat_resource_folder: "/home/picframe/picframe-Portrait_data/data/mat"
> 65c69
> < pic_dir: "/home/picframe/picframe-Imagery/Landscape"
> ---
> > pic_dir: "/home/picframe/picframe-Imagery/Portrait"
> 70c74
> < no_files_img:
> "/home/picframe/picframe-Landscape_data/data/no_pictures.jpg"
> ---
> > no_files_img:
> "/home/picframe/picframe-Portrait_data/data/no_pictures.jpg"
> 108c112
> < db_file:
> "/home/picframe/picframe-Landscape_data/data/pictureframe.db3"
> ---
> > db_file: "/home/picframe/picframe-Portrait_data/data/pictureframe.db3"
> 129c133
> < path: "/home/picframe/picframe-Landscape_data/html"
> ---
> > path: "/home/picframe/picframe-Portrait_data/html"
>
> Finally, I created start-picframe.sh:
>
> #!/bin/bash
> wlr-randr --output HDMI-A-2 --transform 90 --pos 1920,0
> # Set orientation (90° clockwise rotation, 1920 pixels away from origin
> [upper left of HDMI-A-1)
>
> source /home/picframe/venv_picframe/bin/activate
> # Activate Python virtual environment
>
> picframe /home/picframe/picframe-Landscape_data/config/configuration.yaml
> & # Landscape
> sleep 10
> # Sleep for half the transition time
> picframe /home/picframe/picframe-Portrait_data/config/configuration.yaml
> & # Portrait
>
> Now to get it to automagically start on reboot.
>
>
>
> *David Gursky • Washington, DC*
> [Google Mail ***@***.***>] *•* [Outlook Mail
> ***@***.***>] *•* [Facebook <https://www.facebook.com/dmgursky>
> ] *•* [LinkedIn <https://www.linkedin.com/in/dgursky/>]
>
>
> On Wed, Jan 28, 2026 at 1:52 PM David Gursky ***@***.***> wrote:
>
>> To quote the (US) band *Bowling for Soup*, "High School never ends
>> <https://youtu.be/jrxI_euTX4A?si=39UcUNAQetVVrG5A>"
>>
>> I may just rebuild my test system at this point to ensure I am
>> consistent with your build.
>>
>> *David Gursky • Washington, DC*
>> [Google Mail ***@***.***>] *•* [Outlook Mail
>> ***@***.***>] *•* [Facebook
>> <https://www.facebook.com/dmgursky>] *•* [LinkedIn
>> <https://www.linkedin.com/in/dgursky/>]
>>
>>
>> On Wed, Jan 28, 2026 at 12:48 PM Paddy ***@***.***> wrote:
>>
>>> Oops, sorry if I've restarted the school history teacher nightmares.
>>>
>>> I have two screen running here, one of them rotated 270 and fitting
>>> nicely.
>>>
>>> To answer your last question, the setup in configuration.yaml "isn't
>>> aware" of the way the HDMI output will eventually be used. So if the the
>>> monitor is rotated 90 degrees you need to set the display_w to the
>>> height (which has now become the width) and display_h to the width.
>>>
>>> I've gone round in circles trying to use --pos with the output to
>>> HDMI-A-1 being "bounced" to HDMI-A-2 leaving the default screen blank!
>>> Don't know why... it must have been chance that it seemed to work before.
>>>
>>> As I say, my setup is on trixie 64bit lite, vanilla
>>> thedigitalpictureframe.com one-click setup (apart from commenting out
>>> all the samba and mosquitto stuff) I then installed picframe dev branch to
>>> replace main using
>>>
>>> source venv_picframe/bin/activate
>>> python -m pip install ***@***.***
>>>
>>> This is my minimum working start_picframe.sh
>>>
>>> #!/bin/bash
>>> wlr-randr --output HDMI-A-2 --transform 270
>>> source /home/pi/venv_picframe/bin/activate # Activate Python virtual environment
>>>
>>> picframe /home/pi/picframe_data/config/configuration.yaml&
>>> picframe /home/pi/picframe_data2/config/configuration.yaml&
>>>
>>> and the changes to ~/picframe_data2/config/configuration.yaml are just
>>> (and setting http to work on port 9001)
>>>
>>> display_x: 1152 # width of HDMI-A-1
>>> display_y: 0
>>> display_w: 1080
>>> display_h: 1920
>>>
>>> It might not be relevant to you, but the video seems to work on the
>>> rotated screen OK. I've not tried the peripherals but they might work.
>>>
>>> Getting the monitor to blank and come back on eventually worked using echo
>>> on | sudo tee /sys/class/drm/card0-HDMI-A-1/status though I had to use
>>> os.system() rather than subprocess functions. More importantly, to get
>>> the monitors to come back on it was critical to have them both off then
>>> switch HDMI-A-1 on *before* HDMI-A-2
>>>
>>> Hopefully you can tease something useful out of this feedback, and get
>>> your monitors working as you want.
>>>
>>> Paddy (name given to me by a French teacher, long ago!)
>>>
>>> —
>>> Reply to this email directly, view it on GitHub
>>> <#579 (comment)>,
>>> or unsubscribe
>>> <https://github.com/notifications/unsubscribe-auth/AB4WPGGJ5MOVH3HHYMEKNZ34JDZAFAVCNFSM6AAAAACSOEQ32GVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTKNRTGE2DKMI>
>>> .
>>> You are receiving this because you authored the thread.Message ID:
>>> ***@***.***>
>>>
>>
|
Beta Was this translation helpful? Give feedback.
-
|
Hi, Sounds like progress. Reboot has the disadvantage of restarting the slide order. I had similar problems with I did find find that |
Beta Was this translation helpful? Give feedback.
-
|
Umm, not to be dumb, but where does curl come to play in that?
I had the audacity to tend to other things today, but I want to return to
something you wrote earlier, that rebooting would cause the software to
restart the slide show from picture 1. Now the *smallest* of my
collections has several hundred images, so that doesn't really worry me,
but why not either:
1. Generate a random number between 1 and the number of slides in the
collection and start there, OR
2. increment a counter saved to the DB which is the entry you just
rendered. On startup, read that counter and start there.
*David Gursky • Washington, DC*
[Google Mail ***@***.***>] *•* [Outlook Mail ***@***.***>]
*•* [Facebook <https://www.facebook.com/dmgursky>] *•* [LinkedIn
<https://www.linkedin.com/in/dgursky/>]
…On Thu, Jan 29, 2026 at 2:55 AM Paddy ***@***.***> wrote:
Just checked, and apparently I hadn't tested the alternative system with
rotation! I find I need to do
# pause both displays i.e. using curl with http interface
echo off | sudo tee /sys/class/drm/card0-HDMI-A-2/status
echo off | sudo tee /sys/class/drm/card0-HDMI-A-1/status
# now both screens off
echo on | sudo tee /sys/class/drm/card0-HDMI-A-1/status
echo on | sudo tee /sys/class/drm/card0-HDMI-A-2/status
wlr-randr --output HDMI-A-2 --transform 270
# screens now on, unpause
I will add another "power" option to picframe so this method of screen
blanking can be done internally, however the screen rotation will need to
be externally.
—
Reply to this email directly, view it on GitHub
<#579 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AB4WPGBXD6AJR2MMR44YOKL4JG4GVAVCNFSM6AAAAACSOEQ32GVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTKNRTG4YDMOI>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
|
If you have http interface switched on then you can pause using As it stands the randomness comes from sqlite dB selection which doesn't have an option for seeding. There are plans to move this to a python list randomisation where the seed and sequence number can be stored for restart. |
Beta Was this translation helpful? Give feedback.
-
|
Shiny!
David Gursky • Washington, DC
[EMail] • [Facebook] • [LinkedIn]
…On Fri, Jan 30, 2026 at 7:11 PM Paddy ***@***.***> wrote:
If you have http interface switched on then you can pause using
curl http://localhost:9000?paused=ON
In a bash script.
As it stands the randomness comes from sqlite dB selection which doesn't
have an option for seeding. There are plans to move this to a python list
randomisation where the seed and sequence number can be stored for restart.
—
Reply to this email directly, view it on GitHub
<#579 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AB4WPGB5CUYMJH4IFFIH42D4JPXLTAVCNFSM6AAAAACSOEQ32GVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTKNRVGU4DEOI>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Has there been any thought given to adding a control to picframe to explicitly use a given monitor on multiple monitor setups (Raspbian / Wayland Display)? Raspberry Pi 4's and 5's all support multiple HDMI monitors -- it would be nice to be able to run two instances of picframe, each controlling one of two monitors.
Beta Was this translation helpful? Give feedback.
All reactions