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
    • 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
    • sort_order.py changes sort order
    • 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/components
    • popup_option_list.py for popup selectors
    • search_container.py used for fuzzy searching
  • Directorysrc/rovr/config
    • config.toml default config
    • migration.json shows appropriate messages for removed features
    • pins.json default pins
    • schema.json schema for reference

handles the middle elements

  • Directorysrc/rovr/core
    • file_list.py a list that shows files
    • file_list_container.py the container for the main file list
    • 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
    • _tester.py screen tester, not used at all
    • 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
    • file_in_use.py shown when trying to delete a file that is being used
    • file_search.py used for integration with fd
    • input.py modal input, also supporting path input
    • keybinds.py show all keybindings
    • 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
  • Directorysrc/rovr/variables
    • constants.py global constants, including the loaded config
    • maps.py maps to icons and other things