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/assets
    • config.toml default config
    • migration.json shows appropriate messages for removed features
    • pins.json default pins
    • schema.json schema for reference
    • pins_schema.json schema for pins for reference
    • Directorypresets
      • sane.toml
      • vim.toml
    • Directorythemes
      • ansi-dark.tcss
      • ansi-light.tcss
      • atom-one-dark.tcss
      • atom-one-light.tcss
      • catppuccin-frappe.tcss
      • catppuccin-latte.tcss
      • catppuccin-macchiato.tcss
      • catppuccin-mocha.tcss
      • dracula.tcss
      • flexoki.tcss
      • gruvbox.tcss
      • monokai.tcss
      • nord.tcss
      • rose-pine-dawn.tcss
      • rose-pine-moon.tcss
      • rose-pine.tcss
      • solarized-dark.tcss
      • solarized-light.tcss
      • textual-dark.tcss
      • textual-light.tcss
      • tokyo-night.tcss
  • Directorysrc/rovr/classes
    • app_mixins.py mixins for the main app
    • 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 custom stylesheet handler
    • type_aliases.py type aliases for better readability
  • Directorysrc/rovr/components
    • base_search_screen.py base screen for fuzzy matcher screens
    • iterm2_image.py iterm2 image support
    • popup_option_list.py for popup selectors
    • search_container.py used for fuzzy searching
    • special_option_lists.py just a really special option list

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
    • ansi.py faster implementation of rich.text.Text.from_ansi
    • cli.py a mini implementation of rich-click using argparse
    • config.py functions for loading and validating the config
    • cwd.py handle a virtual representation of the working directory
    • details.py functions for the details column
    • drive_workers.py Process workers for drive management
    • folder_prefs.py functions for managing folder sort preferences
    • icons.py functions for getting icons
    • multiprocessing_utils.py utilities for multiprocessing
    • 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
    • _textual.py textual patches

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
    • 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_drop.py screen when dropping files without kitty dnd
    • paste_screen.py screen shown when pasting files
    • rg_search.py used for integration with ripgrep
    • shell_exec.py used for executing shell commands
    • theme_chooser.py custom theme chooser for rovr
    • trash.py trash screen, to handle trashed files
    • 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