Implement a more intuitive Qubes Manager #1870

Closed
bnvk opened this Issue Mar 23, 2016 · 26 comments

Projects

None yet

7 participants

@bnvk
bnvk commented Mar 23, 2016 edited

While the current Qubes VM Manager works alright, there are a handful of bugs and it is not nearly as intuitive as it could be. Additionally, there are configuration settings that are missing from it and others that are a bit technical and overwhelming. Lastly, there are new big ideas like Recipes and installing apps that aren't taken into account at all.

UX Ideas / New Features

  • Splits up VMs into App Qube, Networking, Devices, Templates, Standalones
  • Choose applications to run by default on starting a Qube
  • Dropdown to choose Open URLs in [Qube Name]
  • Explain Power State of a Qube like Running, Paused, Dying, Crashed
  • Intuitive options to install software packages into Qube or Templates
  • Integration of Recipes that use the salt configuration #1939
  • Opportunistically offer links to Docs / explainer content #1774
  • Last started / run
  • Make "updating" VM action simple / less steps (restart)

Require Modifications to API

  • Add Icon field instead of all VMs having a lock icon #1873
  • Add Description field so instead of anon-whonix there is also Anonymous Web Browsing #899
  • Add available_disk_space for resizing of qubes sizes #2016

Considerations & Issues

  • UpdateVM system defaults should only list NetVMs and ProxyVMs #1831
  • run suspend / resume scripts also on VM pause / resume #1855
  • Already assigned devices should not be listed as "available" under VM Settings > Devices of other VMs #1838
  • stop using abbreviations for whonix templates #1778
  • change default proxy-vm: sys-whonix -> system-tor #1777
  • stop using abbreviations for default vm names #1776
  • change default appvm name: anon-whonix -> anonymous-browsing #1775

...there is probably loads more things and will update accordingly 😄

@marmarek marmarek added this to the Release 3.2 milestone Mar 23, 2016
@bnvk bnvk was assigned by marmarek Mar 23, 2016
@marmarek
Member

Added ticket reference to the VM description idea.

@Jeeppler

@bnvk the issue #899 is quite important for me. I have many many VM's and I would like to have a VM description similar to what VirtualBox offers. I created some simple GUI mock-up under: https://groups.google.com/d/msg/qubes-devel/t32l-0BjlLs/w3Rir4LhAAAJ . If I can help you in any way or work together with you on issue #899 please let me know.

Note: VM description means for me a text box not a descriptive VM title.

@bnvk
bnvk commented Mar 24, 2016

@Jeeppler thanks for the input and mocksup. I hadn't given much thought to Last started value, but I definitely see your point. I will try to work that into the new UI. I'm not that familiar with the VirtualBox UI, but I would be happy to checkout screenshots if you could take some describing what you mean.

I wonder if adding a user facing "group" value to VMs, such as Web Browsing or Work whereby a user would see all their web browsing related VMs (anonymous, social accounts, banking, etc...) would help. Not sure if this is ideal, but I wanted to jot the idea down!

@Jeeppler

@bnvk VirtualBox provides a description box like shown here: https://software.grok.lsu.edu/image/19970.gif and https://programmaticponderings.files.wordpress.com/2013/04/view-of-oracle-vm-virtualbox-manager-for-windows.png , but it is not perfect and I was already designing my own idea as mock up. I would like to see the Last started value since this could be a good indicator for the question: Do I really need this machine?

I think furthermore that markdown support in the VM description would be nice. Maybe not full markdown support, but lists, code, bold text, italic text and heading support would be nice.

@Jeeppler

"I wonder if adding a user facing "group" value to VMs, such as Web Browsing or Work whereby a user would see all their web browsing related VMs (anonymous, social accounts, banking, etc...) would help." I completely agree with you. This would be a nice idea. I would use the "groups" for filtering and define that:

  • each VM can be part of 0 to N groups

for example:

  • python-dev is part of: "Python", "Programming", "Development", "Work"
  • zololo is part of: "Python", "Programming", "Development", "Work", "Customer", "Project"
@mfc
Member
mfc commented Apr 28, 2016 edited

not seeing in the list:

  • know network state from first level of Network Manager

the user should not have to go to VM Settings of a particular VM to know if the VM is non-networked, going through sys-whonix, sys-firewall, etc.

I guess "grouping" VMs would be a potential workaround, if you create groups based on their networking state. But then they are not being based on user domain.

please ignore, hadn't adequately explored the existing Qubes Manager > View menu...

@bnvk bnvk added a commit to bnvk/qubes-manager-new that referenced this issue May 5, 2016
@bnvk bnvk created some preliminary icons for testing 8db6790
@bnvk bnvk added a commit to bnvk/qubes-manager-new that referenced this issue May 5, 2016
@bnvk bnvk added testing data fea3cd7
@bnvk bnvk added a commit to bnvk/qubes-manager-new that referenced this issue May 5, 2016
@bnvk bnvk added & tweaked a few more icons 1ddc041
@bnvk bnvk added a commit to bnvk/qubes-manager-new that referenced this issue May 5, 2016
@bnvk bnvk initial pass at Manager view 10daa32
@bnvk bnvk added a commit to bnvk/qubes-manager-new that referenced this issue May 6, 2016
@bnvk bnvk added Glade files and initial sketch of Overview Window 2962a86
@bnvk bnvk added a commit to bnvk/qubes-manager-new that referenced this issue May 9, 2016
@bnvk bnvk moved Manager UI items from python to Glade as per @marmarek feedback b7288a0
@bnvk bnvk added a commit to bnvk/qubes-manager-new that referenced this issue May 11, 2016
@bnvk bnvk added footer for devices & system apps to Manager 537e21a
@bnvk bnvk added a commit to bnvk/qubes-manager-new that referenced this issue May 11, 2016
@bnvk bnvk added popup menus to device qubes and devices
added event stubs to those menus
added About dialog window

QubesOS/qubes-issues#1870
7d19f25
@bnvk bnvk added a commit to bnvk/qubes-manager-new that referenced this issue May 14, 2016
@bnvk bnvk plubmed in test data to Overview
added some better testing data

QubesOS/qubes-issues#1870
c2cf162
@andrewdavidwong
Member

User suggestions for improvements to the current Qubes Manager:

https://groups.google.com/d/msgid/qubes-users/57384F52.40907%40gmail.com

@bnvk
bnvk commented May 15, 2016

@andrewdavidwong thanks! Added that to my list + had already been working that exact thing into new Qubes Manager :)

@marmarek marmarek modified the milestone: Release 4.0, Release 3.2 May 17, 2016
@john-david-r-smith

a few of my ideas:
1) add collumns for

  • vitual cpu cores
  • system storage max
  • system storage current
  • system storage current usage (bar similar to cpu usage)
  • private storage max
  • private storage current
  • private storage current usage (bar similar to cpu usage)
  • mac
  • initial memory
  • max memory
  • one or multiple columns for vm control (buttons for start, stop, pause and update)
    this is useful if the user has a long list of vms and wants to start/stop/update multiple vms without moving the mouse to the top of the window or opening the context menu several times.
  • maybe a column for the "run command in vm" option. (a line edit that executes the command on pressing enter)

(basically everything that could be useful)
2) sort the list when selecting a new netvm. (maybe keep none + default always at the top)
3) use a stable sorting algorithm when sorting the rows or allow secondary sort criteria (e.g. first sort by Template, then by name)
4) when setting the netvm of a running vm A to some proxy-vm B currently not running, an error message is displayed.
add a button to this message to start vm B and set it as netvm.
(the user will probably close the warning, close settings, start B, open settings of A again and set the netvm again)
5) allow the user to add an additional drive to other vms than hvms.
this enables the user to have a fast vm stored on a ssd and have some "long-term storage" as a drive located on a big hdd.
use-case:
i have a vm holding big files (videos / raw images). i only use a few files at once.
the files i use should have fast access (stay on my ssd).
the files i currently don't use should not waste space on my ssd (it only has 128 GB)
with this change i could copy the files i use to my ssd-backed drive and store files i don't use on my hdd-backed drive.
6) allow the user to constrict the list of possible netvms for a vm.
use-cases:
a) i have multiple vpn-proxyvms for work / as endpoints for my vpn-provider(s).
if i change one of the vpns i don't want to be able accidentally select sys-firewall and leak some data.
b) i only want dispvms to be able to use either tor or some vpn-A as netvm.
again, i don't want to be able to accidentally select sys-firewall or vpn-work as netvm.
7) make the qubes-manager interactive:
e.g.: it does not only display the netvm, but instead show a drop down menu to select it.
the same can be done for any setting (number of virtual cpus, disk storage, ram ....)
this would enable the user to quickly change settings without clicking through menus (think about changing the dispvms netvm).
this behavior should be optional per vm, so add some check box in the settings dialog (and maybe a column with this option)
8) make it possible to set the default app shortcuts for vms created from one template and/or add the option to change the shortcut settings for multiple vms at once (set all shortcuts, remove a certain shortcut if present, add a shortcut to the list (if the appvm provides it)).
usecase:
a) i don't want to set thunderbird as only shortcut for all of my mail-vms manually, but all at one go. (set all shortcuts)
b) i want to use terminator instead of xterm as my terminal and don't want to go through every vm, to change the setting. it want to change this for all vms at one go. (remove a certain shortcut + add a shortcut to the list => this could be done by a "replace shortcut" option)
9) don't lock the qubes-manager when opening a dialog.
usecase:
a) i want to compare the settings of two vms. (but i can't open both dialogs at the same time and put them next to each other)
b) i want to update all of my template-vms. if i press update, a dialog opens and i can't click on update for the next vm.
10) add some button to update all vms (i will be doing this anyways)
11) add an option (shut down after update) to the update dialog, displayed when the template to update is not running.
this option should be a check box and be enabled by default (i will probably shut it down after the update).
11.2) maybe add an such an option to the "run command in vm" option, too.
in this case, the check box should be enabled if the vm is currently not running and vice versa.

@dumbl3d0re

A suggestion: simplify PCI passthrough. According to the documentation[1] you have to issue several commands to get a VM direct access to a PCI(-e) device, e.g. graphic cards. This is useful for people that play games (everyday computer) and engineers using CAD software.

[1] https://www.qubes-os.org/doc/assigning-devices/

@andrewdavidwong
Member

@dumbl3d0re: GPU passthrough isn't currently supported.

@bnvk bnvk added a commit to bnvk/qubes-manager-new that referenced this issue May 20, 2016
@bnvk bnvk made clicking on Qube load Overivew window
tweaked test data

QubesOS/qubes-issues#1870
896a30f
@bnvk bnvk added a commit to bnvk/qubes-manager-new that referenced this issue May 20, 2016
@bnvk bnvk added Global Settings dialog and populate items 1b4199e
@bnvk bnvk added a commit to bnvk/qubes-manager-new that referenced this issue May 20, 2016
@bnvk bnvk added skeletons for Recipes & Backups fabf7ee
@andrewdavidwong
Member

Arqwer:

R3.0
1 After I open backup dialog, qubes manager fades out. It is
uncomfortable: I might want to use it. For example, I selected which VMs
i'm going to backup, and realized, that my external drive is not connected
now. I want to use qubes manager to attach external drive, but it is
unavailable. Or I want to shut down some VMs, or start VM to send backup
there.

2 Backup process does not block me from turning on VM that is now in
backup process. That makes no sense. If VM should be turned off during
backup, I should not be able to turn it on. At least without --force
flags.

@Jeeppler
Jeeppler commented May 30, 2016 edited

@bnvk could you maybe publish a screenshot of your current development state?

@andrewdavidwong andrewdavidwong added a commit that referenced this issue May 31, 2016
@andrewdavidwong andrewdavidwong Track #1870 5addcc8
@bnvk bnvk added a commit to bnvk/qubes-manager-new that referenced this issue Jun 1, 2016
@bnvk bnvk added my menubar with icons & events to @marmareks changes 85de7e4
@bnvk bnvk added a commit to bnvk/qubes-manager-new that referenced this issue Jun 1, 2016
@bnvk bnvk added a bit more fleshed out scaffolding for Advanced view 5414af6
@bnvk bnvk added a commit to bnvk/qubes-manager-new that referenced this issue Jun 1, 2016
@bnvk bnvk added declaring Gtk version #
added README notes from last chat with Marek

QubesOS/qubes-issues#1870
d3c16d0
@bnvk bnvk added a commit to bnvk/qubes-manager-new that referenced this issue Jun 1, 2016
@bnvk bnvk fixed logo icon, event, and margins 36fbf3b
@bnvk
bnvk commented Jun 1, 2016

@john-david-r-smith @dumbl3d0re @Jeeppler thank you for your feedback and suggestions. Great stuff in there @andrewdavidwong thanks for pulling in stuff from the mailing lists.

I made progress towards this issue, however, as of last week I am not officially working on it any longer as per @marmarek feedback / decision. Reasoning being: I am not a competent / fastest enough Python + Gtk developer (yet) and Qubes does not have the budget to hire additional engineers.

All the code I created exists in this repo and is signed with this key. I don't have wireframes or design comps (I was instructed to go straight to code) of what I was aiming for, so I will explain a bit:

Manager

An intuitive window that feels closer to a file system (as opposed to a list of VMs) that is categorized by qube type (AppVM, NetVM, TemplateVM, etc...). There is a secondary bar relevant to selected qube type (App Qube --> Attach Microphone) that are relevant to the current selected qube type. The biggest missing aspect is "qube state" (Running, Halted, etc...) as there were a few discussions / issues that would affect how this should be implemented best, IMHO see #1015 #1788 #1873

Doubling-clicking on a qube icon in the manager (pictured above) would open the following window:

Qube Overview

This window contains common qube type specific actions () and is similar to the "Basic" tab in the current VM Manager. This view was not meant to fully configure a qube, as those actions would happen via the multi-tabbed Advanced window:

Qube Advanced - Details
Qube Advanced - Networking
Qube Advanced - Applications
Qube Advanced - Devices

The other high level "sections" of the Qubes Manager are common, but discreetly different things, a user may interact with (Recipes, Backups, Global Settings) of which I implemented the later.

Manager - Global Settings

Most of these interfaces are still quite rough visually and have no integration with the actual Qubes dom0 API because the fedora-20 is not compatible with Glade (the Gtk GUI app) and fedora-23 not available for dom0 when I started. There is a rough start towards Recipes #1939 interface here:

Manager - Recipes

In my repo is a list of ToDo Items that @marmarek and I outlined as per this current implementation.

At present I am unsure of how the team wants to move forward, and who will keep working through these issues. Given my primary skillset being a designer who's most competent at web engineering, but is now moderately familiar with Gtk, Glade, and Python, the few directions I see this going are:

  1. I do not touch any of the code (python or Glade) while the core team finds someone else handle that. In which case, I can provide feedback & ideas via sketches and UI compositions
  2. I only work within Glade to add elements and polish how things look (margins, fonts, icons, etc...)
  3. I still do a bit of python as well as Glade, but is subject to review

All that said, since working on this will no longer be part of my paid salary, I am unsure how much time I will be able to commit to this, but I can try to help. I was very excited about where this is going and would love to see it implemented.

@Jeeppler
Jeeppler commented Jun 2, 2016

@marmarek Why was he instructed to start directly with the coding part?

@marmarek
Member
marmarek commented Jun 2, 2016

The intention was to have UI mockup in glade (not necessary functional) to not need to rewrite it later. In theory shouldn't involve much python coding and indeed those windows done such a way doesn't involve much.

@Jeeppler
Jeeppler commented Jun 2, 2016

@marmarek what is the idea for the future?

@marmarek
Member
marmarek commented Jun 2, 2016

We're looking for GTK developer to work on this task - there will be an announcement about this on ML.

@andrewdavidwong andrewdavidwong added a commit that referenced this issue Jun 3, 2016
@andrewdavidwong andrewdavidwong Update #1870 ce34db8
@bnvk bnvk was unassigned by andrewdavidwong Jun 3, 2016
@andrewdavidwong andrewdavidwong added a commit that referenced this issue Jun 3, 2016
@andrewdavidwong andrewdavidwong Update #1870 status ad7cdbb
@andrewdavidwong andrewdavidwong added a commit that referenced this issue Jun 7, 2016
@andrewdavidwong andrewdavidwong Update #1870 status e9baed6
@andrewdavidwong
Member

More user feedback in this thread regarding Qubes Manager (some users don't want it to change):
https://groups.google.com/d/topic/qubes-users/x2RR1udsQlY/discussion

@andrewdavidwong
Member

Suggested feature:

Is it possible to add links of every VM that show at "start" menu also
to Qubes Manager at the right click menu as sub-menu of some parameter?
Right click on VM -> Menu -> Select "Apps" -> and get list of all
applications and possibility to start them from there?

@andrewdavidwong
Member

@evadogstar wrote:

Suggestion:
Qubes Manager UX - Add possibility to sort meny items up and down.
It's useful in big list to keep some most used application at the top.
https://i.imgur.com/gctZoJl.png

@Jeeppler

While switching to Xcfe as default desktop environment the Qubes Manager will be split and integrated in the XCFE start menu. So, is there any reason to keep this issue open?

@andrewdavidwong
Member

@Jeeppler:

While switching to Xcfe as default desktop environment the Qubes Manager will be split and integrated in the XCFE start menu. So, is there any reason to keep this issue open?

Good question. As far as I know, we're still looking for a GNOME developer to implement a new Qubes Manager. Since, as you point out, the Qubes Manager's functions are to be decomposed into separate widgets in R4.0, I can only assume that the job of the GNOME developer will be to code the new decomposed widget system.

Even so, you're probably right that these two issues are probably now effectively duplicates.

CC: @rootkovska, @marmarek

@marmarek marmarek added the duplicate label Jul 26, 2016
@marmarek
Member

Yes, this is a duplicate now

@marmarek marmarek closed this Jul 26, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment