From 010ff8a0c88329b9f2bda94da6bba1ca5d2772f5 Mon Sep 17 00:00:00 2001 From: Jonas Haugesen Date: Wed, 19 Aug 2026 11:15:21 +0200 Subject: [PATCH] feat: current weather on home screen (MET/Yr API, no key) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Yr app (no.nrk.yr) exposes no data to third parties; its backend, api.met.no locationforecast 2.0, works with no API key (User-Agent header only). New toggle 'Show Current Weather' under Display, right after 'Show App Icons'. The home element is formatted exactly like the daily word and shows a nerd-font weather glyph (nf-weather-*, from the installed JetBrainsMonoNerdFont) plus the temperature in Celsius, e.g. '\uE312 16°'. A 95KB subset of JetBrainsMonoNerdFont (ASCII + weather glyphs, OFL) is bundled as R.font.jetbrains_mono_nf_weather so the glyphs render even if the launcher font setting changes. Uses the launcher's existing saved location (lat/lon prefs). --- .../licenses/JetBrainsMonoNerdFont-OFL.txt | 1 + .../launcher/helper/AppHelper.kt | 89 ++++++++++++++++++ .../launcher/helper/PreferenceHelper.kt | 4 + .../helper/weather/MetForecastResponse.kt | 46 +++++++++ .../launcher/ui/home/HomeFragment.kt | 55 +++++++++++ .../ui/settings/SettingsLookFeelFragment.kt | 7 ++ .../launcher/utils/Constants.kt | 5 + .../launcher/utils/MetApiService.kt | 19 ++++ .../launcher/utils/MetSymbolMapper.kt | 57 +++++++++++ .../launcher/viewmodel/PreferenceViewModel.kt | 8 +- .../res/font/jetbrains_mono_nf_weather.ttf | Bin 0 -> 94996 bytes app/src/main/res/layout/fragment_home.xml | 8 ++ .../layout/fragment_settings_look_feel.xml | 31 ++++++ app/src/main/res/values/strings.xml | 1 + 14 files changed, 330 insertions(+), 1 deletion(-) create mode 100644 app/src/main/assets/licenses/JetBrainsMonoNerdFont-OFL.txt create mode 100644 app/src/main/java/com/github/droidworksstudio/launcher/helper/weather/MetForecastResponse.kt create mode 100644 app/src/main/java/com/github/droidworksstudio/launcher/utils/MetApiService.kt create mode 100644 app/src/main/java/com/github/droidworksstudio/launcher/utils/MetSymbolMapper.kt create mode 100644 app/src/main/res/font/jetbrains_mono_nf_weather.ttf diff --git a/app/src/main/assets/licenses/JetBrainsMonoNerdFont-OFL.txt b/app/src/main/assets/licenses/JetBrainsMonoNerdFont-OFL.txt new file mode 100644 index 0000000..b7bfff8 --- /dev/null +++ b/app/src/main/assets/licenses/JetBrainsMonoNerdFont-OFL.txt @@ -0,0 +1 @@ +This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: https://scripts.sil.org/OFL \ No newline at end of file diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/helper/AppHelper.kt b/app/src/main/java/com/github/droidworksstudio/launcher/helper/AppHelper.kt index c27edcd..6b6d748 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/helper/AppHelper.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/helper/AppHelper.kt @@ -33,14 +33,18 @@ import com.github.droidworksstudio.launcher.R import com.github.droidworksstudio.launcher.accessibility.ActionService import com.github.droidworksstudio.launcher.data.dao.AppInfoDAO import com.github.droidworksstudio.launcher.data.entities.AppInfo +import com.github.droidworksstudio.launcher.helper.weather.MetForecastResponse import com.github.droidworksstudio.launcher.helper.weather.WeatherResponse import com.github.droidworksstudio.launcher.utils.Constants +import com.github.droidworksstudio.launcher.utils.MetApiService +import com.github.droidworksstudio.launcher.utils.MetSymbolMapper import com.github.droidworksstudio.launcher.utils.WeatherApiService import com.google.gson.Gson import com.google.gson.JsonSyntaxException import com.google.gson.reflect.TypeToken import com.google.gson.stream.JsonReader import kotlinx.coroutines.flow.first +import kotlin.math.roundToInt import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory import java.net.UnknownHostException @@ -552,4 +556,89 @@ class AppHelper @Inject constructor() { // Data class to hold cached weather data along with timestamp data class CachedWeatherData(val timestamp: Long, val weatherResponse: WeatherResponse) + + sealed class MetWeatherResult { + data class Success(val temperature: Int, val symbolCode: String) : MetWeatherResult() + data class Failure(val errorMessage: String) : MetWeatherResult() + } + + /** + * Fetches the current temperature and symbol from the MET/Yr API + * (api.met.no locationforecast). No API key needed - only a + * descriptive User-Agent header. Result is cached for 15 minutes. + */ + fun fetchMetWeather( + context: Context, + latitude: Float, + longitude: Float, + ): MetWeatherResult { + if (latitude == 0f && longitude == 0f) { + return MetWeatherResult.Failure("No location available") + } + + val cached = context.getMetWeatherFromCache() + if (cached?.let { + System.currentTimeMillis() - it.first < TimeUnit.MINUTES.toMillis(15) + } == true + ) { + return cached.second + } + + try { + val retrofit = Retrofit.Builder() + .baseUrl("https://api.met.no/weatherapi/locationforecast/2.0/") + .addConverterFactory(GsonConverterFactory.create()) + .build() + + val service = retrofit.create(MetApiService::class.java) + val response = service.getCompact(latitude.toDouble(), longitude.toDouble()).execute() + if (response.isSuccessful) { + val body = response.body() + val timeseries = body?.properties?.timeseries + val first = timeseries?.firstOrNull() + if (first != null) { + val temperature = first.data.instant.details.airTemperature.roundToInt() + val symbolCode = first.data.next1Hours?.summary?.symbolCode + ?: first.data.next6Hours?.summary?.symbolCode + ?: "cloudy" + val result = MetWeatherResult.Success(temperature, symbolCode) + context.cacheMetWeather(result) + return result + } + return MetWeatherResult.Failure("Empty forecast") + } else { + return MetWeatherResult.Failure("MET API error: ${response.code()}") + } + } catch (e: UnknownHostException) { + return MetWeatherResult.Failure("Unknown host: api.met.no") + } catch (e: Exception) { + return MetWeatherResult.Failure(e.message ?: "MET fetch failed") + } + } + + /** + * Builds the home-screen weather text: nerd-font weather glyph followed + * by the temperature in Celsius, e.g. "\uE312 16°". + */ + fun buildCurrentWeatherText(temperature: Int, symbolCode: String): String { + return "${MetSymbolMapper.glyphFor(symbolCode)} $temperature°" + } + + private fun Context.cacheMetWeather(result: MetWeatherResult.Success) { + val sharedPreferences = getSharedPreferences(Constants.MET_WEATHER_PREFS, Context.MODE_PRIVATE) + sharedPreferences.edit() + .putLong(Constants.MET_WEATHER_TIMESTAMP, System.currentTimeMillis()) + .putInt(Constants.MET_WEATHER_TEMPERATURE, result.temperature) + .putString(Constants.MET_WEATHER_SYMBOL, result.symbolCode) + .apply() + } + + private fun Context.getMetWeatherFromCache(): Pair? { + val sharedPreferences = getSharedPreferences(Constants.MET_WEATHER_PREFS, Context.MODE_PRIVATE) + val timestamp = sharedPreferences.getLong(Constants.MET_WEATHER_TIMESTAMP, -1L) + if (timestamp == -1L) return null + val temperature = sharedPreferences.getInt(Constants.MET_WEATHER_TEMPERATURE, 0) + val symbol = sharedPreferences.getString(Constants.MET_WEATHER_SYMBOL, "cloudy") ?: "cloudy" + return timestamp to MetWeatherResult.Success(temperature, symbol) + } } diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/helper/PreferenceHelper.kt b/app/src/main/java/com/github/droidworksstudio/launcher/helper/PreferenceHelper.kt index fb59acf..b4f7a35 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/helper/PreferenceHelper.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/helper/PreferenceHelper.kt @@ -202,6 +202,10 @@ class PreferenceHelper @Inject constructor(@ApplicationContext context: Context) get() = prefs.getBoolean(Constants.SHOW_NOTIFICATION_DOTS, false) set(value) = prefs.edit().putBoolean(Constants.SHOW_NOTIFICATION_DOTS, value).apply() + var showCurrentWeather: Boolean + get() = prefs.getBoolean(Constants.SHOW_CURRENT_WEATHER, false) + set(value) = prefs.edit().putBoolean(Constants.SHOW_CURRENT_WEATHER, value).apply() + var searchEngines: Constants.SearchEngines get() { return try { diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/helper/weather/MetForecastResponse.kt b/app/src/main/java/com/github/droidworksstudio/launcher/helper/weather/MetForecastResponse.kt new file mode 100644 index 0000000..b09b3ac --- /dev/null +++ b/app/src/main/java/com/github/droidworksstudio/launcher/helper/weather/MetForecastResponse.kt @@ -0,0 +1,46 @@ +package com.github.droidworksstudio.launcher.helper.weather + +import com.google.gson.annotations.SerializedName + +/** + * Locationforecast 2.0 compact response (api.met.no) - only the fields the + * home-screen current-weather element needs. + */ +data class MetForecastResponse( + val properties: MetProperties +) + +data class MetProperties( + val timeseries: List +) + +data class MetTimeSeries( + val time: String, + val data: MetData +) + +data class MetData( + val instant: MetInstant, + @SerializedName("next_1_hours") + val next1Hours: MetNextHours? = null, + @SerializedName("next_6_hours") + val next6Hours: MetNextHours? = null +) + +data class MetInstant( + val details: MetDetails +) + +data class MetDetails( + @SerializedName("air_temperature") + val airTemperature: Double = 0.0 +) + +data class MetNextHours( + val summary: MetSummary +) + +data class MetSummary( + @SerializedName("symbol_code") + val symbolCode: String = "" +) \ No newline at end of file diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeFragment.kt index 96dfe36..996e70a 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeFragment.kt @@ -22,6 +22,7 @@ import androidx.annotation.RequiresApi import androidx.appcompat.widget.AppCompatTextView import androidx.biometric.BiometricPrompt import androidx.core.content.ContextCompat +import androidx.core.content.res.ResourcesCompat import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle @@ -57,6 +58,7 @@ import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import javax.inject.Inject @@ -114,6 +116,12 @@ class HomeFragment : Fragment(), setupRecyclerView() observeSwipeTouchListener() observeUserInterfaceSettings() + + // Nerd-font weather glyphs (nf-weather-*) live in the bundled + // subset font; the system font here is JetBrainsMonoNerdFont but + // this guarantees rendering even if the launcher font is changed. + binding.currentWeather.typeface = + ResourcesCompat.getFont(requireContext(), R.font.jetbrains_mono_nf_weather) } @SuppressLint("ClickableViewAccessibility") @@ -323,6 +331,17 @@ class HomeFragment : Fragment(), ) } + preferenceViewModel.showCurrentWeatherLiveData.observe(viewLifecycleOwner) { + appHelper.updateUI( + binding.currentWeather, + preferenceHelper.homeDailyWordAlignment, + preferenceHelper.dailyWordColor, + preferenceHelper.dailyWordTextSize, + it + ) + if (it) loadCurrentWeather() + } + binding.apply { mainView.hideKeyboard() @@ -343,6 +362,41 @@ class HomeFragment : Fragment(), } } + /** + * Fetches the current temperature from the MET/Yr API and shows it as a + * nerd-font weather glyph plus Celsius value, e.g. "\uE312 16°". + * Formatted like the daily word (same alignment/color/size settings). + */ + private fun loadCurrentWeather() { + viewLifecycleOwner.lifecycleScope.launch(Dispatchers.IO) { + val sharedPreferences = + requireContext().getSharedPreferences(Constants.WEATHER_PREFS, Context.MODE_PRIVATE) + val latitude = sharedPreferences.getFloat(Constants.LATITUDE, 0f) + val longitude = sharedPreferences.getFloat(Constants.LONGITUDE, 0f) + val result = appHelper.fetchMetWeather(requireContext(), latitude, longitude) + + withContext(Dispatchers.Main) { + when (result) { + is AppHelper.MetWeatherResult.Success -> { + binding.currentWeather.text = appHelper.buildCurrentWeatherText( + result.temperature, + result.symbolCode + ) + binding.currentWeather.visibility = View.VISIBLE + } + + is AppHelper.MetWeatherResult.Failure -> { + // No data (offline, no location): keep any cached text, + // otherwise hide the element. + if (binding.currentWeather.text.isNullOrEmpty()) { + binding.currentWeather.visibility = View.GONE + } + } + } + } + } + } + private fun observeBioAuthCheck(appInfo: AppInfo) { if (!appInfo.lock) context.launchApp(appInfo) @@ -607,6 +661,7 @@ class HomeFragment : Fragment(), observeUserInterfaceSettings() observeFavoriteAppList() observeNotificationBadges() + if (preferenceHelper.showCurrentWeather) loadCurrentWeather() } override fun onAppClicked(appInfo: AppInfo) { diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/settings/SettingsLookFeelFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/settings/SettingsLookFeelFragment.kt index 8811d60..21a6151 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/settings/SettingsLookFeelFragment.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/settings/SettingsLookFeelFragment.kt @@ -95,6 +95,7 @@ class SettingsLookFeelFragment : Fragment(), alarmClockSwitchCompat.isChecked = preferenceHelper.showAlarmClock dailyWordSwitchCompat.isChecked = preferenceHelper.showDailyWord appIconsSwitchCompat.isChecked = preferenceHelper.showAppIcon + currentWeatherSwitchCompat.isChecked = preferenceHelper.showCurrentWeather } } @@ -188,6 +189,12 @@ class SettingsLookFeelFragment : Fragment(), val feedbackType = if (isChecked) "on" else "off" appHelper.triggerHapticFeedback(context, feedbackType) } + + currentWeatherSwitchCompat.setOnCheckedChangeListener { _, isChecked -> + preferenceViewModel.setShowCurrentWeather(isChecked) + val feedbackType = if (isChecked) "on" else "off" + appHelper.triggerHapticFeedback(context, feedbackType) + } } } diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/utils/Constants.kt b/app/src/main/java/com/github/droidworksstudio/launcher/utils/Constants.kt index 81d8a44..b5d4e0b 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/utils/Constants.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/utils/Constants.kt @@ -20,6 +20,10 @@ object Constants { const val WIDGET_BATTERY = "WIDGET_BATTERY" const val WEATHER_PREFS = "EasyWeather.pref" + const val MET_WEATHER_PREFS = "met_weather_prefs" + const val MET_WEATHER_TIMESTAMP = "MET_WEATHER_TIMESTAMP" + const val MET_WEATHER_TEMPERATURE = "MET_WEATHER_TEMPERATURE" + const val MET_WEATHER_SYMBOL = "MET_WEATHER_SYMBOL" const val WEATHER_RESPONSE = "WEATHER_RESPONSE" const val WEATHER_UNITS = "WEATHER_UNITS" const val LATITUDE = "LATITUDE" @@ -71,6 +75,7 @@ object Constants { const val TOGGLE_SETTING_LOCK = "TOGGLE_SETTING_LOCK" const val DISABLE_ANIMATIONS = "DISABLE_ANIMATIONS" const val SHOW_NOTIFICATION_DOTS = "SHOW_NOTIFICATION_DOTS" + const val SHOW_CURRENT_WEATHER = "SHOW_CURRENT_WEATHER" const val HOME_DATE_ALIGNMENT = "HOME_DATE_ALIGNMENT" const val HOME_TIME_ALIGNMENT = "HOME_TIME_ALIGNMENT" diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/utils/MetApiService.kt b/app/src/main/java/com/github/droidworksstudio/launcher/utils/MetApiService.kt new file mode 100644 index 0000000..5012e63 --- /dev/null +++ b/app/src/main/java/com/github/droidworksstudio/launcher/utils/MetApiService.kt @@ -0,0 +1,19 @@ +package com.github.droidworksstudio.launcher.utils + +import com.github.droidworksstudio.launcher.helper.weather.MetForecastResponse +import retrofit2.Call +import retrofit2.http.GET +import retrofit2.http.Headers +import retrofit2.http.Query + +interface MetApiService { + + @Headers( + "User-Agent: app.easy.launcher (https://gitea.haugesenspil.dk/jonas/EasyLauncher)" + ) + @GET("compact") + fun getCompact( + @Query("lat") latitude: Double, + @Query("lon") longitude: Double + ): Call +} \ No newline at end of file diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/utils/MetSymbolMapper.kt b/app/src/main/java/com/github/droidworksstudio/launcher/utils/MetSymbolMapper.kt new file mode 100644 index 0000000..f253d5b --- /dev/null +++ b/app/src/main/java/com/github/droidworksstudio/launcher/utils/MetSymbolMapper.kt @@ -0,0 +1,57 @@ +package com.github.droidworksstudio.launcher.utils + +/** + * Maps MET/Yr symbol codes to Nerd Font weather glyphs + * (nf-weather-* codepoints from the Weather Icons font embedded in + * JetBrainsMonoNerdFont). Rendered with R.font.jetbrains_mono_nf_weather. + */ +object MetSymbolMapper { + + /** + * Returns the nf-weather glyph char for a MET `symbol_code` + * (e.g. "partlycloudy_day"). Unknown codes fall back to a cloud. + */ + fun glyphFor(symbolCode: String): Char { + val normalized = symbolCode.removeSuffix("_polartwilight") + val night = normalized.endsWith("_night") + val base = normalized + .removeSuffix("_day") + .removeSuffix("_night") + + return when (base) { + "clearsky", "fair" -> if (night) '\uE32B' else '\uE30D' + "partlycloudy" -> if (night) '\uE379' else '\uE302' + "cloudy" -> '\uE312' + "fog" -> '\uE313' + "lightrain" -> '\uE31B' + "rain" -> '\uE318' + "heavyrain" -> '\uE319' + "lightrainshowers" -> if (night) '\uE328' else '\uE30B' + "rainshowers" -> if (night) '\uE326' else '\uE309' + "heavyrainshowers" -> if (night) '\uE324' else '\uE307' + "lightrainandthunder" -> '\uE315' + "rainandthunder" -> '\uE31D' + "heavyrainandthunder" -> '\uE31C' + "lightrainshowersandthunder" -> if (night) '\uE322' else '\uE305' + "rainshowersandthunder" -> if (night) '\uE32A' else '\uE30F' + "heavyrainshowersandthunder" -> if (night) '\uE329' else '\uE30E' + "sleet" -> '\uE316' + "lightssleetshowers", "sleetshowers" -> if (night) '\uE323' else '\uE306' + "heavysleetshowers" -> if (night) '\uE364' else '\uE362' + "sleetandthunder", + "lightsleetshowersandthunder", + "sleetshowersandthunder", + -> if (night) '\uE364' else '\uE362' + "lightssnow", "lightsnow", "snow" -> '\uE31A' + "heavysnow" -> '\uE35E' + "lightssnowshowers", "snowshowers" -> if (night) '\uE327' else '\uE30A' + "heavysnowshowers" -> if (night) '\uE361' else '\uE35F' + "snowandthunder", + "snowshowersandthunder", + -> if (night) '\uE367' else '\uE365' + "thunder" -> '\uE31D' + "wind" -> '\uE34B' + else -> '\uE312' + } + } +} diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/viewmodel/PreferenceViewModel.kt b/app/src/main/java/com/github/droidworksstudio/launcher/viewmodel/PreferenceViewModel.kt index 630d26e..45ab7c7 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/viewmodel/PreferenceViewModel.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/viewmodel/PreferenceViewModel.kt @@ -49,7 +49,8 @@ class PreferenceViewModel @Inject constructor( private val autoKeyboardLiveData: MutableLiveData = MutableLiveData() private val lockSettingsLiveData: MutableLiveData = MutableLiveData() private val disableAnimationsLiveData: MutableLiveData = MutableLiveData() - private val showNotificationDotsLiveData: MutableLiveData = MutableLiveData() + val showNotificationDotsLiveData: MutableLiveData = MutableLiveData() + val showCurrentWeatherLiveData: MutableLiveData = MutableLiveData() private val appGroupPaddingSizeLiveData: MutableLiveData = MutableLiveData() private val appPaddingSizeLiveData: MutableLiveData = MutableLiveData() @@ -303,6 +304,11 @@ class PreferenceViewModel @Inject constructor( showNotificationDotsLiveData.postValue((preferenceHelper.showNotificationDots)) } + fun setShowCurrentWeather(showCurrentWeather: Boolean) { + preferenceHelper.showCurrentWeather = showCurrentWeather + showCurrentWeatherLiveData.postValue((preferenceHelper.showCurrentWeather)) + } + fun setAppLanguage(appLanguage: Constants.Language) { preferenceHelper.appLanguage = appLanguage appLanguageLiveData.postValue((preferenceHelper.appLanguage)) diff --git a/app/src/main/res/font/jetbrains_mono_nf_weather.ttf b/app/src/main/res/font/jetbrains_mono_nf_weather.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c49e31e5692fd35fdcd25176416765fcf336b6cb GIT binary patch literal 94996 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 H-Y@+>_|$LV literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index d2f5b96..41679b5 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -78,6 +78,14 @@ android:textSize="32sp" android:visibility="gone" /> + + + + + + + + + + Show Alarm Clock Show Daily Word Show App Icons + Show Current Weather Auto Show Keyboard Auto Open Last App Home Alignment Bottom