diff --git a/Changelog b/Changelog index 2be3931..99271b4 100644 --- a/Changelog +++ b/Changelog @@ -1,3 +1,8 @@ +2024-12-05 s-n-g + * version 0.9.3.11.3 - 0.9.3.12-beta3 + * fixing a crash when opening RadioBrowser Config + * all config windows will display distro info (if applicable) + 2024-12-05 s-n-g * version 0.9.3.11.2 - 0.9.3.12-beta2 * Implementing the Shortcuts Window, making it possible to customize diff --git a/docs/index.html b/docs/index.html index 3fab3dc..d96b948 100644 --- a/docs/index.html +++ b/docs/index.html @@ -187,6 +187,11 @@

Requirements Changelog Top

 
+2024-12-05 s-n-g
+    * version 0.9.3.11.3 - 0.9.3.12-beta3
+    * fixing a crash when opening RadioBrowser Config
+    * all config windows will display distro info (if applicable)
+
 2024-12-05 s-n-g
     * version 0.9.3.11.2 - 0.9.3.12-beta2
     * Implementing the Shortcuts Window, making it possible to customize
diff --git a/pyproject.toml b/pyproject.toml
index 661bb48..e201193 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
 [project]
 name = "pyradio"
-version = "0.9.3.11.2"
+version = "0.9.3.11.3"
 authors = [
   { name="Ben Dowling", email="ben.m.dowling@gmail.com" },
   { name="Spiros Georgaras", email="sng@hellug.gr" },
diff --git a/pyradio/__init__.py b/pyradio/__init__.py
index f266746..31c5b30 100644
--- a/pyradio/__init__.py
+++ b/pyradio/__init__.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 " pyradio -- Console radio player. "
 
-version_info = (0, 9, 3, 11, 2)
+version_info = (0, 9, 3, 11, 3)
 
 # Set it to True if new stations have been
 # added to the package's stations.csv
diff --git a/pyradio/browser.py b/pyradio/browser.py
index b463039..d0e480f 100644
--- a/pyradio/browser.py
+++ b/pyradio/browser.py
@@ -1549,7 +1549,7 @@ def do_search(self, parent=None, init=False):
         self.keyboard_handler = self._search_win
         self._search_win.show()
 
-    def show_config(self, parent=None, init=False, cannot_delete_function=None):
+    def show_config(self, parent=None, init=False, cannot_delete_function=None, distro='None'):
         if init:
             self._config_win = RadioBrowserConfigWindow(
                 parent=parent,
@@ -1565,6 +1565,7 @@ def show_config(self, parent=None, init=False, cannot_delete_function=None):
                 current_ping_count=self._default_ping_count,
                 current_ping_timeout=self._default_ping_timeout,
                 init=init,
+                distro=distro,
                 with_browser=True,
                 global_functions=self._global_functions,
                 cannot_delete_function=cannot_delete_function
@@ -1825,7 +1826,7 @@ def __init__(
             init=False,
             stations_dir=None,
             data_dir=None,
-            distro=None,
+            distro='None',
             global_functions=None,
             with_browser=False,
             cannot_delete_function=None
diff --git a/pyradio/config_window.py b/pyradio/config_window.py
index ba2d356..cf01128 100644
--- a/pyradio/config_window.py
+++ b/pyradio/config_window.py
@@ -3401,9 +3401,11 @@ def __init__(
             self,
             config,
             parent,
-            global_functions):
+            distro='None',
+            global_functions=None):
         self._cnf = config
         self._parent = parent
+        self._distro=distro
         self._global_functions = global_functions
 
         self._list = []
@@ -3805,6 +3807,13 @@ def show(self, parent=None):
                         #     self._unselect_line(i+2)
                 except IndexError:
                     pass
+        if self._distro != 'None':
+            try:
+                X = int((self.maxX - 20 - len(self._distro) - 1) / 2)
+                self._win.addstr(self.maxY - 1, X, ' Package provided by ', curses.color_pair(5))
+                self._win.addstr(self._distro + ' ', curses.color_pair(4))
+            except (ValueError, curses.error):
+                pass
         self._win.refresh()
         self._widget.show()
 
@@ -3916,11 +3925,11 @@ def _save_keyboard_config(self):
                 continue
             if n[3] and n[2] != n[3]:
                 if logger.isEnabledFor(logging.DEBUG):
-                    logger.debug('New shortcut found: {0}: {1}'.format(n[0], n[6]))
+                    logger.debug('New shortcut found: kbkey["{0}"]: "{1}"'.format(n[0], n[6]))
                 out_dict[n[0]] = n[3]
             if n[2] and n[1] != n[2]:
                 if logger.isEnabledFor(logging.DEBUG):
-                    logger.debug('New shortcut found: {0}: {1}'.format(n[0], n[5]))
+                    logger.debug('New shortcut found: kbkey["{0}"]: "{1}"'.format(n[0], n[5]))
                 out_dict[n[0]] = n[2]
         if logger.isEnabledFor(logging.DEBUG):
             logger.debug(f'{out_dict = }')
diff --git a/pyradio/install.py b/pyradio/install.py
index 70da147..ff47cba 100644
--- a/pyradio/install.py
+++ b/pyradio/install.py
@@ -17,7 +17,7 @@
 ''' This is PyRadio version this
     install.py was released for
 '''
-PyRadioInstallPyReleaseVersion = '0.9.3.11.2'
+PyRadioInstallPyReleaseVersion = '0.9.3.11.3'
 
 locale.setlocale(locale.LC_ALL, "")
 
diff --git a/pyradio/keyboard/classes.json b/pyradio/keyboard/classes.json
index bc63160..8712576 100644
--- a/pyradio/keyboard/classes.json
+++ b/pyradio/keyboard/classes.json
@@ -1 +1 @@
-{"SelectPlayer": ["q", "h", "k", "pause", "s", "l", "j", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadio": ["screen_middle", "goto_playing", "open_config", "rb_sort", "open_enc", "pause", "rb_info", "extra_p_pamars", "F9", "repaint", "s", "j", "t", "transp", "add", "info", "n", "y", "G", "k", "?", "no_show", "open_regs", "screen_top", "screen_bottom", "revert_saved", "jump", "st_up", "gr", "append", "g", "search_next", "st_dn", "add_to_reg", "gr_next", "F10", "random", "open_online", "F7", "rec", "paste", "del", "l", "reload", "fav", "open_playlist", "search", "Reload", "rb_server", "ext_player", "q", "h", "gr_prev", "Y", "F8", "edit", "search_prev", "rb_vote", "revert_def", "https", "open_extra", "hist_prev", "hist_next", "p_prev", "p_next", "rb_p_first", "rb_p_next", "rb_p_prev", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioConfigWindow": ["h", "l", "pause", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "ExtraParametersEditor": ["tab", "q", "?", "stab", "s", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "ExtraParameters": ["q", "h", "?", "pause", "s", "l", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioSelectPlayer": ["tab", "q", "h", "k", "pause", "revert_saved", "s", "l", "j", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioSelectEncodings": ["G", "h", "q", "k", "pause", "revert_saved", "s", "l", "revert_def", "j", "g", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioSelectPlaylist": ["screen_middle", "q", "h", "G", "k", "pause", "revert_saved", "l", "j", "g", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioSelectStation": ["revert_saved", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioKeyboardConfig": ["tab", "G", "q", "h", "k", "?", "pause", "revert_saved", "stab", "revert_def", "l", "j", "g", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioEditor": ["tab", "q", "revert_saved", "stab", "s", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioRecordingDir": ["tab", "q", "?", "pause", "stab", "s", "l", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioResourceOpener": ["tab", "q", "?", "stab", "s", "revert_def", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioRenameFile": ["tab", "q", "pause", "stab", "s", "l", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioBuffering": ["q", "h", "k", "revert_saved", "s", "j", "no_buffer", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioConnectionType": ["q", "h", "k", "pause", "s", "l", "j", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioServerWindow": ["h", "k", "pause", "revert_saved", "s", "revert_def", "l", "j", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioSimpleScheduleWindow": ["tab", "info", "q", "h", "k", "?", "pause", "stab", "l", "j", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioThemeSelector": ["G", "q", "h", "k", "watch_theme", "edit", "pause", "s", "l", "reload", "j", "g", "add", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "SimpleCursesString": ["l", "pause", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "SimpleCursesDate": ["tab", "q", "h", "?", "stab", "l", "t", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "SimpleCursesTime": ["tab", "q", "h", "?", "pause", "stab", "l", "t", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "SimpleCursesCounter": ["q", "h", "?", "l", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "SimpleCursesWidgetColumns": ["q", "G", "h", "k", "?", "pause", "l", "j", "g", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "SimpleCursesMenu": ["screen_middle", "goto_playing", "q", "h", "G", "k", "?", "edit", "pause", "del", "l", "j", "g", "add", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "SimpleCursesCheckBox": ["pause", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "SimpleCursesPushButton": ["pause", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "SimpleCursesLineEdit": ["tab", "stab", "paste", "?", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "SimpleCursesBoolean": ["q", "h", "?", "pause", "l", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "RadioBrowserConfigWindow": ["tab", "q", "k", "?", "pause", "stab", "s", "revert_def", "l", "j", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "RadioBrowserSearchWindow": ["pause", "rb_h_def", "s", "j", "tab", "G", "k", "rb_h_add", "?", "stab", "rb_h_next", "rb_h_prev", "g", "rb_h_save", "l", "rb_h_del", "q", "h", "rb_h_0", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "RadioBrowserSort": ["q", "h", "G", "k", "pause", "l", "j", "g", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "RadioBrowserServersSelect": ["q", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "RadioBrowserServers": ["q", "h", "G", "k", "?", "pause", "l", "j", "g", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "RadioBrowserTermNavigator": ["prev", "q", "h", "G", "?", "pause", "next", "del", "l", "g", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioMessagesSystem": ["G", "k", "j", "g", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "InfoWindow": ["info_rename", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "ExtraKeys": ["open_dirs", "buffer", "open_buffer", "hist_top", "clear_all_reg", "html_help", "unnamed", "change_player", "new_playlist", "open_remote_control", "last_playlist", "rename_playlist", "clear_reg"]}
\ No newline at end of file
+{"SelectPlayer": ["pause", "j", "q", "k", "s", "l", "h", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadio": ["G", "k", "revert_def", "rb_sort", "append", "open_enc", "y", "open_extra", "open_regs", "gr_prev", "rb_vote", "info", "l", "rb_info", "Y", "random", "t", "transp", "add", "screen_top", "gr_next", "j", "q", "rb_server", "search_prev", "open_online", "screen_bottom", "screen_middle", "ext_player", "edit", "repaint", "F9", "h", "paste", "open_playlist", "revert_saved", "del", "st_up", "extra_p_pamars", "F10", "reload", "F7", "search_next", "goto_playing", "pause", "add_to_reg", "g", "F8", "Reload", "https", "?", "fav", "open_config", "s", "jump", "rec", "st_dn", "n", "no_show", "gr", "search", "hist_prev", "hist_next", "p_prev", "p_next", "rb_p_first", "rb_p_next", "rb_p_prev", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioConfigWindow": ["l", "pause", "h", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "ExtraParametersEditor": ["q", "?", "s", "tab", "stab", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "ExtraParameters": ["pause", "q", "?", "s", "l", "h", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioSelectPlayer": ["pause", "revert_saved", "j", "q", "k", "s", "tab", "l", "h", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioSelectEncodings": ["pause", "g", "revert_saved", "j", "G", "q", "k", "s", "revert_def", "l", "h", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioSelectPlaylist": ["pause", "g", "revert_saved", "j", "q", "G", "k", "screen_middle", "l", "h", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioSelectStation": ["revert_saved", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioKeyboardConfig": ["pause", "g", "revert_saved", "j", "G", "q", "?", "k", "revert_def", "tab", "stab", "l", "h", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioEditor": ["revert_saved", "q", "s", "tab", "stab", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioRecordingDir": ["pause", "q", "?", "s", "tab", "stab", "l", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioResourceOpener": ["q", "?", "s", "tab", "revert_def", "stab", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioRenameFile": ["pause", "q", "s", "tab", "stab", "l", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioBuffering": ["revert_saved", "j", "q", "k", "s", "no_buffer", "h", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioConnectionType": ["pause", "j", "q", "k", "s", "l", "h", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioServerWindow": ["pause", "revert_saved", "j", "k", "s", "revert_def", "l", "h", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioSimpleScheduleWindow": ["pause", "j", "q", "?", "k", "tab", "stab", "l", "info", "h", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioThemeSelector": ["pause", "watch_theme", "g", "j", "G", "q", "k", "s", "reload", "edit", "add", "l", "h", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "SimpleCursesString": ["l", "pause", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "SimpleCursesDate": ["t", "q", "?", "tab", "stab", "l", "h", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "SimpleCursesTime": ["t", "pause", "q", "?", "tab", "stab", "l", "h", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "SimpleCursesCounter": ["q", "l", "?", "h", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "SimpleCursesWidgetColumns": ["pause", "g", "j", "q", "G", "?", "k", "l", "h", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "SimpleCursesMenu": ["pause", "g", "j", "q", "G", "del", "?", "k", "edit", "screen_middle", "add", "l", "h", "goto_playing", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "SimpleCursesCheckBox": ["pause", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "SimpleCursesPushButton": ["pause", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "SimpleCursesLineEdit": ["tab", "stab", "paste", "?", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "SimpleCursesBoolean": ["pause", "q", "?", "l", "h", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "RadioBrowserConfigWindow": ["pause", "j", "q", "?", "k", "s", "tab", "revert_def", "stab", "l", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "RadioBrowserSearchWindow": ["rb_h_del", "G", "k", "rb_h_0", "l", "rb_h_prev", "rb_h_save", "j", "q", "h", "rb_h_add", "rb_h_next", "rb_h_def", "pause", "g", "?", "s", "tab", "stab", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "RadioBrowserSort": ["pause", "g", "j", "q", "G", "k", "l", "h", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "RadioBrowserServersSelect": ["q", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "RadioBrowserServers": ["pause", "g", "j", "q", "G", "?", "k", "l", "h", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "RadioBrowserTermNavigator": ["pause", "g", "q", "G", "del", "?", "prev", "l", "next", "h", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "PyRadioMessagesSystem": ["G", "k", "g", "j", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "InfoWindow": ["info_rename", "tag", "t_tag", "transp", "v_up1", "v_up2", "v_up3", "v_dn1", "v_dn2", "mute", "s_vol", "t_calc_col", "repaint"], "ExtraKeys": ["last_playlist", "buffer", "open_buffer", "unnamed", "rename_playlist", "open_remote_control", "change_player", "clear_all_reg", "html_help", "new_playlist", "open_dirs", "hist_top", "clear_reg"]}
\ No newline at end of file
diff --git a/pyradio/radio.py b/pyradio/radio.py
index aae2706..bfbbe1b 100644
--- a/pyradio/radio.py
+++ b/pyradio/radio.py
@@ -5215,6 +5215,7 @@ def _keyboard_init_config(self, parent=None):
             self._keyboard_config_win = PyRadioKeyboardConfig(
                     config=self._cnf,
                     parent=self.outerBodyWin,
+                    distro=self._cnf.distro,
                     global_functions=self._global_functions
                     )
         self._keyboard_config_win.show(parent=self.outerBodyWin)
@@ -5228,7 +5229,7 @@ def _browser_server_selection(self):
         else:
             self._browser_config_win.select_servers()
 
-    def _browser_init_config_from_config(self, parent=None, init=False):
+    def _browser_init_config_from_config(self, parent=None, init=False, distro='None'):
         ''' Show browser config window from config
         '''
         if parent is None:
@@ -5249,7 +5250,8 @@ def _browser_init_config(self, parent=None, init=False, browser_name=None, distr
         if parent is None:
             parent = self.outerBodyWin
         if self._cnf._online_browser:
-            self._cnf._online_browser.show_config(parent, init, self._cannot_delete_function)
+            self._cnf._online_browser.show_config(
+                parent, init, self._cannot_delete_function, distro=distro)
         else:
             if self._browser_config_win is None:
                 self._show_connect_to_server_message()
@@ -8959,7 +8961,7 @@ def keypress(self, char):
                     ''' open config '''
                     if self._cnf.browsing_station_service:
                         self.ws.operation_mode = self.ws.RADIO_BROWSER_CONFIG_MODE
-                        self._browser_init_config(init=True)
+                        self._browser_init_config(init=True, distro=self._cnf.distro)
                     else:
                         if self._cnf.locked:
                             self._open_simple_message_by_key('M_SESSION_LOCKED')