docs: def save_config(self):
          """ Save config file
  
              Creates config.restore (back up file)
              Returns:
                  -1: Error saving config
                   0: Config saved successfully
                   1: Config not saved (not modified"""
          if not self.opts['dirty_config'][1]:
              if logger.isEnabledFor(logging.INFO):
                  logger.info('Config not saved (not modified)')
              return 1
          txt ='''# PyRadio Configuration File
  
  # Player selection
  # This is the equivalent to the -u , --use-player command line parameter
  # Specify the player to use with PyRadio, or the player detection order
  # Example:
  #   player = vlc
  # or
  #   player = vlc,mpv, mplayer
  # Default value: mpv,mplayer,vlc
  player = {0}
  
  # Default playlist
  # This is the playlist to open if none is specified
  # You can scecify full path to CSV file, or if the playlist is in the
  # config directory, playlist name (filename without extension) or
  # playlist number (as reported by -ls command line option)
  # Default value: stations
  default_playlist = {1}
  
  # Default station
  # This is the equivalent to the -p , --play command line parameter
  # The station number within the default playlist to play
  # Value is 1..number of stations, "-1" or "False" means no auto play
  # "0" or "Random" means play a random station
  # Default value: False
  default_station = {2}
  
  # Default encoding
  # This is the encoding used by default when reading data provided by
  # a station (such as song title, etc.) If reading said data ends up
  # in an error, 'utf-8' will be used instead.
  #
  # A valid encoding list can be found at:
  #   https://docs.python.org/2.7/library/codecs.html#standard-encodings
  # replacing 2.7 with specific version:
  #   3.0 up to current python version.
  #
  # Default value: utf-8
  default_encoding = {3}
  
  # Connection timeout
  # PyRadio will wait for this number of seconds to get a station/server
  # message indicating that playback has actually started.
  # If this does not happen (within this number of seconds after the
  # connection is initiated), PyRadio will consider the station
  # unreachable, and display the "Failed to connect to: [station]"
  # message.
  #
  # Valid values: 5 - 60
  # Default value: 10
  connection_timeout = {4}
  
  # Default theme
  # Hardcooded themes:
  #   dark (default) (8 colors)
  #   light (8 colors)
  #   dark_16_colors (16 colors dark theme alternative)
  #   light_16_colors (16 colors light theme alternative)
  #   black_on_white (bow) (256 colors)
  #   white_on_black (wob) (256 colors)
  # Default value = 'dark'
  theme = {5}
  
  # Transparency setting
  # If False, theme colors will be used.
  # If True and a compositor is running, the stations' window
  # background will be transparent. If True and a compositor is
  # not running, the terminal's background color will be used.
  # Valid values: True, true, False, false
  # Default value: False
  use_transparency = {6}
  
  
  # Playlist management
  #
  # Specify whether you will be asked to confirm
  # every station deletion action
  # Valid values: True, true, False, false
  # Default value: True
  confirm_station_deletion = {7}
  
  # Specify whether you will be asked to confirm
  # playlist reloading, when the playlist has not
  # been modified within Pyradio
  # Valid values: True, true, False, false
  # Default value: True
  confirm_playlist_reload = {8}
  
  # Specify whether you will be asked to save a
  # modified playlist whenever it needs saving
  # Valid values: True, true, False, false
  # Default value: False
  auto_save_playlist = {9}
  
  '''
          copyfile(self.config_file, self.config_file + '.restore')
          if self.opts['default_station'][1] is None:
              self.opts['default_station'][1] = '-1'
          try:
              with open(self.config_file, 'w') as cfgfile:
                  cfgfile.write(txt.format(self.opts['player'][1],
                      self.opts['default_playlist'][1],
                      self.opts['default_station'][1],
                      self.opts['default_encoding'][1],
                      self.opts['connection_timeout'][1],
                      self.opts['theme'][1],
                      self.opts['use_transparency'][1],
                      self.opts['confirm_station_deletion'][1],
                      self.opts['confirm_playlist_reload'][1],
                      self.opts['auto_save_playlist'][1]))
          except:
              if logger.isEnabledFor(logging.ERROR):
                  logger.error('Error saving config')
              return -1
          try:
              remove(self.config_file + '.restore')
          except:
              pass
          if logger.isEnabledFor(logging.INFO):
              logger.info('Config saved')
          self.opts['dirty_config'][1] = False
          return 0