Anaconda/UX Redesign/Anaconda Location

From FedoraProject

< Anaconda | UX Redesign
Revision as of 22:26, 9 December 2010 by Duffy (Talk | contribs)

Jump to: navigation, search

Contents

Resources

Issues

Today I was looking at https://bugzilla.redhat.com/show_bug.cgi?id=624158; part of that bug involved creating a locale mapping file in initscripts; this seemed like a bad idea. When considering that, I thought of lang-table, and wondered 'how could we get rid of that'.

Summary of Issues

  • multiple locale/location screens
  • no auto-detection
  • anaconda-specific locale mapping files - we really shouldn't be driving off of configuration sources that only live in anaconda.

We can do better.

Multiple Locale / Location Screens

Anaconda currently has multiple locale/location screens:

  • language selection (custom anaconda)
  • keyboard selection (from s-c-keyboard, but nothing else uses that)
  • timezone selection (from s-c-date)
  • clock setting / ntp (in firstboot)

Needed Localization Info

Anaconda needs the following bits of localization info:

  • locale/language
  • timezone
  • keyboard layout
  • text font

Data Sources

What Anaconda currently uses

Anaconda uses the following data sources:

  • tzdata
  • lang-table (a custom anaconda file)

Anaconda does *zero* autodetection.

Available Resources

Other data sources

Currently, we have the following data sources available to us:

  • iso-codes
  • localedata
  • tzdata
  • libgweather
  • geoclue
  • xkeyboard-config

iso-codes

Includes:

  • country subdivisions (state/province), indexed by country
  • countries, and their country code
  • languages

Does not map:

  • languages to countries

localedata

Maps:

  • languages to countries (more or less)

Does not map:

  • languages to a primary locale/country

tzdata

Includes:

  • timezones, indexed by country
  • latitude/longitude for timezones

Does not map:

  • locales to country
  • random cities to timezones (only specific timezone cities)

libgweather

Includes:

  • many many cities, organized by country
    • with timezone
    • with lat/lon
    • with weather codes

Does not map:

  • cities/countries to locale

geoclue

Maps:

  • current location to:
    • country
    • city
    • latitude/longitude

xkeyboard-config

Maps:

  • language name to xkb layout (1:n, though)
  • country name to xkb layout

Widgetry

Split-Out Widgetry

  • system-config-date - timezone selector
    • Uses: tzdata
  • system-config-date - timezone selector
    • Uses: custom hardcoded mappings in the code, lang-table
  • system-config-language - language selector
    • Uses: iso-codes
  • anaconda language selector - language selector
    • Uses: lang-table

Codebases that don't have widgetry split out

Widgetry currently in development

Proposal #1

On boot, as soon as there is networking available, start geoclue. Acquire location information. Then, feed the information as so:

  • country, latitude/longitude (from geoclue)
    • timezone (from country, lat/lon, via tzdata)
    • language (via ???????, see below)
      • keyboard layout (from country/language combo, via xkeyboard-config)
      • text font (hardcoded!)

Notes:

  • What if we don't have network? Do DHCP always on link!
  • It's easy to get a list of possible languages given the country. There's no canonical data source of what to use for the *primary* language, though. We could make a mapping table (ugh), or do heuristics (double ugh).
    • text font is hardcoded to 'latarcyrheb-sun16'. We could conceivable have an override for the very few people who can't use that.

We then display as so:

Current settings:
Location: United States         [ change ] [ details ]

If you click 'change', it pops up a selector dialog that either:

  • allows you to enter a location (similar to the gnome panel clock code)
  • allows you to click a location (similar to the control center timezone selector)

Either of those resets country, timezone, language, keyboard layout, etc. If you select 'details', (or '>>>', or some expander, to be language-neutral), you get:

Language: English               [ change ]
Country: USA                    [ change ]
Time: 2:33 PM (US Eastern)      [ change ]
Keyboard Layout: us             [ change ]

Then, each of those options pops up a single-purpose configuration dialog. anaconda can either use the gnome capplet once it's done, or roll its own.