Open Bug 899913 Opened 12 years ago Updated 1 month ago

Option to startup Thunderbird on Windows login

Categories

(Thunderbird :: OS Integration, enhancement)

17 Branch
All
Windows
enhancement

Tracking

(Not tracked)

People

(Reporter: gdutertre11, Unassigned)

References

(Depends on 1 open bug, Blocks 1 open bug)

Details

(Whiteboard: [patchlove])

Attachments

(1 file, 3 obsolete files)

User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0 (Beta/Release) Build ID: 20130618035212 Steps to reproduce: Request for a checkbox under "Tools > Options > Advanced" to automatically start Thunderbird on Windows start up. I am new here, please let me know if you need any further information, or if I am requesting this the correct way
Group: core-security
Hi, can't this be done using standard Windows procedures? E.g. putting a link to TB into the Programs/Startup folder?
Hi, this can, but I think would be easier for people to just check off a box to set it while they are initially setting up Thunderbird.
+1 for this rfe, sounds cool to me, and I'd use that immediately as TB is always the first thing I start up, and it takes quite long so it makes a lot of sense to start that earlier right after loading the OS. (In reply to :aceman from comment #1) > Hi, can't this be done using standard Windows procedures? E.g. putting a > link to TB into the Programs/Startup folder? For the average user, this is way too hard, because you have to know exactly what you're looking for and where to search/put things: Use explorer to locate thunderbird.exe, copy the path, locate programs/autostart folder, create a link, paste path... So even for advanced user, it is a lot more convenient to have the checkbox inside the application.
OK, can anybody find an open source program that does this so we can see how hard this is to do on Windows?
Severity: normal → enhancement
Status: UNCONFIRMED → NEW
Ever confirmed: true
Hardware: x86_64 → All
You probably just need to set a reg key (which there's plenty of mozilla code that doe) http://msdn.microsoft.com/en-us/library/aa376977%28v=vs.85%29.aspx
See Also: → 208923
Summary: Feature Request: Option to start Thunderbird on Windows boot up → Feature Request: Option to startup Thunderbird on Windows boot up
Attached patch Patch (obsolete) — Splinter Review
Adding the startup entry using registry.
Attachment #790664 - Flags: ui-review?(bwinton)
Attachment #790664 - Flags: review?(neil)
Attachment #790664 - Flags: feedback?
Attachment #790664 - Flags: feedback? → feedback?(josiah)
I almost forgot to add this ... Windows startup is i/o intensive, and so is thunderbird. so we sometimes get complaints that they see "Unresponsive Script" timeout errors. I don't know what percentage of users experience this. But, if we expose this pref in the UI we must expect more users to complain. So i will throw out the idea that unless we have a bunch of users test this, or someone tackles the startup performance bug, we might not want the pref exposed in UI. Although if it is in advanced prefs it should be less likely to be chosen. OTOH i think if it is offered on first start we can expect tons of users to pick it > (In reply to :aceman from comment #1) > > Hi, can't this be done using standard Windows procedures? E.g. putting a > > link to TB into the Programs/Startup folder? > > For the average user, this is way too hard, because you have to know exactly > what you're looking for and where to search/put things: Use explorer to > locate thunderbird.exe, copy the path, locate programs/autostart folder, > create a link, paste path... Actually it's not quite that hard. One need only drag and drop (or copy paste) the Tbird icon in the start menu into the start folder which is also in the UI
Okay, I missed one use-case: When user checks the box to start TB on boot and then manually deletes the key from the registry, the check persists. Will fix it in the next patch after this patch gets reviewed and the idea is accepted. Thanks.
Comment on attachment 790664 [details] [diff] [review] Patch I'm not a reviewer for mail/, so I'm just pointing our your worst errors. >+#ifdef XP_WIN >+pref("mail.advanced.start_on_boot", false); >+#endif Not sure why you use a preference, as you never read it. >+#ifndef XP_WIN >+ // If the OS isn't windows, disable the "start on boot" checkbox. >+ document.getElementById("startOnBoot").hidden = true; >+#endif I believe that Thunderbird style is to #ifdef the checkbox in the XUL. >+ <checkbox id="checkStartOnBoot" >+ preference="mail.advanced.start_on_boot" >+ label="&startOnBoot.label;" >+ accesskey="&startOnBoot.accesskey;" >+ oncommand="gAdvancedPane.toggleStartOnBoot();"/> Normal Windows dialogs don't make changes until you click OK. >+<!ENTITY startOnBoot.label "Always check to start &brandShortName; on boot"> "boot" is a bit misleading; it starts when you log in.
Attachment #790664 - Flags: review?(neil)
(In reply to neil@parkwaycc.co.uk from comment #11) > Comment on attachment 790664 [details] [diff] [review] > Patch > > I'm not a reviewer for mail/, so I'm just pointing our your worst errors. Thanks for providing the feedback :) > > >+#ifdef XP_WIN > >+pref("mail.advanced.start_on_boot", false); > >+#endif > Not sure why you use a preference, as you never read it. I am using it in the toggleStartOnBoot() and moreover user can use it directly without the check as well. But if this seems redundant, I will remove it. > >+#ifndef XP_WIN > >+ // If the OS isn't windows, disable the "start on boot" checkbox. > >+ document.getElementById("startOnBoot").hidden = true; > >+#endif > I believe that Thunderbird style is to #ifdef the checkbox in the XUL. Well, I don't know about this, I saw and learnt this from the init() function from the same file itself, here is the snippet: #ifdef HAVE_SHELL_SERVICE // If the shell service is not working, disable the "Check now" button // and "perform check at startup" checkbox. try { let shellSvc = Components.classes["@mozilla.org/mail/shell-service;1"] .getService(Components.interfaces.nsIShellService); this.mShellServiceWorking = true; } catch (ex) { document.getElementById("alwaysCheckDefault").disabled = true; document.getElementById("alwaysCheckDefault").checked = false; document.getElementById("checkDefaultButton").disabled = true; this.mShellServiceWorking = false; } #endif Moreover I couldn't apply the #ifdef tag inside another #ifdef tag and creating another groupbox seemed unnecessary to me, so I did this, if this is accepted, I will make it separate, handling it in XUL itself > >+ <checkbox id="checkStartOnBoot" > >+ preference="mail.advanced.start_on_boot" > >+ label="&startOnBoot.label;" > >+ accesskey="&startOnBoot.accesskey;" > >+ oncommand="gAdvancedPane.toggleStartOnBoot();"/> > Normal Windows dialogs don't make changes until you click OK. Sorry I don't understand this, what sort of dialogs did you have in mind while mentioning this. I thought this will just be a checkbox, when ticked, confirmed. > >+<!ENTITY startOnBoot.label "Always check to start &brandShortName; on boot"> > "boot" is a bit misleading; it starts when you log in. Thanks for this, will make this change.
(In reply to Suyash Agarwal (:sshagarwal) from comment #12) > > Not sure why you use a preference, as you never read it. > I am using it in the toggleStartOnBoot() and moreover user can use it > directly without the check as well. But if this seems redundant, I will > remove it. I also think the pref is redundant. I think if the user sets the pref manually in prefs.js you do not set the key automatically. So the pref is unused as Neil says. You can use the registry key as the "pref". If the key is found, tick the check box. If somehow the key is lost, untick the checkbox and the user can tick it again to set the key. > > >+#ifndef XP_WIN > > >+ // If the OS isn't windows, disable the "start on boot" checkbox. > > >+ document.getElementById("startOnBoot").hidden = true; > > >+#endif > > I believe that Thunderbird style is to #ifdef the checkbox in the XUL. > Well, I don't know about this, I saw and learnt this from the init() > function from the same file itself, here is the snippet: > #ifdef HAVE_SHELL_SERVICE > // If the shell service is not working, disable the "Check now" button > // and "perform check at startup" checkbox. > try { > let shellSvc = Components.classes["@mozilla.org/mail/shell-service;1"] > > .getService(Components.interfaces.nsIShellService); > this.mShellServiceWorking = true; > } catch (ex) { > document.getElementById("alwaysCheckDefault").disabled = true; > document.getElementById("alwaysCheckDefault").checked = false; > document.getElementById("checkDefaultButton").disabled = true; > this.mShellServiceWorking = false; > } > #endif > Moreover I couldn't apply the #ifdef tag inside another #ifdef tag and > creating another groupbox seemed unnecessary to me, so I did this, if this > is accepted, I will make it separate, handling it in XUL itself This is my code :) The problem is this is not representative of your situation. On linux, even if HAVE_SHELL_SERVICE is enabled, it may not be working. So there are 2 levels of checks and disabling. In your case, you can just do #ifdef XP_WIN <checkbox id="checkStartOnBoot" preference="mail.advanced.start_on_boot" label="&startOnBoot.label;" accesskey="&startOnBoot.accesskey;" oncommand="gAdvancedPane.toggleStartOnBoot();"/> #endif > > Normal Windows dialogs don't make changes until you click OK. > Sorry I don't understand this, what sort of dialogs did you have in mind > while mentioning this. I thought this will just be a checkbox, when ticked, > confirmed. This means that 'oncommand' is run immediatelly when the user ticks the checkbox. So the registry key is set immediately. On windows whole preferences dialog works in the way that any changes in it are stored only if the user clicks OK. Otherwise they are discarded. (On Linux all changes are saved immediatelly on click.) So you must defer the setting of the key to some onAccept handler. Or change it from checkbox to a button or something. E.g. the "Check now" button for "check if TB is the default client" dialog is doen this way (saved when this subdialog is closed, not whole Options).
(In reply to :aceman from comment #13) > This is my code :) The problem is this is not representative of your > situation. On linux, even if HAVE_SHELL_SERVICE is enabled, it may not be > working. So there are 2 levels of checks and disabling. In your case, you > can just do > #ifdef XP_WIN > <checkbox id="checkStartOnBoot" > preference="mail.advanced.start_on_boot" > label="&startOnBoot.label;" > accesskey="&startOnBoot.accesskey;" > oncommand="gAdvancedPane.toggleStartOnBoot();"/> > #endif :) I tried this, but everything inside <groupbox> gets displayed, so either accept this as is or allow me to use another groupbox below the existing one. > > > > Normal Windows dialogs don't make changes until you click OK. > > Sorry I don't understand this, what sort of dialogs did you have in mind > > while mentioning this. I thought this will just be a checkbox, when ticked, > > confirmed. > This means that 'oncommand' is run immediatelly when the user ticks the > checkbox. So the registry key is set immediately. On windows whole > preferences dialog works in the way that any changes in it are stored only > if the user clicks OK. Otherwise they are discarded. (On Linux all changes > are saved immediatelly on click.) So you must defer the setting of the key > to some onAccept handler. Or change it from checkbox to a button or > something. E.g. the "Check now" button for "check if TB is the default > client" dialog is doen this way (saved when this subdialog is closed, not > whole Options). I don't understand why this seems to be a problem, but okay, I will make this change as well. Thanks.
(In reply to Suyash Agarwal (:sshagarwal) from comment #14) > > #ifdef XP_WIN > > <checkbox id="checkStartOnBoot" > > preference="mail.advanced.start_on_boot" > > label="&startOnBoot.label;" > > accesskey="&startOnBoot.accesskey;" > > oncommand="gAdvancedPane.toggleStartOnBoot();"/> > > #endif > I tried this, but everything inside <groupbox> gets displayed, so either > accept this as is or allow me to use another groupbox below the existing > one. Then you do something wrong as this should work. Try it and show us the patch. > I don't understand why this seems to be a problem, but okay, I will make > this change as well. Platform guidelines and user expectations. On Windows users do not expect a permanent change if they haven't clicked OK.
(In reply to :aceman from comment #15) > Then you do something wrong as this should work. Try it and show us the > patch. > Ya, it works thanks :) Actually I was writing #ifdef out of <hbox> so it was appearing in the dialog box instead of showing its effect. > > I don't understand why this seems to be a problem, but okay, I will make > > this change as well. > Platform guidelines and user expectations. On Windows users do not expect a > permanent change if they haven't clicked OK. So, isn't there a "warning" or "update settings" confirmation popup set up for TB somewhere that I can set true to be triggered on clicking OK, whenever user changes some settings?
Comment on attachment 790664 [details] [diff] [review] Patch Review of attachment 790664 [details] [diff] [review]: ----------------------------------------------------------------- Thanks Suyash. I can't test this (at least not now), since I don't have a Windows dev machine setup, so I just went through the code. I do *not* agree with the others though that the preference isn't needed. I would agree if this was Windows only, but I believe that we should add this on all platforms, so we will end up needing to have a shared pref anyway. f+ me with these minor changes. ::: mail/app/profile/all-thunderbird.js @@ +212,5 @@ > > pref("mail.shell.checkDefaultClient", true); > pref("mail.spellcheck.inline", true); > > +#ifdef XP_WIN Nothing wrong here, just want to note that bugs should be filed for Linux and Windows to start on login as well. Both platforms have this ability. ::: mail/components/preferences/advanced.js @@ +74,5 @@ > + document.getElementById("startOnBoot").hidden = true; > +#endif > + > +#ifdef XP_WIN > + // If the OS is Windows and startup entry for Thunderbird already exists s/and startup/and the startup @@ +133,5 @@ > + var file = Services.dirsvc.get("XREExeF", Components.interfaces.nsIFile); > + if (pref.value) { > + wrk.writeStringValue("Thunderbird", file.path); > + } > + else Put the else on the same line as the if's '}' ::: mail/components/preferences/advanced.xul @@ +201,5 @@ > preference="searchintegration.enable" > label="&searchIntegration.label;" > accesskey="&searchIntegration.accesskey;"/> > </hbox> > + <hbox id="startOnBoot"> This ID is a little vague and inconsistent with the other IDs. Please change to "startOnBootContainer @@ +202,5 @@ > label="&searchIntegration.label;" > accesskey="&searchIntegration.accesskey;"/> > </hbox> > + <hbox id="startOnBoot"> > + <checkbox id="checkStartOnBoot" This doesn't really make sense. We aren't 'checking' for anything here. Just make the ID "startOnBoot".
Attachment #790664 - Flags: feedback?(josiah) → feedback+
(In reply to Josiah Bruner [:JosiahOne] from comment #17) > Nothing wrong here, just want to note that bugs should be filed for Linux > and Windows to start on login as well. Both platforms have this ability. > Err. I meant Linux and OS X.
I change my mind. Actually it would be better to just remove the pref entirely. OS X and Linux only require a file location, so a function can just be created that checks all of those at a later time. No need to deal with a pref.
Attached patch Patch v2 (obsolete) — Splinter Review
Possible fix. Removed the pref. Works after accepting the changes (here clicking OK). Takes into account, any startup entries for TB made by the user previously.
Attachment #790664 - Attachment is obsolete: true
Attachment #790664 - Flags: ui-review?(bwinton)
Attachment #791845 - Flags: ui-review?(bwinton)
Attachment #791845 - Flags: review?(mkmelin+mozilla)
Attachment #791845 - Flags: feedback?(neil)
Attachment #791845 - Flags: feedback?(josiah)
Attachment #791845 - Flags: feedback?(archaeopteryx)
Attachment #791845 - Flags: feedback?(acelists)
Comment on attachment 791845 [details] [diff] [review] Patch v2 >diff --git a/mail/components/preferences/advanced.js b/mail/components/preferences/advanced.js >--- a/mail/components/preferences/advanced.js >+++ b/mail/components/preferences/advanced.js >@@ -64,16 +64,44 @@ var gAdvancedPane = { > } catch (ex) { > document.getElementById("alwaysCheckDefault").disabled = true; > document.getElementById("alwaysCheckDefault").checked = false; > document.getElementById("checkDefaultButton").disabled = true; > this.mShellServiceWorking = false; > } > #endif > >+#ifdef XP_WIN >+ // If the OS is Windows and the startup entry for Thunderbird already >+ // exists, check the box. >+ var wrk = Components.classes["@mozilla.org/windows-registry-key;1"] >+ .createInstance(Components.interfaces.nsIWindowsRegKey); >+ wrk.create(wrk.ROOT_KEY_CURRENT_USER, >+ "Software\\Microsoft\\Windows\\CurrentVersion\\Run", >+ wrk.ACCESS_ALL); >+ var keyName, value; >+ if (wrk.hasValue("Thunderbird")) { >+ document.getElementById("startOnBoot").checked = true; >+ } else { >+ var file = Services.dirsvc.get("XREExeF", Components.interfaces.nsIFile); >+ for (var i = 0; i < wrk.valueCount; i++) { >+ keyName = wrk.getValueName(i); >+ if (wrk.getValueType(keyName) === wrk.TYPE_STRING) { >+ value = wrk.readStringValue(keyName); >+ if (value === file.path) { >+ wrk.removeValue(keyName); >+ wrk.writeStringValue("Thunderbird", file.path); >+ break; >+ } >+ } >+ } >+ document.getElementById("startOnBoot").checked = wrk.hasValue("Thunderbird"); >+ } >+#endif >+ 1) Is |wrk| live? Else the last command won't work. Furthermore, storing the existence of hasValue("Thunderbird") / writeStringValue in a boolean would allow to remove the last registry call. If we can't rely on writeStringValue to succeed, please put it in a try ... catch and report an error if it fails. >@@ -96,16 +124,33 @@ var gAdvancedPane = { > > // otherwise, bring up the default client dialog > window.openDialog("chrome://messenger/content/systemIntegrationDialog.xul", > "SystemIntegration", > "modal,centerscreen,chrome,resizable=no", "calledFromPrefs"); > }, > #endif > >+#ifdef XP_WIN >+ toggleStartOnBoot: function() >+ { >+ var wrk = Components.classes["@mozilla.org/windows-registry-key;1"] >+ .createInstance(Components.interfaces.nsIWindowsRegKey); >+ wrk.create(wrk.ROOT_KEY_CURRENT_USER, >+ "Software\\Microsoft\\Windows\\CurrentVersion\\Run", >+ wrk.ACCESS_ALL); >+ if (document.getElementById("startOnBoot").checked) { >+ var file = Services.dirsvc.get("XREExeF", Components.interfaces.nsIFile); >+ wrk.writeStringValue("Thunderbird", file.path); >+ } else if (wrk.hasValue("Thunderbird")) { >+ wrk.removeValue("Thunderbird"); >+ } >+ }, >+#endif >+ You trust that writeStringValue and removeValue will succeed, I'd put them in try ... catch values if this isn't managed by the interface. >diff --git a/mail/locales/en-US/chrome/messenger/preferences/advanced.dtd b/mail/locales/en-US/chrome/messenger/preferences/advanced.dtd >+<!ENTITY startOnBoot.label "Always check to start &brandShortName; on login"> Should be "Always start &brandShortName; on login/with Windows". Furthermore, this code doesn't identify the profile and will always launch with the last used profile or show the profile manager. The former one can be problematic if the exe in the registry key is an older version than the one which launched a profile last (profile gets downgraded, together with "checking for add-on compatibility" dialog). Enabling start on launch in two profiles with two installed Thunderbirds will show one "Thunderbird" is already running dialog because no "-no-remote" option has been appended. In general, keeping the command line arguments will likely be necessary, e.g. if the calendar should be launched, a UIlocale be used etc. More info here: https://developer.mozilla.org/en-US/docs/Mozilla/Command_Line_Options
Attachment #791845 - Flags: feedback?(archaeopteryx)
Comment on attachment 791845 [details] [diff] [review] Patch v2 Review of attachment 791845 [details] [diff] [review]: ----------------------------------------------------------------- Again, not tested, so just glancing at the code. Just FYI, could you please explain what you want each person to review when you request a feedback flag. Thanks. So in addition to completely agreeing with :aryx about the try thing, my only other major complaint here is would be to switch everything from startOnBoot to startOnLogin. I would r+ except Aryx cleared his feedback flag, so I'm going to r- until try is implemented when needed. Dangerous things happen when you make assumptions. :) ::: mail/components/preferences/advanced.js @@ +78,5 @@ > + "Software\\Microsoft\\Windows\\CurrentVersion\\Run", > + wrk.ACCESS_ALL); > + var keyName, value; > + if (wrk.hasValue("Thunderbird")) { > + document.getElementById("startOnBoot").checked = true; Indentation is off. @@ +129,5 @@ > }, > #endif > > +#ifdef XP_WIN > + toggleStartOnBoot: function() Let's make this a function available on all platforms. Just make it so that platforms other than Windows this just returns. ::: mail/components/preferences/advanced.xul @@ +198,5 @@ > preference="searchintegration.enable" > label="&searchIntegration.label;" > accesskey="&searchIntegration.accesskey;"/> > </hbox> > + <hbox id="startOnBootContainer"> startOnLoginContainer instead here. @@ +200,5 @@ > accesskey="&searchIntegration.accesskey;"/> > </hbox> > + <hbox id="startOnBootContainer"> > +#ifdef XP_WIN > + <checkbox id="startOnBoot" startOnLogin @@ +201,5 @@ > </hbox> > + <hbox id="startOnBootContainer"> > +#ifdef XP_WIN > + <checkbox id="startOnBoot" > + label="&startOnBoot.label;" &startOnLogin.label @@ +202,5 @@ > + <hbox id="startOnBootContainer"> > +#ifdef XP_WIN > + <checkbox id="startOnBoot" > + label="&startOnBoot.label;" > + accesskey="&startOnBoot.accesskey;"/> &startOnLogin.accesskey ::: mail/components/preferences/preferences.xul @@ +35,5 @@ > id="MailPreferences" > windowtype="Mail:Preferences" > #ifdef USE_WIN_TITLE_STYLE > title="&prefWindow.titleWin;" > + ondialogaccept="gAdvancedPane.toggleStartOnBoot();" toggleStartOnLogin() ::: mail/locales/en-US/chrome/messenger/preferences/advanced.dtd @@ +21,5 @@ > <!ENTITY useAutoScroll.accesskey "U"> > <!ENTITY useSmoothScrolling.label "Use smooth scrolling"> > <!ENTITY useSmoothScrolling.accesskey "m"> > > +<!ENTITY startOnBoot.label "Always check to start &brandShortName; on login"> startOnLogin.label @@ +22,5 @@ > <!ENTITY useSmoothScrolling.label "Use smooth scrolling"> > <!ENTITY useSmoothScrolling.accesskey "m"> > > +<!ENTITY startOnBoot.label "Always check to start &brandShortName; on login"> > +<!ENTITY startOnBoot.accesskey "w"> startOnLogin.accesskey
Attachment #791845 - Flags: feedback?(josiah) → feedback-
Comment on attachment 791845 [details] [diff] [review] Patch v2 >+ var file = Services.dirsvc.get("XREExeF", Components.interfaces.nsIFile); >+ for (var i = 0; i < wrk.valueCount; i++) { >+ keyName = wrk.getValueName(i); >+ if (wrk.getValueType(keyName) === wrk.TYPE_STRING) { >+ value = wrk.readStringValue(keyName); >+ if (value === file.path) { >+ wrk.removeValue(keyName); >+ wrk.writeStringValue("Thunderbird", file.path); >+ break; Not sure what the point of this is; users don't generally go around setting Run registry entries if they have something they want to start automatically, they use the Startup group instead. >+ ondialogaccept="gAdvancedPane.toggleStartOnBoot();" I don't know how the Thunderbird preferences work but this wouldn't work on SeaMonkey if you had never opened the Advanced pane. >+<!ENTITY startOnBoot.label "Always check to start &brandShortName; on login"> The "Always check to" makes no sense here.
Attachment #791845 - Flags: feedback?(neil)
Comment on attachment 791845 [details] [diff] [review] Patch v2 Review of attachment 791845 [details] [diff] [review]: ----------------------------------------------------------------- Please also use let instaed of var for new code. (And i don't think i'm a good reviewer for this, as i don't build on windows.)
Attachment #791845 - Flags: review?(mkmelin+mozilla)
(In reply to Josiah Bruner [:JosiahOne] from comment #22) > Comment on attachment 791845 [details] [diff] [review] > Patch v2 > > Review of attachment 791845 [details] [diff] [review]: > ----------------------------------------------------------------- > > Again, not tested, so just glancing at the code. Just FYI, could you please > explain what you want each person to review when you request a feedback > flag. Thanks. I request so that I can get the point of view of different developers; this helps me in sorting out the problem well and expands my thinking ability ;)
Attached patch Patch v3 (obsolete) — Splinter Review
In reply to comment 23: Maybe that it isn't needed that much, but if few users used it with command line arguments (-no-remote, -purgecaches, -jsconsole etc..) so, I will be able to pick them up and that would be fine I think. I don't think there is much overhead in doing this. Added try-catch, changed the string displayed, stringIDs, handles the commandline arguments present.
Attachment #791845 - Attachment is obsolete: true
Attachment #791845 - Flags: ui-review?(bwinton)
Attachment #791845 - Flags: feedback?(acelists)
Attachment #793938 - Flags: ui-review?(bwinton)
Attachment #793938 - Flags: review?(mconley)
Attachment #793938 - Flags: feedback?(neil)
Attachment #793938 - Flags: feedback?(josiah)
Attachment #793938 - Flags: feedback?(archaeopteryx)
Attachment #793938 - Flags: feedback?(acelists)
Changed the accesskey.
Attachment #793938 - Attachment is obsolete: true
Attachment #793938 - Flags: ui-review?(bwinton)
Attachment #793938 - Flags: review?(mconley)
Attachment #793938 - Flags: feedback?(neil)
Attachment #793938 - Flags: feedback?(josiah)
Attachment #793938 - Flags: feedback?(archaeopteryx)
Attachment #793938 - Flags: feedback?(acelists)
Attachment #793943 - Flags: ui-review?(bwinton)
Attachment #793943 - Flags: review?(mconley)
Attachment #793943 - Flags: feedback?(neil)
Attachment #793943 - Flags: feedback?(josiah)
Attachment #793943 - Flags: feedback?(archaeopteryx)
Attachment #793943 - Flags: feedback?(acelists)
Attachment #793943 - Attachment description: Patch v3 → Patch v3 (+accesskey change)
Comment on attachment 793943 [details] [diff] [review] Patch v3 (+accesskey change) Couldn't find any significant changes from v2.
Attachment #793943 - Flags: feedback?(neil)
Comment on attachment 793943 [details] [diff] [review] Patch v3 (+accesskey change) (In reply to Suyash Agarwal (:sshagarwal) from comment #26) > [...] handles the commandline arguments present. Can't find that in the code. Please also provide more information in the error messages like: "An unexpected error occurred: Couldn't write to registry."
Attachment #793943 - Flags: feedback?(archaeopteryx)
(In reply to Archaeopteryx [:aryx] from comment #29) > Comment on attachment 793943 [details] [diff] [review] > Patch v3 (+accesskey change) > > (In reply to Suyash Agarwal (:sshagarwal) from comment #26) > > [...] handles the commandline arguments present. > Can't find that in the code. Please also provide more information in the > error messages like: "An unexpected error occurred: Couldn't write to > registry." the .contains("thunderbird") just looks up any entry in the registry with thunderbird.exe and moves it as is, to the "Thunderbird" registry entry, so all the commandline arguments (if any) are copied as well.
I was more concerned about the current Thunderbird instance which could have been launched with arguments (e.g. from the command line or from a shortcut).
Comment on attachment 793943 [details] [diff] [review] Patch v3 (+accesskey change) Review of attachment 793943 [details] [diff] [review]: ----------------------------------------------------------------- ::: mail/components/preferences/advanced.js @@ +82,5 @@ > + let registryEntry = wrk.hasValue("Thunderbird"); > + if (registryEntry) { > + document.getElementById("startOnLogin").checked = true; > + } else { > + for (let i = 0; i < wrk.valueCount; i++) { I think you should put a comment here what this loop tries to do. @@ +144,5 @@ > + "Software\\Microsoft\\Windows\\CurrentVersion\\Run", > + wrk.ACCESS_ALL); > + if (document.getElementById("startOnLogin").checked) { > + let file = Services.dirsvc.get("XREExeF", Components.interfaces.nsIFile); > + wrk.writeStringValue("Thunderbird", file.path); I also do not see where you fetch the command line arguments the current TB instance was run with and where do you set them into the registry key, like: wrk.writeStringValue("Thunderbird", file.path + " "+currentArgs);
Attachment #793943 - Flags: feedback?(acelists)
can this handle setups with multiple profiles or multiple installations (release/beta/trunk) of TB separately? e.g. with multiple installations, setting autostart should only start the installation for that channel, probably with current profile; I should be able to autostart multiple installations alongside (so probably they can't all write to exactly the same registry value). if tb was launched with -p profile, and then autostart is set, make sure it's also auto-started with that profile and not default profile? Things like that...
Yes, that is what Aryx meant with the "command line arguments" comment. But I am not sure we should complicate this with support for starting several TB variants (or profiles) in parallel...
Comment on attachment 793943 [details] [diff] [review] Patch v3 (+accesskey change) Review of attachment 793943 [details] [diff] [review]: ----------------------------------------------------------------- I don't know enough about the command line arguments to add any more info there. I did have a few changes, but they aren't that major. f- anyway though just to summarize everyone's comments so far. ::: mail/components/preferences/advanced.js @@ +97,5 @@ > + } > + document.getElementById("startOnLogin").checked = registryEntry; > + } > + } catch (ex) { > + Components.utils.reportError("Unexpected Error occurred"); "Unexpected Error occurred" is quite vague. Could you add a little more detail on what specifically failed. Perhaps something like: "An unexpected error occurred trying to read the registry" Also it seems like you might want a separate try/catch for reading and writing the registry value. But I don't really know a lot about this, perhaps that is just being overly cautious. @@ +133,5 @@ > "modal,centerscreen,chrome,resizable=no", "calledFromPrefs"); > }, > #endif > > +#ifdef XP_WIN Again, make this available on all platforms please. On Linux and OS X just return for now. But there is no reason to completely hide this. ::: mail/locales/en-US/chrome/messenger/preferences/advanced.dtd @@ +22,5 @@ > <!ENTITY useSmoothScrolling.label "Use smooth scrolling"> > <!ENTITY useSmoothScrolling.accesskey "m"> > > +<!ENTITY startOnLogin.label "Start &brandShortName; on login"> > +<!ENTITY startOnLogin.accesskey "o"> I can't tell from solely looking at this diff, but has 'l' been used? If not, 'l' would make a lot more since as a hotkey. l -> login (That's a lower case L, not an uppercase i.)
Attachment #793943 - Flags: feedback?(josiah) → feedback-
(In reply to Josiah Bruner [:JosiahOne] from comment #35) > Comment on attachment 793943 [details] [diff] [review] > Patch v3 (+accesskey change) > > Review of attachment 793943 [details] [diff] [review]: > ----------------------------------------------------------------- > ::: mail/locales/en-US/chrome/messenger/preferences/advanced.dtd > @@ +22,5 @@ > > <!ENTITY useSmoothScrolling.label "Use smooth scrolling"> > > <!ENTITY useSmoothScrolling.accesskey "m"> > > > > +<!ENTITY startOnLogin.label "Start &brandShortName; on login"> > > +<!ENTITY startOnLogin.accesskey "o"> > > I can't tell from solely looking at this diff, but has 'l' been used? If > not, 'l' would make a lot more since as a hotkey. l -> login > > (That's a lower case L, not an uppercase i.) Actually I intentionally din't take l 'coz I heard somewhere that this shouldn't be one pixel wide. But if that makes more sense to all, I'll change it :)
(In reply to Suyash Agarwal (:sshagarwal) from comment #36) > (In reply to Josiah Bruner [:JosiahOne] from comment #35) > > Comment on attachment 793943 [details] [diff] [review] > > Patch v3 (+accesskey change) > > > > Review of attachment 793943 [details] [diff] [review]: > > ----------------------------------------------------------------- > > ::: mail/locales/en-US/chrome/messenger/preferences/advanced.dtd > > @@ +22,5 @@ > > > <!ENTITY useSmoothScrolling.label "Use smooth scrolling"> > > > <!ENTITY useSmoothScrolling.accesskey "m"> > > > > > > +<!ENTITY startOnLogin.label "Start &brandShortName; on login"> > > > +<!ENTITY startOnLogin.accesskey "o"> > > > > I can't tell from solely looking at this diff, but has 'l' been used? If > > not, 'l' would make a lot more since as a hotkey. l -> login > > > > (That's a lower case L, not an uppercase i.) > > Actually I intentionally din't take l 'coz I heard somewhere that this > shouldn't be one pixel wide. But if that makes more sense to all, I'll > change it :) Actually, that makes sense. You probably couldn't see the underline if it was 1px wide. So ignore that part. :)
> + let registryEntry = wrk.hasValue("Thunderbird"); Hard coded name. What if the application is IceDove or Trustedbird or Postbox or some other fork? Do we care? > +#ifdef XP_WIN > + toggleStartOnLogin: function() > + { ...... > + }, > +#endif If you did this instead: + toggleStartOnLogin: function() + { +#ifdef XP_WIN + try { + let wrk = Components.classes["@mozilla.org/windows-registry-key;1"] + .createInstance(Components.interfaces.nsIWindowsRegKey); + wrk.create(wrk.ROOT_KEY_CURRENT_USER, + "Software\\Microsoft\\Windows\\CurrentVersion\\Run", + wrk.ACCESS_ALL); + if (document.getElementById("startOnLogin").checked) { + let file = Services.dirsvc.get("XREExeF", Components.interfaces.nsIFile); + wrk.writeStringValue("Thunderbird", file.path); + } else if (wrk.hasValue("Thunderbird")) { + wrk.removeValue("Thunderbird"); + } + } catch (ex) { + Components.utils.reportError("Unexpected Error occured"); + } +#endif + }, Then: > #ifdef USE_WIN_TITLE_STYLE > title="&prefWindow.titleWin;" You can move this line out of the IFDEFs > + ondialogaccept="gAdvancedPane.toggleStartOnLogin();" > #else > #ifdef XP_UNIX > #ifndef XP_MACOSX > title="&prefWindow.titleGNOME;" > #endif > #endif > #endif And put it somewhere here: > xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" > + <hbox id="startOnLoginContainer"> > +#ifdef XP_WIN > + <checkbox id="startOnLogin" > + label="&startOnLogin.label;" > + accesskey="&startOnLogin.accesskey;"/> > +#endif > + </hbox> Wouldn't it be better to put the IFDEF around the <hbox> instead?
> Actually I intentionally din't take l 'coz I heard somewhere that this > shouldn't be one pixel wide. But if that makes more sense to all, I'll > change it :) Please read: https://developer.mozilla.org/en/docs/XUL_Accesskey_FAQ_and_Policies
(In reply to Philip Chee from comment #38) > > + let registryEntry = wrk.hasValue("Thunderbird"); > Hard coded name. What if the application is IceDove or Trustedbird or > Postbox or some other fork? Do we care? Thanks for this and the rest of the comment, I'll try to fix this. > > > + <hbox id="startOnLoginContainer"> > > +#ifdef XP_WIN > > + <checkbox id="startOnLogin" > > + label="&startOnLogin.label;" > > + accesskey="&startOnLogin.accesskey;"/> > > +#endif > > + </hbox> > > Wouldn't it be better to put the IFDEF around the <hbox> instead? I tried this, but that doesn't work, instead #ifdef is shown written in the advanced settings dialog box. (In reply to Philip Chee from comment #39) > > Actually I intentionally din't take l 'coz I heard somewhere that this > > shouldn't be one pixel wide. But if that makes more sense to all, I'll > > change it :) > > Please read: > https://developer.mozilla.org/en/docs/XUL_Accesskey_FAQ_and_Policies I think that also says what I said, so what needs to be changed? :)
So I can review this, but I'd also like some input on whether this is a thing we really want exposed in the UI. I personally don't have a problem with it (so long as it defaults to false) - but I think I want Blake's input too. Blake, do you have a take on this?
Flags: needinfo?(bwinton)
Comment on attachment 793943 [details] [diff] [review] Patch v3 (+accesskey change) Cancelling review request, pending decision on whether or not this is a thing we're exposing in the UI.
Attachment #793943 - Flags: review?(mconley)
So, I agree with Wayne's opinion in comment 9. I think that this could be useful, but if it's going to lead to an increased number of "Unresponsive Script" warnings, then we should probably not expose it. On the other hand, if we're not going to expose it, then we shouldn't have it at all, since the entire point is to make it easier for people to toggle the pref. So, how can we test this before we commit to a full implementation? Suggestions, anyone?
Flags: needinfo?(bwinton)
My thoughts... Testing a bare bones profile will not be meaningful. Suggest startup be tested with something like the following: - a basic set addons installed: 5 of the most used? Including Lightning(>=18% of users)? - non-trivial sized message+folder base of at least two accounts (one pop, one imap?) - include download of new messages - meaning substantial number of new messages waiting for download, check for new messages on start enabled, and account password stored in thunderbird - gloda indexing and other standard defaults enabled - at least one antivirus package installed, properly configured (because every smart user has at least one, and AV startup does a number on startup speed) - thunderbird in windows startup folder (we do not need a try build with this bug's patch) - other? Bug 487832 is the reference bug for startup performance issues. (Bear in mind when this feature seen by user, some may push for Bug 208923)
See Also: → tb-startupperf
jcranmer> the most-installed extensions are Lightning, google calendar provider, LookOut, extra folder columns, collapsed headers, and enigmail
What about having the script timeout value high at startup (like x minutes) so that the dialog does not show up, and scale it down to the today's value (x seconds) after some period where TB catches up). This could actually be a common core feature applicable to Firefox too on slow machines :)
Assignee: nobody → syshagarwal
Status: NEW → ASSIGNED
Are the slow script warnings cause by Thunderbird or by Lightning? I know them from the latter one. We could change the slow script to reporting to the error console. Letting people abort scripts and letting the application continue running in an unknown state seems like a bad decision, but that's a more general discussion.
There are many possible causes of startup slowness that could cause unresponsive script. Lightning is just one.
I think my proposal would solve them all, simply suppressed the Slow script dialog for the first minutes of TB startup. Either this would apply regardless of whether TB was started at startup or manually OR the 'at startup' start would pass a command line argument to extend the script timeout only in that case.
There have been in the past, bad bugs that impact startup. So at present I would come down as being against completely suppressing. At most, perhaps increasing the timeout interval during the first minute. Even so, my first instinct is still to investigate and improve startup efficiency *prior* to enabling this feature. Especially since there's no urgency to pushing this feature into the tree.
Comment on attachment 793943 [details] [diff] [review] Patch v3 (+accesskey change) Clearing ui-r request as the focus now shifts to startup performance issues.
Attachment #793943 - Flags: ui-review?(bwinton)
What if, when the user clicks on the checkbox to enable startup on boot, we display an alert box saying "if you experience any startup performance issues, disable start on boot" ?
Flags: needinfo?(vseerror)
(In reply to Wayne Mery (:wsmwk) from comment #9) > Actually it's not quite that hard. One need only drag and drop (or copy > paste) the Tbird icon in the start menu into the start folder which is also > in the UI Starting from Windows 8, the Startup folder was hidden from the UI.
(In reply to Suyash Agarwal (:sshagarwal) from comment #52) > What if, when the user clicks on the checkbox to enable startup on boot, we > display an alert box saying "if you experience any startup performance > issues, disable start on boot" ? A fair proposition. Even though they'll likely soon forget that warning. I would take it a step further and say something like "This will slow down Windows startup. If you experience startup performance issues with Windows or Thunderbird, disable this feature." Refresh my memory - this will not be shown to user on first install of Thunderbird? (for example, windows search integration is offered on first install - a mistake IMO)
Flags: needinfo?(vseerror) → needinfo?(syshagarwal)
(In reply to Wayne Mery (:wsmwk) from comment #54) > (In reply to Suyash Agarwal (:sshagarwal) from comment #52) > > What if, when the user clicks on the checkbox to enable startup on boot, we > > display an alert box saying "if you experience any startup performance > > issues, disable start on boot" ? > Refresh my memory - this will not be shown to user on first install of > Thunderbird? (for example, windows search integration is offered on first > install - a mistake IMO) That sounds nice. But I want this warning popup to be displayed whenever the user checks the option of "start with windows startup". For instance, if the user checks the option, we display the warning, he immediately un-checks it, he checks it again, we display the warning again and keep doing that whenever he toggles the check to true. Also, if we understand that this feature is nice, or for exposing it or making it known to people, we can provide this choice at the firstrun as well. But this is just in continuation to your thoughts, I still stick to the previous paragraph. Thanks.
Flags: needinfo?(syshagarwal)
To clarify, I'm not talking about suppressing the popup. I'm talking about your second paragraph of displaying the choice on firstrun when Thunderbird starts. We have many prefs that users don't know about because they are only found by digging in Options. Unless there is a compelling reason to expose this to the masses, then a release note should be sufficient to inform the masses.
Keywords: relnote
Okay, so if the first paragraph can get this feature out there in the open, we can go for that. Shall we start working on the popup?
Yes, I also don't think we should bother the user with this choice on first start. He is just trying out TB so we do not need to slow down his OS boot and scare him away (like other programs do) :) He will probably enable the option once he is comfortable with using TB. Yes, just show a dialog about the possible slowdown whenever user ticks the option in preferences. So what about the postponing of "Slow script" warning, from comment 46 and comment 49?
(In reply to :aceman from comment #58) > So what about the postponing of "Slow script" warning, from comment 46 and > comment 49? We should definitely do that. Where should I start from? :) Maintain a global pref, that we toggle to true once the user decides to make TB start on boot and once this pref is enabled, we use it at various places to delay the activity for a short while?
(In reply to Suyash Agarwal (:sshagarwal) from comment #59) > We should definitely do that. Where should I start from? :) Maintain a > global pref, that we toggle to true once the user decides to make TB start > on boot and once this pref is enabled, we use it at various places to delay > the activity for a short while? I don't think we need to search various places. I'd suggest to just globally increase the value of the pref at startup (regardless if "start on boot" is set) and then reduce it back when TB is loaded (e.g. somewhere when displaying the list of folders finishes (at logical end of folderPane.js)). We just need to make sure the changed value is not saved to prefs.js. Prefs are saved when TB exits.
Okay, so we need a function/method which increases the values of all the prefs of all the modules that get executed at startup. And this method should be the first one to get executed. And, then after a while another method to return these prefs to their normal values. Is this what we want implemented?
There are only 2 prefs to manage: dom.max_chrome_script_run_time dom.max_script_run_time
(In reply to :aceman from comment #60) > I'd suggest to just globally > increase the value of the pref at startup (regardless if "start on boot" is > set) and then reduce it back when TB is loaded (e.g. somewhere when > displaying the list of folders finishes (at logical end of folderPane.js)). I'm not sure I agree - I think we need to be careful. It might not be a bad idea to boost the values for all users for startup. But the high value needed to suppress errors during startup at boot can hide potential bugs for the user who is not booting. Unless you boost everyone only by a modest amount. (hmm, I just discovered my dom.max_chrome_script_run_time is set to zero)
Didn't you already say in previous posts, that some users get script timeout even at normal startup (not boot), e.g. due to Lightning?
(In reply to :aceman from comment #64) > Didn't you already say in previous posts, that some users get script timeout > even at normal startup (not boot), e.g. due to Lightning? yes. perhaps I am being imprecise. - note, my mention of lightning was primarily in context of slowness during booting, not normal startup. For normal startup it is true that lightning can slow startup, and can cause unresponsive script. I don't have stats, but I don't think it's the norm. (there aren't many reports that cite lightning at https://www.google.com/search?q=lightning+%22unresponsive+script%22+site%3Agetsatisfaction.com%2Fmozilla_messaging%2F&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:unofficial&client=firefox-nightly&channel=sb But to be fair, startup warnings are not something we focus on much in gsfn) - to set a value higher than is needed will mask legitimate bugs, which we don't want to do. And the values suggested so far (comment 46) are I think orders of magnitude higher than what is needed to mitigate the majority of warnings when not booting (which I suspect are rare) ... if it needs to be boosted even at all for the "normal case".
OK, so we can try to implement this without touching the script timeout and see how it goes. I was just thinking of some underpowered machines that have Win XP booting in 5 minutes. But yes, those often can't use TB due to low RAM (in contrast to Outlook). We can try to implement it in a follow-up bug if users report the need. Or toolkit could fix the "unresponsive script" dialog to close automatically, when the script actually finishes. In that way, we wouldn't need to bother.
Comment 66 sounds fine to me. To clarify my earlier comments (apparently my language skills are failing today), I wasn't trying to say that we shouldn't touch script timeout value. I was only trying to say that we should not apply the same very high value to both normal and boot startups, i.e. a high value for boot startups I have no problem with.
https://getsatisfaction.com/mozilla_messaging/topics/how_to_delay_thunderbirds_start_on_oss_start regarding network availability is an interesting point on startup at boot time. Perhaps a short time delay should also be considered
Given this hasn't shipped, removing the relnote comment for now.
Keywords: relnote
Depends on: tb-startupperf
See Also: tb-startupperf
Since, we still have concerns (performance?) regarding having this feature, should I mark this as won't fix?
Flags: needinfo?(acelists)
Or, should we start perf testing this and then use those numbers to decide what needs to be done?
Do we have telemetry data e.g. about usual startup time?
Flags: needinfo?(acelists)
(In reply to :aceman from comment #72) > Do we have telemetry data e.g. about usual startup time? Even if we had it, although it would be interesting perhaps insightful I don't think telemetry data is what we need to decide what to do. The data we need isn't, for example, average or startup time. It wouldn't tell us what we need to know, which is, when enabled during Windows what types/sizes of Thunderbird profiles would show slow issues. To decide I think we want controlled tests with real world profiles (i.e. medium to huge) and realistic Windows software (AV, etc) and average or below hardware.
Status: ASSIGNED → NEW
OS: Windows 7 → Windows

I suggest we consider implementing this and deliver in esr 78. It would be a good compliment to our new support of Windows tray.

I had misgivings Several years ago and we still have startup performance issues, some of which I'll link to this bug as being relevant. But in the last 4-6 years average hardware capability has improved, our code has improved in relevant areas, and some performance issues are under active investigation. So I'm hopeful we wouldn't be overrun with support and bug requests.

I suggest we don't worry about comment 46 and 49, get some useful beta testing feedback, and adjust if needed.

Assignee: syshagarwal → nobody
Flags: needinfo?(mkmelin+mozilla)
See Also: → 1502923, 1608653, 1585259, 929281, 588952
Whiteboard: [patchlove]

Would need to punt on this one.
I'm not sure about desired it really is either. It's pretty easy for users to tb themselves add to the startup folder if they do want it.

Flags: needinfo?(mkmelin+mozilla)

My windows display appeared at 8:05 on the display. It was 8:07 before Thunderbird was apparently through the not responding stages and looked like it was working. Interestingly I got a single issue connecting to IMAP Gmail, but there are multiple accounts. Startup account checking sure needs some sort of manager as some sort of failure is now in the to be expected grouping.

Personally I found the startup to be about normal. Slow, jerky and with lots of "not responding" over about a 2 minute period. With Disk access in the 5Mb per second range and memory use around 1.800 mb

Blocks: 1695407
No longer blocks: 1695407
See Also: → 1695407

Windows OS version 2004 (OS build 19041.804) 64bit
Processor Intel(R) Core(TM) i7-8700K CPU @3.70GHz 3696 MHz. 6 cores
RAM 16.0 GB
Main Graphics: NVIDIA GeForce GTX 1080
Anti-Virus: Norton 360
Typical Download Broadband Speed: 59.3 MB/s

I have it on auto startup and after logging on to User Account, I would say Thunderbird appears within seconds, sometimes seems immediate and useable virtually immedately, I'm talking about less than 10 seconds as I usually wait for the checks for messages, which according to Activity Manager all occured within first minute.
3 pop accounts and gmail imap
I'm not in the habit of keeping years' (decades !) worth of emails in a current profile - I have a backup of old stuff if required and detach attachments to a suitable storage. So my profile name folder has an operating size of 230MB min to 500MB max.

I used to have to wait for a couple of minutes and experience all the same issues - script issues etc as described by Matt, but I was using an older Vista OS on a 14 year old computer with 500MB Ram !
I've never experienced those issues on this device which is now nearly 2 years old.

I have little doubt a large part of my issues are a slow platter disk and only 8Gb of ram, and a number of broken account and calendar setups that do not log in. With Thunderbird wanting gigabytes and Firefox regularly losing it for 4 or more and the video card sharing the 8Gb I have memory issues. But then I find Mozilla applications memory hogs.

Having said that a lot of consumer-level PC devices still being sold have the same poor memory levels (8Gb) and slow disks. They are made to a price, not a standard. A quick visit to the Dell web site shows 6 of the first 7 devices listed under deals as having 8Gb of ram. and while non-platter storage is becoming more common, small system volumes and large slow sata data drives are almost as common and we store large data on those small drives.

(In reply to Magnus Melin [:mkmelin] from comment #77)

Would need to punt on this one.
I'm not sure about desired it really is either. It's pretty easy for users to tb themselves add to the startup folder if they do want it.

For me it is about user convenience. Everything a program should do, should be done within the program.

If one uninstalls Mozilla Thunderbird, they will have to manually undo all the extra bits they had done outside, like managing the start-up folder.

It is not user friendly. And Mozilla Thunderbird is a program which a user generally wants to launch on boot and keep open all the time, more than not having it be in this state.

I really hope a checkbox makes its way into Mozilla Thunderbird to automatically start Mozilla Thunderbird on Windows boot, additionally minimised to tray as well.

If not, make it possible via an add-on, but at the moment it seems add-ons do not have these capabilities.

Severity: normal → S3

I'm very surprised this app doesn't have such a functionality. It's basic for this kind of apps and rather easy to implement. Checkbox in settings which when ticked registers the app to start with Windows and when unticked unregisters it. And which checks the system to tick/untick it if needed. In WIndows it's just a matter of adding/removing registry key, which is a more recommended way than the shortcut. On Linux you add an init script. On Mac not sure, but there are a bunch of libraries for various languages that can do it in one to three lines for all systems anyways.

Why is it better than just copying the shortcut to the startup folder:

  • saves time of a lot of users ofc
  • it doesn't try to launch non-existent app if you uninstall and that deregisters the registry key/file
  • possible API integrations of sorts that e.g. turn it off with extension based on some condition

And startup time is not any sort of an issue because the user has still a choice to enable it or not if he feels it slows down system startup too much. It's not any sort of a negative, I have no idea why so much discussion was about speed here. It's just a matter of doing users' lives easier or not doing.

Duplicate of this bug: 1860380

Regarding the speed:
I can't grasp how this is a problem for not having this option in Thunderbird in 2023. What's the use of an E-Mail Client if I don't want to open it everyday to check my emails?
Worried about the email client hogging up the system right after booting? No problem, just set the launch with a 1 min delay (that's more than easy to do). Many Apps do this already and AFAIK Windows delay all apps in the startup folder (Windows+R --> Shell:Startup) for 15 seconds after logging in before launching.
Worried about the users not wanting it? Well it's a check box. Default behavior of an email client should be to launch at startup, just like how a default behavior of a cloud syncing app should be. We have unnecessary messaging apps like Discord default to this and no one ever complains about it.
Want to copy it from another FOSS App? Check the Mega Cloud Syncing App, it's literally the first line one will ready after clicking on "Settings" in the App.

One thing I want to add is: Please have the option to launch Thunderbird minimized, so that it doesn't pop up in our faces if there are no new emails.

Want to copy it from another FOSS App? Check the Mega Cloud Syncing App, it's literally the first line one will ready after clicking on "Settings" in the App.

If you read the bug report you will see that simply adding the checkbox hasn't been the blocking issue.

You are correct, not all users have a large enough configuration to be significantly impacted. However, we must care about the average user, who when offered this option won't care why startup isn't performing to their liking, they will simply insist that it work even if it isn't going to work well on their system.

I can't grasp how this is a problem for not having this option in Thunderbird in 2023. What's the use of an E-Mail Client if I don't want to open it everyday to check my emails?

You could say that about any application which you use on a daily basis. But unlike Thunderbird, on startup most do not have a relatively high load on the hardware, which also does not mesh well with a Windows boot process which inherently has high load. So comparisons to most other applications like discord simply aren't valid. Adding a startup delay would help, but adds code complexity that we simply wouldn't do.

However, version 115 has brought many significant startup performance improvements, which you can see in this
long list of performance improvements since 2020-10-01.

Calendar unfortunately hasn't come as far. But we can still revisit moving this forward.

Isn't this possible already via the native OS "startup apps" option?
I think Windows, macOS, and almost all Linux distros now come with native control of which applications should be opened at startup.
The "start minimized" option is another thing that we want to explore later.

It is possible on all systems, but it's also not convenient on all systems e.g. for all reasons mentioned above. And if the problem is lack of startup optimization, delaying fully optional easy to implement feature, only sounds like an excuse to never optimize the startup because people would enable the feature more often than they do through system capabilities. If I were you, I'd want more users to report performance and its flaws on various systems to consider the best improvement actions, not the other way round.

Duplicate of this bug: 2012286

There is no point in running it at Windows startup, only on user login. Add a "Start on login" checkbox to the settings and have its CheckedChanged (or whatever, figure it out) event run

reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v Thunderbird /t REG_SZ /d "path to Thunderbird"

when it is checked, and

reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v Thunderbird /f

when it is unchecked. That’s it. No custom registry logic or elevation is required. Reg.exe is a standard registry utility and is present on any Windows system.

Indeed "Option to startup Thunderbird on Windows login" makes more since

Summary: Feature Request: Option to startup Thunderbird on Windows boot up → Option to startup Thunderbird on Windows login
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: