xournalpp / xournalpp

Xournal++ is a handwriting notetaking software with PDF annotation support. Written in C++ with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SUSE), macOS and Windows 10. Supports pen input from devices such as Wacom Tablets.
https://xournalpp.github.io
GNU General Public License v2.0
11.28k stars 803 forks source link

Presentation on second display #1168

Closed GregDMeyer closed 1 year ago

GregDMeyer commented 5 years ago

This might be a little non-trivial to implement, but I thought I'd put it out there. It would be super cool if it was possible to show only the page area on a second display. What I am imagining is writing on my tablet with all the toolbars etc visible on the native display, and only what I am drawing being displayed on e.g. a projector.

Right now it is possible to give a presentation on a second display by just mirroring displays, but then all of the toolbars etc are visible, and in general this requires changing the resolution of the native display. Another option (on linux) is to use xrandr to export only a portion of the framebuffer, but this is pretty hacky ;)

I can poke around how to implement this if I have some spare time, but thought I would put the idea in public in case someone else sees an easy way to implement it.

LittleHuba commented 5 years ago

This is actually not that hard as we are using the MVC pattern which supports such things. We only need to generate the window with this single view and change a few parts of the code to handle multiple such views.

Unfortunately we have a lot to do currently so this may still take some time.

JJones780 commented 5 years ago

Would the floatingToolbox (i.e. popup menu ) suffice for your use case? This is currently under development (#1161) but it allows one to use a full screen page only display. Here's a gifanim showing functionality without any sidebars etc. You can put only the tools you need in the floating toolbar. allpage small

GregDMeyer commented 5 years ago

@JJones780 Thanks! This could be a good temporary solution, though I'm not sure it does everything I am looking for---

There is another consideration aside from the toolbars. On my tablet, mirroring displays with e.g. a projector forces me to set my builtin display to a non-native resolution with an aspect ratio that doesn't match. Not only is this less visually nice, it also totally screws up the calibration of my tablet pen with position on the screen (so where I'm writing isn't where my pen is touching). Admittedly that's my problem ;) but I think it would be a nice, clean solution to export the page to a non-mirrored display. (I think some other note-taking software does this, but I don't have any concrete examples).

Thanks for your time and input!!

JJones780 commented 5 years ago

Are you using the same projector most of the time? You mentioned you are proficient with xrandr so it might be worthwhile to script an xrandr command to set it up ( see below ) I work with a 4k display at times and use xrandr to show the same but zoomed-out image on my 1080p laptop touch/stylus enabled screen. It works exceptionally well and thankfully they have the same aspect ratios - but xrandr can even help there. One problem I ran into is that I can't use my dedicated nvidia gpu and have to resort to the intel graphics which better supports zooming.

I got a bit carried away below... and also added in extra info for others who might not be familiar with xrandr. Maybe I'll copy this somewhere more visible.

I suspect you've already tried everything here.

For reference - My laptop video outputs are eDP1 and an external HDMI1 ( run xrandr without arguments to check).

I imagine this might work for you with an external 1280x1024 projector?

xrandr --output HDMI1 --mode 1280x1024 --scale 1.5x1.0547 options: --panning 1920x1080 will pan the display as the mouse/pointer moves if the scale doesn't show the entire desktop ( due to aspect differences ?) --pos 100x0 to fix the external display offset instead of using panning --same-as eDP1 to line up the top left corners of the two displays if needed.

If you have problems with the stylus/touchscreen lining up ( i.e. second screen extends outside of main screen ):

xinput --map-to-output "N-trig DuoSense Pen stylus"  eDP1
xinput --map-to-output "N-trig DuoSense"  eDP1

Note For scripts use device names as above! You can use an id # instead of"N-trig.." but the id# can change by simply booting with a different usb device plugged in. hint: run xinput on its own for device names.

cbm755 commented 5 years ago

another related nice feature (that could be possible with good MVC separation) would be showing the previous page on a different screen. Then I can make a presentation on one projector while also showing the previous page on a second projector. This would duplicate how I currently teach with two doccams.

Technius commented 5 years ago

@cbm755 That should be pretty easy to implement once presentation works on a second display.

LittleHuba commented 5 years ago

Additional wishes from #1301: A full presenter mode (as in PowerPoint) shows me the time, notes and the next slide

wallento commented 5 years ago

Thanks for pointing me here @LittleHuba! When it comes to presentations, I am still stuck at PowerPoint because I find the presenter mode very useful during lectures. The ability to store drawings and distribute them to my students after the lecture allows me to develop things beyond just adding some strokes here and there, but without much need of post-processing. But now I am thinking of finally moving to beamer and look into how to get to at least the same level of comfort.

I have looked into pdfpc recently, which pretty much resembles the very basic functionality of the powerpoint presenter, but doesn't have (and wants to have) the ability to store drawings.

As this issue is currently something like a wish list, I want to add my thoughts and wishes :)

Sorry, for just adding more thoughts and suggestions and no solutions (yet), but it would be really great if xournal++ could be extended towards those. Unfortunately, my GTK experience is very limited, but I could potentially help out with some of the tasks during summer break.

BTW: Thanks for working on xournal++, it finally feels like my convertible and my preferred OS become actually compatible ;)

pierrethibault commented 5 years ago

As a temporary solution for linux laptop users, what I do (currently with xournal, but xournal++ would be the same) on linux for teaching is mirroring just a portion of my laptop screen. I have a script that runs

otherscreen=`xrandr | grep " connected " | tail -1 | awk '{print $1}'`

to detect the plugged projector, then

xrandr --output $otherscreen --mode 1280x1024 --pos 10x24

to mirror a 1280x1024 section of my screen, offset by 10 pixels in x and 24 in y. Then, I run

wmctrl -r :SELECT: -e 0,0,-120,1286,1150

and click on the Xournal window to reshape it.

My students see only the drawing portion of the window, and I have a 640-pixel band on the right to put my notes or other useful material.

I use ffmpeg with the same size and offset settings to make screencasts of my lectures.

CryptoMathician commented 4 years ago

A full presentation mode with second monitor and showing the time on the screen together with nodes would be very helpful and would make Xournalpp more attractive to use for presentations - not only for note taking.

It would be very nice, if it would be possible to implement a presentation mode, which are able to do

I would appreciate it, if that will be a feature in the future.

kauesena commented 3 years ago

Are there news regarding this issue? I'd like to mention another use case. I usually write with view very zoomed in and when doing a presentation it would be nice to be able to zoom in for writing while still showing the whole page to the audience.

bhennion commented 1 year ago

Duplicate of #936

niceiq commented 1 year ago

OpenBoard does this pretty efficiently. This is what I am currently using, but I want to switch to Xournal++. As an online teacher working with a multi-monitor setup, this feature would be amazing.

niceiq commented 1 year ago

Any news regarding that issue?