Mobile and desktop skins are unfortunately two completely different beasts in terms of body output needs. Some people would advocate a mobile-first approach where you develop things for mobile and them layer desktop improvements on top of that. But we've got too much desktop legacy for that.
I suggest this:
- We leave SkinVector, SkinMonoBook, etc... as-is.
- We add a SkinMobile introducing the standard mobile skin.
- SkinMobile very liberally introduces methods that can be hooked into to extend the skin with whatever types of branding a wiki may want on their mobile view
- We add a $wgMobileDefaultSkin or $wgDefaultMobileSkin which defaults to 'mobile'
- We introduce some sort of flag that marks a skin as mobile vs. desktop.
- For now it'll probably have to be a $wg variable like:
$wgSkinModes['mobile'] = array( 'desktop' => false, 'mobile' => true );
- ((I think I already have an idea how I can fit that into the config setup for my skin rewrite))
- For now it'll probably have to be a $wg variable like:
- Special:Preferences gets keyed into skin modes and we add a new preference:
- Our current 'skin' preference only lists skins that are desktop=>true
- We add a new 'mobileskin' preference which lists skins that are mobile=>true allowing users to choose different mobile skins.