{"content":"  40→    static final String FILE_NAME = \"config.json\";\n  41→    static final String WALLPAPER_NAME = \"wallpaper.jpg\";\n  42→    static final String SETTINGS_NAME = \"launcher_settings\";\n  43→    static final String ROWS_BELOW_DOCK_KEY = \"rows_below_dock\";\n  44→    static final String WALLPAPER_CHOICE_KEY = \"wallpaper_choice\";\n  45→    static final String DOCK_OPACITY_KEY = \"dock_opacity\";\n  46→    /**\n  47→     * Counts the changes made in Launcher settings. Home remembers the count it was built with and rebuilds on\n  48→     * resume when it differs, however the settings were left (see MainActivity#onResume).\n  49→     */\n  50→    static final String SETTINGS_REVISION_KEY = \"settings_revision\";\n  51→\n  52→    /** True when Launcher settings changed something since Home was built at revision {@code seen}. */\n  53→    static boolean settingsChanged(long seen, long current) {\n  54→        return seen != current;\n  55→    }\n  56→    private static final String THEME_REVISION_NAME = \"theme_revision\";\n  57→    private static final String THEME_SIGNATURE_KEY = \"theme_signature\";\n  58→\n  59→    final List<String> dockApps;\n  60→    /** Grid apps fill the dock slots dock_apps leaves free (config.xml, fill_dock); on by default, false leaves the slots empty. */\n  61→    final boolean fillDock;\n  62→    final List<String> hiddenApps;\n  63→    /** Packages pre-seeded into the App library's \"added\" set (config.xml, library_apps); empty by default. */\n  64→    final List<String> libraryApps;\n  65→    final String liveTvPackage;\n  66→    final String liveTvAction;\n  67→    final String liveTvInputId;\n  68→    /** Package to the action its tile sends instead of opening the start screen (config.xml, launch_actions). */\n  69→    final Map<String, String> launchActions;\n  70→    /** Package to the name its tile shows instead of the app's label (config.xml, app_labels). */\n  71→    final Map<String, String> appLabels;\n  72→    /** Package to a bundled banner_* drawable its tile shows instead of the app's art (config.xml, app_banners). */\n  73→    final Map<String, String> appBanners;\n  74→    final String sourcePanelService;\n  75→    final String sourcePanelAction;\n  76→    /** One int extra for the source panel, \"name=value\" (config.xml source_panel_extra); empty for none. */\n  77→    final String sourcePanelExtra;\n  78→    /** List Coocaa OS sources from com.skyworth.tv in the Inputs menu (config.xml coocaa_sources). */\n  79→    final boolean coocaaSources;\n  80→    final String inputAction;\n  81→    /** Scheme an Inputs row's passthrough URI is sent with instead of content:// (config.xml input_uri_scheme). */\n  82→    final String inputUriScheme;\n  83→    final int columns;\n  84→    final boolean animations;\n  85→    final boolean advancedEffects;\n  86→    final int rowsBelowDock;\n  87→    final boolean shamsiDate;\n  88→    /** Name after the greeting (\"Good morning, Mr. Trịnh\"); empty for the greeting alone. */\n  89→    final String greetingName;\n  90→    final boolean moduleCards;\n  91→    /** Calmer motion for weak GPUs (config.xml, reduced_motion): stiff spring, short fades, no replay. */\n  92→    final boolean reducedMotion;\n  93→    /** Open the Live TV app on the first Home after the TV starts (config.xml, boot_to_live_tv). */\n  94→    final boolean bootToLiveTv;\n  95→    /** The focused dock app's name in large type above the dock (config.xml, dock_title). */\n  96→    final boolean dockTitle;\n  97→    /** The dock as its own row: band, no names, parked low (config.xml dock_row). false: one plain grid. */\n  98→    final boolean dockRow;\n  99→    /** Inputs, Wi-Fi and Settings folded into one gear button with a dropdown, like Google TV (config.xml top_menu). */\n 100→    final boolean topMenu;\n 101→    /** Direct launcher-settings header action; off by default (launcher_settings_button). */\n 102→    final boolean launcherSettingsButton;\n 103→    /** Names under every tile, dimmed until focused (config.xml always_show_names); the dock band grows for them. */\n 104→    final boolean alwaysShowNames;\n 105→    /** Reorder button in the top bar (config.xml reorder_button); the Settings long-press menu offers it either way. */\n 106→    final boolean reorderButton;\n 107→    /** Show the Wi-Fi/Ethernet pill in the top bar (config.xml, show_network_pill). */\n 108→    final boolean showNetworkPill;\n 109→    /** Show the Inputs pill when the TV has inputs to list (config.xml, show_inputs_pill). */\n 110→    final boolean showInputsPill;\n 111→    /** Wi-Fi and Settings pills as round icon buttons, Inputs keeps its label (config.xml icon_only_buttons). */\n 112→    final boolean iconOnlyButtons;\n 113→    /** The Inputs pill as a round icon button too (config.xml icon_only_inputs). */\n 114→    final boolean iconOnlyInputs;\n 115→    /** App library as a round button in the top bar (config.xml library_button); needs app_library. */\n 116→    final boolean libraryButton;\n 117→    /** With icon_only_buttons, the Wi-Fi pill keeps the network name up to this width in dp (0: icon only). */\n 118→    final int wifiLabelWidth;\n 119→    /** Decode wallpapers in 32-bit colour instead of RGB_565 (config.xml wallpaper_true_color). */\n 120→    final boolean wallpaperTrueColor;\n 121→    /** The focused tile and the glass highlight swing past their target before settling (config.xml, focus_overshoot). */\n 122→    final boolean focusOvershoot;\n 123→    final String vpnApp;\n 124→    final boolean showHomeSettingsShortcut;\n 125→    /** One line under the clock: CPU, free memory, free storage. Off unless config or a theme turns it on. */\n 126→    final boolean showStats;\n 127→    /** App library pill after the last Home row (config.xml app_library). */\n 128→    final boolean appLibrary;\n 129→    /** OK directly toggles Home membership in the library (app_library_selection). */\n 130→    final boolean appLibrarySelection;\n 131→    /** Background colour behind everything, #RRGGBB; black unless a theme says otherwise. */\n 132→    final int backgroundColor;\n 133→    /** Time-of-day backdrop, 0 to 100 (config.xml, sky_intensity); 0 keeps the plain background. */\n 134→    final int skyIntensity;\n 135→    /** Remote keycodes that open Settings through HomeKeyService (config.xml, settings_key_keycodes). */\n 136→    final int[] settingsKeycodes;\n 137→    /** Extra keycodes that open the input switcher in InputKeyService (config.xml input_key_keycodes). */\n 138→    final int[] inputKeycodes;\n 139→    /** Remote buttons that open an app, \"keycode:package\" or \"KEYCODE_NAME:package\" (config.xml app_keys). */\n 140→    final List<String> appKeys;\n 141→    /** Whether the key services request key filtering (config.xml or theme key_filter); false keeps key\n 142→     *  auto-repeat working on firmware whose AccessibilityInputFilter drops repeats (TCL Android 12). */\n 143→    final boolean keyFilter;\n 144→    /** Stock launcher whose home screen is sent back here if the firmware revives it (config.xml stock_home_redirect). */\n 145→    final String stockHomeRedirect;\n 146→    /** The Settings button opens the quick settings panel instead of the TV's Settings (settings_key_panel). */\n 147→    final boolean settingsKeyPanel;\n 148→    /** Home puts the remote's accessibility helpers back after a force stop (restore_key_services; ServiceRepair). */\n 149→    final boolean restoreKeyServices;\n 150→    /** Whether themes may show a wallpaper (config.json, wallpaper). */\n 151→    final boolean wallpaperEnabled;\n 152→    /** Full-screen picture behind the launcher, or null for the plain colour. */\n 153→    final File wallpaper;\n 154→    /** Rotating theme images, or the single wallpaper when no collection is configured. */\n 155→    final List<File> wallpapers;\n 156→    final int wallpaperRotationMinutes;\n 157→    final int wallpaperDim;\n 158→    /** The dock band's opacity in percent (config.json dock_opacity, 30-100): below 100 the wallpaper shows through. */\n 159→    final int dockOpacity;\n 160→","renderer":{"type":"code","context":{"language":"java"}}}