Dear Safari, what part of "reopen windows from last session" is so hard to understand?

So I've got ten windows iconified, and another ten open on my desktop. Safari crashes, as it so often does.

I re-launch it. I get back the two frontmost non-iconified windows, and the two oldest iconified windows. What the fucking fuck.

Then I do "reopen windows from last session", and they all come back, including duplicates of the ones I already have open. Come on.

And to insult my injury, the icons in the dock are all blank until after I wait for them all to load in the background, then uniconify and reiconify them, because updating the dock icon at the completion of the background page-load would apparently be too much effort.

I tried an extension that purported to auto-save sessions, but it did some confusing and complicated thing that was not even remotely what I wanted.

Is there a sane solution to this?

(No, I don't want to switch browsers, STFU. No I don't use tabs, STFU.)

Tags: , , ,

28 Responses:

  1. Zygo says:

    If sharing the pain makes you feel any better, the browsers people are likely to suggest you switch to get this wrong too.

    They also seem to get horribly confused if you like to have multiple windows open of different sizes.

  2. grェ says:

    Sane? No. Solution - sure, run OS X + Safari in a VM (either Parallels or VMWare, since all other virtualization systems will make the OS X part a huge pain in the neck); set up automatic snapshots, restore to a recent snapshot when Safari shits the bed, done. No, not sane; absolutely total overkill, also costs money (though at least post 10.7, Lion is able to be run within VMs according to their EULA) probably will cause more annoyances than it solves, but it can work.

    After reading the anti-tab rant; you explain how to turn off tabs, but I am curious why you don't like them. Just curious though, I do some pretty weird modal things because of particular preferences (e.g. I like to put all of my IM/etc. into a tmux'd irssi session running in a local-NATd VM, because of ... reasons). Instead of the anti-tab rant, I'm more curious to hear your pro-windowed instances preference advocacy. :)

    • jwz says:

      I am so not explaining this again.

      • grェ says:

        A link would suffice. I read all the reasons why you don't like tabs, and firefox (and I can at least agree with the latter). A link on why you prefer windows (of the browser sort, not the OS), I haven't seen; but I don't subscribe to your rss, so I don't see everything. Searching for such specifics on your blog is like looking for a needle in a haystack of needles. I FOUND ONE, again, wait, this one? shit.

        • jwz says:

          I have explained it several times and do not have the link on the top of my head and am interested in searching for it even less than you are.

          • grェ says:

            Fair enough. fwiw I wish there were better solutions to the crashing problem - I've been noodling with a BSD licensed hypervisor to at least try to make the VM toolchain more usable for non-Linux things.

            • jwz says:

              Oh look, the most recent answer to this question was right there in the *"STFU"* link, if you scrolled down. You may care to read the whole thread, but I'll paste my two concise, elucidative and devastatingly attractive contributions to it here:

              "OS-level tabs" means "tiling window manager". There have been many, starting with Xerox Star, I think, though the one that traumatized me the most was Andrew. They were terrible, and it was a great step forward when Apple put overlapping windows in MacOS 1.0. ("But spending all that RAM on frame buffer backing store is crazy!")

              [...]

              No, not really. I'm just saying, tabs suck.

              Tabs are fundamentally a window management task. That much should be obvious.

              So we've got this sucky feature (tabs) that has in the past been implemented as a part of some window managers; and today we've got a bunch of apps each implementing their own idiosyncratic window management within the app.

              Either way, who cares, the feature itself sucks.

              I just leave a bunch of windows open, and occasionally iconify them. If there are enough that my dock gets hard to read, I'll use "Hide" to combine all the window-icons of one app down into one icon. Or I'll take that as a hint that my "to do" list has gotten too long, and I'll go prune it.

              You Windows ratfuckers used to call tabs "MDI". And you want that back? But not quite that, but an inconsistent, per-app idiosyncratic re-implementation of it? Awesome-sauce.

              • gryazi says:

                OS/2 ratfucker; never minded MDI much (except that the only sensible way to use it was with everything maximized, thus tabs) but a peculiarity of this brave new tabbed world is that dragged tabs (accidentally) have 'type' - you can drag and drop Firefox tabs between Firefox windows, and otherwise the 'tear off' gesture does what you probably wanted - pulls the tab off into a new window - rather than docking it to the xterm or whatever the fuck happened to be open underneath.

                (Apple does offer more opportunities to make this nutty in terms of whether it matters which application has focus and so is in the foreground and all that.)

                No great defense here, but doing it the stupid way has accidentally given us the equivalent of a tediously configured tabbed WM rules file (if that was the behavior you wanted).

                [In any case, this shit will never die because it's the ultimate - and now socially-accepted - 'boss screen', and once you get used to that you feel pretty naked without it, even if all it's covering for is that you've been reading jwz in between labeling physical paper files.]

              • grェ says:

                Thanks for the excerpt, it's helped me understand your perspective better. I think I finally gave into tabbed browsing when the OS X versions of Safari, Firefox and Chrome all settled on using command {} as defaults. But yes, so many windowing paradigms across so many years, it gets old learning new ones over and over.

        • kesselbrut says:

          “Basically, that's what the window manager is for. Embedding a second window manager inside an application is just wrong. It's a cop-out that hides the real problem (if there is one).” – jwz (on why he considers tabs an abomination, an atrocity even)

          Tabs only suck shit when they're implemented improperly, which means almost always. That is the case when the user has to reposition the hand to cycle through them or has to read the tab titles to identify the desired one. Opera gets it right using mouse gestures: you hold down the right mouse button anywhere and cycle through the tabs using the mouse wheel; a pager shows you the tab favicons/titles as you cycle through them. Holding right mouse on a link and moving the cursor south, then releasing it opens in a new foreground tab, middle click on a link opens in a new background tab. Holding right mouse, mouse south, then east closes a tab; north, then south reloads it; south, then north clones it; west moves back in history; east moves forward in history or to next page using rel="next" header if already at the front of the history; north, then west moves up one level in the directory hierarchy; middle click starts panning; the speed dial on an empty tab gives you quick access you your websites. It even has context menu entries "Go to web address" and "Paste and go" so you never have to copy-paste non-hyperlinked URLs into the address bar and move your hand to press enter. Search engines are available by context menu as well. With Opera you can basically surf the web for hours without ever using your non-mouse hand or moving the cursor to the menu bar.

          • jwz says:

            "I like the window manager built into Application X better than the window mangers built into the other ten apps I have to deal with every day. So tabs are great."

    • Pavel Lishin says:

      I, for one, would like to hear about your ... reasons.

      I prefer my non-IRC IM on my machine, whereas my IRC lives in a bouncer on a remote server. (My reasons for this is so that I can connect to it on my phone, and not have another username pop into the channel, and to show me the last X lines in the channel before I joined.)

      • grェ says:

        I shunt as much IM via bitlbee as I can, so everything into one tmux'd (or screen if you're GNU, I'm doing everything I can to excise GPL from my existence, but that's not always usefully feasible) irssi session that I can detach from (I ssh to a VM, I don't run this stuff on my local system if I can possibly help it; that's where bad things happen) is awfully handy. irssi's tab modality is great for alerting when someone mentions me by name, or if there's a private conversation, as well as when there are per-window/channel/groupchat updates; so I only have to view things I haven't read instead of endless window flipping.

        If I need to explain to you why I like CLIs, that goes much deeper; but clearly I use browsers and GUI modalities too, just, for chats I don't really care for any of the GUI clients - and manage to make pretty much every protocol I care to speak (I don't ever want to use Skype as it is and has been backdoored from day one). That said, I actually want to cull a lot of protocols I do use; a friend suckered me into using more years ago, but I've yet to find anything as nice as SILC (maybe someday mp-OTR will be implemented in a meaningful way, but until then there isn't anything that offers a similar feature set).

        I feel that most of the internet and contemporary computing is utter trash, but at least if I can stuff enough of the communication modalities into a system that I like, I can tolerate it sometimes. Though increasingly I am of the mindset that if I'm not 10000% in the Apple camp (begrudgingly) that I should just give up, go back to dorking out with Amiga demos and watch the world jerk itself off with webVCshitstorm9000.

  3. Elusis says:

    I know Session Manager is available for Firefox (because I use it) and Chrome. If it's available for Safari, I recommend it because it does what it says on the box.

    • skreidle says:

      I'll second Session Manager (or Sessions), though I switched to Tas Outliner for its ability to selectively close and reopen tabs and windows as well as auto-save for crash recovery. (To be clear, it would work just fine for untabbed windows -- but that's unfortunately academic to the OP, as it appears to be exclusive to Chrome.)

  4. Tim says:

    I have the exact same problem, minus the frequent crashing. Sometimes Safari remembers to reopen all the windows, sometimes it forgets. What it forgets seems to be quite random.

    I used to run this sessions extension. Maybe it's closer to what you want than the one you tried.

    http://dl.dropboxusercontent.com/u/8247646/sessions/index.html

    Caveat: Rather than using this, I seem to have settled on it being most convenient to launch Safari, close all the windows, and use "Reopen all windows from last session". Don't quite remember why I stopped using it, so I just reinstalled it to give it another whirl. I don't remember it doing what I think you really want, which is what I want, which is to kick Safari's own restore code into doing the right thing when invoked by application launch.

    • Marc WIlson says:

      Sessions actually works, most of the time. The unnamed one (don't want to name it, any more than jwz does) that does almost exactly the wrong thing also thinks it needs to save and repeatedly restore Safari's Bookmarks Bar. So it grows. Without bound.

    • David says:

      I am the developer of Sessions. Earlier versions offered the option to automatically restore the previously open windows on launch, but after a Safari update introduced its own startup restoration (which is apparently separate from the system-wide restore of Lion onwards) it became unreliable to override the native behavior, so this functionality was removed.

      While I believe Sessions provides significant complementary value beyond this feature in session management and auto-saving, for jwz's needs the native Safari restoration, as buggy as it is, maintains advantages (e.g., window state/minimization/size, back button history) that are unfortunately difficult or impossible to emulate with the current Safari Extensions API.

      • Tim says:

        You've jogged my memory, I first used Sessions before that one Safari update, and got good use out of the automatic restore. It's a shame they don't expose everything you need in the extensions API.

        Thanks for writing Sessions, and for kibozing this ;)

  5. Biff says:

    Try Glims, it has a session restore feature that works better than the baked-in one.

    http://www.machangout.com/

  6. Jeremy Wilson says:

    Since the switching between one monitors and two is completely broken in OSX, I use a tool called Slate ( https://github.com/jigish/slate ) to make snapshots of my window positions, and then on startup, activate said snapshot which moves my windows to where I like them. So, that might be something you could use to help the situation.

    Doesn't help with the shitty Safari non-opening issue, which also pisses me off. The last version at least re-used the previous window instead of leaving it behind and opening more, making me close the original empty ones. Sucks.

  7. gryazi says:

    I feel like I have to throw in just because the 'always take snapshots forever' dork has a vaguely similar name (not that this is always a bad thing, though - a certain filesystem with 'lazy deletion' has saved my ass a number of times, but that's, y'know, a filesystem, and it doesn't change much even if the diffs are block-size granular).

    ACTUALLY just wanted to note that Firefox + Unity get the equivalent of dock iconification equally wrong on Ubuntu, because if you hop out to the Expose-like "live" task-switcher view and crap has been minimized or never been touched to render its content after a crash and restart, you get invisible windows (try it with Pidgin and a minimized chat) or blank ones when it comes to Firefox.

    So equally dumb shortcuts are being taken elsewhere. Are things so bad that 'minimize' will just have to grab a screenshot of the window Canon CAT-like to have something to show in the dock/switcher/your-choice-of-miniwindow-environment? Because RAM is cheap and at least that'd, like, work.

    [Which OS or WM was it that 'minimized' by moving windows to some offscreen coordinates that could be reached once monitors broke the 640x400ish barrier?]

    • grェ says:

      Huh regarding the [] question - I can think of some that meet that criteria, the literature and dates aren't to be trusted necessarily. :) But I'm happy to learn more, it sounds as though you have something specific and mind and I don't know that trivia off hand.

      As it stands, I'm watching a video on the Xerox Star interface and getting pretty lost in it; I certainly don't remember having access to systems of that caliber during that era.

  8. Nick says:

    Wow, I can't believe that your Linux UI has usability problems/bugs... said no one

    • Nick says:

      Whoops. that was in response to above

      • gryazi says:

        Well, yeah, but playing OpenGL shrinkydinks was supposed to have been the easiest possible thing anywhere.

        What amazes me is that Apple manages to have fucked it up too, ever since the first time I hit a dialog that extended past the bottom of a 1024x768 display (or somesuch, this was the Bad Old Days circa 10.1 when hardware still came in plastic with IBM chips in it) and discovered that the fancy new Display PDF 'zoom' feature only went 'in.'

  9. Kevin Lyda says:

    Surely you'd want to use an open source browser? That way you could see the state of the art design patterns and coding techniques in large application development.

    By using Safari you limit your ability to look under the hood and see how a web browser is built. Imagine all the wonderful things you'd find!

    [/lunatic troll]