QubesOS / qubes-issues

The Qubes OS Project issue tracker
https://www.qubes-os.org/doc/issue-tracking/
534 stars 47 forks source link

Screenshot Tool Invocation #5809

Open ninavizz opened 4 years ago

ninavizz commented 4 years ago

The problem you're addressing (if any) In a near-term release, a new Screenshot tool is planned to be deployed. When that happens, it will need a usable/intuitive icon. It is my belief, that tool should be invokable from the Tray.

Over 2020, it is an interest of mine to see all default Tray icons updated to reflect high-contrast/monochromatic styling. Which, yes, will then make the XFCE "High Contrast Icons" option moot. As it should be. High contrast should always be the default; aesthetically inclined options should not be a default. The most usable choice, should always be the default.

Describe the solution you'd like The below is a common symbol/semiotic used to identify photography and screenshot needs, and as such I propose it (between the cut/paste icon and an updated Whonix icon): image

Where is the value to a user, and who might that user be? In #5520 the multi-chromatic styling of the Tango icons family, was cited as a major usability problem for Tray icons. The Tango family was never designed to be used at 16x16; when that small, the hundreds of colors and gradients all become cognitive mud.

ninavizz commented 4 years ago

16px to 128px artwork, here: Screenshot Tool.zip

I take it artwork is still needed for both the selected and hover states, assuming y'all like the icon and would want to go with it? :D

marmarta commented 4 years ago

I'm wondering - will we actually need an icon? Screenshot tool can be just shown by the print-screen button, which is, I think, fairly intuitive. On the other hand, an icon mean it could be more easily put into the menu....

ninavizz commented 4 years ago

@marmarta Heh... "Print Screen" (as a button or as a keyboard shortcut) is not existing functionality on a Mac. So, all users migrating from Macs to Qubes will not know that functionality exists. Much as today's Qubes user-base are Linux-native developers, expanding the Qubes user base to include at-risk users outside the security-nerd bubble feels urgent and important.

Both for the project's sustainability over the long term, and because it's a legit need in the Global North (eg: most journalists are on Macs, who can afford them; partially because they're just easier than Windows, but also because Macs are much less vulnerable to viruses and other compromises, than PCs—which is why I got my parents on Macs).

The most inclusive/intuitive approach, seems to be invoking the Screenshot tool by the print-screen button, as a keyboard shortcut—but also having that icon available in the Tray.

As a native Mac user, myself, I would not have ever known that the "Print Screen" function existed, unless FPF folks had pointed me to it a few months ago. With the Screenshot tool also enabling time-based recordings, a command to "print" (which implies a static state) also provides a cognitive disconnect to users wanting to do that (which the new tool does, no?).

ninavizz commented 4 years ago

My (admittedly filthy) laptop's keyboard, and my peripheral keyboard and mouse, shown below.

I very much do not want to "Turn Qubes into Mac, but secure—woo!" However, I do want to be mindful to not exclude Mac users... with things such as depending upon right-click as an intuitive invocation point, or depending upon Windows-native keys (Print Screen). Of course those things can be supplemental, but should not have to be depended upon for invocation. Also my motivation for the ticket to remove the Whonix widget's right-click invocation, on an aside from that being inconsistent with the rest of the Tray widgets. I nearly cried before finally being told by a colleague that right-click was how to open it. :D

IMG_7354

IMG_7353

marmarek commented 4 years ago

but also having that icon available in the Tray.

I don't really like this idea, especially as you argued in #5520 that we should not have separate tray icons for infrequent actions/infos (and I believe screenshot is in this category). Print Screen is a native key on PC (Windows, Linux, etc) for decades, so I think that's intuitive enough for those users. As for users coming from Mac, let me ask you this way: what is the intuitive way of doing a screenshot on Mac? Some key combination? Or something else? Maybe we could add this as a screenshot trigger too? But if there is none, maybe we could combine it with some other tray icon? Clipboard feels close enough?

I would not have ever known that the "Print Screen" function existed,

Having a cat helps very much with discovering various key combos you never dreamed about ;)

ninavizz commented 4 years ago

@marmarek On my Mac, there's a top-level command in my App Menu, for the Screenshot tool. Currently on my Qubes laptop, I need to go to the System Tools item in the App Menu, and then scroll all the way down towards the bottom. Perhaps we do that?

You use my own words from another issue, against me in this issue—I like that (I actually do)! :)

Below is a mockup I did exploring how to tidy-up the System Tools menu, once Grouping becomes an option w/in the App menu... and I added this, to the top part of the App menu. Perhaps also add a line of text in the screenshot tool's UI, that it's also invokable with the PrtSc key?

I'm finding users new to Qubes and folks de-bugging things in Qubes, to both use the Screenshot tool a lot—to share-out things with others from whom they seek help... so, I would like it to be more discoverable and require less mouse'ing to find. I appreciate myself and the SD devs to be edge-case users, wanting to capture UI things and logs to speak to those in Qubes dev, on the daily.

System Tools Menu

marmarek commented 4 years ago

One issue with clickable screenshot command is that it switches focus. This means it's pretty hard to do a screenshot of an open menu, or tooltip, or other element like that, because they do disappear by design if you click on something else. Yet another reason for having screenshot as a key combo. So, maybe add a key combo that would work on Mac keyboard? Like Shift + Command + 3.

As for the menu, I believe it's rather discussion for #5677. But generally I don't like hiding entries from settings, even if they are available elsewhere too. Settings app should be a place you can go and find your settings.

ninavizz commented 4 years ago

@marmarek I did not know that Mac even had a keyboard shortcut option for its screenshots, until I looked it up after seeing your comment. This is end user documentation for the primary aftermarket tool Mac users use, called Snaggit. The Mac keyboard shortcut is Command-Shift-C w/in Snaggit, so clearly that won't be carried over to Qubes. Hehee. :) And then per your search, it's Command-3. Yep, been using Macs since they first came out... aaand, just learned that. From you. Yep. :)

This is a video of me using the MacOS OEM screenshot tool.

Generally speaking in terms of known universal user behaviors; some ppl are hardcore hotkeys users, some ppl use just a few very global/standard ones (such as Save and Quit/Exit), and some ppl don't use them at all.

I'm not comfortable assuming all users will think to invoke a keyboard shortcut, to easily access an OS level tool. Especially because the screenshot tool feels very useful to folks learning a new OS and pinging friends or colleagues for help (so, not yet power-users). Folks that tend to use hot-keys for most things, tend to be power users. Even thinking about my own use of hotkeys, I only use them in apps I frequent (Sketch, Photoshop) and rarely for anything else, anywhere else.

To the use-case you speak to above: (see video) I open the tool via the App Menu, select a screenshot with a 5-10 second delay, then click the button, to capture an in-process behavior (such as a menu or tooltip). Yet you do it with a keyboard shortcut. For the MacOS OEM tool, the keyboard shortcut is very difficult to do with a single hand, and one hand on the mouse; so it's my hunch the "Open tool, input time-delay, invoke screenshot, then go do the action and wait... it's done, now save it somewhere" flow, is how a majority of Mac users do screenshots.

All of this said, I would love to do some user research to learn a little bit more about how folks tend to use screenshot tools.

WRT the App Menu, the PNG was only shared to show the placement of the screenshot tool in the menu, where it's easier for users to access it. This is a video of me using the screenshot tool in Qubes; I had no idea it was triggerable via a button on the keyboard, until someone told me as much. On the UI screen itself, I would like mention of the keyboard shortcut as an option—but I'd also like it to be more easily accessed from the App Menu.

Would you feel comfortable at least promoting the Screenshot tool to that placement in the App Menu, assuming it's not in the Tray? Again: rationale for this over other utility items, is that it's so often used in troubleshooting; it's its own utility, not a settings pane.

The other stuff spoken to in the PNG, I agree, need to be addressed as part of #5677

marmarek commented 4 years ago

Yes, option in menu makes sense in addition to key shortcut. In fact, it is already there, in "System Tools" (although it is a generic one, without the option to take the captured image out of dom0).

ninavizz commented 4 years ago

@marmarek Yes, that is where all this started—where the tool is currently located is cumbersome to regularly navigate to, is only marginally discoverable, and the keyboard shortcut isn't mentioned in the UI.

I also wanted to ensure that the new screenshot tool a) doesn't remove UI functionality from the current tool (such as the ability for a time-delay, and where w/in a VM's filesystem to save something to), b) is invoked from a more discoverable location, and c) makes mention of the keyboard shortcut somewhere discoverable but discreet.

SvenSemmler commented 4 years ago

@ninavizz I am not entirely sure a "new tool" needs to be developed. Maybe try this and see if it works for you:

You should now have something that looks like this: panel (it's grayed out in the screenshot, because it was in use while making this screenshot ;-)

Anyway, so if you click that screenshot button now your mouse cursor becomes a crosshair and you can select whatever part of the screen you want to capture. The resulting Photo will be saved in dom0. So you still have to qvm-copy-to-vm it out of there. Somehow I remember there was an earlier version of this that would allow you to select the qube to save it into ... don't know what happened to it.

In any case, this might make your life easier might be already quite close to what you are looking for. Or maybe I am totally off target. :-)

ninavizz commented 4 years ago

@SvenSemmler Thx, I'm cool modifying Qubes on my own... goal is to help make it more usable without customization efforts, so more vulnerable users outside the FOSS-devotee community can adopt it comfortably. :)

ninavizz commented 4 years ago

Ok, I did this. Good to know my own behavior is very unlike a majority of folks. Absent data, what OS' users who responded to this, use. I suspect ~2/3 are likely on Macs.

If anything, this validates my hunch that at a minimum, including what the keyboard shortcut in Qubes is, at the bottom of the UI, is important. Perhaps discuss the Screenshot Tool's future in a near-term UX meeting?

image

SvenSemmler commented 4 years ago

On Tue, May 19, 2020 at 03:28:05PM -0700, Nina Eleanor Alter wrote:

@SvenSemmler Thx, I'm cool modifying Qubes on my own... goal is to help make it more usable without customization efforts, so more vulnerable users outside the FOSS-devotee community can adopt it comfortably. :)

I understand that. My point was that no or just a little development might be needed to address this issue. The biggest drawback of the currently existing solution is the fact that the pictures are stored in dom0 and require an additional step to be copied to a qube.

I see however @marmarek has recently forked a community effort to address this: https://github.com/QubesOS/qubes-qvm-screenshot-tool

ninavizz commented 4 years ago

@SvenSemmler I updated the Issue's original text description, to reflect that the intent of this issue, in the first place, was to address a more intuitive/usable invocation of the future screenshot tool you identified Marek as having forked, when it is implemented.

Development will always be required to change things so that users are required to do zero things on their end, to shape their experience with a new product to be as usable as possible, out of the box. Even if it's just a little, it still matters enough to be flagged here and considered.

I have not yet seen the new screenshot tool in practice, however (static screenshots only reflect a portion of the static UI, not the end-to-end user experience of it), and this issue has scope-creep'd to now address broader usability questions with it.

As such, I'd like to nominate a review of the tool in practice for a near-term UX meeting. @marmarta I've pinged u on Signal to schedule, but have yet to hear a response. Not sure if perhaps email wd be better for that?

ideologysec commented 4 years ago

Speaking as a primarily-macOS user, I can't remember the last time I invoked a screenshot on a Mac that wasn't via keyboard shortcuts - of which there are a few. The biggest one for me is actually Cmd + Shift + 4 - this turns the mouse into a crosshair, which allows for screenshotting a selection, or I can then press spacebar, and because of how window compositing works, as I mouse over various windows, they are selected and can be snapped by clicking the mouse. (This link explains it pretty well).

This would be awesome to implement in Qubes on a VM level - select just a VM to take a picture of, and either choose the destination VM or have the screenshot of the VM just snapped, appear in the very same VM.

I'm also unclear on why you say that macOS doesn't have right click... two fingers on the trackpad of any Mac laptop in the past ten years is a right click, and there are plenty of apps that make use of that for context menus, etc. (Heck, "Control + Click" is secondary/right click on macOS and has been since the release of 10.1 or 10.2 I think - almost twenty years) https://support.apple.com/en-us/HT207700

unman commented 4 years ago

I havent commented on the UX stuff, because (for the most part) I have no informed input, but I cant let this pass:

Ok, I did this. Good to know my own behavior is very unlike a majority of folks. Absent data, what OS' users who responded to this, use. I suspect ~2/3 are likely on Macs.

You cant think that 2/3 of Qubes Users come from Mac, and have no idea how they might want to invoke screenshots. From my (admittedly unscientific) review of 40 or so users, invoking a screenshot is not a major issue - admittedly I usually install KDE, which has easy invoke keyboard mappings, but I'd guess there's the same in Xfce. Users who like keyboard, hit PrtScn; those who use Mouse, either custom the Menu or create a Panel or Desktop shortcut.

I'm increasingly concerned that there have been no questions raised on the mailing list, or (even, god forbid) reddit, to try to find out what actual users think, or want. I'm not sure why this is.

GWeck commented 4 years ago

To change the normal menu entry from the dom0 screenshot tool to the new tool, just the line

Exec=xfce4-screenshooter

has to be changed to

Exec=/home/user/qvm-screenshot-tool.sh

in the file /usr/share/applications/xfce4-screenshot-tool.desktop. Then you get the new tool. Works like a breeze!

Getting this into the panel seems to be much more complicated.

ninavizz commented 4 years ago

@unman We're trying to put the final touches on a survey that will answer many of these questions, and more... stay tuned!

(no, I do not believe a majority, or close, of Qubes users come from macs; I was speaking only to my own informal poll of my own Twitter followers)

lorenzog commented 1 year ago

For quick screenshots I'm using this in dom0:

#!/bin/sh
# find current window
WINDOW_ID=$(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5 | tr -d ',')
TARGET_VM=$(xprop -id $WINDOW_ID _QUBES_VMNAME | cut -d ' ' -f 3 | tr -d ''')
# save to clipboard, using rectangular selection
xfce4-screenshotter -c -r
# send to TARGET
xclip -out -sel c -t image/png | qvm-run --pass-io $TARGET_VM 'xclip -sel c -t image/png'

This will take a screenshot and make it available to the VM under focus when the script ran. For now I've edited XFCE settings and mapped the 'print screen' key to the script.

As an alternative for the selection of the VM to send the screenshot, I've looked into how qvm-screenshot-tool linked above by @evadogstar works; zenity looks good but I'd rather use a dialog similar to the one used for qvm-copy - presenting the user a nice dialog window with keyboard-completion of VM names. I just do not know how to quickly implement one. I've looked into the source code of qubes-core-qrexec but it looks more than a half-hour job.. perhaps @andrewdavidwong can help here and point me in the right direction?

andrewdavidwong commented 1 year ago

I've looked into the source code of qubes-core-qrexec but it looks more than a half-hour job.. perhaps @andrewdavidwong can help here and point me in the right direction?

Sorry, I'm not the one to ask for where to find things in the qrexec source code. Perhaps @DemiMarie can help.

DemiMarie commented 1 year ago

I've looked into the source code of qubes-core-qrexec but it looks more than a half-hour job.. perhaps @andrewdavidwong can help here and point me in the right direction?

Sorry, I'm not the one to ask for where to find things in the qrexec source code. Perhaps @DemiMarie can help.

Looks like dom0-initiated qrexec calls do not support popping up an interactive dialog. Yet.