Skip to content

project structure

the current file structure seperates each section in each folder

  • Directorysrc/rovr
    • app.py houses the main application
    • py.typed
    • search_container.py search bar in pinned folders and file list
    • style.tcss default style
  • Directorysrc/rovr/action_buttons
    • copy_button.py copy selections to clipboard
    • copy_path.py copy path of selected item to real clipboard
    • cut_button.py cut selections to clipboard
    • delete_button.py delete selections
    • new_item_button.py create new item
    • paste_button.py paste from rovr’s clipboard into cwd
    • rename_item_button.py rename selected item
    • unzip_button.py unzip selected item
    • zip_button.py zip selected items
  • Directorysrc/rovr/classes
    • archive.py classes for handling archives
    • exceptions.py custom exceptions that are raised where necessary
    • session_manager.py a class for managing session state
    • textual_options.py classes for option/selection elements
    • textual_validators.py validations for input elements
    • theme.py a class for themes
  • Directorysrc/rovr/config
    • config.toml default config
    • pins.json default pins
    • schema.json schema for reference

handles the middle elements

  • Directorysrc/rovr/core
    • file_list.py a list that shows files
    • pinned_sidebar.py a list that shows pinned items
    • preview_container.py a container that shows the appropriate preview

PreviewContainer uses FileList as part of its Folder Preview mechanism. it currently doesn’t use it for archive previews, so I’m ready to accept prs that fix this issue

handles the bottom row

  • src/rovr/footer
  • clipboard_container.py a list that contains copied/cut items
  • metadata_container.py shows metadata on the current primary selection
  • process_container.py shows a list of active processes
  • Directorysrc/rovr/functions
    • config.py functions for loading and validating the config
    • icons.py functions for getting icons
    • path.py functions for path manipulation
    • pins.py functions for managing pins
    • themes.py theme loader
    • utils.py miscellaneous utility functions

handles the top most row

  • Directorysrc/rovr/header
    • header.py the header container itself
    • tabs.py the tabs and new tab button

right below the action buttons

  • Directorysrc/rovr/navigation_widgets
    • buttons.py buttons that replicate explorer.exe
    • path_input.py path input + auto complete

handles the modal screens used

  • Directorysrc/rovr/screens
    • common_file_name_do_what.py when a conflicting file exists
    • delete_files.py when you want to delete files
    • dismissable.py dismissable modal, for notices
    • give_permission.py raise permission when you get permission errored
    • input.py modal input, also supporting path input
    • way_too_small.py screen shown when window is too small
    • yes_or_no.py simple yes or no prompt
    • zd_to_directory.py zoxide integration
    • _tester.py screen tester, not used at all
  • Directorysrc/rovr/variables
    • constants.py global constants, including the loaded config
    • maps.py maps to icons and other things