Skip to content

project structure

the current file structure separates each section into its own folder

  • Directorysrc/rovr
    • init .py entry point
    • main .py contains the cli
    • app.py houses the main application
    • first_launch.py handles first launch tasks
    • first_launch.tcss styles for first launch
    • py.typed
    • state_manager.py manages persistent state
    • style.tcss default style
  • Directorysrc/rovr/action_buttons
    • copy_button.py copy selections to 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
    • config.py typed dict for config schema (auto generated)
    • exceptions.py custom exceptions that are raised where necessary
    • mixins.py mixin classes for reuse
    • 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
    • type_aliases.py type aliases for better readability
  • Directorysrc/rovr/components
    • base_search_screen.py base screen for fuzzy matcher screens
    • popup_option_list.py for popup selectors
    • search_container.py used for fuzzy searching
    • special_option_lists.py just a really special option list
  • Directorysrc/rovr/config
    • config.toml default config
    • migration.json shows appropriate messages for removed features
    • pins.json default pins
    • schema.json schema for reference
    • Directorykeybinds
      • sane.toml sane default keybinds
      • vim.toml vim-like keybinds

handles the middle elements

  • Directorysrc/rovr/core
    • file_list.py a list that shows files
    • file_list_container.py wrapper container for the main file list
    • file_list_right_click_menu.py context menu popup
    • pinned_sidebar.py a list that shows pinned items
    • pinned_sidebar_container.py wrapper container for pinned side bar
    • preview_container.py a container that shows the appropriate preview

handles the bottom row

  • Directorysrc/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
    • cli.py a mini implementation of rich-click using argparse
    • config.py functions for loading and validating the config
    • drive_workers.py Process workers for drive management
    • folder_prefs.py functions for managing folder sort preferences
    • icons.py functions for getting icons
    • path.py functions for path manipulation
    • pdf.py utilities for managing pdf files
    • pins.py functions for managing pins
    • preview_utils.py utilities for handling previews
    • preview_workers.py process workers for generating previews
    • system_clipboard.py functions for copying to the system clipboard
    • 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

handles monkey patches whenever necessary

  • Directorysrc/rovr/monkey_patches
    • _classes.py monkeypatch certain classes
    • _platform.py monkeypatch platform on slower devices
    • _spam.py prevent stdout spam in certain cases

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
    • main .py screen tester, not used at all
    • archive_creator.py screen for creating archives
    • common_file_name_do_what.py when a conflicting file exists
    • delete_files.py when you want to delete files
    • dismissible.py dismissible modal, for notices
    • fd_search.py used for integration with fd
    • file_in_use.py shown when trying to delete a file that is being used
    • input.py modal input, also supporting path input
    • keybinds.py show all keybindings
    • paste_screen.py screen shown when pasting files
    • rg_search.py used for integration with ripgrep
    • shell_exec.py used for executing shell commands
    • typed.py type hints for certain return values
    • 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