From 226d18e743b94943503521ae7d7319ad84f7db5b Mon Sep 17 00:00:00 2001 From: Xarvex Date: Thu, 6 Mar 2025 18:35:46 -0600 Subject: [PATCH] refactor!: change layout; renaming, import and build change incoming --- {tagstudio/src => src/tagstudio}/core/constants.py | 0 {tagstudio/src => src/tagstudio}/core/driver.py | 0 {tagstudio/src => src/tagstudio}/core/enums.py | 0 {tagstudio/src => src/tagstudio}/core/exceptions.py | 0 .../src => src/tagstudio}/core/field_template.py | 0 .../src => src/tagstudio}/core/library/__init__.py | 0 .../tagstudio}/core/library/alchemy/__init__.py | 0 .../tagstudio}/core/library/alchemy/db.py | 0 .../core/library/alchemy/default_color_groups.py | 0 .../tagstudio}/core/library/alchemy/enums.py | 0 .../tagstudio}/core/library/alchemy/fields.py | 0 .../tagstudio}/core/library/alchemy/joins.py | 0 .../tagstudio}/core/library/alchemy/library.py | 0 .../tagstudio}/core/library/alchemy/models.py | 0 .../tagstudio}/core/library/alchemy/visitors.py | 0 .../tagstudio}/core/library/json/__init__.py | 0 .../tagstudio}/core/library/json/fields.py | 0 .../tagstudio}/core/library/json/library.py | 0 .../src => src/tagstudio}/core/media_types.py | 0 {tagstudio/src => src/tagstudio}/core/palette.py | 0 .../tagstudio}/core/query_lang/__init__.py | 0 .../src => src/tagstudio}/core/query_lang/ast.py | 0 .../src => src/tagstudio}/core/query_lang/parser.py | 0 .../tagstudio}/core/query_lang/tokenizer.py | 0 .../src => src/tagstudio}/core/query_lang/util.py | 0 {tagstudio/src => src/tagstudio}/core/singleton.py | 0 {tagstudio/src => src/tagstudio}/core/ts_core.py | 0 .../src => src/tagstudio}/core/utils/dupe_files.py | 0 .../src => src/tagstudio}/core/utils/encoding.py | 0 .../tagstudio}/core/utils/missing_files.py | 0 .../src => src/tagstudio}/core/utils/refresh_dir.py | 0 {tagstudio/src => src/tagstudio}/core/utils/str.py | 0 {tagstudio/src => src/tagstudio}/core/utils/web.py | 0 tagstudio/tag_studio.py => src/tagstudio/main.py | 0 .../src => src/tagstudio}/qt/cache_manager.py | 0 {tagstudio/src => src/tagstudio}/qt/flowlayout.py | 0 .../tagstudio}/qt/helpers/blender_thumbnailer.py | 0 .../tagstudio}/qt/helpers/color_overlay.py | 0 .../tagstudio}/qt/helpers/custom_runnable.py | 0 .../src => src/tagstudio}/qt/helpers/escape_text.py | 0 .../tagstudio}/qt/helpers/file_deleter.py | 0 .../src => src/tagstudio}/qt/helpers/file_opener.py | 0 .../src => src/tagstudio}/qt/helpers/file_tester.py | 0 .../tagstudio}/qt/helpers/function_iterator.py | 0 .../src => src/tagstudio}/qt/helpers/gradient.py | 0 .../tagstudio}/qt/helpers/image_effects.py | 0 .../tagstudio}/qt/helpers/qbutton_wrapper.py | 0 .../tagstudio}/qt/helpers/rounded_pixmap_style.py | 0 .../tagstudio}/qt/helpers/silent_popen.py | 0 .../tagstudio}/qt/helpers/text_wrapper.py | 0 .../tagstudio}/qt/helpers/vendored/ffmpeg.py | 0 .../qt/helpers/vendored/pydub/audio_segment.py | 0 .../tagstudio}/qt/helpers/vendored/pydub/utils.py | 0 {tagstudio/src => src/tagstudio}/qt/main_window.py | 0 {tagstudio/src => src/tagstudio}/qt/modals/about.py | 0 .../src => src/tagstudio}/qt/modals/add_field.py | 0 .../src => src/tagstudio}/qt/modals/build_color.py | 0 .../tagstudio}/qt/modals/build_namespace.py | 0 .../src => src/tagstudio}/qt/modals/build_tag.py | 0 .../tagstudio}/qt/modals/delete_unlinked.py | 0 .../src => src/tagstudio}/qt/modals/drop_import.py | 0 .../tagstudio}/qt/modals/ffmpeg_checker.py | 0 .../tagstudio}/qt/modals/file_extension.py | 0 .../src => src/tagstudio}/qt/modals/fix_dupes.py | 0 .../src => src/tagstudio}/qt/modals/fix_unlinked.py | 0 .../tagstudio}/qt/modals/folders_to_tags.py | 0 .../tagstudio}/qt/modals/merge_dupe_entries.py | 0 .../tagstudio}/qt/modals/mirror_entities.py | 0 .../tagstudio}/qt/modals/relink_unlinked.py | 0 .../tagstudio}/qt/modals/settings_panel.py | 0 .../tagstudio}/qt/modals/tag_color_manager.py | 0 .../tagstudio}/qt/modals/tag_color_selection.py | 0 .../src => src/tagstudio}/qt/modals/tag_database.py | 0 .../src => src/tagstudio}/qt/modals/tag_search.py | 0 {tagstudio/src => src/tagstudio}/qt/pagination.py | 0 .../src => src/tagstudio}/qt/platform_strings.py | 0 .../src => src/tagstudio}/qt/resource_manager.py | 0 {tagstudio/src => src/tagstudio}/qt/resources.json | 0 {tagstudio/src => src/tagstudio}/qt/resources.qrc | 0 {tagstudio/src => src/tagstudio}/qt/resources_rc.py | 0 {tagstudio/src => src/tagstudio}/qt/splash.py | 0 {tagstudio/src => src/tagstudio}/qt/translations.py | 0 {tagstudio/src => src/tagstudio}/qt/ts_qt.py | 0 {tagstudio/src => src/tagstudio}/qt/ui/home.ui | 0 {tagstudio/src => src/tagstudio}/qt/ui/home_ui.py | 0 .../tagstudio}/qt/widgets/clickable_label.py | 0 .../tagstudio}/qt/widgets/collage_icon.py | 0 .../src => src/tagstudio}/qt/widgets/color_box.py | 0 .../src => src/tagstudio}/qt/widgets/fields.py | 0 .../src => src/tagstudio}/qt/widgets/item_thumb.py | 0 .../src => src/tagstudio}/qt/widgets/landing.py | 0 .../tagstudio}/qt/widgets/media_player.py | 0 .../tagstudio}/qt/widgets/migration_modal.py | 0 .../qt/widgets/paged_panel/paged_body_wrapper.py | 0 .../qt/widgets/paged_panel/paged_panel.py | 0 .../qt/widgets/paged_panel/paged_panel_state.py | 0 .../src => src/tagstudio}/qt/widgets/panel.py | 0 .../qt/widgets/preview/field_containers.py | 0 .../qt/widgets/preview/file_attributes.py | 0 .../tagstudio}/qt/widgets/preview/preview_thumb.py | 0 .../tagstudio}/qt/widgets/preview_panel.py | 0 .../src => src/tagstudio}/qt/widgets/progress.py | 0 {tagstudio/src => src/tagstudio}/qt/widgets/tag.py | 0 .../src => src/tagstudio}/qt/widgets/tag_box.py | 0 .../tagstudio}/qt/widgets/tag_color_label.py | 0 .../tagstudio}/qt/widgets/tag_color_preview.py | 0 {tagstudio/src => src/tagstudio}/qt/widgets/text.py | 0 .../tagstudio}/qt/widgets/text_box_edit.py | 0 .../tagstudio}/qt/widgets/text_line_edit.py | 0 .../tagstudio}/qt/widgets/thumb_button.py | 0 .../tagstudio}/qt/widgets/thumb_renderer.py | 0 .../tagstudio}/qt/widgets/video_player.py | 0 {tagstudio => src/tagstudio}/resources/icon.icns | Bin {tagstudio => src/tagstudio}/resources/icon.ico | Bin {tagstudio => src/tagstudio}/resources/icon.png | Bin .../tagstudio}/resources/qt/fonts/Oxanium-Bold.ttf | Bin .../qt/images/box_icon_empty_128 - Copy.png | Bin .../resources/qt/images/box_icon_empty_128.png | Bin .../qt/images/box_icon_filled_128 - Copy.png | Bin .../resources/qt/images/box_icon_filled_128.png | Bin .../resources/qt/images/broken_link_icon.png | Bin .../resources/qt/images/clipboard_icon_128.png | Bin .../resources/qt/images/collation_icon_128.png | Bin .../resources/qt/images/edit_icon_128.png | Bin .../resources/qt/images/edit_icon_dark_128.png | Bin .../qt/images/file_icons/adobe_illustrator.png | Bin .../qt/images/file_icons/adobe_photoshop.png | Bin .../qt/images/file_icons/affinity_photo.png | Bin .../resources/qt/images/file_icons/audio.png | Bin .../resources/qt/images/file_icons/document.png | Bin .../resources/qt/images/file_icons/file_generic.png | Bin .../resources/qt/images/file_icons/font.png | Bin .../resources/qt/images/file_icons/image.png | Bin .../resources/qt/images/file_icons/image_vector.png | Bin .../resources/qt/images/file_icons/material.png | Bin .../resources/qt/images/file_icons/model.png | Bin .../resources/qt/images/file_icons/presentation.png | Bin .../resources/qt/images/file_icons/program.png | Bin .../resources/qt/images/file_icons/spreadsheet.png | Bin .../resources/qt/images/file_icons/text.png | Bin .../resources/qt/images/file_icons/video.png | Bin .../tagstudio}/resources/qt/images/pause.svg | 0 .../tagstudio}/resources/qt/images/play.svg | 0 .../resources/qt/images/splash/classic.png | Bin .../resources/qt/images/splash/goo_gears.png | Bin .../resources/qt/images/splitter_handle_128.png | Bin .../qt/images/star_icon_empty_128 - Copy.png | Bin .../resources/qt/images/star_icon_empty_128.png | Bin .../qt/images/star_icon_filled_128 - Copy.png | Bin .../resources/qt/images/star_icon_filled_128.png | Bin .../resources/qt/images/tag_group_icon_128.png | Bin .../resources/qt/images/tag_group_icon_dark_128.png | Bin .../qt/images/tagstudio_logo_text_mono.png | Bin .../resources/qt/images/thumb_loading.png | Bin .../resources/qt/images/trash_icon_128.png | Bin .../resources/qt/images/trash_icon_dark_128.png | Bin .../tagstudio}/resources/qt/images/volume.svg | 0 .../tagstudio}/resources/qt/images/volume_mute.svg | 0 .../tagstudio}/resources/qt/videos/placeholder.mp4 | Bin .../tagstudio}/resources/translations/cs.json | 0 .../tagstudio}/resources/translations/da.json | 0 .../tagstudio}/resources/translations/de.json | 0 .../tagstudio}/resources/translations/en.json | 0 .../tagstudio}/resources/translations/es.json | 0 .../tagstudio}/resources/translations/fil.json | 0 .../tagstudio}/resources/translations/fr.json | 0 .../tagstudio}/resources/translations/hu.json | 0 .../tagstudio}/resources/translations/it.json | 0 .../tagstudio}/resources/translations/nb_NO.json | 0 .../tagstudio}/resources/translations/nl.json | 0 .../tagstudio}/resources/translations/pl.json | 0 .../tagstudio}/resources/translations/pt.json | 0 .../tagstudio}/resources/translations/pt_BR.json | 0 .../tagstudio}/resources/translations/ru.json | 0 .../tagstudio}/resources/translations/sv.json | 0 .../tagstudio}/resources/translations/ta.json | 0 .../tagstudio}/resources/translations/tok.json | 0 .../tagstudio}/resources/translations/tr.json | 0 .../tagstudio}/resources/translations/yue_Hant.json | 0 .../tagstudio}/resources/translations/zh_Hant.json | 0 {tagstudio/tests => tests}/conftest.py | 0 .../DB_VERSION_6/.TagStudio/ts_library.sqlite | Bin .../DB_VERSION_7/.TagStudio/ts_library.sqlite | Bin .../DB_VERSION_8/.TagStudio/ts_library.sqlite | Bin .../json_library/.TagStudio/ts_library.json | 0 {tagstudio/tests => tests}/fixtures/result.dupeguru | 0 {tagstudio/tests => tests}/fixtures/sample.epub | Bin {tagstudio/tests => tests}/fixtures/sample.ods | Bin {tagstudio/tests => tests}/fixtures/sample.odt | Bin {tagstudio/tests => tests}/fixtures/sample.pdf | Bin {tagstudio/tests => tests}/fixtures/sample.svg | 0 .../search_library/.TagStudio/ts_library.json | 0 .../search_library/.TagStudio/ts_library.sqlite | Bin .../comp colors shapes/r_circle_b_square.png | Bin .../comp colors shapes/r_circle_g_square.png | Bin .../comp colors shapes/r_circle_o_square.png | Bin .../comp colors shapes/r_circle_r_square.png | Bin .../comp colors shapes/r_circle_y_square.png | Bin .../search_library/inherit colors shapes/blue.jpg | Bin .../inherit colors shapes/blue_circle.jpg | Bin .../inherit colors shapes/blue_ellipse.png | Bin .../inherit colors shapes/blue_square.jpg | Bin .../search_library/inherit colors shapes/circle.png | Bin .../inherit colors shapes/ellipse.png | Bin .../search_library/inherit colors shapes/green.png | Bin .../inherit colors shapes/green_circle.png | Bin .../inherit colors shapes/green_ellipse.png | Bin .../inherit colors shapes/green_square.png | Bin .../search_library/inherit colors shapes/orange.png | Bin .../inherit colors shapes/orange_circle.png | Bin .../inherit colors shapes/orange_ellipse.png | Bin .../inherit colors shapes/orange_square.png | Bin .../search_library/inherit colors shapes/red.jpg | Bin .../inherit colors shapes/red_circle.jpg | Bin .../inherit colors shapes/red_ellipse.png | Bin .../inherit colors shapes/red_square.jpg | Bin .../search_library/inherit colors shapes/shape.png | Bin .../search_library/inherit colors shapes/square.png | Bin .../search_library/inherit colors shapes/yellow.png | Bin .../inherit colors shapes/yellow_circle.png | Bin .../inherit colors shapes/yellow_ellipse.png | Bin .../inherit colors shapes/yellow_square.png | Bin .../fixtures/sidecar_newgrounds.json | 0 .../tests => tests}/macros/test_dupe_entries.py | 0 .../tests => tests}/macros/test_folders_tags.py | 0 .../tests => tests}/macros/test_missing_files.py | 0 .../tests => tests}/macros/test_refresh_dir.py | 0 {tagstudio/tests => tests}/macros/test_sidecar.py | 0 .../qt/__snapshots__/test_folders_to_tags.ambr | 0 ...test_preview_render[sample.epub-_epub_cover].png | Bin ...t_preview_render[sample.ods-_open_doc_thumb].png | Bin ...t_preview_render[sample.odt-_open_doc_thumb].png | Bin ...test_preview_render[sample.pdf-thumbnailer3].png | Bin ...test_preview_render[sample.svg-thumbnailer4].png | Bin .../tests => tests}/qt/test_build_tag_panel.py | 0 .../tests => tests}/qt/test_field_containers.py | 0 {tagstudio/tests => tests}/qt/test_flow_widget.py | 0 .../tests => tests}/qt/test_folders_to_tags.py | 0 {tagstudio/tests => tests}/qt/test_item_thumb.py | 0 {tagstudio/tests => tests}/qt/test_preview_panel.py | 0 {tagstudio/tests => tests}/qt/test_qt_driver.py | 0 {tagstudio/tests => tests}/qt/test_tag_panel.py | 0 .../tests => tests}/qt/test_tag_search_panel.py | 0 .../tests => tests}/qt/test_thumb_renderer.py | 0 {tagstudio/tests => tests}/test_db_migrations.py | 0 {tagstudio/tests => tests}/test_driver.py | 0 {tagstudio/tests => tests}/test_json_migration.py | 0 {tagstudio/tests => tests}/test_library.py | 0 {tagstudio/tests => tests}/test_search.py | 0 {tagstudio/tests => tests}/test_translations.py | 0 250 files changed, 0 insertions(+), 0 deletions(-) rename {tagstudio/src => src/tagstudio}/core/constants.py (100%) rename {tagstudio/src => src/tagstudio}/core/driver.py (100%) rename {tagstudio/src => src/tagstudio}/core/enums.py (100%) rename {tagstudio/src => src/tagstudio}/core/exceptions.py (100%) rename {tagstudio/src => src/tagstudio}/core/field_template.py (100%) rename {tagstudio/src => src/tagstudio}/core/library/__init__.py (100%) rename {tagstudio/src => src/tagstudio}/core/library/alchemy/__init__.py (100%) rename {tagstudio/src => src/tagstudio}/core/library/alchemy/db.py (100%) rename {tagstudio/src => src/tagstudio}/core/library/alchemy/default_color_groups.py (100%) rename {tagstudio/src => src/tagstudio}/core/library/alchemy/enums.py (100%) rename {tagstudio/src => src/tagstudio}/core/library/alchemy/fields.py (100%) rename {tagstudio/src => src/tagstudio}/core/library/alchemy/joins.py (100%) rename {tagstudio/src => src/tagstudio}/core/library/alchemy/library.py (100%) rename {tagstudio/src => src/tagstudio}/core/library/alchemy/models.py (100%) rename {tagstudio/src => src/tagstudio}/core/library/alchemy/visitors.py (100%) rename {tagstudio/src => src/tagstudio}/core/library/json/__init__.py (100%) rename {tagstudio/src => src/tagstudio}/core/library/json/fields.py (100%) rename {tagstudio/src => src/tagstudio}/core/library/json/library.py (100%) rename {tagstudio/src => src/tagstudio}/core/media_types.py (100%) rename {tagstudio/src => src/tagstudio}/core/palette.py (100%) rename {tagstudio/src => src/tagstudio}/core/query_lang/__init__.py (100%) rename {tagstudio/src => src/tagstudio}/core/query_lang/ast.py (100%) rename {tagstudio/src => src/tagstudio}/core/query_lang/parser.py (100%) rename {tagstudio/src => src/tagstudio}/core/query_lang/tokenizer.py (100%) rename {tagstudio/src => src/tagstudio}/core/query_lang/util.py (100%) rename {tagstudio/src => src/tagstudio}/core/singleton.py (100%) rename {tagstudio/src => src/tagstudio}/core/ts_core.py (100%) rename {tagstudio/src => src/tagstudio}/core/utils/dupe_files.py (100%) rename {tagstudio/src => src/tagstudio}/core/utils/encoding.py (100%) rename {tagstudio/src => src/tagstudio}/core/utils/missing_files.py (100%) rename {tagstudio/src => src/tagstudio}/core/utils/refresh_dir.py (100%) rename {tagstudio/src => src/tagstudio}/core/utils/str.py (100%) rename {tagstudio/src => src/tagstudio}/core/utils/web.py (100%) rename tagstudio/tag_studio.py => src/tagstudio/main.py (100%) rename {tagstudio/src => src/tagstudio}/qt/cache_manager.py (100%) rename {tagstudio/src => src/tagstudio}/qt/flowlayout.py (100%) rename {tagstudio/src => src/tagstudio}/qt/helpers/blender_thumbnailer.py (100%) rename {tagstudio/src => src/tagstudio}/qt/helpers/color_overlay.py (100%) rename {tagstudio/src => src/tagstudio}/qt/helpers/custom_runnable.py (100%) rename {tagstudio/src => src/tagstudio}/qt/helpers/escape_text.py (100%) rename {tagstudio/src => src/tagstudio}/qt/helpers/file_deleter.py (100%) rename {tagstudio/src => src/tagstudio}/qt/helpers/file_opener.py (100%) rename {tagstudio/src => src/tagstudio}/qt/helpers/file_tester.py (100%) rename {tagstudio/src => src/tagstudio}/qt/helpers/function_iterator.py (100%) rename {tagstudio/src => src/tagstudio}/qt/helpers/gradient.py (100%) rename {tagstudio/src => src/tagstudio}/qt/helpers/image_effects.py (100%) rename {tagstudio/src => src/tagstudio}/qt/helpers/qbutton_wrapper.py (100%) rename {tagstudio/src => src/tagstudio}/qt/helpers/rounded_pixmap_style.py (100%) rename {tagstudio/src => src/tagstudio}/qt/helpers/silent_popen.py (100%) rename {tagstudio/src => src/tagstudio}/qt/helpers/text_wrapper.py (100%) rename {tagstudio/src => src/tagstudio}/qt/helpers/vendored/ffmpeg.py (100%) rename {tagstudio/src => src/tagstudio}/qt/helpers/vendored/pydub/audio_segment.py (100%) rename {tagstudio/src => src/tagstudio}/qt/helpers/vendored/pydub/utils.py (100%) rename {tagstudio/src => src/tagstudio}/qt/main_window.py (100%) rename {tagstudio/src => src/tagstudio}/qt/modals/about.py (100%) rename {tagstudio/src => src/tagstudio}/qt/modals/add_field.py (100%) rename {tagstudio/src => src/tagstudio}/qt/modals/build_color.py (100%) rename {tagstudio/src => src/tagstudio}/qt/modals/build_namespace.py (100%) rename {tagstudio/src => src/tagstudio}/qt/modals/build_tag.py (100%) rename {tagstudio/src => src/tagstudio}/qt/modals/delete_unlinked.py (100%) rename {tagstudio/src => src/tagstudio}/qt/modals/drop_import.py (100%) rename {tagstudio/src => src/tagstudio}/qt/modals/ffmpeg_checker.py (100%) rename {tagstudio/src => src/tagstudio}/qt/modals/file_extension.py (100%) rename {tagstudio/src => src/tagstudio}/qt/modals/fix_dupes.py (100%) rename {tagstudio/src => src/tagstudio}/qt/modals/fix_unlinked.py (100%) rename {tagstudio/src => src/tagstudio}/qt/modals/folders_to_tags.py (100%) rename {tagstudio/src => src/tagstudio}/qt/modals/merge_dupe_entries.py (100%) rename {tagstudio/src => src/tagstudio}/qt/modals/mirror_entities.py (100%) rename {tagstudio/src => src/tagstudio}/qt/modals/relink_unlinked.py (100%) rename {tagstudio/src => src/tagstudio}/qt/modals/settings_panel.py (100%) rename {tagstudio/src => src/tagstudio}/qt/modals/tag_color_manager.py (100%) rename {tagstudio/src => src/tagstudio}/qt/modals/tag_color_selection.py (100%) rename {tagstudio/src => src/tagstudio}/qt/modals/tag_database.py (100%) rename {tagstudio/src => src/tagstudio}/qt/modals/tag_search.py (100%) rename {tagstudio/src => src/tagstudio}/qt/pagination.py (100%) rename {tagstudio/src => src/tagstudio}/qt/platform_strings.py (100%) rename {tagstudio/src => src/tagstudio}/qt/resource_manager.py (100%) rename {tagstudio/src => src/tagstudio}/qt/resources.json (100%) rename {tagstudio/src => src/tagstudio}/qt/resources.qrc (100%) rename {tagstudio/src => src/tagstudio}/qt/resources_rc.py (100%) rename {tagstudio/src => src/tagstudio}/qt/splash.py (100%) rename {tagstudio/src => src/tagstudio}/qt/translations.py (100%) rename {tagstudio/src => src/tagstudio}/qt/ts_qt.py (100%) rename {tagstudio/src => src/tagstudio}/qt/ui/home.ui (100%) rename {tagstudio/src => src/tagstudio}/qt/ui/home_ui.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/clickable_label.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/collage_icon.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/color_box.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/fields.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/item_thumb.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/landing.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/media_player.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/migration_modal.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/paged_panel/paged_body_wrapper.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/paged_panel/paged_panel.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/paged_panel/paged_panel_state.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/panel.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/preview/field_containers.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/preview/file_attributes.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/preview/preview_thumb.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/preview_panel.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/progress.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/tag.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/tag_box.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/tag_color_label.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/tag_color_preview.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/text.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/text_box_edit.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/text_line_edit.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/thumb_button.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/thumb_renderer.py (100%) rename {tagstudio/src => src/tagstudio}/qt/widgets/video_player.py (100%) rename {tagstudio => src/tagstudio}/resources/icon.icns (100%) rename {tagstudio => src/tagstudio}/resources/icon.ico (100%) rename {tagstudio => src/tagstudio}/resources/icon.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/fonts/Oxanium-Bold.ttf (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/box_icon_empty_128 - Copy.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/box_icon_empty_128.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/box_icon_filled_128 - Copy.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/box_icon_filled_128.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/broken_link_icon.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/clipboard_icon_128.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/collation_icon_128.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/edit_icon_128.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/edit_icon_dark_128.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/file_icons/adobe_illustrator.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/file_icons/adobe_photoshop.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/file_icons/affinity_photo.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/file_icons/audio.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/file_icons/document.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/file_icons/file_generic.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/file_icons/font.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/file_icons/image.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/file_icons/image_vector.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/file_icons/material.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/file_icons/model.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/file_icons/presentation.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/file_icons/program.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/file_icons/spreadsheet.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/file_icons/text.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/file_icons/video.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/pause.svg (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/play.svg (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/splash/classic.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/splash/goo_gears.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/splitter_handle_128.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/star_icon_empty_128 - Copy.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/star_icon_empty_128.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/star_icon_filled_128 - Copy.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/star_icon_filled_128.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/tag_group_icon_128.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/tag_group_icon_dark_128.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/tagstudio_logo_text_mono.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/thumb_loading.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/trash_icon_128.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/trash_icon_dark_128.png (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/volume.svg (100%) rename {tagstudio => src/tagstudio}/resources/qt/images/volume_mute.svg (100%) rename {tagstudio => src/tagstudio}/resources/qt/videos/placeholder.mp4 (100%) rename {tagstudio => src/tagstudio}/resources/translations/cs.json (100%) rename {tagstudio => src/tagstudio}/resources/translations/da.json (100%) rename {tagstudio => src/tagstudio}/resources/translations/de.json (100%) rename {tagstudio => src/tagstudio}/resources/translations/en.json (100%) rename {tagstudio => src/tagstudio}/resources/translations/es.json (100%) rename {tagstudio => src/tagstudio}/resources/translations/fil.json (100%) rename {tagstudio => src/tagstudio}/resources/translations/fr.json (100%) rename {tagstudio => src/tagstudio}/resources/translations/hu.json (100%) rename {tagstudio => src/tagstudio}/resources/translations/it.json (100%) rename {tagstudio => src/tagstudio}/resources/translations/nb_NO.json (100%) rename {tagstudio => src/tagstudio}/resources/translations/nl.json (100%) rename {tagstudio => src/tagstudio}/resources/translations/pl.json (100%) rename {tagstudio => src/tagstudio}/resources/translations/pt.json (100%) rename {tagstudio => src/tagstudio}/resources/translations/pt_BR.json (100%) rename {tagstudio => src/tagstudio}/resources/translations/ru.json (100%) rename {tagstudio => src/tagstudio}/resources/translations/sv.json (100%) rename {tagstudio => src/tagstudio}/resources/translations/ta.json (100%) rename {tagstudio => src/tagstudio}/resources/translations/tok.json (100%) rename {tagstudio => src/tagstudio}/resources/translations/tr.json (100%) rename {tagstudio => src/tagstudio}/resources/translations/yue_Hant.json (100%) rename {tagstudio => src/tagstudio}/resources/translations/zh_Hant.json (100%) rename {tagstudio/tests => tests}/conftest.py (100%) rename {tagstudio/tests => tests}/fixtures/empty_libraries/DB_VERSION_6/.TagStudio/ts_library.sqlite (100%) rename {tagstudio/tests => tests}/fixtures/empty_libraries/DB_VERSION_7/.TagStudio/ts_library.sqlite (100%) rename {tagstudio/tests => tests}/fixtures/empty_libraries/DB_VERSION_8/.TagStudio/ts_library.sqlite (100%) rename {tagstudio/tests => tests}/fixtures/json_library/.TagStudio/ts_library.json (100%) rename {tagstudio/tests => tests}/fixtures/result.dupeguru (100%) rename {tagstudio/tests => tests}/fixtures/sample.epub (100%) rename {tagstudio/tests => tests}/fixtures/sample.ods (100%) rename {tagstudio/tests => tests}/fixtures/sample.odt (100%) rename {tagstudio/tests => tests}/fixtures/sample.pdf (100%) rename {tagstudio/tests => tests}/fixtures/sample.svg (100%) rename {tagstudio/tests => tests}/fixtures/search_library/.TagStudio/ts_library.json (100%) rename {tagstudio/tests => tests}/fixtures/search_library/.TagStudio/ts_library.sqlite (100%) rename {tagstudio/tests => tests}/fixtures/search_library/comp colors shapes/r_circle_b_square.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/comp colors shapes/r_circle_g_square.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/comp colors shapes/r_circle_o_square.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/comp colors shapes/r_circle_r_square.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/comp colors shapes/r_circle_y_square.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/blue.jpg (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/blue_circle.jpg (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/blue_ellipse.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/blue_square.jpg (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/circle.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/ellipse.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/green.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/green_circle.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/green_ellipse.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/green_square.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/orange.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/orange_circle.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/orange_ellipse.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/orange_square.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/red.jpg (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/red_circle.jpg (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/red_ellipse.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/red_square.jpg (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/shape.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/square.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/yellow.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/yellow_circle.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/yellow_ellipse.png (100%) rename {tagstudio/tests => tests}/fixtures/search_library/inherit colors shapes/yellow_square.png (100%) rename {tagstudio/tests => tests}/fixtures/sidecar_newgrounds.json (100%) rename {tagstudio/tests => tests}/macros/test_dupe_entries.py (100%) rename {tagstudio/tests => tests}/macros/test_folders_tags.py (100%) rename {tagstudio/tests => tests}/macros/test_missing_files.py (100%) rename {tagstudio/tests => tests}/macros/test_refresh_dir.py (100%) rename {tagstudio/tests => tests}/macros/test_sidecar.py (100%) rename {tagstudio/tests => tests}/qt/__snapshots__/test_folders_to_tags.ambr (100%) rename {tagstudio/tests => tests}/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.epub-_epub_cover].png (100%) rename {tagstudio/tests => tests}/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.ods-_open_doc_thumb].png (100%) rename {tagstudio/tests => tests}/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.odt-_open_doc_thumb].png (100%) rename {tagstudio/tests => tests}/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.pdf-thumbnailer3].png (100%) rename {tagstudio/tests => tests}/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.svg-thumbnailer4].png (100%) rename {tagstudio/tests => tests}/qt/test_build_tag_panel.py (100%) rename {tagstudio/tests => tests}/qt/test_field_containers.py (100%) rename {tagstudio/tests => tests}/qt/test_flow_widget.py (100%) rename {tagstudio/tests => tests}/qt/test_folders_to_tags.py (100%) rename {tagstudio/tests => tests}/qt/test_item_thumb.py (100%) rename {tagstudio/tests => tests}/qt/test_preview_panel.py (100%) rename {tagstudio/tests => tests}/qt/test_qt_driver.py (100%) rename {tagstudio/tests => tests}/qt/test_tag_panel.py (100%) rename {tagstudio/tests => tests}/qt/test_tag_search_panel.py (100%) rename {tagstudio/tests => tests}/qt/test_thumb_renderer.py (100%) rename {tagstudio/tests => tests}/test_db_migrations.py (100%) rename {tagstudio/tests => tests}/test_driver.py (100%) rename {tagstudio/tests => tests}/test_json_migration.py (100%) rename {tagstudio/tests => tests}/test_library.py (100%) rename {tagstudio/tests => tests}/test_search.py (100%) rename {tagstudio/tests => tests}/test_translations.py (100%) diff --git a/tagstudio/src/core/constants.py b/src/tagstudio/core/constants.py similarity index 100% rename from tagstudio/src/core/constants.py rename to src/tagstudio/core/constants.py diff --git a/tagstudio/src/core/driver.py b/src/tagstudio/core/driver.py similarity index 100% rename from tagstudio/src/core/driver.py rename to src/tagstudio/core/driver.py diff --git a/tagstudio/src/core/enums.py b/src/tagstudio/core/enums.py similarity index 100% rename from tagstudio/src/core/enums.py rename to src/tagstudio/core/enums.py diff --git a/tagstudio/src/core/exceptions.py b/src/tagstudio/core/exceptions.py similarity index 100% rename from tagstudio/src/core/exceptions.py rename to src/tagstudio/core/exceptions.py diff --git a/tagstudio/src/core/field_template.py b/src/tagstudio/core/field_template.py similarity index 100% rename from tagstudio/src/core/field_template.py rename to src/tagstudio/core/field_template.py diff --git a/tagstudio/src/core/library/__init__.py b/src/tagstudio/core/library/__init__.py similarity index 100% rename from tagstudio/src/core/library/__init__.py rename to src/tagstudio/core/library/__init__.py diff --git a/tagstudio/src/core/library/alchemy/__init__.py b/src/tagstudio/core/library/alchemy/__init__.py similarity index 100% rename from tagstudio/src/core/library/alchemy/__init__.py rename to src/tagstudio/core/library/alchemy/__init__.py diff --git a/tagstudio/src/core/library/alchemy/db.py b/src/tagstudio/core/library/alchemy/db.py similarity index 100% rename from tagstudio/src/core/library/alchemy/db.py rename to src/tagstudio/core/library/alchemy/db.py diff --git a/tagstudio/src/core/library/alchemy/default_color_groups.py b/src/tagstudio/core/library/alchemy/default_color_groups.py similarity index 100% rename from tagstudio/src/core/library/alchemy/default_color_groups.py rename to src/tagstudio/core/library/alchemy/default_color_groups.py diff --git a/tagstudio/src/core/library/alchemy/enums.py b/src/tagstudio/core/library/alchemy/enums.py similarity index 100% rename from tagstudio/src/core/library/alchemy/enums.py rename to src/tagstudio/core/library/alchemy/enums.py diff --git a/tagstudio/src/core/library/alchemy/fields.py b/src/tagstudio/core/library/alchemy/fields.py similarity index 100% rename from tagstudio/src/core/library/alchemy/fields.py rename to src/tagstudio/core/library/alchemy/fields.py diff --git a/tagstudio/src/core/library/alchemy/joins.py b/src/tagstudio/core/library/alchemy/joins.py similarity index 100% rename from tagstudio/src/core/library/alchemy/joins.py rename to src/tagstudio/core/library/alchemy/joins.py diff --git a/tagstudio/src/core/library/alchemy/library.py b/src/tagstudio/core/library/alchemy/library.py similarity index 100% rename from tagstudio/src/core/library/alchemy/library.py rename to src/tagstudio/core/library/alchemy/library.py diff --git a/tagstudio/src/core/library/alchemy/models.py b/src/tagstudio/core/library/alchemy/models.py similarity index 100% rename from tagstudio/src/core/library/alchemy/models.py rename to src/tagstudio/core/library/alchemy/models.py diff --git a/tagstudio/src/core/library/alchemy/visitors.py b/src/tagstudio/core/library/alchemy/visitors.py similarity index 100% rename from tagstudio/src/core/library/alchemy/visitors.py rename to src/tagstudio/core/library/alchemy/visitors.py diff --git a/tagstudio/src/core/library/json/__init__.py b/src/tagstudio/core/library/json/__init__.py similarity index 100% rename from tagstudio/src/core/library/json/__init__.py rename to src/tagstudio/core/library/json/__init__.py diff --git a/tagstudio/src/core/library/json/fields.py b/src/tagstudio/core/library/json/fields.py similarity index 100% rename from tagstudio/src/core/library/json/fields.py rename to src/tagstudio/core/library/json/fields.py diff --git a/tagstudio/src/core/library/json/library.py b/src/tagstudio/core/library/json/library.py similarity index 100% rename from tagstudio/src/core/library/json/library.py rename to src/tagstudio/core/library/json/library.py diff --git a/tagstudio/src/core/media_types.py b/src/tagstudio/core/media_types.py similarity index 100% rename from tagstudio/src/core/media_types.py rename to src/tagstudio/core/media_types.py diff --git a/tagstudio/src/core/palette.py b/src/tagstudio/core/palette.py similarity index 100% rename from tagstudio/src/core/palette.py rename to src/tagstudio/core/palette.py diff --git a/tagstudio/src/core/query_lang/__init__.py b/src/tagstudio/core/query_lang/__init__.py similarity index 100% rename from tagstudio/src/core/query_lang/__init__.py rename to src/tagstudio/core/query_lang/__init__.py diff --git a/tagstudio/src/core/query_lang/ast.py b/src/tagstudio/core/query_lang/ast.py similarity index 100% rename from tagstudio/src/core/query_lang/ast.py rename to src/tagstudio/core/query_lang/ast.py diff --git a/tagstudio/src/core/query_lang/parser.py b/src/tagstudio/core/query_lang/parser.py similarity index 100% rename from tagstudio/src/core/query_lang/parser.py rename to src/tagstudio/core/query_lang/parser.py diff --git a/tagstudio/src/core/query_lang/tokenizer.py b/src/tagstudio/core/query_lang/tokenizer.py similarity index 100% rename from tagstudio/src/core/query_lang/tokenizer.py rename to src/tagstudio/core/query_lang/tokenizer.py diff --git a/tagstudio/src/core/query_lang/util.py b/src/tagstudio/core/query_lang/util.py similarity index 100% rename from tagstudio/src/core/query_lang/util.py rename to src/tagstudio/core/query_lang/util.py diff --git a/tagstudio/src/core/singleton.py b/src/tagstudio/core/singleton.py similarity index 100% rename from tagstudio/src/core/singleton.py rename to src/tagstudio/core/singleton.py diff --git a/tagstudio/src/core/ts_core.py b/src/tagstudio/core/ts_core.py similarity index 100% rename from tagstudio/src/core/ts_core.py rename to src/tagstudio/core/ts_core.py diff --git a/tagstudio/src/core/utils/dupe_files.py b/src/tagstudio/core/utils/dupe_files.py similarity index 100% rename from tagstudio/src/core/utils/dupe_files.py rename to src/tagstudio/core/utils/dupe_files.py diff --git a/tagstudio/src/core/utils/encoding.py b/src/tagstudio/core/utils/encoding.py similarity index 100% rename from tagstudio/src/core/utils/encoding.py rename to src/tagstudio/core/utils/encoding.py diff --git a/tagstudio/src/core/utils/missing_files.py b/src/tagstudio/core/utils/missing_files.py similarity index 100% rename from tagstudio/src/core/utils/missing_files.py rename to src/tagstudio/core/utils/missing_files.py diff --git a/tagstudio/src/core/utils/refresh_dir.py b/src/tagstudio/core/utils/refresh_dir.py similarity index 100% rename from tagstudio/src/core/utils/refresh_dir.py rename to src/tagstudio/core/utils/refresh_dir.py diff --git a/tagstudio/src/core/utils/str.py b/src/tagstudio/core/utils/str.py similarity index 100% rename from tagstudio/src/core/utils/str.py rename to src/tagstudio/core/utils/str.py diff --git a/tagstudio/src/core/utils/web.py b/src/tagstudio/core/utils/web.py similarity index 100% rename from tagstudio/src/core/utils/web.py rename to src/tagstudio/core/utils/web.py diff --git a/tagstudio/tag_studio.py b/src/tagstudio/main.py similarity index 100% rename from tagstudio/tag_studio.py rename to src/tagstudio/main.py diff --git a/tagstudio/src/qt/cache_manager.py b/src/tagstudio/qt/cache_manager.py similarity index 100% rename from tagstudio/src/qt/cache_manager.py rename to src/tagstudio/qt/cache_manager.py diff --git a/tagstudio/src/qt/flowlayout.py b/src/tagstudio/qt/flowlayout.py similarity index 100% rename from tagstudio/src/qt/flowlayout.py rename to src/tagstudio/qt/flowlayout.py diff --git a/tagstudio/src/qt/helpers/blender_thumbnailer.py b/src/tagstudio/qt/helpers/blender_thumbnailer.py similarity index 100% rename from tagstudio/src/qt/helpers/blender_thumbnailer.py rename to src/tagstudio/qt/helpers/blender_thumbnailer.py diff --git a/tagstudio/src/qt/helpers/color_overlay.py b/src/tagstudio/qt/helpers/color_overlay.py similarity index 100% rename from tagstudio/src/qt/helpers/color_overlay.py rename to src/tagstudio/qt/helpers/color_overlay.py diff --git a/tagstudio/src/qt/helpers/custom_runnable.py b/src/tagstudio/qt/helpers/custom_runnable.py similarity index 100% rename from tagstudio/src/qt/helpers/custom_runnable.py rename to src/tagstudio/qt/helpers/custom_runnable.py diff --git a/tagstudio/src/qt/helpers/escape_text.py b/src/tagstudio/qt/helpers/escape_text.py similarity index 100% rename from tagstudio/src/qt/helpers/escape_text.py rename to src/tagstudio/qt/helpers/escape_text.py diff --git a/tagstudio/src/qt/helpers/file_deleter.py b/src/tagstudio/qt/helpers/file_deleter.py similarity index 100% rename from tagstudio/src/qt/helpers/file_deleter.py rename to src/tagstudio/qt/helpers/file_deleter.py diff --git a/tagstudio/src/qt/helpers/file_opener.py b/src/tagstudio/qt/helpers/file_opener.py similarity index 100% rename from tagstudio/src/qt/helpers/file_opener.py rename to src/tagstudio/qt/helpers/file_opener.py diff --git a/tagstudio/src/qt/helpers/file_tester.py b/src/tagstudio/qt/helpers/file_tester.py similarity index 100% rename from tagstudio/src/qt/helpers/file_tester.py rename to src/tagstudio/qt/helpers/file_tester.py diff --git a/tagstudio/src/qt/helpers/function_iterator.py b/src/tagstudio/qt/helpers/function_iterator.py similarity index 100% rename from tagstudio/src/qt/helpers/function_iterator.py rename to src/tagstudio/qt/helpers/function_iterator.py diff --git a/tagstudio/src/qt/helpers/gradient.py b/src/tagstudio/qt/helpers/gradient.py similarity index 100% rename from tagstudio/src/qt/helpers/gradient.py rename to src/tagstudio/qt/helpers/gradient.py diff --git a/tagstudio/src/qt/helpers/image_effects.py b/src/tagstudio/qt/helpers/image_effects.py similarity index 100% rename from tagstudio/src/qt/helpers/image_effects.py rename to src/tagstudio/qt/helpers/image_effects.py diff --git a/tagstudio/src/qt/helpers/qbutton_wrapper.py b/src/tagstudio/qt/helpers/qbutton_wrapper.py similarity index 100% rename from tagstudio/src/qt/helpers/qbutton_wrapper.py rename to src/tagstudio/qt/helpers/qbutton_wrapper.py diff --git a/tagstudio/src/qt/helpers/rounded_pixmap_style.py b/src/tagstudio/qt/helpers/rounded_pixmap_style.py similarity index 100% rename from tagstudio/src/qt/helpers/rounded_pixmap_style.py rename to src/tagstudio/qt/helpers/rounded_pixmap_style.py diff --git a/tagstudio/src/qt/helpers/silent_popen.py b/src/tagstudio/qt/helpers/silent_popen.py similarity index 100% rename from tagstudio/src/qt/helpers/silent_popen.py rename to src/tagstudio/qt/helpers/silent_popen.py diff --git a/tagstudio/src/qt/helpers/text_wrapper.py b/src/tagstudio/qt/helpers/text_wrapper.py similarity index 100% rename from tagstudio/src/qt/helpers/text_wrapper.py rename to src/tagstudio/qt/helpers/text_wrapper.py diff --git a/tagstudio/src/qt/helpers/vendored/ffmpeg.py b/src/tagstudio/qt/helpers/vendored/ffmpeg.py similarity index 100% rename from tagstudio/src/qt/helpers/vendored/ffmpeg.py rename to src/tagstudio/qt/helpers/vendored/ffmpeg.py diff --git a/tagstudio/src/qt/helpers/vendored/pydub/audio_segment.py b/src/tagstudio/qt/helpers/vendored/pydub/audio_segment.py similarity index 100% rename from tagstudio/src/qt/helpers/vendored/pydub/audio_segment.py rename to src/tagstudio/qt/helpers/vendored/pydub/audio_segment.py diff --git a/tagstudio/src/qt/helpers/vendored/pydub/utils.py b/src/tagstudio/qt/helpers/vendored/pydub/utils.py similarity index 100% rename from tagstudio/src/qt/helpers/vendored/pydub/utils.py rename to src/tagstudio/qt/helpers/vendored/pydub/utils.py diff --git a/tagstudio/src/qt/main_window.py b/src/tagstudio/qt/main_window.py similarity index 100% rename from tagstudio/src/qt/main_window.py rename to src/tagstudio/qt/main_window.py diff --git a/tagstudio/src/qt/modals/about.py b/src/tagstudio/qt/modals/about.py similarity index 100% rename from tagstudio/src/qt/modals/about.py rename to src/tagstudio/qt/modals/about.py diff --git a/tagstudio/src/qt/modals/add_field.py b/src/tagstudio/qt/modals/add_field.py similarity index 100% rename from tagstudio/src/qt/modals/add_field.py rename to src/tagstudio/qt/modals/add_field.py diff --git a/tagstudio/src/qt/modals/build_color.py b/src/tagstudio/qt/modals/build_color.py similarity index 100% rename from tagstudio/src/qt/modals/build_color.py rename to src/tagstudio/qt/modals/build_color.py diff --git a/tagstudio/src/qt/modals/build_namespace.py b/src/tagstudio/qt/modals/build_namespace.py similarity index 100% rename from tagstudio/src/qt/modals/build_namespace.py rename to src/tagstudio/qt/modals/build_namespace.py diff --git a/tagstudio/src/qt/modals/build_tag.py b/src/tagstudio/qt/modals/build_tag.py similarity index 100% rename from tagstudio/src/qt/modals/build_tag.py rename to src/tagstudio/qt/modals/build_tag.py diff --git a/tagstudio/src/qt/modals/delete_unlinked.py b/src/tagstudio/qt/modals/delete_unlinked.py similarity index 100% rename from tagstudio/src/qt/modals/delete_unlinked.py rename to src/tagstudio/qt/modals/delete_unlinked.py diff --git a/tagstudio/src/qt/modals/drop_import.py b/src/tagstudio/qt/modals/drop_import.py similarity index 100% rename from tagstudio/src/qt/modals/drop_import.py rename to src/tagstudio/qt/modals/drop_import.py diff --git a/tagstudio/src/qt/modals/ffmpeg_checker.py b/src/tagstudio/qt/modals/ffmpeg_checker.py similarity index 100% rename from tagstudio/src/qt/modals/ffmpeg_checker.py rename to src/tagstudio/qt/modals/ffmpeg_checker.py diff --git a/tagstudio/src/qt/modals/file_extension.py b/src/tagstudio/qt/modals/file_extension.py similarity index 100% rename from tagstudio/src/qt/modals/file_extension.py rename to src/tagstudio/qt/modals/file_extension.py diff --git a/tagstudio/src/qt/modals/fix_dupes.py b/src/tagstudio/qt/modals/fix_dupes.py similarity index 100% rename from tagstudio/src/qt/modals/fix_dupes.py rename to src/tagstudio/qt/modals/fix_dupes.py diff --git a/tagstudio/src/qt/modals/fix_unlinked.py b/src/tagstudio/qt/modals/fix_unlinked.py similarity index 100% rename from tagstudio/src/qt/modals/fix_unlinked.py rename to src/tagstudio/qt/modals/fix_unlinked.py diff --git a/tagstudio/src/qt/modals/folders_to_tags.py b/src/tagstudio/qt/modals/folders_to_tags.py similarity index 100% rename from tagstudio/src/qt/modals/folders_to_tags.py rename to src/tagstudio/qt/modals/folders_to_tags.py diff --git a/tagstudio/src/qt/modals/merge_dupe_entries.py b/src/tagstudio/qt/modals/merge_dupe_entries.py similarity index 100% rename from tagstudio/src/qt/modals/merge_dupe_entries.py rename to src/tagstudio/qt/modals/merge_dupe_entries.py diff --git a/tagstudio/src/qt/modals/mirror_entities.py b/src/tagstudio/qt/modals/mirror_entities.py similarity index 100% rename from tagstudio/src/qt/modals/mirror_entities.py rename to src/tagstudio/qt/modals/mirror_entities.py diff --git a/tagstudio/src/qt/modals/relink_unlinked.py b/src/tagstudio/qt/modals/relink_unlinked.py similarity index 100% rename from tagstudio/src/qt/modals/relink_unlinked.py rename to src/tagstudio/qt/modals/relink_unlinked.py diff --git a/tagstudio/src/qt/modals/settings_panel.py b/src/tagstudio/qt/modals/settings_panel.py similarity index 100% rename from tagstudio/src/qt/modals/settings_panel.py rename to src/tagstudio/qt/modals/settings_panel.py diff --git a/tagstudio/src/qt/modals/tag_color_manager.py b/src/tagstudio/qt/modals/tag_color_manager.py similarity index 100% rename from tagstudio/src/qt/modals/tag_color_manager.py rename to src/tagstudio/qt/modals/tag_color_manager.py diff --git a/tagstudio/src/qt/modals/tag_color_selection.py b/src/tagstudio/qt/modals/tag_color_selection.py similarity index 100% rename from tagstudio/src/qt/modals/tag_color_selection.py rename to src/tagstudio/qt/modals/tag_color_selection.py diff --git a/tagstudio/src/qt/modals/tag_database.py b/src/tagstudio/qt/modals/tag_database.py similarity index 100% rename from tagstudio/src/qt/modals/tag_database.py rename to src/tagstudio/qt/modals/tag_database.py diff --git a/tagstudio/src/qt/modals/tag_search.py b/src/tagstudio/qt/modals/tag_search.py similarity index 100% rename from tagstudio/src/qt/modals/tag_search.py rename to src/tagstudio/qt/modals/tag_search.py diff --git a/tagstudio/src/qt/pagination.py b/src/tagstudio/qt/pagination.py similarity index 100% rename from tagstudio/src/qt/pagination.py rename to src/tagstudio/qt/pagination.py diff --git a/tagstudio/src/qt/platform_strings.py b/src/tagstudio/qt/platform_strings.py similarity index 100% rename from tagstudio/src/qt/platform_strings.py rename to src/tagstudio/qt/platform_strings.py diff --git a/tagstudio/src/qt/resource_manager.py b/src/tagstudio/qt/resource_manager.py similarity index 100% rename from tagstudio/src/qt/resource_manager.py rename to src/tagstudio/qt/resource_manager.py diff --git a/tagstudio/src/qt/resources.json b/src/tagstudio/qt/resources.json similarity index 100% rename from tagstudio/src/qt/resources.json rename to src/tagstudio/qt/resources.json diff --git a/tagstudio/src/qt/resources.qrc b/src/tagstudio/qt/resources.qrc similarity index 100% rename from tagstudio/src/qt/resources.qrc rename to src/tagstudio/qt/resources.qrc diff --git a/tagstudio/src/qt/resources_rc.py b/src/tagstudio/qt/resources_rc.py similarity index 100% rename from tagstudio/src/qt/resources_rc.py rename to src/tagstudio/qt/resources_rc.py diff --git a/tagstudio/src/qt/splash.py b/src/tagstudio/qt/splash.py similarity index 100% rename from tagstudio/src/qt/splash.py rename to src/tagstudio/qt/splash.py diff --git a/tagstudio/src/qt/translations.py b/src/tagstudio/qt/translations.py similarity index 100% rename from tagstudio/src/qt/translations.py rename to src/tagstudio/qt/translations.py diff --git a/tagstudio/src/qt/ts_qt.py b/src/tagstudio/qt/ts_qt.py similarity index 100% rename from tagstudio/src/qt/ts_qt.py rename to src/tagstudio/qt/ts_qt.py diff --git a/tagstudio/src/qt/ui/home.ui b/src/tagstudio/qt/ui/home.ui similarity index 100% rename from tagstudio/src/qt/ui/home.ui rename to src/tagstudio/qt/ui/home.ui diff --git a/tagstudio/src/qt/ui/home_ui.py b/src/tagstudio/qt/ui/home_ui.py similarity index 100% rename from tagstudio/src/qt/ui/home_ui.py rename to src/tagstudio/qt/ui/home_ui.py diff --git a/tagstudio/src/qt/widgets/clickable_label.py b/src/tagstudio/qt/widgets/clickable_label.py similarity index 100% rename from tagstudio/src/qt/widgets/clickable_label.py rename to src/tagstudio/qt/widgets/clickable_label.py diff --git a/tagstudio/src/qt/widgets/collage_icon.py b/src/tagstudio/qt/widgets/collage_icon.py similarity index 100% rename from tagstudio/src/qt/widgets/collage_icon.py rename to src/tagstudio/qt/widgets/collage_icon.py diff --git a/tagstudio/src/qt/widgets/color_box.py b/src/tagstudio/qt/widgets/color_box.py similarity index 100% rename from tagstudio/src/qt/widgets/color_box.py rename to src/tagstudio/qt/widgets/color_box.py diff --git a/tagstudio/src/qt/widgets/fields.py b/src/tagstudio/qt/widgets/fields.py similarity index 100% rename from tagstudio/src/qt/widgets/fields.py rename to src/tagstudio/qt/widgets/fields.py diff --git a/tagstudio/src/qt/widgets/item_thumb.py b/src/tagstudio/qt/widgets/item_thumb.py similarity index 100% rename from tagstudio/src/qt/widgets/item_thumb.py rename to src/tagstudio/qt/widgets/item_thumb.py diff --git a/tagstudio/src/qt/widgets/landing.py b/src/tagstudio/qt/widgets/landing.py similarity index 100% rename from tagstudio/src/qt/widgets/landing.py rename to src/tagstudio/qt/widgets/landing.py diff --git a/tagstudio/src/qt/widgets/media_player.py b/src/tagstudio/qt/widgets/media_player.py similarity index 100% rename from tagstudio/src/qt/widgets/media_player.py rename to src/tagstudio/qt/widgets/media_player.py diff --git a/tagstudio/src/qt/widgets/migration_modal.py b/src/tagstudio/qt/widgets/migration_modal.py similarity index 100% rename from tagstudio/src/qt/widgets/migration_modal.py rename to src/tagstudio/qt/widgets/migration_modal.py diff --git a/tagstudio/src/qt/widgets/paged_panel/paged_body_wrapper.py b/src/tagstudio/qt/widgets/paged_panel/paged_body_wrapper.py similarity index 100% rename from tagstudio/src/qt/widgets/paged_panel/paged_body_wrapper.py rename to src/tagstudio/qt/widgets/paged_panel/paged_body_wrapper.py diff --git a/tagstudio/src/qt/widgets/paged_panel/paged_panel.py b/src/tagstudio/qt/widgets/paged_panel/paged_panel.py similarity index 100% rename from tagstudio/src/qt/widgets/paged_panel/paged_panel.py rename to src/tagstudio/qt/widgets/paged_panel/paged_panel.py diff --git a/tagstudio/src/qt/widgets/paged_panel/paged_panel_state.py b/src/tagstudio/qt/widgets/paged_panel/paged_panel_state.py similarity index 100% rename from tagstudio/src/qt/widgets/paged_panel/paged_panel_state.py rename to src/tagstudio/qt/widgets/paged_panel/paged_panel_state.py diff --git a/tagstudio/src/qt/widgets/panel.py b/src/tagstudio/qt/widgets/panel.py similarity index 100% rename from tagstudio/src/qt/widgets/panel.py rename to src/tagstudio/qt/widgets/panel.py diff --git a/tagstudio/src/qt/widgets/preview/field_containers.py b/src/tagstudio/qt/widgets/preview/field_containers.py similarity index 100% rename from tagstudio/src/qt/widgets/preview/field_containers.py rename to src/tagstudio/qt/widgets/preview/field_containers.py diff --git a/tagstudio/src/qt/widgets/preview/file_attributes.py b/src/tagstudio/qt/widgets/preview/file_attributes.py similarity index 100% rename from tagstudio/src/qt/widgets/preview/file_attributes.py rename to src/tagstudio/qt/widgets/preview/file_attributes.py diff --git a/tagstudio/src/qt/widgets/preview/preview_thumb.py b/src/tagstudio/qt/widgets/preview/preview_thumb.py similarity index 100% rename from tagstudio/src/qt/widgets/preview/preview_thumb.py rename to src/tagstudio/qt/widgets/preview/preview_thumb.py diff --git a/tagstudio/src/qt/widgets/preview_panel.py b/src/tagstudio/qt/widgets/preview_panel.py similarity index 100% rename from tagstudio/src/qt/widgets/preview_panel.py rename to src/tagstudio/qt/widgets/preview_panel.py diff --git a/tagstudio/src/qt/widgets/progress.py b/src/tagstudio/qt/widgets/progress.py similarity index 100% rename from tagstudio/src/qt/widgets/progress.py rename to src/tagstudio/qt/widgets/progress.py diff --git a/tagstudio/src/qt/widgets/tag.py b/src/tagstudio/qt/widgets/tag.py similarity index 100% rename from tagstudio/src/qt/widgets/tag.py rename to src/tagstudio/qt/widgets/tag.py diff --git a/tagstudio/src/qt/widgets/tag_box.py b/src/tagstudio/qt/widgets/tag_box.py similarity index 100% rename from tagstudio/src/qt/widgets/tag_box.py rename to src/tagstudio/qt/widgets/tag_box.py diff --git a/tagstudio/src/qt/widgets/tag_color_label.py b/src/tagstudio/qt/widgets/tag_color_label.py similarity index 100% rename from tagstudio/src/qt/widgets/tag_color_label.py rename to src/tagstudio/qt/widgets/tag_color_label.py diff --git a/tagstudio/src/qt/widgets/tag_color_preview.py b/src/tagstudio/qt/widgets/tag_color_preview.py similarity index 100% rename from tagstudio/src/qt/widgets/tag_color_preview.py rename to src/tagstudio/qt/widgets/tag_color_preview.py diff --git a/tagstudio/src/qt/widgets/text.py b/src/tagstudio/qt/widgets/text.py similarity index 100% rename from tagstudio/src/qt/widgets/text.py rename to src/tagstudio/qt/widgets/text.py diff --git a/tagstudio/src/qt/widgets/text_box_edit.py b/src/tagstudio/qt/widgets/text_box_edit.py similarity index 100% rename from tagstudio/src/qt/widgets/text_box_edit.py rename to src/tagstudio/qt/widgets/text_box_edit.py diff --git a/tagstudio/src/qt/widgets/text_line_edit.py b/src/tagstudio/qt/widgets/text_line_edit.py similarity index 100% rename from tagstudio/src/qt/widgets/text_line_edit.py rename to src/tagstudio/qt/widgets/text_line_edit.py diff --git a/tagstudio/src/qt/widgets/thumb_button.py b/src/tagstudio/qt/widgets/thumb_button.py similarity index 100% rename from tagstudio/src/qt/widgets/thumb_button.py rename to src/tagstudio/qt/widgets/thumb_button.py diff --git a/tagstudio/src/qt/widgets/thumb_renderer.py b/src/tagstudio/qt/widgets/thumb_renderer.py similarity index 100% rename from tagstudio/src/qt/widgets/thumb_renderer.py rename to src/tagstudio/qt/widgets/thumb_renderer.py diff --git a/tagstudio/src/qt/widgets/video_player.py b/src/tagstudio/qt/widgets/video_player.py similarity index 100% rename from tagstudio/src/qt/widgets/video_player.py rename to src/tagstudio/qt/widgets/video_player.py diff --git a/tagstudio/resources/icon.icns b/src/tagstudio/resources/icon.icns similarity index 100% rename from tagstudio/resources/icon.icns rename to src/tagstudio/resources/icon.icns diff --git a/tagstudio/resources/icon.ico b/src/tagstudio/resources/icon.ico similarity index 100% rename from tagstudio/resources/icon.ico rename to src/tagstudio/resources/icon.ico diff --git a/tagstudio/resources/icon.png b/src/tagstudio/resources/icon.png similarity index 100% rename from tagstudio/resources/icon.png rename to src/tagstudio/resources/icon.png diff --git a/tagstudio/resources/qt/fonts/Oxanium-Bold.ttf b/src/tagstudio/resources/qt/fonts/Oxanium-Bold.ttf similarity index 100% rename from tagstudio/resources/qt/fonts/Oxanium-Bold.ttf rename to src/tagstudio/resources/qt/fonts/Oxanium-Bold.ttf diff --git a/tagstudio/resources/qt/images/box_icon_empty_128 - Copy.png b/src/tagstudio/resources/qt/images/box_icon_empty_128 - Copy.png similarity index 100% rename from tagstudio/resources/qt/images/box_icon_empty_128 - Copy.png rename to src/tagstudio/resources/qt/images/box_icon_empty_128 - Copy.png diff --git a/tagstudio/resources/qt/images/box_icon_empty_128.png b/src/tagstudio/resources/qt/images/box_icon_empty_128.png similarity index 100% rename from tagstudio/resources/qt/images/box_icon_empty_128.png rename to src/tagstudio/resources/qt/images/box_icon_empty_128.png diff --git a/tagstudio/resources/qt/images/box_icon_filled_128 - Copy.png b/src/tagstudio/resources/qt/images/box_icon_filled_128 - Copy.png similarity index 100% rename from tagstudio/resources/qt/images/box_icon_filled_128 - Copy.png rename to src/tagstudio/resources/qt/images/box_icon_filled_128 - Copy.png diff --git a/tagstudio/resources/qt/images/box_icon_filled_128.png b/src/tagstudio/resources/qt/images/box_icon_filled_128.png similarity index 100% rename from tagstudio/resources/qt/images/box_icon_filled_128.png rename to src/tagstudio/resources/qt/images/box_icon_filled_128.png diff --git a/tagstudio/resources/qt/images/broken_link_icon.png b/src/tagstudio/resources/qt/images/broken_link_icon.png similarity index 100% rename from tagstudio/resources/qt/images/broken_link_icon.png rename to src/tagstudio/resources/qt/images/broken_link_icon.png diff --git a/tagstudio/resources/qt/images/clipboard_icon_128.png b/src/tagstudio/resources/qt/images/clipboard_icon_128.png similarity index 100% rename from tagstudio/resources/qt/images/clipboard_icon_128.png rename to src/tagstudio/resources/qt/images/clipboard_icon_128.png diff --git a/tagstudio/resources/qt/images/collation_icon_128.png b/src/tagstudio/resources/qt/images/collation_icon_128.png similarity index 100% rename from tagstudio/resources/qt/images/collation_icon_128.png rename to src/tagstudio/resources/qt/images/collation_icon_128.png diff --git a/tagstudio/resources/qt/images/edit_icon_128.png b/src/tagstudio/resources/qt/images/edit_icon_128.png similarity index 100% rename from tagstudio/resources/qt/images/edit_icon_128.png rename to src/tagstudio/resources/qt/images/edit_icon_128.png diff --git a/tagstudio/resources/qt/images/edit_icon_dark_128.png b/src/tagstudio/resources/qt/images/edit_icon_dark_128.png similarity index 100% rename from tagstudio/resources/qt/images/edit_icon_dark_128.png rename to src/tagstudio/resources/qt/images/edit_icon_dark_128.png diff --git a/tagstudio/resources/qt/images/file_icons/adobe_illustrator.png b/src/tagstudio/resources/qt/images/file_icons/adobe_illustrator.png similarity index 100% rename from tagstudio/resources/qt/images/file_icons/adobe_illustrator.png rename to src/tagstudio/resources/qt/images/file_icons/adobe_illustrator.png diff --git a/tagstudio/resources/qt/images/file_icons/adobe_photoshop.png b/src/tagstudio/resources/qt/images/file_icons/adobe_photoshop.png similarity index 100% rename from tagstudio/resources/qt/images/file_icons/adobe_photoshop.png rename to src/tagstudio/resources/qt/images/file_icons/adobe_photoshop.png diff --git a/tagstudio/resources/qt/images/file_icons/affinity_photo.png b/src/tagstudio/resources/qt/images/file_icons/affinity_photo.png similarity index 100% rename from tagstudio/resources/qt/images/file_icons/affinity_photo.png rename to src/tagstudio/resources/qt/images/file_icons/affinity_photo.png diff --git a/tagstudio/resources/qt/images/file_icons/audio.png b/src/tagstudio/resources/qt/images/file_icons/audio.png similarity index 100% rename from tagstudio/resources/qt/images/file_icons/audio.png rename to src/tagstudio/resources/qt/images/file_icons/audio.png diff --git a/tagstudio/resources/qt/images/file_icons/document.png b/src/tagstudio/resources/qt/images/file_icons/document.png similarity index 100% rename from tagstudio/resources/qt/images/file_icons/document.png rename to src/tagstudio/resources/qt/images/file_icons/document.png diff --git a/tagstudio/resources/qt/images/file_icons/file_generic.png b/src/tagstudio/resources/qt/images/file_icons/file_generic.png similarity index 100% rename from tagstudio/resources/qt/images/file_icons/file_generic.png rename to src/tagstudio/resources/qt/images/file_icons/file_generic.png diff --git a/tagstudio/resources/qt/images/file_icons/font.png b/src/tagstudio/resources/qt/images/file_icons/font.png similarity index 100% rename from tagstudio/resources/qt/images/file_icons/font.png rename to src/tagstudio/resources/qt/images/file_icons/font.png diff --git a/tagstudio/resources/qt/images/file_icons/image.png b/src/tagstudio/resources/qt/images/file_icons/image.png similarity index 100% rename from tagstudio/resources/qt/images/file_icons/image.png rename to src/tagstudio/resources/qt/images/file_icons/image.png diff --git a/tagstudio/resources/qt/images/file_icons/image_vector.png b/src/tagstudio/resources/qt/images/file_icons/image_vector.png similarity index 100% rename from tagstudio/resources/qt/images/file_icons/image_vector.png rename to src/tagstudio/resources/qt/images/file_icons/image_vector.png diff --git a/tagstudio/resources/qt/images/file_icons/material.png b/src/tagstudio/resources/qt/images/file_icons/material.png similarity index 100% rename from tagstudio/resources/qt/images/file_icons/material.png rename to src/tagstudio/resources/qt/images/file_icons/material.png diff --git a/tagstudio/resources/qt/images/file_icons/model.png b/src/tagstudio/resources/qt/images/file_icons/model.png similarity index 100% rename from tagstudio/resources/qt/images/file_icons/model.png rename to src/tagstudio/resources/qt/images/file_icons/model.png diff --git a/tagstudio/resources/qt/images/file_icons/presentation.png b/src/tagstudio/resources/qt/images/file_icons/presentation.png similarity index 100% rename from tagstudio/resources/qt/images/file_icons/presentation.png rename to src/tagstudio/resources/qt/images/file_icons/presentation.png diff --git a/tagstudio/resources/qt/images/file_icons/program.png b/src/tagstudio/resources/qt/images/file_icons/program.png similarity index 100% rename from tagstudio/resources/qt/images/file_icons/program.png rename to src/tagstudio/resources/qt/images/file_icons/program.png diff --git a/tagstudio/resources/qt/images/file_icons/spreadsheet.png b/src/tagstudio/resources/qt/images/file_icons/spreadsheet.png similarity index 100% rename from tagstudio/resources/qt/images/file_icons/spreadsheet.png rename to src/tagstudio/resources/qt/images/file_icons/spreadsheet.png diff --git a/tagstudio/resources/qt/images/file_icons/text.png b/src/tagstudio/resources/qt/images/file_icons/text.png similarity index 100% rename from tagstudio/resources/qt/images/file_icons/text.png rename to src/tagstudio/resources/qt/images/file_icons/text.png diff --git a/tagstudio/resources/qt/images/file_icons/video.png b/src/tagstudio/resources/qt/images/file_icons/video.png similarity index 100% rename from tagstudio/resources/qt/images/file_icons/video.png rename to src/tagstudio/resources/qt/images/file_icons/video.png diff --git a/tagstudio/resources/qt/images/pause.svg b/src/tagstudio/resources/qt/images/pause.svg similarity index 100% rename from tagstudio/resources/qt/images/pause.svg rename to src/tagstudio/resources/qt/images/pause.svg diff --git a/tagstudio/resources/qt/images/play.svg b/src/tagstudio/resources/qt/images/play.svg similarity index 100% rename from tagstudio/resources/qt/images/play.svg rename to src/tagstudio/resources/qt/images/play.svg diff --git a/tagstudio/resources/qt/images/splash/classic.png b/src/tagstudio/resources/qt/images/splash/classic.png similarity index 100% rename from tagstudio/resources/qt/images/splash/classic.png rename to src/tagstudio/resources/qt/images/splash/classic.png diff --git a/tagstudio/resources/qt/images/splash/goo_gears.png b/src/tagstudio/resources/qt/images/splash/goo_gears.png similarity index 100% rename from tagstudio/resources/qt/images/splash/goo_gears.png rename to src/tagstudio/resources/qt/images/splash/goo_gears.png diff --git a/tagstudio/resources/qt/images/splitter_handle_128.png b/src/tagstudio/resources/qt/images/splitter_handle_128.png similarity index 100% rename from tagstudio/resources/qt/images/splitter_handle_128.png rename to src/tagstudio/resources/qt/images/splitter_handle_128.png diff --git a/tagstudio/resources/qt/images/star_icon_empty_128 - Copy.png b/src/tagstudio/resources/qt/images/star_icon_empty_128 - Copy.png similarity index 100% rename from tagstudio/resources/qt/images/star_icon_empty_128 - Copy.png rename to src/tagstudio/resources/qt/images/star_icon_empty_128 - Copy.png diff --git a/tagstudio/resources/qt/images/star_icon_empty_128.png b/src/tagstudio/resources/qt/images/star_icon_empty_128.png similarity index 100% rename from tagstudio/resources/qt/images/star_icon_empty_128.png rename to src/tagstudio/resources/qt/images/star_icon_empty_128.png diff --git a/tagstudio/resources/qt/images/star_icon_filled_128 - Copy.png b/src/tagstudio/resources/qt/images/star_icon_filled_128 - Copy.png similarity index 100% rename from tagstudio/resources/qt/images/star_icon_filled_128 - Copy.png rename to src/tagstudio/resources/qt/images/star_icon_filled_128 - Copy.png diff --git a/tagstudio/resources/qt/images/star_icon_filled_128.png b/src/tagstudio/resources/qt/images/star_icon_filled_128.png similarity index 100% rename from tagstudio/resources/qt/images/star_icon_filled_128.png rename to src/tagstudio/resources/qt/images/star_icon_filled_128.png diff --git a/tagstudio/resources/qt/images/tag_group_icon_128.png b/src/tagstudio/resources/qt/images/tag_group_icon_128.png similarity index 100% rename from tagstudio/resources/qt/images/tag_group_icon_128.png rename to src/tagstudio/resources/qt/images/tag_group_icon_128.png diff --git a/tagstudio/resources/qt/images/tag_group_icon_dark_128.png b/src/tagstudio/resources/qt/images/tag_group_icon_dark_128.png similarity index 100% rename from tagstudio/resources/qt/images/tag_group_icon_dark_128.png rename to src/tagstudio/resources/qt/images/tag_group_icon_dark_128.png diff --git a/tagstudio/resources/qt/images/tagstudio_logo_text_mono.png b/src/tagstudio/resources/qt/images/tagstudio_logo_text_mono.png similarity index 100% rename from tagstudio/resources/qt/images/tagstudio_logo_text_mono.png rename to src/tagstudio/resources/qt/images/tagstudio_logo_text_mono.png diff --git a/tagstudio/resources/qt/images/thumb_loading.png b/src/tagstudio/resources/qt/images/thumb_loading.png similarity index 100% rename from tagstudio/resources/qt/images/thumb_loading.png rename to src/tagstudio/resources/qt/images/thumb_loading.png diff --git a/tagstudio/resources/qt/images/trash_icon_128.png b/src/tagstudio/resources/qt/images/trash_icon_128.png similarity index 100% rename from tagstudio/resources/qt/images/trash_icon_128.png rename to src/tagstudio/resources/qt/images/trash_icon_128.png diff --git a/tagstudio/resources/qt/images/trash_icon_dark_128.png b/src/tagstudio/resources/qt/images/trash_icon_dark_128.png similarity index 100% rename from tagstudio/resources/qt/images/trash_icon_dark_128.png rename to src/tagstudio/resources/qt/images/trash_icon_dark_128.png diff --git a/tagstudio/resources/qt/images/volume.svg b/src/tagstudio/resources/qt/images/volume.svg similarity index 100% rename from tagstudio/resources/qt/images/volume.svg rename to src/tagstudio/resources/qt/images/volume.svg diff --git a/tagstudio/resources/qt/images/volume_mute.svg b/src/tagstudio/resources/qt/images/volume_mute.svg similarity index 100% rename from tagstudio/resources/qt/images/volume_mute.svg rename to src/tagstudio/resources/qt/images/volume_mute.svg diff --git a/tagstudio/resources/qt/videos/placeholder.mp4 b/src/tagstudio/resources/qt/videos/placeholder.mp4 similarity index 100% rename from tagstudio/resources/qt/videos/placeholder.mp4 rename to src/tagstudio/resources/qt/videos/placeholder.mp4 diff --git a/tagstudio/resources/translations/cs.json b/src/tagstudio/resources/translations/cs.json similarity index 100% rename from tagstudio/resources/translations/cs.json rename to src/tagstudio/resources/translations/cs.json diff --git a/tagstudio/resources/translations/da.json b/src/tagstudio/resources/translations/da.json similarity index 100% rename from tagstudio/resources/translations/da.json rename to src/tagstudio/resources/translations/da.json diff --git a/tagstudio/resources/translations/de.json b/src/tagstudio/resources/translations/de.json similarity index 100% rename from tagstudio/resources/translations/de.json rename to src/tagstudio/resources/translations/de.json diff --git a/tagstudio/resources/translations/en.json b/src/tagstudio/resources/translations/en.json similarity index 100% rename from tagstudio/resources/translations/en.json rename to src/tagstudio/resources/translations/en.json diff --git a/tagstudio/resources/translations/es.json b/src/tagstudio/resources/translations/es.json similarity index 100% rename from tagstudio/resources/translations/es.json rename to src/tagstudio/resources/translations/es.json diff --git a/tagstudio/resources/translations/fil.json b/src/tagstudio/resources/translations/fil.json similarity index 100% rename from tagstudio/resources/translations/fil.json rename to src/tagstudio/resources/translations/fil.json diff --git a/tagstudio/resources/translations/fr.json b/src/tagstudio/resources/translations/fr.json similarity index 100% rename from tagstudio/resources/translations/fr.json rename to src/tagstudio/resources/translations/fr.json diff --git a/tagstudio/resources/translations/hu.json b/src/tagstudio/resources/translations/hu.json similarity index 100% rename from tagstudio/resources/translations/hu.json rename to src/tagstudio/resources/translations/hu.json diff --git a/tagstudio/resources/translations/it.json b/src/tagstudio/resources/translations/it.json similarity index 100% rename from tagstudio/resources/translations/it.json rename to src/tagstudio/resources/translations/it.json diff --git a/tagstudio/resources/translations/nb_NO.json b/src/tagstudio/resources/translations/nb_NO.json similarity index 100% rename from tagstudio/resources/translations/nb_NO.json rename to src/tagstudio/resources/translations/nb_NO.json diff --git a/tagstudio/resources/translations/nl.json b/src/tagstudio/resources/translations/nl.json similarity index 100% rename from tagstudio/resources/translations/nl.json rename to src/tagstudio/resources/translations/nl.json diff --git a/tagstudio/resources/translations/pl.json b/src/tagstudio/resources/translations/pl.json similarity index 100% rename from tagstudio/resources/translations/pl.json rename to src/tagstudio/resources/translations/pl.json diff --git a/tagstudio/resources/translations/pt.json b/src/tagstudio/resources/translations/pt.json similarity index 100% rename from tagstudio/resources/translations/pt.json rename to src/tagstudio/resources/translations/pt.json diff --git a/tagstudio/resources/translations/pt_BR.json b/src/tagstudio/resources/translations/pt_BR.json similarity index 100% rename from tagstudio/resources/translations/pt_BR.json rename to src/tagstudio/resources/translations/pt_BR.json diff --git a/tagstudio/resources/translations/ru.json b/src/tagstudio/resources/translations/ru.json similarity index 100% rename from tagstudio/resources/translations/ru.json rename to src/tagstudio/resources/translations/ru.json diff --git a/tagstudio/resources/translations/sv.json b/src/tagstudio/resources/translations/sv.json similarity index 100% rename from tagstudio/resources/translations/sv.json rename to src/tagstudio/resources/translations/sv.json diff --git a/tagstudio/resources/translations/ta.json b/src/tagstudio/resources/translations/ta.json similarity index 100% rename from tagstudio/resources/translations/ta.json rename to src/tagstudio/resources/translations/ta.json diff --git a/tagstudio/resources/translations/tok.json b/src/tagstudio/resources/translations/tok.json similarity index 100% rename from tagstudio/resources/translations/tok.json rename to src/tagstudio/resources/translations/tok.json diff --git a/tagstudio/resources/translations/tr.json b/src/tagstudio/resources/translations/tr.json similarity index 100% rename from tagstudio/resources/translations/tr.json rename to src/tagstudio/resources/translations/tr.json diff --git a/tagstudio/resources/translations/yue_Hant.json b/src/tagstudio/resources/translations/yue_Hant.json similarity index 100% rename from tagstudio/resources/translations/yue_Hant.json rename to src/tagstudio/resources/translations/yue_Hant.json diff --git a/tagstudio/resources/translations/zh_Hant.json b/src/tagstudio/resources/translations/zh_Hant.json similarity index 100% rename from tagstudio/resources/translations/zh_Hant.json rename to src/tagstudio/resources/translations/zh_Hant.json diff --git a/tagstudio/tests/conftest.py b/tests/conftest.py similarity index 100% rename from tagstudio/tests/conftest.py rename to tests/conftest.py diff --git a/tagstudio/tests/fixtures/empty_libraries/DB_VERSION_6/.TagStudio/ts_library.sqlite b/tests/fixtures/empty_libraries/DB_VERSION_6/.TagStudio/ts_library.sqlite similarity index 100% rename from tagstudio/tests/fixtures/empty_libraries/DB_VERSION_6/.TagStudio/ts_library.sqlite rename to tests/fixtures/empty_libraries/DB_VERSION_6/.TagStudio/ts_library.sqlite diff --git a/tagstudio/tests/fixtures/empty_libraries/DB_VERSION_7/.TagStudio/ts_library.sqlite b/tests/fixtures/empty_libraries/DB_VERSION_7/.TagStudio/ts_library.sqlite similarity index 100% rename from tagstudio/tests/fixtures/empty_libraries/DB_VERSION_7/.TagStudio/ts_library.sqlite rename to tests/fixtures/empty_libraries/DB_VERSION_7/.TagStudio/ts_library.sqlite diff --git a/tagstudio/tests/fixtures/empty_libraries/DB_VERSION_8/.TagStudio/ts_library.sqlite b/tests/fixtures/empty_libraries/DB_VERSION_8/.TagStudio/ts_library.sqlite similarity index 100% rename from tagstudio/tests/fixtures/empty_libraries/DB_VERSION_8/.TagStudio/ts_library.sqlite rename to tests/fixtures/empty_libraries/DB_VERSION_8/.TagStudio/ts_library.sqlite diff --git a/tagstudio/tests/fixtures/json_library/.TagStudio/ts_library.json b/tests/fixtures/json_library/.TagStudio/ts_library.json similarity index 100% rename from tagstudio/tests/fixtures/json_library/.TagStudio/ts_library.json rename to tests/fixtures/json_library/.TagStudio/ts_library.json diff --git a/tagstudio/tests/fixtures/result.dupeguru b/tests/fixtures/result.dupeguru similarity index 100% rename from tagstudio/tests/fixtures/result.dupeguru rename to tests/fixtures/result.dupeguru diff --git a/tagstudio/tests/fixtures/sample.epub b/tests/fixtures/sample.epub similarity index 100% rename from tagstudio/tests/fixtures/sample.epub rename to tests/fixtures/sample.epub diff --git a/tagstudio/tests/fixtures/sample.ods b/tests/fixtures/sample.ods similarity index 100% rename from tagstudio/tests/fixtures/sample.ods rename to tests/fixtures/sample.ods diff --git a/tagstudio/tests/fixtures/sample.odt b/tests/fixtures/sample.odt similarity index 100% rename from tagstudio/tests/fixtures/sample.odt rename to tests/fixtures/sample.odt diff --git a/tagstudio/tests/fixtures/sample.pdf b/tests/fixtures/sample.pdf similarity index 100% rename from tagstudio/tests/fixtures/sample.pdf rename to tests/fixtures/sample.pdf diff --git a/tagstudio/tests/fixtures/sample.svg b/tests/fixtures/sample.svg similarity index 100% rename from tagstudio/tests/fixtures/sample.svg rename to tests/fixtures/sample.svg diff --git a/tagstudio/tests/fixtures/search_library/.TagStudio/ts_library.json b/tests/fixtures/search_library/.TagStudio/ts_library.json similarity index 100% rename from tagstudio/tests/fixtures/search_library/.TagStudio/ts_library.json rename to tests/fixtures/search_library/.TagStudio/ts_library.json diff --git a/tagstudio/tests/fixtures/search_library/.TagStudio/ts_library.sqlite b/tests/fixtures/search_library/.TagStudio/ts_library.sqlite similarity index 100% rename from tagstudio/tests/fixtures/search_library/.TagStudio/ts_library.sqlite rename to tests/fixtures/search_library/.TagStudio/ts_library.sqlite diff --git a/tagstudio/tests/fixtures/search_library/comp colors shapes/r_circle_b_square.png b/tests/fixtures/search_library/comp colors shapes/r_circle_b_square.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/comp colors shapes/r_circle_b_square.png rename to tests/fixtures/search_library/comp colors shapes/r_circle_b_square.png diff --git a/tagstudio/tests/fixtures/search_library/comp colors shapes/r_circle_g_square.png b/tests/fixtures/search_library/comp colors shapes/r_circle_g_square.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/comp colors shapes/r_circle_g_square.png rename to tests/fixtures/search_library/comp colors shapes/r_circle_g_square.png diff --git a/tagstudio/tests/fixtures/search_library/comp colors shapes/r_circle_o_square.png b/tests/fixtures/search_library/comp colors shapes/r_circle_o_square.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/comp colors shapes/r_circle_o_square.png rename to tests/fixtures/search_library/comp colors shapes/r_circle_o_square.png diff --git a/tagstudio/tests/fixtures/search_library/comp colors shapes/r_circle_r_square.png b/tests/fixtures/search_library/comp colors shapes/r_circle_r_square.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/comp colors shapes/r_circle_r_square.png rename to tests/fixtures/search_library/comp colors shapes/r_circle_r_square.png diff --git a/tagstudio/tests/fixtures/search_library/comp colors shapes/r_circle_y_square.png b/tests/fixtures/search_library/comp colors shapes/r_circle_y_square.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/comp colors shapes/r_circle_y_square.png rename to tests/fixtures/search_library/comp colors shapes/r_circle_y_square.png diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/blue.jpg b/tests/fixtures/search_library/inherit colors shapes/blue.jpg similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/blue.jpg rename to tests/fixtures/search_library/inherit colors shapes/blue.jpg diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/blue_circle.jpg b/tests/fixtures/search_library/inherit colors shapes/blue_circle.jpg similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/blue_circle.jpg rename to tests/fixtures/search_library/inherit colors shapes/blue_circle.jpg diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/blue_ellipse.png b/tests/fixtures/search_library/inherit colors shapes/blue_ellipse.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/blue_ellipse.png rename to tests/fixtures/search_library/inherit colors shapes/blue_ellipse.png diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/blue_square.jpg b/tests/fixtures/search_library/inherit colors shapes/blue_square.jpg similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/blue_square.jpg rename to tests/fixtures/search_library/inherit colors shapes/blue_square.jpg diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/circle.png b/tests/fixtures/search_library/inherit colors shapes/circle.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/circle.png rename to tests/fixtures/search_library/inherit colors shapes/circle.png diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/ellipse.png b/tests/fixtures/search_library/inherit colors shapes/ellipse.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/ellipse.png rename to tests/fixtures/search_library/inherit colors shapes/ellipse.png diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/green.png b/tests/fixtures/search_library/inherit colors shapes/green.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/green.png rename to tests/fixtures/search_library/inherit colors shapes/green.png diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/green_circle.png b/tests/fixtures/search_library/inherit colors shapes/green_circle.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/green_circle.png rename to tests/fixtures/search_library/inherit colors shapes/green_circle.png diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/green_ellipse.png b/tests/fixtures/search_library/inherit colors shapes/green_ellipse.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/green_ellipse.png rename to tests/fixtures/search_library/inherit colors shapes/green_ellipse.png diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/green_square.png b/tests/fixtures/search_library/inherit colors shapes/green_square.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/green_square.png rename to tests/fixtures/search_library/inherit colors shapes/green_square.png diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/orange.png b/tests/fixtures/search_library/inherit colors shapes/orange.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/orange.png rename to tests/fixtures/search_library/inherit colors shapes/orange.png diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/orange_circle.png b/tests/fixtures/search_library/inherit colors shapes/orange_circle.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/orange_circle.png rename to tests/fixtures/search_library/inherit colors shapes/orange_circle.png diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/orange_ellipse.png b/tests/fixtures/search_library/inherit colors shapes/orange_ellipse.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/orange_ellipse.png rename to tests/fixtures/search_library/inherit colors shapes/orange_ellipse.png diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/orange_square.png b/tests/fixtures/search_library/inherit colors shapes/orange_square.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/orange_square.png rename to tests/fixtures/search_library/inherit colors shapes/orange_square.png diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/red.jpg b/tests/fixtures/search_library/inherit colors shapes/red.jpg similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/red.jpg rename to tests/fixtures/search_library/inherit colors shapes/red.jpg diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/red_circle.jpg b/tests/fixtures/search_library/inherit colors shapes/red_circle.jpg similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/red_circle.jpg rename to tests/fixtures/search_library/inherit colors shapes/red_circle.jpg diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/red_ellipse.png b/tests/fixtures/search_library/inherit colors shapes/red_ellipse.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/red_ellipse.png rename to tests/fixtures/search_library/inherit colors shapes/red_ellipse.png diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/red_square.jpg b/tests/fixtures/search_library/inherit colors shapes/red_square.jpg similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/red_square.jpg rename to tests/fixtures/search_library/inherit colors shapes/red_square.jpg diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/shape.png b/tests/fixtures/search_library/inherit colors shapes/shape.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/shape.png rename to tests/fixtures/search_library/inherit colors shapes/shape.png diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/square.png b/tests/fixtures/search_library/inherit colors shapes/square.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/square.png rename to tests/fixtures/search_library/inherit colors shapes/square.png diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/yellow.png b/tests/fixtures/search_library/inherit colors shapes/yellow.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/yellow.png rename to tests/fixtures/search_library/inherit colors shapes/yellow.png diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/yellow_circle.png b/tests/fixtures/search_library/inherit colors shapes/yellow_circle.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/yellow_circle.png rename to tests/fixtures/search_library/inherit colors shapes/yellow_circle.png diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/yellow_ellipse.png b/tests/fixtures/search_library/inherit colors shapes/yellow_ellipse.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/yellow_ellipse.png rename to tests/fixtures/search_library/inherit colors shapes/yellow_ellipse.png diff --git a/tagstudio/tests/fixtures/search_library/inherit colors shapes/yellow_square.png b/tests/fixtures/search_library/inherit colors shapes/yellow_square.png similarity index 100% rename from tagstudio/tests/fixtures/search_library/inherit colors shapes/yellow_square.png rename to tests/fixtures/search_library/inherit colors shapes/yellow_square.png diff --git a/tagstudio/tests/fixtures/sidecar_newgrounds.json b/tests/fixtures/sidecar_newgrounds.json similarity index 100% rename from tagstudio/tests/fixtures/sidecar_newgrounds.json rename to tests/fixtures/sidecar_newgrounds.json diff --git a/tagstudio/tests/macros/test_dupe_entries.py b/tests/macros/test_dupe_entries.py similarity index 100% rename from tagstudio/tests/macros/test_dupe_entries.py rename to tests/macros/test_dupe_entries.py diff --git a/tagstudio/tests/macros/test_folders_tags.py b/tests/macros/test_folders_tags.py similarity index 100% rename from tagstudio/tests/macros/test_folders_tags.py rename to tests/macros/test_folders_tags.py diff --git a/tagstudio/tests/macros/test_missing_files.py b/tests/macros/test_missing_files.py similarity index 100% rename from tagstudio/tests/macros/test_missing_files.py rename to tests/macros/test_missing_files.py diff --git a/tagstudio/tests/macros/test_refresh_dir.py b/tests/macros/test_refresh_dir.py similarity index 100% rename from tagstudio/tests/macros/test_refresh_dir.py rename to tests/macros/test_refresh_dir.py diff --git a/tagstudio/tests/macros/test_sidecar.py b/tests/macros/test_sidecar.py similarity index 100% rename from tagstudio/tests/macros/test_sidecar.py rename to tests/macros/test_sidecar.py diff --git a/tagstudio/tests/qt/__snapshots__/test_folders_to_tags.ambr b/tests/qt/__snapshots__/test_folders_to_tags.ambr similarity index 100% rename from tagstudio/tests/qt/__snapshots__/test_folders_to_tags.ambr rename to tests/qt/__snapshots__/test_folders_to_tags.ambr diff --git a/tagstudio/tests/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.epub-_epub_cover].png b/tests/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.epub-_epub_cover].png similarity index 100% rename from tagstudio/tests/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.epub-_epub_cover].png rename to tests/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.epub-_epub_cover].png diff --git a/tagstudio/tests/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.ods-_open_doc_thumb].png b/tests/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.ods-_open_doc_thumb].png similarity index 100% rename from tagstudio/tests/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.ods-_open_doc_thumb].png rename to tests/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.ods-_open_doc_thumb].png diff --git a/tagstudio/tests/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.odt-_open_doc_thumb].png b/tests/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.odt-_open_doc_thumb].png similarity index 100% rename from tagstudio/tests/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.odt-_open_doc_thumb].png rename to tests/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.odt-_open_doc_thumb].png diff --git a/tagstudio/tests/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.pdf-thumbnailer3].png b/tests/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.pdf-thumbnailer3].png similarity index 100% rename from tagstudio/tests/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.pdf-thumbnailer3].png rename to tests/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.pdf-thumbnailer3].png diff --git a/tagstudio/tests/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.svg-thumbnailer4].png b/tests/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.svg-thumbnailer4].png similarity index 100% rename from tagstudio/tests/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.svg-thumbnailer4].png rename to tests/qt/__snapshots__/test_thumb_renderer/test_preview_render[sample.svg-thumbnailer4].png diff --git a/tagstudio/tests/qt/test_build_tag_panel.py b/tests/qt/test_build_tag_panel.py similarity index 100% rename from tagstudio/tests/qt/test_build_tag_panel.py rename to tests/qt/test_build_tag_panel.py diff --git a/tagstudio/tests/qt/test_field_containers.py b/tests/qt/test_field_containers.py similarity index 100% rename from tagstudio/tests/qt/test_field_containers.py rename to tests/qt/test_field_containers.py diff --git a/tagstudio/tests/qt/test_flow_widget.py b/tests/qt/test_flow_widget.py similarity index 100% rename from tagstudio/tests/qt/test_flow_widget.py rename to tests/qt/test_flow_widget.py diff --git a/tagstudio/tests/qt/test_folders_to_tags.py b/tests/qt/test_folders_to_tags.py similarity index 100% rename from tagstudio/tests/qt/test_folders_to_tags.py rename to tests/qt/test_folders_to_tags.py diff --git a/tagstudio/tests/qt/test_item_thumb.py b/tests/qt/test_item_thumb.py similarity index 100% rename from tagstudio/tests/qt/test_item_thumb.py rename to tests/qt/test_item_thumb.py diff --git a/tagstudio/tests/qt/test_preview_panel.py b/tests/qt/test_preview_panel.py similarity index 100% rename from tagstudio/tests/qt/test_preview_panel.py rename to tests/qt/test_preview_panel.py diff --git a/tagstudio/tests/qt/test_qt_driver.py b/tests/qt/test_qt_driver.py similarity index 100% rename from tagstudio/tests/qt/test_qt_driver.py rename to tests/qt/test_qt_driver.py diff --git a/tagstudio/tests/qt/test_tag_panel.py b/tests/qt/test_tag_panel.py similarity index 100% rename from tagstudio/tests/qt/test_tag_panel.py rename to tests/qt/test_tag_panel.py diff --git a/tagstudio/tests/qt/test_tag_search_panel.py b/tests/qt/test_tag_search_panel.py similarity index 100% rename from tagstudio/tests/qt/test_tag_search_panel.py rename to tests/qt/test_tag_search_panel.py diff --git a/tagstudio/tests/qt/test_thumb_renderer.py b/tests/qt/test_thumb_renderer.py similarity index 100% rename from tagstudio/tests/qt/test_thumb_renderer.py rename to tests/qt/test_thumb_renderer.py diff --git a/tagstudio/tests/test_db_migrations.py b/tests/test_db_migrations.py similarity index 100% rename from tagstudio/tests/test_db_migrations.py rename to tests/test_db_migrations.py diff --git a/tagstudio/tests/test_driver.py b/tests/test_driver.py similarity index 100% rename from tagstudio/tests/test_driver.py rename to tests/test_driver.py diff --git a/tagstudio/tests/test_json_migration.py b/tests/test_json_migration.py similarity index 100% rename from tagstudio/tests/test_json_migration.py rename to tests/test_json_migration.py diff --git a/tagstudio/tests/test_library.py b/tests/test_library.py similarity index 100% rename from tagstudio/tests/test_library.py rename to tests/test_library.py diff --git a/tagstudio/tests/test_search.py b/tests/test_search.py similarity index 100% rename from tagstudio/tests/test_search.py rename to tests/test_search.py diff --git a/tagstudio/tests/test_translations.py b/tests/test_translations.py similarity index 100% rename from tagstudio/tests/test_translations.py rename to tests/test_translations.py