Should window sizes and positions be global?

Should we move window settings from user to global?

  • Yes

    Votes: 15 88.2%
  • No

    Votes: 2 11.8%

  • Total voters
    17
  • Poll closed .

Veracity

Developer
Staff member
Currently, we have two kinds of preferences: "global" and "user".

A "global" preference applies to every character registered with KoLmafia.
A "user" preference applies to a single named character.

One would think, from the name, that "user" means a distinct "person" using the program, but no: it's a KoL character.

I suspect that the vast majority of people using KoLmafia are one "person" per KoLmafia installation/set of settings files. For such people, "global" means "applies to all of my characters/multis" and "user" means "applies to a single multi".

Some people probably share a computer. For them, "global" means "applies to all of the characters of multiple people using this computer" and "user" means "applies to a single character." There is no way to specify settings that "apply to a single person out of many using this set of preference files."

When I look at "global" settings, I see things like "add a creation queue to the food & booze panels of the item manager" and "combat hot keys" and "breakfast settings". Every single one of those is something that different "people" might differ on. The clear implication is that KoLmafia is designed to be used by a single "person" per set of settings files; multiple "people" using the same computer should have individual sets of settings files - and that is, in fact, the way settings files work on both OS X and Linux. I can't speak for Windows.

When I look at "user" - read, "character" - settings, I see things like "between battle script" and "days to my next Crimbo tree present" and "stationary fight buttons" and such; things which reasonably apply to a single character. (Why are "stationary fight buttons" per character but "combat hot keys" are global?)

I also see things like "last window position" for each of the frames - Item Manager, Gear Changer, and so on.

I do not understand why somebody would want the Gear Changer to appear over in this corner for character A and over in that corner for character B - especially since whether or not a given frame (Gear Changer, Item Manager, ...) appears as a Tab or a Frame in the first place is a "global" setting.

I think that window positions/sizes should be global, not per-character.
 
I doubt that Windows would easily support multiple users using a different login accounts unless there were multiple installations. I could make that support happen but doing so on a reliable basis would require an installer and possibly some batch files. I don't think that is worth anyone's time and effort for several reasons.

I am leery of running mafia simultaneously with two different characters from the same installation (for no rational reason anymore but rooted in the days when doing so was believed to sometimes result in corrupted settings files), but when I have, I have often wanted the same window for each character displayed so I can compare something side by side. I can't really say that happens often enough to ask for it to be the supported default behavior.

I want to group size, position and opening tabs together for reasons that are hard to articulate. I can imagine wanting different settings for my mall multi who has the Store Manager as the initial Tab, my ascender who only manages the store when in aftercore and uses a window, and my too poor to buy a store tester who never uses the window. I can imagine it but I'm not sure whether I would actually use it if available.

I have built and administered many systems where preferences are stored at both the single user and at a global all users level. If the preference is set for a user then it is used, otherwise the all users value is used. This works for some kind of things (title bar color) but not as well for others (default location for local storage, for example). Given that preferences are accessed through Preferences, could the distinction between User and Global be hidden from the programmer? The obvious implementation would most likely result in anything that got changed becoming implicitly a User preference.

All this said, I could make a case either way but I'd be inclined to move everything to be GLOBAL because I think most users would prefer to feel like they were running the same program regardless of which character they are currently using. They would expect changes and settings to persist across characters.
 
Global makes sense... if you have 2 installations, they'll use different global files. If you have the same installation, they'll use the same file... but unless you only have 2 characters, you're unlikely to end up with the same window for each every time. In either case, it makes more sense to me to be global.
 
On Windows, there's very little restriction to where you put the setting files (they are actually created at the same directory level as the .exe or .jar, at least in XP & Vista). So there's really no reason, in my mind, that two people sharing a single computer couldn't just use their own directory for all of their mafia data if it becomes an issue. I would imagine most of the people unable to figure this out on their own would be the same people who tend to put all such files on the desktop, which will be a different directory if they have different logins. If they're sharing a single computer login and sharing a location / files for KoLmafia, well they shouldn't be surprised that some settings affect them both.

I tend to agree with your logic; the only reason I ever want different user-interface configurations for the same program is when I'm testing something; and if you're doing that, you can probably figure out how to set up different installations of KoLmafia.

In summary, I agree, but I had to find a way to be a bit of a d*** about it, 'cause that's the mood I'm in. But I needed a break from work! :p
 
I am using a windows machine. At times there are 4 different people taking their turns playing, many times with 2 sessions running from one instantiation/installation. When the older kids are in school, they sometimes have me run their accounts - from a batch file that runs a script in a command prompt window. When RL intercedes, I run two of these sessions in parallel (at most a total of 12 characters - 6 in each batch file).

I guess I don't care as long as I can still run 2 sessions at a time.
 
Last edited:
Back
Top