graphics: support fullscreen
ui: base window change animation on time, not frames