How to resolve the negotiated theme for any other user? I have found How can I programmatically get the theme name?, which works for the current user, but would I apply such logic to learn what theme another user would use?

I can get the active theme for current user and the default theme by using:

$my_theme = \Drupal::theme()-&gt;getActiveTheme();
$default_theme = \Drupal::config('system.theme')-&gt;get('default');


I was hoping there would be something like \Drupal::theme()-&gt;getActiveTheme($other_user); to discover what theme another user would be using. 

Is such a thing even possible and how?

UPDATE

To clear things up, I am attempting to figure out what theme was negotiated for a certain user. This could be the global default theme, but it could also be the theme that was negotiated based on a certain role, user selected theme, or any other contrib theme negotiator that might be in place.

So the better question would be, how can I discover what theme a user would be presented if he visits the site (no specific page)?
As far as I remember, this type of functionality was built in in Drupal 6.

In Drupal 7 there was the ThemeKey module .

Unfortunately, as of this date ThemeKey is not yet ported to Drupal 8, however I think you can achieve pretty easy that functionality by using the user data object inside custom module.

In order get something from the user data object:

$data = \Drupal::service('user.data')-&gt;get('mymodule', \Drupal::currentUser()-&gt;id(), 'key');


In order to set something in the user data object:

\Drupal::service('user.data')-&gt;set('mymodule', \Drupal::currentUser()-&gt;id(), 'key', $value);


Update:

you can combine the code above with the solution posted here:

https://www.drupal8.ovh/en/tutoriels/259/theme-negotiators-switch-theme-dynamically

where your negotiator will be called last by adding priority in the services.yml

you can implement the business logic inside the function the function determineActiveTheme. Combine this with hook_user_login where the information is stored inside users_data and you have a working solution (If I don't have a mistake somewhere).