diff --git a/setup/loose/vencord-settings-backup-2025-09-29.json b/setup/loose/vencord-settings-backup-2025-09-29.json
new file mode 100644
index 0000000..d29532b
--- /dev/null
+++ b/setup/loose/vencord-settings-backup-2025-09-29.json
@@ -0,0 +1,567 @@
+{
+ "settings": {
+ "autoUpdate": true,
+ "autoUpdateNotification": true,
+ "useQuickCss": true,
+ "themeLinks": [],
+ "eagerPatches": false,
+ "enabledThemes": [],
+ "enableReactDevtools": false,
+ "frameless": false,
+ "transparent": false,
+ "winCtrlQ": false,
+ "disableMinSize": false,
+ "winNativeTitleBar": false,
+ "plugins": {
+ "ChatInputButtonAPI": {
+ "enabled": true
+ },
+ "CommandsAPI": {
+ "enabled": true
+ },
+ "DynamicImageModalAPI": {
+ "enabled": true
+ },
+ "MemberListDecoratorsAPI": {
+ "enabled": false
+ },
+ "MessageAccessoriesAPI": {
+ "enabled": true
+ },
+ "MessageDecorationsAPI": {
+ "enabled": false
+ },
+ "MessageEventsAPI": {
+ "enabled": true
+ },
+ "MessagePopoverAPI": {
+ "enabled": false
+ },
+ "MessageUpdaterAPI": {
+ "enabled": false
+ },
+ "ServerListAPI": {
+ "enabled": false
+ },
+ "UserSettingsAPI": {
+ "enabled": true
+ },
+ "AccountPanelServerProfile": {
+ "enabled": false
+ },
+ "AlwaysAnimate": {
+ "enabled": false
+ },
+ "AlwaysExpandRoles": {
+ "enabled": true
+ },
+ "AlwaysTrust": {
+ "enabled": true
+ },
+ "AnonymiseFileNames": {
+ "enabled": true
+ },
+ "AppleMusicRichPresence": {
+ "enabled": false
+ },
+ "WebRichPresence (arRPC)": {
+ "enabled": false
+ },
+ "BetterFolders": {
+ "enabled": false
+ },
+ "BetterGifAltText": {
+ "enabled": false
+ },
+ "BetterGifPicker": {
+ "enabled": true
+ },
+ "BetterNotesBox": {
+ "enabled": true
+ },
+ "BetterRoleContext": {
+ "enabled": false
+ },
+ "BetterRoleDot": {
+ "enabled": false
+ },
+ "BetterSessions": {
+ "enabled": false
+ },
+ "BetterSettings": {
+ "enabled": true
+ },
+ "BetterUploadButton": {
+ "enabled": false
+ },
+ "BiggerStreamPreview": {
+ "enabled": false
+ },
+ "BlurNSFW": {
+ "enabled": false
+ },
+ "CallTimer": {
+ "enabled": true
+ },
+ "ClearURLs": {
+ "enabled": true
+ },
+ "ClientTheme": {
+ "enabled": false
+ },
+ "ColorSighted": {
+ "enabled": false
+ },
+ "ConsoleJanitor": {
+ "enabled": false
+ },
+ "ConsoleShortcuts": {
+ "enabled": false
+ },
+ "CopyEmojiMarkdown": {
+ "enabled": true
+ },
+ "CopyFileContents": {
+ "enabled": false
+ },
+ "CopyUserURLs": {
+ "enabled": false
+ },
+ "CrashHandler": {
+ "enabled": true
+ },
+ "CtrlEnterSend": {
+ "enabled": false
+ },
+ "CustomIdle": {
+ "enabled": false
+ },
+ "CustomRPC": {
+ "enabled": false
+ },
+ "Dearrow": {
+ "enabled": false
+ },
+ "Decor": {
+ "enabled": false
+ },
+ "DisableCallIdle": {
+ "enabled": false
+ },
+ "DontRoundMyTimestamps": {
+ "enabled": false
+ },
+ "Experiments": {
+ "enabled": false
+ },
+ "ExpressionCloner": {
+ "enabled": false
+ },
+ "F8Break": {
+ "enabled": false
+ },
+ "FakeNitro": {
+ "enabled": false
+ },
+ "FakeProfileThemes": {
+ "enabled": false
+ },
+ "FavoriteEmojiFirst": {
+ "enabled": false
+ },
+ "FavoriteGifSearch": {
+ "enabled": false
+ },
+ "FixCodeblockGap": {
+ "enabled": false
+ },
+ "FixImagesQuality": {
+ "enabled": false
+ },
+ "FixSpotifyEmbeds": {
+ "enabled": false
+ },
+ "FixYoutubeEmbeds": {
+ "enabled": false
+ },
+ "ForceOwnerCrown": {
+ "enabled": false
+ },
+ "FriendInvites": {
+ "enabled": false
+ },
+ "FriendsSince": {
+ "enabled": true
+ },
+ "FullSearchContext": {
+ "enabled": false
+ },
+ "FullUserInChatbox": {
+ "enabled": false
+ },
+ "GameActivityToggle": {
+ "enabled": false
+ },
+ "GifPaste": {
+ "enabled": false
+ },
+ "GreetStickerPicker": {
+ "enabled": false
+ },
+ "HideMedia": {
+ "enabled": false
+ },
+ "iLoveSpam": {
+ "enabled": false
+ },
+ "IgnoreActivities": {
+ "enabled": false
+ },
+ "ImageLink": {
+ "enabled": false
+ },
+ "ImageZoom": {
+ "enabled": false
+ },
+ "ImplicitRelationships": {
+ "enabled": true
+ },
+ "InvisibleChat": {
+ "enabled": false
+ },
+ "IrcColors": {
+ "enabled": false
+ },
+ "KeepCurrentChannel": {
+ "enabled": false
+ },
+ "LastFMRichPresence": {
+ "enabled": false
+ },
+ "LoadingQuotes": {
+ "enabled": false
+ },
+ "MemberCount": {
+ "enabled": true
+ },
+ "MentionAvatars": {
+ "enabled": true
+ },
+ "MessageClickActions": {
+ "enabled": false
+ },
+ "MessageLatency": {
+ "enabled": false
+ },
+ "MessageLinkEmbeds": {
+ "enabled": false
+ },
+ "MessageLogger": {
+ "enabled": false
+ },
+ "MessageTags": {
+ "enabled": false
+ },
+ "MutualGroupDMs": {
+ "enabled": true
+ },
+ "NewGuildSettings": {
+ "enabled": false
+ },
+ "NoBlockedMessages": {
+ "enabled": false
+ },
+ "NoDevtoolsWarning": {
+ "enabled": false
+ },
+ "NoF1": {
+ "enabled": false
+ },
+ "NoMaskedUrlPaste": {
+ "enabled": false
+ },
+ "NoMosaic": {
+ "enabled": false
+ },
+ "NoOnboardingDelay": {
+ "enabled": true
+ },
+ "NoPendingCount": {
+ "enabled": false
+ },
+ "NoProfileThemes": {
+ "enabled": true
+ },
+ "NoReplyMention": {
+ "enabled": false
+ },
+ "NoServerEmojis": {
+ "enabled": false
+ },
+ "NoTypingAnimation": {
+ "enabled": true
+ },
+ "NoUnblockToJump": {
+ "enabled": false
+ },
+ "NormalizeMessageLinks": {
+ "enabled": false
+ },
+ "NotificationVolume": {
+ "enabled": true
+ },
+ "OnePingPerDM": {
+ "enabled": false
+ },
+ "oneko": {
+ "enabled": false
+ },
+ "OpenInApp": {
+ "enabled": false
+ },
+ "OverrideForumDefaults": {
+ "enabled": false
+ },
+ "PauseInvitesForever": {
+ "enabled": false
+ },
+ "PermissionFreeWill": {
+ "enabled": false
+ },
+ "PermissionsViewer": {
+ "enabled": false
+ },
+ "petpet": {
+ "enabled": true
+ },
+ "PictureInPicture": {
+ "enabled": false
+ },
+ "PinDMs": {
+ "enabled": false
+ },
+ "PlainFolderIcon": {
+ "enabled": false
+ },
+ "PlatformIndicators": {
+ "enabled": false
+ },
+ "PreviewMessage": {
+ "enabled": false
+ },
+ "QuickMention": {
+ "enabled": false
+ },
+ "QuickReply": {
+ "enabled": false
+ },
+ "ReactErrorDecoder": {
+ "enabled": false
+ },
+ "ReadAllNotificationsButton": {
+ "enabled": false
+ },
+ "RelationshipNotifier": {
+ "enabled": false
+ },
+ "ReplaceGoogleSearch": {
+ "enabled": false
+ },
+ "ReplyTimestamp": {
+ "enabled": false
+ },
+ "RevealAllSpoilers": {
+ "enabled": false
+ },
+ "ReverseImageSearch": {
+ "enabled": false
+ },
+ "ReviewDB": {
+ "enabled": false
+ },
+ "RoleColorEverywhere": {
+ "enabled": false
+ },
+ "SecretRingToneEnabler": {
+ "enabled": false
+ },
+ "Summaries": {
+ "enabled": false
+ },
+ "SendTimestamps": {
+ "enabled": true
+ },
+ "ServerInfo": {
+ "enabled": false
+ },
+ "ServerListIndicators": {
+ "enabled": false
+ },
+ "ShikiCodeblocks": {
+ "enabled": false
+ },
+ "ShowAllMessageButtons": {
+ "enabled": false
+ },
+ "ShowConnections": {
+ "enabled": false
+ },
+ "ShowHiddenChannels": {
+ "enabled": false
+ },
+ "ShowHiddenThings": {
+ "enabled": false
+ },
+ "ShowMeYourName": {
+ "enabled": false
+ },
+ "ShowTimeoutDuration": {
+ "enabled": false
+ },
+ "SilentMessageToggle": {
+ "enabled": false
+ },
+ "SilentTyping": {
+ "enabled": false
+ },
+ "SortFriendRequests": {
+ "enabled": false
+ },
+ "SpotifyControls": {
+ "enabled": false
+ },
+ "SpotifyCrack": {
+ "enabled": false
+ },
+ "SpotifyShareCommands": {
+ "enabled": false
+ },
+ "StartupTimings": {
+ "enabled": false
+ },
+ "StickerPaste": {
+ "enabled": false
+ },
+ "StreamerModeOnStream": {
+ "enabled": false
+ },
+ "SuperReactionTweaks": {
+ "enabled": false
+ },
+ "TextReplace": {
+ "enabled": false
+ },
+ "ThemeAttributes": {
+ "enabled": false
+ },
+ "Translate": {
+ "enabled": false
+ },
+ "TypingIndicator": {
+ "enabled": false
+ },
+ "TypingTweaks": {
+ "enabled": false
+ },
+ "Unindent": {
+ "enabled": false
+ },
+ "UnlockedAvatarZoom": {
+ "enabled": false
+ },
+ "UnsuppressEmbeds": {
+ "enabled": false
+ },
+ "UserMessagesPronouns": {
+ "enabled": false
+ },
+ "UserVoiceShow": {
+ "enabled": false
+ },
+ "USRBG": {
+ "enabled": false
+ },
+ "ValidReply": {
+ "enabled": false
+ },
+ "ValidUser": {
+ "enabled": false
+ },
+ "VoiceChatDoubleClick": {
+ "enabled": false
+ },
+ "VcNarrator": {
+ "enabled": false
+ },
+ "VencordToolbox": {
+ "enabled": false
+ },
+ "ViewIcons": {
+ "enabled": false
+ },
+ "ViewRaw": {
+ "enabled": false
+ },
+ "VoiceDownload": {
+ "enabled": false
+ },
+ "VoiceMessages": {
+ "enabled": false
+ },
+ "VolumeBooster": {
+ "enabled": true
+ },
+ "WebKeybinds": {
+ "enabled": true
+ },
+ "WebScreenShareFixes": {
+ "enabled": true
+ },
+ "WhoReacted": {
+ "enabled": true
+ },
+ "XSOverlay": {
+ "enabled": false
+ },
+ "YoutubeAdblock": {
+ "enabled": true
+ },
+ "BadgeAPI": {
+ "enabled": true
+ },
+ "CopyStickerLinks": {
+ "enabled": false
+ },
+ "NoTrack": {
+ "enabled": true,
+ "disableAnalytics": true
+ },
+ "Settings": {
+ "enabled": true,
+ "settingsLocation": "aboveNitro"
+ },
+ "DisableDeepLinks": {
+ "enabled": true
+ },
+ "SupportHelper": {
+ "enabled": true
+ },
+ "WebContextMenus": {
+ "enabled": true
+ }
+ },
+ "notifications": {
+ "timeout": 5000,
+ "position": "bottom-right",
+ "useNative": "not-focused",
+ "logLimit": 50
+ },
+ "cloud": {
+ "authenticated": false,
+ "url": "https://api.vencord.dev/",
+ "settingsSync": false,
+ "settingsSyncVersion": 1755911198541
+ }
+ },
+ "quickCss": ""
+}
\ No newline at end of file
diff --git a/setup/managed/Pinta/addins/addin-db-004/addin-data/1/DefaultEffects,3.0.maddin b/setup/managed/Pinta/addins/addin-db-004/addin-data/1/DefaultEffects,3.0.maddin
new file mode 100644
index 0000000..b940ff7
Binary files /dev/null and b/setup/managed/Pinta/addins/addin-db-004/addin-data/1/DefaultEffects,3.0.maddin differ
diff --git a/setup/managed/Pinta/addins/addin-db-004/addin-data/1/DefaultTools,3.0.maddin b/setup/managed/Pinta/addins/addin-db-004/addin-data/1/DefaultTools,3.0.maddin
new file mode 100644
index 0000000..b40aa88
Binary files /dev/null and b/setup/managed/Pinta/addins/addin-db-004/addin-data/1/DefaultTools,3.0.maddin differ
diff --git a/setup/managed/Pinta/addins/addin-db-004/addin-data/1/Pinta,3.0.maddin b/setup/managed/Pinta/addins/addin-db-004/addin-data/1/Pinta,3.0.maddin
new file mode 100644
index 0000000..66efd71
Binary files /dev/null and b/setup/managed/Pinta/addins/addin-db-004/addin-data/1/Pinta,3.0.maddin differ
diff --git a/setup/managed/Pinta/addins/addin-db-004/addin-data/2/DefaultEffects,3.0.3.maddin b/setup/managed/Pinta/addins/addin-db-004/addin-data/2/DefaultEffects,3.0.3.maddin
new file mode 100644
index 0000000..828c859
Binary files /dev/null and b/setup/managed/Pinta/addins/addin-db-004/addin-data/2/DefaultEffects,3.0.3.maddin differ
diff --git a/setup/managed/Pinta/addins/addin-db-004/addin-data/2/DefaultTools,3.0.3.maddin b/setup/managed/Pinta/addins/addin-db-004/addin-data/2/DefaultTools,3.0.3.maddin
new file mode 100644
index 0000000..b092f3e
Binary files /dev/null and b/setup/managed/Pinta/addins/addin-db-004/addin-data/2/DefaultTools,3.0.3.maddin differ
diff --git a/setup/managed/Pinta/addins/addin-db-004/addin-data/2/Pinta,3.0.3.maddin b/setup/managed/Pinta/addins/addin-db-004/addin-data/2/Pinta,3.0.3.maddin
new file mode 100644
index 0000000..7b0736c
Binary files /dev/null and b/setup/managed/Pinta/addins/addin-db-004/addin-data/2/Pinta,3.0.3.maddin differ
diff --git a/setup/managed/Pinta/addins/addin-db-004/addin-data/3/DefaultEffects,3.0.3.maddin b/setup/managed/Pinta/addins/addin-db-004/addin-data/3/DefaultEffects,3.0.3.maddin
new file mode 100644
index 0000000..bc2559c
Binary files /dev/null and b/setup/managed/Pinta/addins/addin-db-004/addin-data/3/DefaultEffects,3.0.3.maddin differ
diff --git a/setup/managed/Pinta/addins/addin-db-004/addin-data/3/DefaultTools,3.0.3.maddin b/setup/managed/Pinta/addins/addin-db-004/addin-data/3/DefaultTools,3.0.3.maddin
new file mode 100644
index 0000000..7339367
Binary files /dev/null and b/setup/managed/Pinta/addins/addin-db-004/addin-data/3/DefaultTools,3.0.3.maddin differ
diff --git a/setup/managed/Pinta/addins/addin-db-004/addin-data/3/Pinta,3.0.3.maddin b/setup/managed/Pinta/addins/addin-db-004/addin-data/3/Pinta,3.0.3.maddin
new file mode 100644
index 0000000..036a6b9
Binary files /dev/null and b/setup/managed/Pinta/addins/addin-db-004/addin-data/3/Pinta,3.0.3.maddin differ
diff --git a/setup/managed/Pinta/addins/addin-db-004/addin-dir-data/nix_store_8jlhjdgcahnhkwb2g6p9zahprjgq9nxb-Pinta-3.0_lib_Pinta_7c4cce3e.data b/setup/managed/Pinta/addins/addin-db-004/addin-dir-data/nix_store_8jlhjdgcahnhkwb2g6p9zahprjgq9nxb-Pinta-3.0_lib_Pinta_7c4cce3e.data
new file mode 100644
index 0000000..67dcffd
Binary files /dev/null and b/setup/managed/Pinta/addins/addin-db-004/addin-dir-data/nix_store_8jlhjdgcahnhkwb2g6p9zahprjgq9nxb-Pinta-3.0_lib_Pinta_7c4cce3e.data differ
diff --git a/setup/managed/Pinta/addins/addin-db-004/addin-dir-data/nix_store_g7a7z6acwxv2d0b3ipxn94150bswni3r-Pinta-3.0.3_lib_Pinta_58808c64.data b/setup/managed/Pinta/addins/addin-db-004/addin-dir-data/nix_store_g7a7z6acwxv2d0b3ipxn94150bswni3r-Pinta-3.0.3_lib_Pinta_58808c64.data
new file mode 100644
index 0000000..dc37995
Binary files /dev/null and b/setup/managed/Pinta/addins/addin-db-004/addin-dir-data/nix_store_g7a7z6acwxv2d0b3ipxn94150bswni3r-Pinta-3.0.3_lib_Pinta_58808c64.data differ
diff --git a/setup/managed/Pinta/addins/addin-db-004/addin-dir-data/nix_store_w12m4rl0vlnxfxkslcamhh7xqzjsib7s-Pinta-3.0.3_lib_Pinta_f0495116.data b/setup/managed/Pinta/addins/addin-db-004/addin-dir-data/nix_store_w12m4rl0vlnxfxkslcamhh7xqzjsib7s-Pinta-3.0.3_lib_Pinta_f0495116.data
new file mode 100644
index 0000000..80a90ab
Binary files /dev/null and b/setup/managed/Pinta/addins/addin-db-004/addin-dir-data/nix_store_w12m4rl0vlnxfxkslcamhh7xqzjsib7s-Pinta-3.0.3_lib_Pinta_f0495116.data differ
diff --git a/setup/managed/Pinta/addins/addin-db-004/fdb-lock b/setup/managed/Pinta/addins/addin-db-004/fdb-lock
new file mode 100644
index 0000000..e69de29
diff --git a/setup/managed/Pinta/addins/addin-db-004/fdb-update-lock b/setup/managed/Pinta/addins/addin-db-004/fdb-update-lock
new file mode 100644
index 0000000..e69de29
diff --git a/setup/managed/Pinta/addins/addin-db-004/host-index b/setup/managed/Pinta/addins/addin-db-004/host-index
new file mode 100644
index 0000000..8c89d4b
Binary files /dev/null and b/setup/managed/Pinta/addins/addin-db-004/host-index differ
diff --git a/setup/managed/Pinta/addins/addin-db-004/hosts/Pinta.addins b/setup/managed/Pinta/addins/addin-db-004/hosts/Pinta.addins
new file mode 100644
index 0000000..d9d01dd
--- /dev/null
+++ b/setup/managed/Pinta/addins/addin-db-004/hosts/Pinta.addins
@@ -0,0 +1,3 @@
+
+ /nix/store/8jlhjdgcahnhkwb2g6p9zahprjgq9nxb-Pinta-3.0/lib/Pinta
+
\ No newline at end of file
diff --git a/setup/managed/Pinta/addins/addin-db-004/hosts/Pinta_1.addins b/setup/managed/Pinta/addins/addin-db-004/hosts/Pinta_1.addins
new file mode 100644
index 0000000..a2cc57f
--- /dev/null
+++ b/setup/managed/Pinta/addins/addin-db-004/hosts/Pinta_1.addins
@@ -0,0 +1,3 @@
+
+ /nix/store/w12m4rl0vlnxfxkslcamhh7xqzjsib7s-Pinta-3.0.3/lib/Pinta
+
\ No newline at end of file
diff --git a/setup/managed/Pinta/addins/addin-db-004/hosts/Pinta_2.addins b/setup/managed/Pinta/addins/addin-db-004/hosts/Pinta_2.addins
new file mode 100644
index 0000000..26578a1
--- /dev/null
+++ b/setup/managed/Pinta/addins/addin-db-004/hosts/Pinta_2.addins
@@ -0,0 +1,3 @@
+
+ /nix/store/g7a7z6acwxv2d0b3ipxn94150bswni3r-Pinta-3.0.3/lib/Pinta
+
\ No newline at end of file
diff --git a/setup/managed/Pinta/addins/addins-setup-v2.config b/setup/managed/Pinta/addins/addins-setup-v2.config
new file mode 100644
index 0000000..b07237e
--- /dev/null
+++ b/setup/managed/Pinta/addins/addins-setup-v2.config
@@ -0,0 +1,24 @@
+
+
+
+
+ false
+ /home/mayday/.config/Pinta/addins/repository-cache/pintaproject.github.io_0.mrep
+ http://pintaproject.github.io/Pinta-Community-Addins/repository/Linux/main.mrep
+ MonoAddins
+ Pinta Community Addins - Platform-Specific
+ 1900-01-01T00:00:00
+
+
+ false
+ /home/mayday/.config/Pinta/addins/repository-cache/pintaproject.github.io_1.mrep
+ http://pintaproject.github.io/Pinta-Community-Addins/repository/All/main.mrep
+ MonoAddins
+ Pinta Community Addins - Cross-Platform
+ 1900-01-01T00:00:00
+
+
+ 2
+
+
+
\ No newline at end of file
diff --git a/setup/managed/Pinta/palette.txt b/setup/managed/Pinta/palette.txt
new file mode 100644
index 0000000..3820770
--- /dev/null
+++ b/setup/managed/Pinta/palette.txt
@@ -0,0 +1,35 @@
+; Hexadecimal format: aarrggbb
+FFFFFFFF
+FF000000
+FFA0A0A0
+FF808080
+FF404040
+FF303030
+FFFF0000
+FFFF7F7F
+FFFF6A00
+FFFFB27F
+FFFFD800
+FFFFE97F
+FFB6FF00
+FFDAFF7F
+FF4CFF00
+FFA5FF7F
+FF00FF21
+FF7FFF8E
+FF00FF90
+FF7FFFC5
+FF00FFFF
+FF7FFFFF
+FF0094FF
+FF7FC9FF
+FF0026FF
+FF7F92FF
+FF4800FF
+FFA17FFF
+FFB200FF
+FFD67FFF
+FFFF00DC
+FFFF7FED
+FFFF006E
+FFFF7FB6
diff --git a/setup/managed/Pinta/settings.xml b/setup/managed/Pinta/settings.xml
new file mode 100644
index 0000000..c249855
--- /dev/null
+++ b/setup/managed/Pinta/settings.xml
@@ -0,0 +1,31 @@
+
+ False
+ False
+ 1100
+ 750
+ 0
+ 0
+ True
+ False
+ True
+ True
+ True
+ True
+ True
+ file:///home/mayday/Downloads
+ ColorPickerTool
+ FF869D8F
+ FFFFFFFF
+ FF869D8F,FFE5E5E5,FFE5E5E5,FFE5E5E5,FFE5E5E5,FFE5E5E5,FFE5E5E5,FFE5E5E5,FFE5E5E5,FFE5E5E5
+ 0
+ 2
+ 0
+ 2
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ False
+
\ No newline at end of file
diff --git a/setup/managed/calibre/global.py.json b/setup/managed/calibre/global.py.json
new file mode 100644
index 0000000..6026eb2
--- /dev/null
+++ b/setup/managed/calibre/global.py.json
@@ -0,0 +1,51 @@
+{
+ "add_formats_to_existing": false,
+ "case_sensitive": false,
+ "check_for_dupes_on_ctl": false,
+ "database_path": "/home/mayday/library1.db",
+ "filename_pattern": "(?P
.+) - (?P[^_]+)",
+ "input_format_order": [
+ "EPUB",
+ "AZW3",
+ "MOBI",
+ "LIT",
+ "PRC",
+ "FB2",
+ "HTML",
+ "HTM",
+ "XHTM",
+ "SHTML",
+ "XHTML",
+ "ZIP",
+ "DOCX",
+ "ODT",
+ "RTF",
+ "PDF",
+ "TXT"
+ ],
+ "installation_uuid": "11b0432a-bf4c-488a-8797-fba3e94a1581",
+ "isbndb_com_key": "",
+ "language": null,
+ "library_path": null,
+ "limit_search_columns": false,
+ "limit_search_columns_to": [
+ "title",
+ "authors",
+ "tags",
+ "series",
+ "publisher"
+ ],
+ "manage_device_metadata": "manual",
+ "mark_new_books": false,
+ "migrated": false,
+ "network_timeout": 5,
+ "new_book_tags": [],
+ "numeric_collation": false,
+ "output_format": "EPUB",
+ "read_file_metadata": true,
+ "saved_searches": {},
+ "swap_author_names": false,
+ "use_primary_find_in_search": true,
+ "user_categories": {},
+ "worker_process_priority": "normal"
+}
\ No newline at end of file
diff --git a/setup/managed/calibre/gui.json b/setup/managed/calibre/gui.json
new file mode 100644
index 0000000..2a6ba3a
--- /dev/null
+++ b/setup/managed/calibre/gui.json
@@ -0,0 +1,100 @@
+{
+ "custom_colors_for_color_dialog": [
+ [
+ 255,
+ 255,
+ 255,
+ 255
+ ],
+ [
+ 255,
+ 255,
+ 255,
+ 255
+ ],
+ [
+ 255,
+ 255,
+ 255,
+ 255
+ ],
+ [
+ 255,
+ 255,
+ 255,
+ 255
+ ],
+ [
+ 255,
+ 255,
+ 255,
+ 255
+ ],
+ [
+ 255,
+ 255,
+ 255,
+ 255
+ ],
+ [
+ 255,
+ 255,
+ 255,
+ 255
+ ],
+ [
+ 255,
+ 255,
+ 255,
+ 255
+ ],
+ [
+ 255,
+ 255,
+ 255,
+ 255
+ ],
+ [
+ 255,
+ 255,
+ 255,
+ 255
+ ],
+ [
+ 255,
+ 255,
+ 255,
+ 255
+ ],
+ [
+ 255,
+ 255,
+ 255,
+ 255
+ ],
+ [
+ 255,
+ 255,
+ 255,
+ 255
+ ],
+ [
+ 255,
+ 255,
+ 255,
+ 255
+ ],
+ [
+ 255,
+ 255,
+ 255,
+ 255
+ ],
+ [
+ 255,
+ 255,
+ 255,
+ 255
+ ]
+ ]
+}
\ No newline at end of file
diff --git a/setup/managed/calibre/viewer-webengine.json b/setup/managed/calibre/viewer-webengine.json
new file mode 100644
index 0000000..55c8091
--- /dev/null
+++ b/setup/managed/calibre/viewer-webengine.json
@@ -0,0 +1,76 @@
+{
+ "geometry-of-main_window_geometry": {
+ "frame_geometry": {
+ "height": 480,
+ "width": 640,
+ "x": -3,
+ "y": -30
+ },
+ "full_screened": false,
+ "geometry": {
+ "height": 447,
+ "width": 634,
+ "x": 0,
+ "y": 0
+ },
+ "maximized": false,
+ "normal_geometry": {
+ "height": 447,
+ "width": 634,
+ "x": 0,
+ "y": 0
+ },
+ "qt": {
+ "__class__": "bytearray",
+ "__value__": "AdnQywADAAD////9////4gAAAnwAAAHBAAAAAAAAAAAAAAJ5AAABvgAAAAAAAAAAB4AAAAAAAAAAAAAAAnkAAAG+"
+ },
+ "screen": {
+ "depth": 32,
+ "device_pixel_ratio": 1.0,
+ "geometry_in_logical_pixels": {
+ "height": 1200,
+ "width": 1920,
+ "x": 0,
+ "y": 0
+ },
+ "index_in_screens_list": 0,
+ "manufacturer": "BOE",
+ "model": "NV122WUM-N42",
+ "name": "eDP-1",
+ "serial": "",
+ "size_in_logical_pixels": {
+ "height": 1200,
+ "width": 1920
+ },
+ "virtual_geometry": {
+ "height": 1200,
+ "width": 1920,
+ "x": 0,
+ "y": 0
+ }
+ }
+ },
+ "main_window_state": {
+ "__class__": "bytearray",
+ "__value__": "AAAA/wAAAAH9AAAAAgAAAAAAAAAAAAAAAPwCAAAAAvsAAAAQAHQAbwBjAC0AZABvAGMAawAAAAAA/////wAAAIQA////+wAAABYAcwBlAGEAcgBjAGgALQBkAG8AYwBrAAAAAAD/////AAAAkAD///8AAAABAAAAAAAAAAD8AgAAAAT7AAAAFgBsAG8AbwBrAHUAcAAtAGQAbwBjAGsAAAAAAP////8AAAB3AP////sAAAAcAGIAbwBvAGsAbQBhAHIAawBzAC0AZABvAGMAawAAAAAA/////wAAAOEA////+wAAABwAaQBuAHMAcABlAGMAdABvAHIALQBkAG8AYwBrAAAAAAD/////AAAAEAD////7AAAAHgBoAGkAZwBoAGwAaQBnAGgAdABzAC0AZABvAGMAawAAAAAA/////wAAAMsA////AAACegAAAb8AAAAEAAAABAAAAAgAAAAI/AAAAAEAAAAAAAAAAQAAAB4AYQBjAHQAaQBvAG4AcwBfAHQAbwBvAGwAYgBhAHICAAAAAP////8AAAAAAAAAAA=="
+ },
+ "old_prefs_migrated": true,
+ "session_data": {
+ "controls_help_shown_count": 1,
+ "standalone_font_settings": {},
+ "standalone_misc_settings": {
+ "remember_last_read": true,
+ "remember_window_geometry": false,
+ "save_annotations_in_ebook": true,
+ "singleinstance": false
+ },
+ "standalone_recently_opened": [
+ {
+ "key": "/home/mayday/ventoy/Ventoy/README.md",
+ "pathtoebook": "/home/mayday/ventoy/Ventoy/README.md",
+ "timestamp": "2025-08-19T16:49:48.523Z",
+ "title": "README"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/setup/managed/calibre/viewer/annots/b0fdd2e47c5fd976028c636ba6914d3b6e8db31c42e5bc305feb2c9bb6e262b1.json b/setup/managed/calibre/viewer/annots/b0fdd2e47c5fd976028c636ba6914d3b6e8db31c42e5bc305feb2c9bb6e262b1.json
new file mode 100644
index 0000000..0943356
--- /dev/null
+++ b/setup/managed/calibre/viewer/annots/b0fdd2e47c5fd976028c636ba6914d3b6e8db31c42e5bc305feb2c9bb6e262b1.json
@@ -0,0 +1 @@
+[{"pos": "epubcfi(/2/2/4/6/1:308)", "pos_type": "epubcfi", "timestamp": "2025-08-19T20:01:32.328283+00:00", "type": "last-read"}]
\ No newline at end of file
diff --git a/setup/managed/gh/config.yml b/setup/managed/gh/config.yml
new file mode 100644
index 0000000..5f548cd
--- /dev/null
+++ b/setup/managed/gh/config.yml
@@ -0,0 +1,21 @@
+# The current version of the config schema
+version: 1
+# What protocol to use when performing git operations. Supported values: ssh, https
+git_protocol: https
+# What editor gh should run when creating issues, pull requests, etc. If blank, will refer to environment.
+editor:
+# When to interactively prompt. This is a global config that cannot be overridden by hostname. Supported values: enabled, disabled
+prompt: enabled
+# Preference for editor-based interactive prompting. This is a global config that cannot be overridden by hostname. Supported values: enabled, disabled
+prefer_editor_prompt: disabled
+# A pager program to send command output to, e.g. "less". If blank, will refer to environment. Set the value to "cat" to disable the pager.
+pager:
+# Aliases allow you to create nicknames for gh commands
+aliases:
+ co: pr checkout
+# The path to a unix socket through which send HTTP connections. If blank, HTTP traffic will be handled by net/http.DefaultTransport.
+http_unix_socket:
+# What web browser gh should use when opening URLs. If blank, will refer to environment.
+browser:
+# Whether to display labels using their RGB hex color codes in terminals that support truecolor. Supported values: enabled, disabled
+color_labels: disabled
diff --git a/setup/managed/gtk-4.0/assets b/setup/managed/gtk-4.0/assets
new file mode 120000
index 0000000..b78e891
--- /dev/null
+++ b/setup/managed/gtk-4.0/assets
@@ -0,0 +1 @@
+/home/mayday/.themes/ClassicPlatinumStreamlined/gtk-4.0/assets
\ No newline at end of file
diff --git a/setup/managed/gtk-4.0/gtk.css b/setup/managed/gtk-4.0/gtk.css
new file mode 120000
index 0000000..9223e28
--- /dev/null
+++ b/setup/managed/gtk-4.0/gtk.css
@@ -0,0 +1 @@
+/home/mayday/.themes/ClassicPlatinumStreamlined/gtk-4.0/gtk.css
\ No newline at end of file
diff --git a/setup/managed/gtk-4.0/settings.ini b/setup/managed/gtk-4.0/settings.ini
new file mode 100644
index 0000000..696f634
--- /dev/null
+++ b/setup/managed/gtk-4.0/settings.ini
@@ -0,0 +1,7 @@
+[Settings]
+gtk-theme-name=ClassicPlatinumStreamlined
+gtk-icon-theme-name=Mint-Y-Sand
+gtk-font-name=M PLUS 1 Light 10
+gtk-cursor-theme-name=Hackneyed
+gtk-cursor-theme-size=24
+gtk-application-prefer-dark-theme=1
diff --git a/setup/managed/inkscape/cphistory.xml b/setup/managed/inkscape/cphistory.xml
new file mode 100644
index 0000000..cd91a84
--- /dev/null
+++ b/setup/managed/inkscape/cphistory.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/setup/managed/inkscape/dialogs-state-ex.ini b/setup/managed/inkscape/dialogs-state-ex.ini
new file mode 100644
index 0000000..87b2f8a
--- /dev/null
+++ b/setup/managed/inkscape/dialogs-state-ex.ini
@@ -0,0 +1,35 @@
+[Windows]
+Count=1
+
+[Window0Column0]
+Notebook0Dialogs=Objects;FillStroke;
+Notebook0Height=940
+Notebook0ActiveTab=1
+ColumnWidth=469
+NotebookCount=1
+BeforeCanvas=false
+
+[Window0]
+ColumnCount=1
+Floating=false
+
+[transient]
+state1=
+dialogs1=CloneTiler;
+state2=
+dialogs2=DocumentProperties;
+state3=
+dialogs3=DocumentResources;
+state4=
+dialogs4=ExtensionsGallery;
+state5=
+dialogs5=FilterEffects;
+state6=
+dialogs6=FilterGallery;
+state7=
+dialogs7=FontCollections;
+state8=[Windows]\nCount=1\n\n[Window0Column0]\nNotebook0Dialogs=Preferences;\nNotebookCount=1\n\n[Window0]\nColumnCount=1\nPosition=true\nx=503\ny=241\nwidth=914\nheight=750\n
+dialogs8=Preferences;
+state9=
+dialogs9=XMLEditor;
+count=9
diff --git a/setup/managed/inkscape/extension-errors.log b/setup/managed/inkscape/extension-errors.log
new file mode 100644
index 0000000..bb70b06
--- /dev/null
+++ b/setup/managed/inkscape/extension-errors.log
@@ -0,0 +1,36 @@
+Extension "Optimized PNG" failed to load because a dependency was not met.
+Dependency:
+ type: executable
+ location: path
+ string: optipng
+
+Extension "Export to PDF via Scribus" failed to load because a dependency was not met.
+Dependency:
+ type: executable
+ location: path
+ string: scribus
+
+Extension "Formula (pdflatex)" failed to load because a dependency was not met.
+Dependency:
+ type: executable
+ location: path
+ string: pdflatex
+
+Extension "Formula (typst)" failed to load because a dependency was not met.
+Dependency:
+ type: executable
+ location: path
+ string: typst
+
+Extension "GIMP XCF" failed to load because a dependency was not met.
+Dependency:
+ type: executable
+ location: path
+ string: gimp
+
+Extension "XFIG Input" failed to load because a dependency was not met.
+Dependency:
+ type: executable
+ location: path
+ string: fig2dev
+
diff --git a/setup/managed/inkscape/fontcollections/recently_used_fonts.log b/setup/managed/inkscape/fontcollections/recently_used_fonts.log
new file mode 100644
index 0000000..4b5db0a
--- /dev/null
+++ b/setup/managed/inkscape/fontcollections/recently_used_fonts.log
@@ -0,0 +1 @@
+sans-serif
diff --git a/setup/managed/inkscape/preferences.xml b/setup/managed/inkscape/preferences.xml
new file mode 100644
index 0000000..ccf565e
--- /dev/null
+++ b/setup/managed/inkscape/preferences.xml
@@ -0,0 +1,1162 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/setup/managed/kate/externaltools/Clang%20Format%20Full%20File.ini b/setup/managed/kate/externaltools/Clang%20Format%20Full%20File.ini
new file mode 100644
index 0000000..b8d95b2
--- /dev/null
+++ b/setup/managed/kate/externaltools/Clang%20Format%20Full%20File.ini
@@ -0,0 +1,12 @@
+[General]
+actionName=externaltool_ClangFormatFullFile
+arguments=-i %{Document:FileName}
+category=Tools
+cmdname=clang-format-file
+executable=clang-format
+name=Clang Format Full File
+output=Ignore
+reload=true
+save=CurrentDocument
+trigger=None
+workingDir=%{Document:Path}
diff --git a/setup/managed/kate/externaltools/Clang%20Format%20Selected%20Text.ini b/setup/managed/kate/externaltools/Clang%20Format%20Selected%20Text.ini
new file mode 100644
index 0000000..8daf5b3
--- /dev/null
+++ b/setup/managed/kate/externaltools/Clang%20Format%20Selected%20Text.ini
@@ -0,0 +1,13 @@
+[General]
+actionName=externaltool_ClangFormatSelectedText
+arguments=-assume-filename=%{Document:FileName}
+category=Tools
+cmdname=clang-format-selection
+executable=clang-format
+input=\s%{Document:Selection:Text}
+name=Clang Format Selected Text
+output=ReplaceSelectedText
+reload=false
+save=None
+trigger=None
+workingDir=%{Document:Path}
diff --git a/setup/managed/kate/externaltools/Compile%20and%20Run%20cpp.ini b/setup/managed/kate/externaltools/Compile%20and%20Run%20cpp.ini
new file mode 100644
index 0000000..138ae1b
--- /dev/null
+++ b/setup/managed/kate/externaltools/Compile%20and%20Run%20cpp.ini
@@ -0,0 +1,12 @@
+[General]
+actionName=externaltool_C++CompileRun
+arguments=-c 'g++ "%{Document:FilePath}" -o "%{Document:FileBaseName}" && "./%{Document:FileBaseName}"'
+category=Tools
+executable=sh
+icon=text-x-c++src
+name=Compile and Run cpp
+output=DisplayInPane
+reload=false
+save=CurrentDocument
+trigger=None
+workingDir=%{Document:Path}
diff --git a/setup/managed/kate/externaltools/Go%20Fmt%20Full%20File.ini b/setup/managed/kate/externaltools/Go%20Fmt%20Full%20File.ini
new file mode 100644
index 0000000..cfdc77f
--- /dev/null
+++ b/setup/managed/kate/externaltools/Go%20Fmt%20Full%20File.ini
@@ -0,0 +1,14 @@
+[General]
+actionName=externaltool_GoFmt
+arguments=%{Document:FileName}
+category=Go
+cmdname=gofmt-full-file
+executable=gofmt
+icon=text/x-go
+mimetypes=text/x-go
+name=Go Fmt Full File
+output=ReplaceCurrentDocument
+reload=false
+save=CurrentDocument
+trigger=None
+workingDir=%{Document:Path}
diff --git a/setup/managed/kate/externaltools/GoImports%20Full%20File.ini b/setup/managed/kate/externaltools/GoImports%20Full%20File.ini
new file mode 100644
index 0000000..24ff53b
--- /dev/null
+++ b/setup/managed/kate/externaltools/GoImports%20Full%20File.ini
@@ -0,0 +1,14 @@
+[General]
+actionName=externaltool_GoImports
+arguments=%{Document:FileName}
+category=Go
+cmdname=goimports-full-file
+executable=goimports
+icon=text-x-go
+mimetypes=text/x-go
+name=GoImports Full File
+output=ReplaceCurrentDocument
+reload=false
+save=CurrentDocument
+trigger=None
+workingDir=%{Document:Path}
diff --git a/setup/managed/kate/externaltools/Google%20Selected%20Text.ini b/setup/managed/kate/externaltools/Google%20Selected%20Text.ini
new file mode 100644
index 0000000..72cb2e5
--- /dev/null
+++ b/setup/managed/kate/externaltools/Google%20Selected%20Text.ini
@@ -0,0 +1,12 @@
+[General]
+actionName=externaltool_GoogleSelectedText
+arguments="https://www.google.com/search?q=%{PercentEncoded:%{Document:Selection:Text}}"
+category=Tools
+cmdname=google
+executable=xdg-open
+icon=globe
+name=Google Selected Text
+output=Ignore
+reload=false
+save=None
+trigger=None
diff --git a/setup/managed/kate/externaltools/Insert%20UUID.ini b/setup/managed/kate/externaltools/Insert%20UUID.ini
new file mode 100644
index 0000000..d399197
--- /dev/null
+++ b/setup/managed/kate/externaltools/Insert%20UUID.ini
@@ -0,0 +1,11 @@
+[General]
+actionName=externaltool_InsertUUID
+arguments=%{UUID}
+category=Tools
+cmdname=uuid
+executable=echo
+name=Insert UUID
+output=InsertAtCursor
+reload=false
+save=None
+trigger=None
diff --git a/setup/managed/kate/externaltools/JSON%20Format%20Full%20File.ini b/setup/managed/kate/externaltools/JSON%20Format%20Full%20File.ini
new file mode 100644
index 0000000..869218d
--- /dev/null
+++ b/setup/managed/kate/externaltools/JSON%20Format%20Full%20File.ini
@@ -0,0 +1,14 @@
+[General]
+actionName=externaltool_JSONFormatFullFile
+arguments="."
+category=Tools
+cmdname=json-format-file
+executable=jq
+icon=application-json
+input=%{Document:Text}
+name=JSON Format Full File
+output=ReplaceCurrentDocument
+reload=false
+save=CurrentDocument
+trigger=None
+workingDir=%{Document:Path}
diff --git a/setup/managed/kate/externaltools/Prettier%20Format%20Current%20File.ini b/setup/managed/kate/externaltools/Prettier%20Format%20Current%20File.ini
new file mode 100644
index 0000000..aec2a3a
--- /dev/null
+++ b/setup/managed/kate/externaltools/Prettier%20Format%20Current%20File.ini
@@ -0,0 +1,12 @@
+[General]
+actionName=externaltool_Prettier
+arguments=%{Document:FileName}
+category=Tools
+cmdname=prettier-format-full-file
+executable=prettier
+name=Prettier Format Current File
+output=ReplaceCurrentDocument
+reload=false
+save=CurrentDocument
+trigger=None
+workingDir=%{Document:Path}
diff --git a/setup/managed/kate/externaltools/Qt%20Quick%202%20Preview%20%28qmlscene%29.ini b/setup/managed/kate/externaltools/Qt%20Quick%202%20Preview%20%28qmlscene%29.ini
new file mode 100644
index 0000000..4e962e1
--- /dev/null
+++ b/setup/managed/kate/externaltools/Qt%20Quick%202%20Preview%20%28qmlscene%29.ini
@@ -0,0 +1,13 @@
+[General]
+actionName=externaltool_QtQuick2Previewqmlscene
+arguments=%{Document:FileName}
+category=Qt
+cmdname=qml-preview
+executable=qmlscene
+mimetypes=text/x-qml
+name=Qt Quick 2 Preview (qmlscene)
+output=Ignore
+reload=false
+save=CurrentDocument
+trigger=None
+workingDir=%{Document:Path}
diff --git a/setup/managed/kate/externaltools/Run%20Shell%20Script.ini b/setup/managed/kate/externaltools/Run%20Shell%20Script.ini
new file mode 100644
index 0000000..e955c29
--- /dev/null
+++ b/setup/managed/kate/externaltools/Run%20Shell%20Script.ini
@@ -0,0 +1,13 @@
+[General]
+actionName=externaltool_RunShellScript
+arguments=-e sh -c "cd %{Document:Path} && pwd && chmod -vc a+x %{Document:FileName} && ./%{Document:FileName} ; echo Press enter to continue. && read null"
+category=Tools
+cmdname=run-script
+executable=konsole
+icon=system-run
+name=Run Shell Script
+output=Ignore
+reload=false
+save=CurrentDocument
+trigger=None
+workingDir=%{Document:Path}
diff --git a/setup/managed/kate/externaltools/Rust%20Fmt%20Full%20File.ini b/setup/managed/kate/externaltools/Rust%20Fmt%20Full%20File.ini
new file mode 100644
index 0000000..12bed29
--- /dev/null
+++ b/setup/managed/kate/externaltools/Rust%20Fmt%20Full%20File.ini
@@ -0,0 +1,14 @@
+[General]
+actionName=externaltool_RustFmt
+arguments=%{Document:FileName}
+category=Tools
+cmdname=rustfmt-full-file
+executable=rustfmt
+icon=text-x-rust
+mimetypes=text/x-rust
+name=Rust Fmt Full File
+output=Ignore
+reload=true
+save=CurrentDocument
+trigger=None
+workingDir=%{Document:Path}
diff --git a/setup/managed/kate/externaltools/Search%20KDE%20API.ini b/setup/managed/kate/externaltools/Search%20KDE%20API.ini
new file mode 100644
index 0000000..7addbe1
--- /dev/null
+++ b/setup/managed/kate/externaltools/Search%20KDE%20API.ini
@@ -0,0 +1,12 @@
+[General]
+actionName=externaltool_KDEAPI
+arguments="https://api.kde.org/search.html?query=%{Document:Selection:Text}"
+category=Tools
+executable=xdg-open
+icon=kde
+name=Search KDE API
+output=Ignore
+reload=false
+save=None
+trigger=None
+workingDir=%{Document:Path}
diff --git a/setup/managed/kate/externaltools/Search%20Qt%20API.ini b/setup/managed/kate/externaltools/Search%20Qt%20API.ini
new file mode 100644
index 0000000..d843454
--- /dev/null
+++ b/setup/managed/kate/externaltools/Search%20Qt%20API.ini
@@ -0,0 +1,12 @@
+[General]
+actionName=externaltool_QtAPI
+arguments="https://doc.qt.io/qt-5/search-results.html?q=%{Document:Selection:Text}"
+category=Tools
+executable=xdg-open
+icon=qtcreator
+name=Search Qt API
+output=Ignore
+reload=false
+save=None
+trigger=None
+workingDir=%{Document:Path}
diff --git a/setup/managed/kate/externaltools/XML%20Format%20Full%20File.ini b/setup/managed/kate/externaltools/XML%20Format%20Full%20File.ini
new file mode 100644
index 0000000..0280368
--- /dev/null
+++ b/setup/managed/kate/externaltools/XML%20Format%20Full%20File.ini
@@ -0,0 +1,13 @@
+[General]
+actionName=externaltool_XMLFormatFullFile
+arguments=--format "%{Document:FileName}"
+category=Tools
+cmdname=xml-format-file
+executable=xmllint
+icon=application-xml
+name=XML Format Full File
+output=ReplaceCurrentDocument
+reload=false
+save=CurrentDocument
+trigger=None
+workingDir=%{Document:Path}
diff --git a/setup/managed/kate/externaltools/git%20blame.ini b/setup/managed/kate/externaltools/git%20blame.ini
new file mode 100644
index 0000000..aeef6d2
--- /dev/null
+++ b/setup/managed/kate/externaltools/git%20blame.ini
@@ -0,0 +1,12 @@
+[General]
+actionName=externaltool_gitblame
+arguments=gui blame --line=%{Document:Cursor:Line} %{Document:FileName}
+category=Git
+cmdname=git-blame
+executable=git
+name=git blame
+output=Ignore
+reload=false
+save=CurrentDocument
+trigger=None
+workingDir=%{Document:Path}
diff --git a/setup/managed/kate/externaltools/git-cola.ini b/setup/managed/kate/externaltools/git-cola.ini
new file mode 100644
index 0000000..31179a6
--- /dev/null
+++ b/setup/managed/kate/externaltools/git-cola.ini
@@ -0,0 +1,12 @@
+[General]
+actionName=externaltool_gitcola
+arguments=-r %{Document:Path}
+category=Git
+cmdname=git-cola
+executable=git-cola
+icon=git-cola
+name=git-cola
+output=Ignore
+reload=false
+save=None
+trigger=None
diff --git a/setup/managed/kate/externaltools/gitk.ini b/setup/managed/kate/externaltools/gitk.ini
new file mode 100644
index 0000000..060a6ee
--- /dev/null
+++ b/setup/managed/kate/externaltools/gitk.ini
@@ -0,0 +1,12 @@
+[General]
+actionName=externaltool_gitk
+category=Git
+cmdname=gitk
+executable=gitk
+icon=git-gui
+name=gitk
+output=Ignore
+reload=false
+save=None
+trigger=None
+workingDir=%{Document:Path}
diff --git a/setup/managed/kitty/cherry_theme.conf b/setup/managed/kitty/cherry_theme.conf
new file mode 100644
index 0000000..38198c0
--- /dev/null
+++ b/setup/managed/kitty/cherry_theme.conf
@@ -0,0 +1,48 @@
+# Make the cursor shape a beam
+shell_integration no-cursor
+cursor_shape block
+
+# Padding
+window_padding_width 7
+window_padding_height 10
+
+# Scroll back up to 3000 lines.
+scrollback_lines 3000
+
+#Default font size.
+font_size 11
+
+# Just a keybind to change font size to your liking, it's CTRL + scroll wheel up or down.
+map ctrl+shift+plus change_font_size all +1.0
+map ctrl+shift+minus change font size all -1.0
+
+# Background opacity, set to 0 if you want blur/transparency.
+# Blur works with hyprland, or sway-fx as a drop-in replacement for sway.
+background_opacity 0.985
+
+
+# Finally, the COLORS! these use the design system I made for this rice.
+cursor #f4c9ef
+
+selection_background #f4c9ef
+selection_foreground #321d32
+
+background #321d32
+foreground #f4c9ef
+
+color0 #9400ff
+color8 #92fcfa
+color1 #ff0000
+color9 #ff0000
+color2 #00ff5d
+color10 #00ff5d
+color3 #AC82E9
+color11 #AC82E9
+color4 #7b91fc
+color12 #7b91fc
+color5 #fce40f
+color13 #fce40f
+color6 #8F56E1
+color14 #8F56E1
+color7 #ff00ee
+color15 #d3d3d3
diff --git a/setup/managed/kitty/default_theme.conf b/setup/managed/kitty/default_theme.conf
new file mode 100644
index 0000000..11ffd7b
--- /dev/null
+++ b/setup/managed/kitty/default_theme.conf
@@ -0,0 +1,54 @@
+# Make the cursor shape a beam
+shell_integration no-cursor
+cursor_shape block
+
+# Padding
+window_padding_width 7
+window_padding_height 10
+
+# Scroll back up to 3000 lines.
+scrollback_lines 3000
+
+#Default font size.
+font_size 12
+# BEGIN_KITTY_FONTS
+font_family family="Fira Code"
+bold_font auto
+italic_font auto
+bold_italic_font auto
+# END_KITTY_FONTS
+
+# Just a keybind to change font size to your liking, it's CTRL + scroll wheel up or down.
+map ctrl+shift+plus change_font_size all +1.0
+map ctrl+shift+minus change font size all -1.0
+
+# Background opacity, set to 0 if you want blur/transparency.
+# Blur works with hyprland, or sway-fx as a drop-in replacement for sway.
+background_opacity 0.985
+
+
+# Finally, the COLORS! these use the design system I made for this rice.
+cursor #207874
+
+selection_background #d8d8d8
+selection_foreground #207874
+
+background #101010
+foreground #d8d8d8
+
+color0 #9400ff
+color8 #92fcfa
+color1 #ff0000
+color9 #ff0000
+color2 #00ff5d
+color10 #00ff5d
+color3 #AC82E9
+color11 #AC82E9
+color4 #7b91fc
+color12 #7b91fc
+color5 #fce40f
+color13 #fce40f
+color6 #8F56E1
+color14 #8F56E1
+color7 #ff00ee
+color15 #d3d3d3
diff --git a/setup/managed/kitty/gleep_theme.conf b/setup/managed/kitty/gleep_theme.conf
new file mode 100644
index 0000000..9785f37
--- /dev/null
+++ b/setup/managed/kitty/gleep_theme.conf
@@ -0,0 +1,48 @@
+# Make the cursor shape a beam
+shell_integration no-cursor
+cursor_shape block
+
+# Padding
+window_padding_width 7
+window_padding_height 10
+
+# Scroll back up to 3000 lines.
+scrollback_lines 3000
+
+#Default font size.
+font_size 11
+
+# Just a keybind to change font size to your liking, it's CTRL + scroll wheel up or down.
+map ctrl+shift+plus change_font_size all +1.0
+map ctrl+shift+minus change font size all -1.0
+
+# Background opacity, set to 0 if you want blur/transparency.
+# Blur works with hyprland, or sway-fx as a drop-in replacement for sway.
+background_opacity 0.985
+
+
+# Finally, the COLORS! these use the design system I made for this rice.
+cursor #3e9949
+
+selection_background #21351a
+selection_foreground #bae6c5
+
+background #bae6c5
+foreground #0d1913
+
+color0 #9400ff
+color8 #92fcfa
+color1 #ff0000
+color9 #ff0000
+color2 #00ff5d
+color10 #00ff5d
+color3 #AC82E9
+color11 #AC82E9
+color4 #7b91fc
+color12 #7b91fc
+color5 #fce40f
+color13 #fce40f
+color6 #8F56E1
+color14 #8F56E1
+color7 #ff00ee
+color15 #d3d3d3
diff --git a/setup/managed/kitty/indigo_theme.conf b/setup/managed/kitty/indigo_theme.conf
new file mode 100644
index 0000000..00b7bbe
--- /dev/null
+++ b/setup/managed/kitty/indigo_theme.conf
@@ -0,0 +1,48 @@
+# Make the cursor shape a beam
+shell_integration no-cursor
+cursor_shape block
+
+# Padding
+window_padding_width 7
+window_padding_height 10
+
+# Scroll back up to 3000 lines.
+scrollback_lines 3000
+
+#Default font size.
+font_size 11
+
+# Just a keybind to change font size to your liking, it's CTRL + scroll wheel up or down.
+map ctrl+shift+plus change_font_size all +1.0
+map ctrl+shift+minus change font size all -1.0
+
+# Background opacity, set to 0 if you want blur/transparency.
+# Blur works with hyprland, or sway-fx as a drop-in replacement for sway.
+background_opacity 0.985
+
+
+# Finally, the COLORS! these use the design system I made for this rice.
+cursor #207874
+
+selection_background #d8d8d8
+selection_foreground #207874
+
+background #101010
+foreground #d8d8d8
+
+color0 #9400ff
+color8 #92fcfa
+color1 #ff0000
+color9 #ff0000
+color2 #00ff5d
+color10 #00ff5d
+color3 #AC82E9
+color11 #AC82E9
+color4 #7b91fc
+color12 #7b91fc
+color5 #fce40f
+color13 #fce40f
+color6 #8F56E1
+color14 #8F56E1
+color7 #ff00ee
+color15 #d3d3d3
diff --git a/setup/managed/kitty/kitty.conf b/setup/managed/kitty/kitty.conf
new file mode 100644
index 0000000..e346336
--- /dev/null
+++ b/setup/managed/kitty/kitty.conf
@@ -0,0 +1,11 @@
+# BEGIN_KITTY_THEME
+include default_theme.conf
+# END_KITTY_THEME
+
+
+# BEGIN_KITTY_FONTS
+font_family family="Fira Code"
+bold_font auto
+italic_font auto
+bold_italic_font auto
+# END_KITTY_FONTS
\ No newline at end of file
diff --git a/setup/managed/kitty/kitty.conf.bak b/setup/managed/kitty/kitty.conf.bak
new file mode 100644
index 0000000..dd079ba
--- /dev/null
+++ b/setup/managed/kitty/kitty.conf.bak
@@ -0,0 +1,3 @@
+# BEGIN_KITTY_THEME
+include default_theme.conf
+# END_KITTY_THEME
diff --git a/setup/managed/kitty/yorha_theme.conf b/setup/managed/kitty/yorha_theme.conf
new file mode 100644
index 0000000..6d5acd3
--- /dev/null
+++ b/setup/managed/kitty/yorha_theme.conf
@@ -0,0 +1,48 @@
+# Make the cursor shape a beam
+shell_integration no-cursor
+cursor_shape block
+
+# Padding
+window_padding_width 7
+window_padding_height 10
+
+# Scroll back up to 3000 lines.
+scrollback_lines 3000
+
+#Default font size.
+font_size 11
+
+# Just a keybind to change font size to your liking, it's CTRL + scroll wheel up or down.
+map ctrl+shift+plus change_font_size all +1.0
+map ctrl+shift+minus change font size all -1.0
+
+# Background opacity, set to 0 if you want blur/transparency.
+# Blur works with hyprland, or sway-fx as a drop-in replacement for sway.
+background_opacity 0.985
+
+
+# Finally, the COLORS! these use the design system I made for this rice.
+cursor #626335
+
+selection_background #1e1d1b
+selection_foreground #d9caba
+
+background #baafa1
+foreground #1e1d1b
+
+color0 #9400ff
+color8 #92fcfa
+color1 #ff0000
+color9 #ff0000
+color2 #00ff5d
+color10 #00ff5d
+color3 #AC82E9
+color11 #AC82E9
+color4 #7b91fc
+color12 #7b91fc
+color5 #fce40f
+color13 #fce40f
+color6 #8F56E1
+color14 #8F56E1
+color7 #ff00ee
+color15 #d3d3d3
diff --git a/setup/managed/libreoffice/4/user/GraphicsRenderTests.log b/setup/managed/libreoffice/4/user/GraphicsRenderTests.log
new file mode 100644
index 0000000..e316ff3
--- /dev/null
+++ b/setup/managed/libreoffice/4/user/GraphicsRenderTests.log
@@ -0,0 +1,53 @@
+Graphics Backend used: svp
+Passed Tests: 67
+Quirky Tests: 35
+Failed Tests: 1
+Skipped Tests: 6
+
+---Name of the tests that failed---
+testDrawInvertN50WithRectangle
+
+---Name of the tests that were Quirky---
+testDrawRectWithLine
+testDrawRectWithPolygon
+testDrawRectWithPolyLine
+testDrawRectWithPolyPolygon
+testDrawRectWithPolyPolygonB2D
+testDrawDiamondWithLine
+testComplexDrawTransformedBitmap24bpp
+testDashedLine
+testLinearGradientBorder
+testLinearGradientSteps
+testRadialGradient
+testRadialGradientOfs
+testHalfEllipseWithPolyLine
+testHalfEllipseAAWithPolyLine
+testHalfEllipseAAWithPolyLineB2D
+testHalfEllipseWithPolygon
+testHalfEllipseAAWithPolygon
+testDrawRectangleOnSize1028WithPixel
+testDrawRectangleOnSize4096WithPixel
+testDrawRectangleOnSize1028WithLine
+testDrawRectangleOnSize4096WithLine
+testDrawRectangleOnSize1028WithPolyLine
+testDrawRectangleOnSize4096WithPolyLine
+testDrawRectangleOnSize1028WithPolygon
+testDrawRectangleOnSize4096WithPolygon
+testDrawRectangleOnSize1028WithPolyLineB2D
+testDrawRectangleOnSize4096WithPolyLineB2D
+testDrawRectangleOnSize1028WithPolyPolygon
+testDrawRectangleOnSize4096WithPolyPolygon
+testDrawRectangleOnSize1028WithPolyPolygonB2D
+testDrawRectangleOnSize4096WithPolygonPolygonB2D
+testDrawOpenPolygonWithPolyLine
+testDrawOpenPolygonWithPolygon
+testDrawOpenPolygonWithPolyPolygon
+testDrawOpenPolygonWithPolyPolygonB2D
+
+---Name of the tests that were Skipped---
+testDrawInvertTrackFrameWithRectangle
+testDrawBitmap32bpp
+testDrawTransformedBitmap32bpp
+testDrawBitmapExWithAlpha32bpp
+testDrawMask32bpp
+testDrawBlend32bpp
diff --git a/setup/managed/libreoffice/4/user/autotext/mytexts.bau b/setup/managed/libreoffice/4/user/autotext/mytexts.bau
new file mode 100644
index 0000000..7ace179
Binary files /dev/null and b/setup/managed/libreoffice/4/user/autotext/mytexts.bau differ
diff --git a/setup/managed/libreoffice/4/user/basic/Standard/Module1.xba b/setup/managed/libreoffice/4/user/basic/Standard/Module1.xba
new file mode 100644
index 0000000..3424c16
--- /dev/null
+++ b/setup/managed/libreoffice/4/user/basic/Standard/Module1.xba
@@ -0,0 +1,24 @@
+
+
+
+REM ***** BASIC *****
+
+Sub Main
+
+End Sub
\ No newline at end of file
diff --git a/setup/managed/libreoffice/4/user/basic/Standard/dialog.xlb b/setup/managed/libreoffice/4/user/basic/Standard/dialog.xlb
new file mode 100644
index 0000000..669529d
--- /dev/null
+++ b/setup/managed/libreoffice/4/user/basic/Standard/dialog.xlb
@@ -0,0 +1,3 @@
+
+
+
diff --git a/setup/managed/libreoffice/4/user/basic/Standard/script.xlb b/setup/managed/libreoffice/4/user/basic/Standard/script.xlb
new file mode 100644
index 0000000..67c9503
--- /dev/null
+++ b/setup/managed/libreoffice/4/user/basic/Standard/script.xlb
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/setup/managed/libreoffice/4/user/basic/dialog.xlc b/setup/managed/libreoffice/4/user/basic/dialog.xlc
new file mode 100644
index 0000000..34064e8
--- /dev/null
+++ b/setup/managed/libreoffice/4/user/basic/dialog.xlc
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/setup/managed/libreoffice/4/user/basic/script.xlc b/setup/managed/libreoffice/4/user/basic/script.xlc
new file mode 100644
index 0000000..34064e8
--- /dev/null
+++ b/setup/managed/libreoffice/4/user/basic/script.xlc
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/setup/managed/libreoffice/4/user/config/autotbl.fmt b/setup/managed/libreoffice/4/user/config/autotbl.fmt
new file mode 100644
index 0000000..611ac0d
Binary files /dev/null and b/setup/managed/libreoffice/4/user/config/autotbl.fmt differ
diff --git a/setup/managed/libreoffice/4/user/config/javasettings_Linux_X86_64.xml b/setup/managed/libreoffice/4/user/config/javasettings_Linux_X86_64.xml
new file mode 100644
index 0000000..d18aa9c
--- /dev/null
+++ b/setup/managed/libreoffice/4/user/config/javasettings_Linux_X86_64.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/setup/managed/libreoffice/4/user/database/biblio.odb b/setup/managed/libreoffice/4/user/database/biblio.odb
new file mode 100644
index 0000000..9e70744
Binary files /dev/null and b/setup/managed/libreoffice/4/user/database/biblio.odb differ
diff --git a/setup/managed/libreoffice/4/user/database/biblio/biblio.dbf b/setup/managed/libreoffice/4/user/database/biblio/biblio.dbf
new file mode 100644
index 0000000..2715f99
Binary files /dev/null and b/setup/managed/libreoffice/4/user/database/biblio/biblio.dbf differ
diff --git a/setup/managed/libreoffice/4/user/database/biblio/biblio.dbt b/setup/managed/libreoffice/4/user/database/biblio/biblio.dbt
new file mode 100644
index 0000000..0ad4067
Binary files /dev/null and b/setup/managed/libreoffice/4/user/database/biblio/biblio.dbt differ
diff --git a/setup/managed/libreoffice/4/user/database/evolocal.odb b/setup/managed/libreoffice/4/user/database/evolocal.odb
new file mode 100644
index 0000000..82f486a
Binary files /dev/null and b/setup/managed/libreoffice/4/user/database/evolocal.odb differ
diff --git a/setup/managed/libreoffice/4/user/extensions/buildid b/setup/managed/libreoffice/4/user/extensions/buildid
new file mode 100644
index 0000000..ba31713
--- /dev/null
+++ b/setup/managed/libreoffice/4/user/extensions/buildid
@@ -0,0 +1 @@
+480(Build:2)
\ No newline at end of file
diff --git a/setup/managed/libreoffice/4/user/extensions/bundled/lastsynchronized b/setup/managed/libreoffice/4/user/extensions/bundled/lastsynchronized
new file mode 100644
index 0000000..56a6051
--- /dev/null
+++ b/setup/managed/libreoffice/4/user/extensions/bundled/lastsynchronized
@@ -0,0 +1 @@
+1
\ No newline at end of file
diff --git a/setup/managed/libreoffice/4/user/extensions/bundled/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/backenddb.xml b/setup/managed/libreoffice/4/user/extensions/bundled/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/backenddb.xml
new file mode 100644
index 0000000..fb4de4d
--- /dev/null
+++ b/setup/managed/libreoffice/4/user/extensions/bundled/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/backenddb.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/setup/managed/libreoffice/4/user/extensions/bundled/registry/com.sun.star.comp.deployment.help.PackageRegistryBackend/backenddb.xml b/setup/managed/libreoffice/4/user/extensions/bundled/registry/com.sun.star.comp.deployment.help.PackageRegistryBackend/backenddb.xml
new file mode 100644
index 0000000..496c8c8
--- /dev/null
+++ b/setup/managed/libreoffice/4/user/extensions/bundled/registry/com.sun.star.comp.deployment.help.PackageRegistryBackend/backenddb.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/setup/managed/libreoffice/4/user/extensions/shared/lastsynchronized b/setup/managed/libreoffice/4/user/extensions/shared/lastsynchronized
new file mode 100644
index 0000000..56a6051
--- /dev/null
+++ b/setup/managed/libreoffice/4/user/extensions/shared/lastsynchronized
@@ -0,0 +1 @@
+1
\ No newline at end of file
diff --git a/setup/managed/libreoffice/4/user/extensions/shared/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/backenddb.xml b/setup/managed/libreoffice/4/user/extensions/shared/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/backenddb.xml
new file mode 100644
index 0000000..fb4de4d
--- /dev/null
+++ b/setup/managed/libreoffice/4/user/extensions/shared/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/backenddb.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/setup/managed/libreoffice/4/user/extensions/shared/registry/com.sun.star.comp.deployment.help.PackageRegistryBackend/backenddb.xml b/setup/managed/libreoffice/4/user/extensions/shared/registry/com.sun.star.comp.deployment.help.PackageRegistryBackend/backenddb.xml
new file mode 100644
index 0000000..496c8c8
--- /dev/null
+++ b/setup/managed/libreoffice/4/user/extensions/shared/registry/com.sun.star.comp.deployment.help.PackageRegistryBackend/backenddb.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/setup/managed/libreoffice/4/user/extensions/tmp/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/backenddb.xml b/setup/managed/libreoffice/4/user/extensions/tmp/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/backenddb.xml
new file mode 100644
index 0000000..fb4de4d
--- /dev/null
+++ b/setup/managed/libreoffice/4/user/extensions/tmp/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/backenddb.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/setup/managed/libreoffice/4/user/extensions/tmp/registry/com.sun.star.comp.deployment.help.PackageRegistryBackend/backenddb.xml b/setup/managed/libreoffice/4/user/extensions/tmp/registry/com.sun.star.comp.deployment.help.PackageRegistryBackend/backenddb.xml
new file mode 100644
index 0000000..496c8c8
--- /dev/null
+++ b/setup/managed/libreoffice/4/user/extensions/tmp/registry/com.sun.star.comp.deployment.help.PackageRegistryBackend/backenddb.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/setup/managed/libreoffice/4/user/gallery/sg30.sdv b/setup/managed/libreoffice/4/user/gallery/sg30.sdv
new file mode 100644
index 0000000..fc17dd9
Binary files /dev/null and b/setup/managed/libreoffice/4/user/gallery/sg30.sdv differ
diff --git a/setup/managed/libreoffice/4/user/gallery/sg30.thm b/setup/managed/libreoffice/4/user/gallery/sg30.thm
new file mode 100644
index 0000000..9bf97d6
Binary files /dev/null and b/setup/managed/libreoffice/4/user/gallery/sg30.thm differ
diff --git a/setup/managed/libreoffice/4/user/pack/ExtensionInfo.pack b/setup/managed/libreoffice/4/user/pack/ExtensionInfo.pack
new file mode 100644
index 0000000..02b6c98
Binary files /dev/null and b/setup/managed/libreoffice/4/user/pack/ExtensionInfo.pack differ
diff --git a/setup/managed/libreoffice/4/user/pack/autotext/mytexts.pack b/setup/managed/libreoffice/4/user/pack/autotext/mytexts.pack
new file mode 100644
index 0000000..78618ab
Binary files /dev/null and b/setup/managed/libreoffice/4/user/pack/autotext/mytexts.pack differ
diff --git a/setup/managed/libreoffice/4/user/pack/basic/Standard/Module1.pack b/setup/managed/libreoffice/4/user/pack/basic/Standard/Module1.pack
new file mode 100644
index 0000000..d7944bf
Binary files /dev/null and b/setup/managed/libreoffice/4/user/pack/basic/Standard/Module1.pack differ
diff --git a/setup/managed/libreoffice/4/user/pack/basic/Standard/dialog.pack b/setup/managed/libreoffice/4/user/pack/basic/Standard/dialog.pack
new file mode 100644
index 0000000..db56d38
Binary files /dev/null and b/setup/managed/libreoffice/4/user/pack/basic/Standard/dialog.pack differ
diff --git a/setup/managed/libreoffice/4/user/pack/basic/Standard/script.pack b/setup/managed/libreoffice/4/user/pack/basic/Standard/script.pack
new file mode 100644
index 0000000..763901c
Binary files /dev/null and b/setup/managed/libreoffice/4/user/pack/basic/Standard/script.pack differ
diff --git a/setup/managed/libreoffice/4/user/pack/basic/dialog.pack b/setup/managed/libreoffice/4/user/pack/basic/dialog.pack
new file mode 100644
index 0000000..275025b
Binary files /dev/null and b/setup/managed/libreoffice/4/user/pack/basic/dialog.pack differ
diff --git a/setup/managed/libreoffice/4/user/pack/basic/script.pack b/setup/managed/libreoffice/4/user/pack/basic/script.pack
new file mode 100644
index 0000000..275025b
Binary files /dev/null and b/setup/managed/libreoffice/4/user/pack/basic/script.pack differ
diff --git a/setup/managed/libreoffice/4/user/pack/config/autotbl.pack b/setup/managed/libreoffice/4/user/pack/config/autotbl.pack
new file mode 100644
index 0000000..c0060a0
Binary files /dev/null and b/setup/managed/libreoffice/4/user/pack/config/autotbl.pack differ
diff --git a/setup/managed/libreoffice/4/user/pack/config/javasettings_Linux_X86_64.pack b/setup/managed/libreoffice/4/user/pack/config/javasettings_Linux_X86_64.pack
new file mode 100644
index 0000000..7af6b37
Binary files /dev/null and b/setup/managed/libreoffice/4/user/pack/config/javasettings_Linux_X86_64.pack differ
diff --git a/setup/managed/libreoffice/4/user/pack/database/biblio.pack b/setup/managed/libreoffice/4/user/pack/database/biblio.pack
new file mode 100644
index 0000000..d895355
Binary files /dev/null and b/setup/managed/libreoffice/4/user/pack/database/biblio.pack differ
diff --git a/setup/managed/libreoffice/4/user/pack/database/biblio/biblio.pack b/setup/managed/libreoffice/4/user/pack/database/biblio/biblio.pack
new file mode 100644
index 0000000..6216fb7
Binary files /dev/null and b/setup/managed/libreoffice/4/user/pack/database/biblio/biblio.pack differ
diff --git a/setup/managed/libreoffice/4/user/pack/database/evolocal.pack b/setup/managed/libreoffice/4/user/pack/database/evolocal.pack
new file mode 100644
index 0000000..07987aa
Binary files /dev/null and b/setup/managed/libreoffice/4/user/pack/database/evolocal.pack differ
diff --git a/setup/managed/libreoffice/4/user/pack/registrymodifications.pack b/setup/managed/libreoffice/4/user/pack/registrymodifications.pack
new file mode 100644
index 0000000..df16baf
Binary files /dev/null and b/setup/managed/libreoffice/4/user/pack/registrymodifications.pack differ
diff --git a/setup/managed/libreoffice/4/user/registrymodifications.xcu b/setup/managed/libreoffice/4/user/registrymodifications.xcu
new file mode 100644
index 0000000..20eea7a
--- /dev/null
+++ b/setup/managed/libreoffice/4/user/registrymodifications.xcu
@@ -0,0 +1,111 @@
+
+
+- false
+- 0
+- 20345
+- no
+
+- true
+- false
+- estradiol-calcCalc MS Excel 2007 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ACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACP/F1GK4JBHheUuAAAAAElFTkSuQmCC
+- file:///home/mayday/Downloads/estradiol-calc.xlsx
+- file:///home/mayday/keys/dotfiles.pub
+- 2147483647com.sun.star.logging.FileHandler$(userurl)/$(loggername).logcom.sun.star.logging.PlainTextFormatter
+- false
+
+- true
+- true
+- 0,2
+- true
+- 0
+- false
+- true
+- false
+- 2147483647,2147483647
+- 0,0
+- false
+- 0
+- Formatting
+- true
+- true
+- true
+- 0,0
+- true
+- 0
+- false
+- true
+- false
+- 2147483647,2147483647
+- 0,0
+- false
+- 0
+- Standard
+- true
+- com.sun.star.text.TextDocument, any, visiblecom.sun.star.text.GlobalDocument, any, visiblecom.sun.star.text.WebDocument, any, visiblecom.sun.star.xforms.XMLFormDocument, any, visiblecom.sun.star.sdb.FormDesign, any, visiblecom.sun.star.sdb.TextReportDesign, any, visible
+- com.sun.star.text.TextDocument, any, visiblecom.sun.star.text.GlobalDocument, any, visiblecom.sun.star.text.WebDocument, any, visiblecom.sun.star.xforms.XMLFormDocument, any, visiblecom.sun.star.sdb.FormDesign, any, visiblecom.sun.star.sdb.TextReportDesign, any, visible
+- com.sun.star.sheet.SpreadsheetDocument, any, visiblecom.sun.star.drawing.DrawingDocument, any, visiblecom.sun.star.presentation.PresentationDocument, any, visiblecom.sun.star.text.TextDocument, any, visiblecom.sun.star.text.GlobalDocument, any, visiblecom.sun.star.text.WebDocument, any, visiblecom.sun.star.xforms.XMLFormDocument, any, visiblecom.sun.star.sdb.FormDesign, any, visiblecom.sun.star.sdb.TextReportDesign, any, visible
+- com.sun.star.text.TextDocument, any, visiblecom.sun.star.text.GlobalDocument, any, visiblecom.sun.star.text.WebDocument, any, visiblecom.sun.star.xforms.XMLFormDocument, any, visiblecom.sun.star.sdb.FormDesign, any, visiblecom.sun.star.sdb.TextReportDesign, any, visible
+- com.sun.star.sheet.SpreadsheetDocument, any, visiblecom.sun.star.drawing.DrawingDocument, any, visiblecom.sun.star.presentation.PresentationDocument, any, visiblecom.sun.star.text.TextDocument, any, visiblecom.sun.star.text.GlobalDocument, any, visiblecom.sun.star.text.WebDocument, any, visiblecom.sun.star.xforms.XMLFormDocument, any, visiblecom.sun.star.sdb.FormDesign, any, visiblecom.sun.star.sdb.TextReportDesign, any, visible
+- any, any, visible
+- com.sun.star.sheet.SpreadsheetDocument, any, visible
+- com.sun.star.sheet.SpreadsheetDocument, any, visiblecom.sun.star.drawing.DrawingDocument, any, visiblecom.sun.star.presentation.PresentationDocument, any, visiblecom.sun.star.text.TextDocument, any, visiblecom.sun.star.text.GlobalDocument, any, visiblecom.sun.star.text.WebDocument, any, visiblecom.sun.star.xforms.XMLFormDocument, any, visiblecom.sun.star.sdb.FormDesign, any, visiblecom.sun.star.sdb.TextReportDesign, any, visible
+- com.sun.star.text.TextDocument, Annotation, visiblecom.sun.star.text.GlobalDocument, Annotation, visiblecom.sun.star.text.WebDocument, Annotation, visiblecom.sun.star.xforms.XMLFormDocument, Annotation, visiblecom.sun.star.sdb.FormDesign, Annotation, visiblecom.sun.star.sdb.TextReportDesign, Annotation, visiblecom.sun.star.text.TextDocument, DrawText, visiblecom.sun.star.text.GlobalDocument, DrawText, visiblecom.sun.star.text.WebDocument, DrawText, visiblecom.sun.star.xforms.XMLFormDocument, DrawText, visiblecom.sun.star.sdb.FormDesign, DrawText, visiblecom.sun.star.sdb.TextReportDesign, DrawText, visiblecom.sun.star.text.TextDocument, Table, visiblecom.sun.star.text.GlobalDocument, Table, visiblecom.sun.star.text.WebDocument, Table, visiblecom.sun.star.xforms.XMLFormDocument, Table, visiblecom.sun.star.sdb.FormDesign, Table, visiblecom.sun.star.sdb.TextReportDesign, Table, visiblecom.sun.star.text.TextDocument, Text, visiblecom.sun.star.text.GlobalDocument, Text, visiblecom.sun.star.text.WebDocument, Text, visiblecom.sun.star.xforms.XMLFormDocument, Text, visiblecom.sun.star.sdb.FormDesign, Text, visiblecom.sun.star.sdb.TextReportDesign, Text, visiblecom.sun.star.text.TextDocument, default, visiblecom.sun.star.text.GlobalDocument, default, visiblecom.sun.star.text.WebDocument, default, visiblecom.sun.star.xforms.XMLFormDocument, default, visiblecom.sun.star.sdb.FormDesign, default, visiblecom.sun.star.sdb.TextReportDesign, default, visible
+- com.sun.star.text.TextDocument, any, visiblecom.sun.star.text.GlobalDocument, any, visiblecom.sun.star.text.WebDocument, any, visiblecom.sun.star.xforms.XMLFormDocument, any, visiblecom.sun.star.sdb.FormDesign, any, visiblecom.sun.star.sdb.TextReportDesign, any, visible
+- any,PropertyDeckcom.sun.star.formula.FormulaProperties,ElementsDeckcom.sun.star.sheet.SpreadsheetDocument,PropertyDeckcom.sun.star.text.TextDocument,PropertyDeck
+- com.sun.star.sheet.SpreadsheetDocument, DrawText, visible, .uno:ParagraphDialogcom.sun.star.sheet.SpreadsheetDocument, DrawLine, hidden, .uno:ParagraphDialogcom.sun.star.drawing.DrawingDocument, DrawLine, hidden, .uno:ParagraphDialogcom.sun.star.presentation.PresentationDocument, DrawLine, hidden, .uno:ParagraphDialogcom.sun.star.drawing.DrawingDocument, 3DObject, hidden, .uno:ParagraphDialogcom.sun.star.presentation.PresentationDocument, 3DObject, hidden, .uno:ParagraphDialogcom.sun.star.drawing.DrawingDocument, Draw, hidden, .uno:ParagraphDialogcom.sun.star.presentation.PresentationDocument, Draw, hidden, .uno:ParagraphDialogcom.sun.star.drawing.DrawingDocument, DrawFontwork, hidden, .uno:ParagraphDialogcom.sun.star.presentation.PresentationDocument, DrawFontwork, hidden, .uno:ParagraphDialogcom.sun.star.drawing.DrawingDocument, DrawText, visible, .uno:ParagraphDialogcom.sun.star.presentation.PresentationDocument, DrawText, visible, .uno:ParagraphDialogcom.sun.star.drawing.DrawingDocument, Graphic, hidden, .uno:ParagraphDialogcom.sun.star.presentation.PresentationDocument, Graphic, hidden, .uno:ParagraphDialogcom.sun.star.drawing.DrawingDocument, Table, visible, .uno:ParagraphDialogcom.sun.star.presentation.PresentationDocument, Table, visible, .uno:ParagraphDialogcom.sun.star.drawing.DrawingDocument, TextObject, visible, .uno:ParagraphDialogcom.sun.star.presentation.PresentationDocument, TextObject, visible, .uno:ParagraphDialogcom.sun.star.text.TextDocument, Annotation, visible, .uno:ParagraphDialogcom.sun.star.text.GlobalDocument, Annotation, visible, .uno:ParagraphDialogcom.sun.star.text.WebDocument, Annotation, visible, .uno:ParagraphDialogcom.sun.star.xforms.XMLFormDocument, Annotation, visible, .uno:ParagraphDialogcom.sun.star.sdb.FormDesign, Annotation, visible, .uno:ParagraphDialogcom.sun.star.sdb.TextReportDesign, Annotation, visible, .uno:ParagraphDialogcom.sun.star.text.TextDocument, DrawText, visible, .uno:ParagraphDialogcom.sun.star.text.GlobalDocument, DrawText, visible, .uno:ParagraphDialogcom.sun.star.text.WebDocument, DrawText, visible, .uno:ParagraphDialogcom.sun.star.xforms.XMLFormDocument, DrawText, visible, .uno:ParagraphDialogcom.sun.star.sdb.FormDesign, DrawText, visible, .uno:ParagraphDialogcom.sun.star.sdb.TextReportDesign, DrawText, visible, .uno:ParagraphDialogcom.sun.star.text.TextDocument, Table, visible, .uno:ParagraphDialogcom.sun.star.text.GlobalDocument, Table, visible, .uno:ParagraphDialogcom.sun.star.text.WebDocument, Table, visible, .uno:ParagraphDialogcom.sun.star.xforms.XMLFormDocument, Table, visible, .uno:ParagraphDialogcom.sun.star.sdb.FormDesign, Table, visible, .uno:ParagraphDialogcom.sun.star.sdb.TextReportDesign, Table, visible, .uno:ParagraphDialogcom.sun.star.text.TextDocument, Text, visible, .uno:ParagraphDialogcom.sun.star.text.GlobalDocument, Text, visible, .uno:ParagraphDialogcom.sun.star.text.WebDocument, Text, visible, .uno:ParagraphDialogcom.sun.star.xforms.XMLFormDocument, Text, visible, .uno:ParagraphDialogcom.sun.star.sdb.FormDesign, Text, visible, .uno:ParagraphDialogcom.sun.star.sdb.TextReportDesign, Text, visible, .uno:ParagraphDialogcom.sun.star.text.TextDocument, default, visible, .uno:ParagraphDialogcom.sun.star.text.GlobalDocument, default, visible, .uno:ParagraphDialogcom.sun.star.text.WebDocument, default, visible, .uno:ParagraphDialogcom.sun.star.xforms.XMLFormDocument, default, visible, .uno:ParagraphDialogcom.sun.star.sdb.FormDesign, default, visible, .uno:ParagraphDialogcom.sun.star.sdb.TextReportDesign, default, visible, .uno:ParagraphDialog
+- com.sun.star.sheet.SpreadsheetDocument, Auditing, visible, .uno:Hyphenatecom.sun.star.sheet.SpreadsheetDocument, Cell, visible, .uno:Hyphenatecom.sun.star.sheet.SpreadsheetDocument, default, visible, .uno:Hyphenatecom.sun.star.sheet.SpreadsheetDocument, EditCell, visible, .uno:Hyphenatecom.sun.star.sheet.SpreadsheetDocument, Pivot, visible, .uno:Hyphenatecom.sun.star.sheet.SpreadsheetDocument, Sparkline, visible, .uno:Hyphenate
+- com.sun.star.sheet.SpreadsheetDocument, Auditing, visible, .uno:FormatCellDialogcom.sun.star.sheet.SpreadsheetDocument, Cell, visible, .uno:FormatCellDialogcom.sun.star.sheet.SpreadsheetDocument, EditCell, visible, .uno:FormatCellDialogcom.sun.star.sheet.SpreadsheetDocument, default, visible, .uno:FormatCellDialogcom.sun.star.sheet.SpreadsheetDocument, Pivot, visible, .uno:FormatCellDialogcom.sun.star.sheet.SpreadsheetDocument, Sparkline, visible, .uno:FormatCellDialog
+- com.sun.star.sheet.SpreadsheetDocument, Auditing, visible, .uno:FormatCellDialogcom.sun.star.sheet.SpreadsheetDocument, Cell, visible, .uno:FormatCellDialogcom.sun.star.sheet.SpreadsheetDocument, EditCell, visible, .uno:FormatCellDialogcom.sun.star.sheet.SpreadsheetDocument, default, visible, .uno:FormatCellDialogcom.sun.star.sheet.SpreadsheetDocument, Pivot, visible, .uno:FormatCellDialogcom.sun.star.sheet.SpreadsheetDocument, Sparkline, visible, .uno:FormatCellDialog
+- com.sun.star.text.TextDocument, Annotation, visible, .uno:EditStylecom.sun.star.text.GlobalDocument, Annotation, visible, .uno:EditStylecom.sun.star.text.WebDocument, Annotation, visible, .uno:EditStylecom.sun.star.xforms.XMLFormDocument, Annotation, visible, .uno:EditStylecom.sun.star.sdb.FormDesign, Annotation, visible, .uno:EditStylecom.sun.star.sdb.TextReportDesign, Annotation, visible, .uno:EditStylecom.sun.star.text.TextDocument, DrawText, visible, .uno:EditStylecom.sun.star.text.GlobalDocument, DrawText, visible, .uno:EditStylecom.sun.star.text.WebDocument, DrawText, visible, .uno:EditStylecom.sun.star.xforms.XMLFormDocument, DrawText, visible, .uno:EditStylecom.sun.star.sdb.FormDesign, DrawText, visible, .uno:EditStylecom.sun.star.sdb.TextReportDesign, DrawText, visible, .uno:EditStylecom.sun.star.text.TextDocument, Table, visible, .uno:EditStylecom.sun.star.text.GlobalDocument, Table, visible, .uno:EditStylecom.sun.star.text.WebDocument, Table, visible, .uno:EditStylecom.sun.star.xforms.XMLFormDocument, Table, visible, .uno:EditStylecom.sun.star.sdb.FormDesign, Table, visible, .uno:EditStylecom.sun.star.sdb.TextReportDesign, Table, visible, .uno:EditStylecom.sun.star.text.TextDocument, Text, visible, .uno:EditStylecom.sun.star.text.GlobalDocument, Text, visible, .uno:EditStylecom.sun.star.text.WebDocument, Text, visible, .uno:EditStylecom.sun.star.xforms.XMLFormDocument, Text, visible, .uno:EditStylecom.sun.star.sdb.FormDesign, Text, visible, .uno:EditStylecom.sun.star.sdb.TextReportDesign, Text, visible, .uno:EditStylecom.sun.star.text.TextDocument, default, visible, .uno:EditStylecom.sun.star.text.GlobalDocument, default, visible, .uno:EditStylecom.sun.star.text.WebDocument, default, visible, .uno:EditStylecom.sun.star.xforms.XMLFormDocument, default, visible, .uno:EditStylecom.sun.star.sdb.FormDesign, default, visible, .uno:EditStylecom.sun.star.sdb.TextReportDesign, default, visible, .uno:EditStylecom.sun.star.sheet.SpreadsheetDocument, Auditing, visible, .uno:EditStylecom.sun.star.sheet.SpreadsheetDocument, Cell, visible, .uno:EditStylecom.sun.star.sheet.SpreadsheetDocument, default, visible, .uno:EditStylecom.sun.star.sheet.SpreadsheetDocument, EditCell, visible, .uno:EditStylecom.sun.star.sheet.SpreadsheetDocument, Pivot, visible, .uno:EditStylecom.sun.star.sheet.SpreadsheetDocument, Sparkline, visible, .uno:EditStyle
+- com.sun.star.sheet.SpreadsheetDocument, Auditing, visible, .uno:CellTextDlgcom.sun.star.sheet.SpreadsheetDocument, Cell, visible, .uno:CellTextDlgcom.sun.star.sheet.SpreadsheetDocument, default, visible, .uno:CellTextDlgcom.sun.star.sheet.SpreadsheetDocument, DrawText, visible, .uno:FontDialogcom.sun.star.sheet.SpreadsheetDocument, DrawLine, hidden, .uno:FontDialogcom.sun.star.sheet.SpreadsheetDocument, EditCell, visible, .uno:FontDialogcom.sun.star.sheet.SpreadsheetDocument, Pivot, visible, .uno:CellTextDlgcom.sun.star.sheet.SpreadsheetDocument, Sparkline, visible, .uno:FontDialogcom.sun.star.drawing.DrawingDocument, Draw, hidden, .uno:FontDialogcom.sun.star.presentation.PresentationDocument, Draw, hidden, .uno:FontDialogcom.sun.star.drawing.DrawingDocument, DrawFontwork, hidden, .uno:FontDialogcom.sun.star.presentation.PresentationDocument, DrawFontwork, hidden, .uno:FontDialogcom.sun.star.drawing.DrawingDocument, DrawText, visible, .uno:FontDialogcom.sun.star.presentation.PresentationDocument, DrawText, visible, .uno:FontDialogcom.sun.star.drawing.DrawingDocument, DrawLine, hidden, .uno:FontDialogcom.sun.star.presentation.PresentationDocument, DrawLine, hidden, .uno:FontDialogcom.sun.star.drawing.DrawingDocument, Graphic, hidden, .uno:FontDialogcom.sun.star.presentation.PresentationDocument, Graphic, hidden, .uno:FontDialogcom.sun.star.drawing.DrawingDocument, OutlineText, visible, .uno:FontDialogcom.sun.star.presentation.PresentationDocument, OutlineText, visible, .uno:FontDialogcom.sun.star.drawing.DrawingDocument, Table, visible, .uno:FontDialogcom.sun.star.presentation.PresentationDocument, Table, visible, .uno:FontDialogcom.sun.star.drawing.DrawingDocument, TextObject, visible, .uno:FontDialogcom.sun.star.presentation.PresentationDocument, TextObject, visible, .uno:FontDialogcom.sun.star.text.TextDocument, Annotation, visible, .uno:FontDialogcom.sun.star.text.GlobalDocument, Annotation, visible, .uno:FontDialogcom.sun.star.text.WebDocument, Annotation, visible, .uno:FontDialogcom.sun.star.xforms.XMLFormDocument, Annotation, visible, .uno:FontDialogcom.sun.star.sdb.FormDesign, Annotation, visible, .uno:FontDialogcom.sun.star.sdb.TextReportDesign, Annotation, visible, .uno:FontDialogcom.sun.star.text.TextDocument, DrawText, visible, .uno:FontDialogcom.sun.star.text.GlobalDocument, DrawText, visible, .uno:FontDialogcom.sun.star.text.WebDocument, DrawText, visible, .uno:FontDialogcom.sun.star.xforms.XMLFormDocument, DrawText, visible, .uno:FontDialogcom.sun.star.sdb.FormDesign, DrawText, visible, .uno:FontDialogcom.sun.star.sdb.TextReportDesign, DrawText, visible, .uno:FontDialogcom.sun.star.text.TextDocument, Table, visible, .uno:FontDialogcom.sun.star.text.GlobalDocument, Table, visible, .uno:FontDialogcom.sun.star.text.WebDocument, Table, visible, .uno:FontDialogcom.sun.star.xforms.XMLFormDocument, Table, visible, .uno:FontDialogcom.sun.star.sdb.FormDesign, Table, visible, .uno:FontDialogcom.sun.star.sdb.TextReportDesign, Table, visible, .uno:FontDialogcom.sun.star.text.TextDocument, Text, visible, .uno:FontDialogcom.sun.star.text.GlobalDocument, Text, visible, .uno:FontDialogcom.sun.star.text.WebDocument, Text, visible, .uno:FontDialogcom.sun.star.xforms.XMLFormDocument, Text, visible, .uno:FontDialogcom.sun.star.sdb.FormDesign, Text, visible, .uno:FontDialogcom.sun.star.sdb.TextReportDesign, Text, visible, .uno:FontDialogcom.sun.star.text.TextDocument, default, visible, .uno:FontDialogcom.sun.star.text.GlobalDocument, default, visible, .uno:FontDialogcom.sun.star.text.WebDocument, default, visible, .uno:FontDialogcom.sun.star.xforms.XMLFormDocument, default, visible, .uno:FontDialogcom.sun.star.sdb.FormDesign, default, visible, .uno:FontDialogcom.sun.star.sdb.TextReportDesign, default, visible, .uno:FontDialog
+- true
+- true
+- 0,0
+- true
+- 0
+- false
+- true
+- false
+- 2147483647,2147483647
+- 0,0
+- false
+- 0
+- Standard
+- true
+- true
+- true
+- 0,1
+- true
+- 0
+- false
+- true
+- false
+- 2147483647,2147483647
+- 0,0
+- false
+- 0
+- Formatting
+- true
+- V1,2,0
+- V1,2,0
+- V1,2,1,0,10336
+- V1,2,0
+- V2,V,0,AL:(5,16,0/0/48/450,48;450)
+
+- V2,V,128
+- V2,V,20
+- V2,V,0,AL:(5,16,0/0/49/450,49;450)
+
+- V2,V,128
+- true
+- en-US
+- 0,0,944,1140;5;0,0,1899,1140;
+- 57,50,1806,1101;5;0,32,1921,1169;
+- 480(Build:2)
+- false
+- true
+- 1755219638
+- 1755219638
+- 24.8
+
diff --git a/setup/managed/libreoffice/4/user/uno_packages/cache/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/backenddb.xml b/setup/managed/libreoffice/4/user/uno_packages/cache/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/backenddb.xml
new file mode 100644
index 0000000..fb4de4d
--- /dev/null
+++ b/setup/managed/libreoffice/4/user/uno_packages/cache/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/backenddb.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/setup/managed/libreoffice/4/user/uno_packages/cache/registry/com.sun.star.comp.deployment.help.PackageRegistryBackend/backenddb.xml b/setup/managed/libreoffice/4/user/uno_packages/cache/registry/com.sun.star.comp.deployment.help.PackageRegistryBackend/backenddb.xml
new file mode 100644
index 0000000..496c8c8
--- /dev/null
+++ b/setup/managed/libreoffice/4/user/uno_packages/cache/registry/com.sun.star.comp.deployment.help.PackageRegistryBackend/backenddb.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/setup/managed/nemo/bookmark-metadata b/setup/managed/nemo/bookmark-metadata
new file mode 100644
index 0000000..e69de29
diff --git a/setup/managed/nemo/desktop-metadata b/setup/managed/nemo/desktop-metadata
new file mode 100644
index 0000000..5ef3633
--- /dev/null
+++ b/setup/managed/nemo/desktop-metadata
@@ -0,0 +1,28 @@
+[desktop-monitor-0]
+nemo-icon-view-keep-aligned=true
+nemo-icon-view-auto-layout=true
+nemo-icon-view-layout-timestamp=1755636018
+
+[Ventoy.volume]
+nemo-icon-position-timestamp=1755624544
+nemo-icon-position=91,104
+monitor=0
+icon-scale=1
+
+[STORE N GO.volume]
+nemo-icon-position=91,4
+monitor=0
+icon-scale=1
+nemo-icon-position-timestamp=1755624103
+
+[VTOYEFI.volume]
+nemo-icon-position=91,104
+monitor=0
+icon-scale=1
+nemo-icon-position-timestamp=1755624538
+
+[Ventoy.volume.2]
+nemo-icon-position=91,4
+monitor=0
+icon-scale=1
+nemo-icon-position-timestamp=1755625309
diff --git a/setup/managed/neofetch/config.conf b/setup/managed/neofetch/config.conf
new file mode 100644
index 0000000..28ba94a
--- /dev/null
+++ b/setup/managed/neofetch/config.conf
@@ -0,0 +1,880 @@
+# See this wiki page for more info:
+# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info
+print_info() {
+ info title
+ info underline
+
+ info "OS" distro
+ info "Host" model
+ info "Kernel" kernel
+ info "Uptime" uptime
+ info "Packages" packages
+ info "Shell" shell
+ info "Resolution" resolution
+ info "DE" de
+ info "WM" wm
+ info "WM Theme" wm_theme
+ info "Theme" theme
+ info "Icons" icons
+ info "Terminal" term
+ info "Terminal Font" term_font
+ info "CPU" cpu
+ info "GPU" gpu
+ info "Memory" memory
+
+ # info "GPU Driver" gpu_driver # Linux/macOS only
+ # info "Disk" disk
+ # info "Battery" battery
+ # info "Font" font
+ # info "Song" song
+ # [[ "$player" ]] && prin "Music Player" "$player"
+ # info "Local IP" local_ip
+ # info "Public IP" public_ip
+ # info "Users" users
+ # info "Locale" locale # This only works on glibc systems.
+
+ info cols
+}
+
+# Title
+
+
+# Hide/Show Fully qualified domain name.
+#
+# Default: 'off'
+# Values: 'on', 'off'
+# Flag: --title_fqdn
+title_fqdn="off"
+
+
+# Kernel
+
+
+# Shorten the output of the kernel function.
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --kernel_shorthand
+# Supports: Everything except *BSDs (except PacBSD and PC-BSD)
+#
+# Example:
+# on: '4.8.9-1-ARCH'
+# off: 'Linux 4.8.9-1-ARCH'
+kernel_shorthand="on"
+
+
+# Distro
+
+
+# Shorten the output of the distro function
+#
+# Default: 'off'
+# Values: 'on', 'tiny', 'off'
+# Flag: --distro_shorthand
+# Supports: Everything except Windows and Haiku
+distro_shorthand="off"
+
+# Show/Hide OS Architecture.
+# Show 'x86_64', 'x86' and etc in 'Distro:' output.
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --os_arch
+#
+# Example:
+# on: 'Arch Linux x86_64'
+# off: 'Arch Linux'
+os_arch="on"
+
+
+# Uptime
+
+
+# Shorten the output of the uptime function
+#
+# Default: 'on'
+# Values: 'on', 'tiny', 'off'
+# Flag: --uptime_shorthand
+#
+# Example:
+# on: '2 days, 10 hours, 3 mins'
+# tiny: '2d 10h 3m'
+# off: '2 days, 10 hours, 3 minutes'
+uptime_shorthand="on"
+
+
+# Memory
+
+
+# Show memory percentage in output.
+#
+# Default: 'off'
+# Values: 'on', 'off'
+# Flag: --memory_percent
+#
+# Example:
+# on: '1801MiB / 7881MiB (22%)'
+# off: '1801MiB / 7881MiB'
+memory_percent="off"
+
+# Change memory output unit.
+#
+# Default: 'mib'
+# Values: 'kib', 'mib', 'gib'
+# Flag: --memory_unit
+#
+# Example:
+# kib '1020928KiB / 7117824KiB'
+# mib '1042MiB / 6951MiB'
+# gib: ' 0.98GiB / 6.79GiB'
+memory_unit="mib"
+
+
+# Packages
+
+
+# Show/Hide Package Manager names.
+#
+# Default: 'tiny'
+# Values: 'on', 'tiny' 'off'
+# Flag: --package_managers
+#
+# Example:
+# on: '998 (pacman), 8 (flatpak), 4 (snap)'
+# tiny: '908 (pacman, flatpak, snap)'
+# off: '908'
+package_managers="on"
+
+
+# Shell
+
+
+# Show the path to $SHELL
+#
+# Default: 'off'
+# Values: 'on', 'off'
+# Flag: --shell_path
+#
+# Example:
+# on: '/bin/bash'
+# off: 'bash'
+shell_path="off"
+
+# Show $SHELL version
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --shell_version
+#
+# Example:
+# on: 'bash 4.4.5'
+# off: 'bash'
+shell_version="on"
+
+
+# CPU
+
+
+# CPU speed type
+#
+# Default: 'bios_limit'
+# Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'.
+# Flag: --speed_type
+# Supports: Linux with 'cpufreq'
+# NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value.
+speed_type="bios_limit"
+
+# CPU speed shorthand
+#
+# Default: 'off'
+# Values: 'on', 'off'.
+# Flag: --speed_shorthand
+# NOTE: This flag is not supported in systems with CPU speed less than 1 GHz
+#
+# Example:
+# on: 'i7-6500U (4) @ 3.1GHz'
+# off: 'i7-6500U (4) @ 3.100GHz'
+speed_shorthand="off"
+
+# Enable/Disable CPU brand in output.
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --cpu_brand
+#
+# Example:
+# on: 'Intel i7-6500U'
+# off: 'i7-6500U (4)'
+cpu_brand="on"
+
+# CPU Speed
+# Hide/Show CPU speed.
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --cpu_speed
+#
+# Example:
+# on: 'Intel i7-6500U (4) @ 3.1GHz'
+# off: 'Intel i7-6500U (4)'
+cpu_speed="on"
+
+# CPU Cores
+# Display CPU cores in output
+#
+# Default: 'logical'
+# Values: 'logical', 'physical', 'off'
+# Flag: --cpu_cores
+# Support: 'physical' doesn't work on BSD.
+#
+# Example:
+# logical: 'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores)
+# physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores)
+# off: 'Intel i7-6500U @ 3.1GHz'
+cpu_cores="logical"
+
+# CPU Temperature
+# Hide/Show CPU temperature.
+# Note the temperature is added to the regular CPU function.
+#
+# Default: 'off'
+# Values: 'C', 'F', 'off'
+# Flag: --cpu_temp
+# Supports: Linux, BSD
+# NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable
+# coretemp kernel module. This only supports newer Intel processors.
+#
+# Example:
+# C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]'
+# F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]'
+# off: 'Intel i7-6500U (4) @ 3.1GHz'
+cpu_temp="off"
+
+
+# GPU
+
+
+# Enable/Disable GPU Brand
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --gpu_brand
+#
+# Example:
+# on: 'AMD HD 7950'
+# off: 'HD 7950'
+gpu_brand="on"
+
+# Which GPU to display
+#
+# Default: 'all'
+# Values: 'all', 'dedicated', 'integrated'
+# Flag: --gpu_type
+# Supports: Linux
+#
+# Example:
+# all:
+# GPU1: AMD HD 7950
+# GPU2: Intel Integrated Graphics
+#
+# dedicated:
+# GPU1: AMD HD 7950
+#
+# integrated:
+# GPU1: Intel Integrated Graphics
+gpu_type="all"
+
+
+# Resolution
+
+
+# Display refresh rate next to each monitor
+# Default: 'off'
+# Values: 'on', 'off'
+# Flag: --refresh_rate
+# Supports: Doesn't work on Windows.
+#
+# Example:
+# on: '1920x1080 @ 60Hz'
+# off: '1920x1080'
+refresh_rate="off"
+
+
+# Gtk Theme / Icons / Font
+
+
+# Shorten output of GTK Theme / Icons / Font
+#
+# Default: 'off'
+# Values: 'on', 'off'
+# Flag: --gtk_shorthand
+#
+# Example:
+# on: 'Numix, Adwaita'
+# off: 'Numix [GTK2], Adwaita [GTK3]'
+gtk_shorthand="off"
+
+
+# Enable/Disable gtk2 Theme / Icons / Font
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --gtk2
+#
+# Example:
+# on: 'Numix [GTK2], Adwaita [GTK3]'
+# off: 'Adwaita [GTK3]'
+gtk2="on"
+
+# Enable/Disable gtk3 Theme / Icons / Font
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --gtk3
+#
+# Example:
+# on: 'Numix [GTK2], Adwaita [GTK3]'
+# off: 'Numix [GTK2]'
+gtk3="on"
+
+
+# IP Address
+
+
+# Website to ping for the public IP
+#
+# Default: 'http://ident.me'
+# Values: 'url'
+# Flag: --ip_host
+public_ip_host="http://ident.me"
+
+# Public IP timeout.
+#
+# Default: '2'
+# Values: 'int'
+# Flag: --ip_timeout
+public_ip_timeout=2
+
+# Local IP interface
+#
+# Default: 'auto' (interface of default route)
+# Values: 'auto', 'en0', 'en1'
+# Flag: --ip_interface
+local_ip_interface=('auto')
+
+
+# Desktop Environment
+
+
+# Show Desktop Environment version
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --de_version
+de_version="on"
+
+
+# Disk
+
+
+# Which disks to display.
+# The values can be any /dev/sdXX, mount point or directory.
+# NOTE: By default we only show the disk info for '/'.
+#
+# Default: '/'
+# Values: '/', '/dev/sdXX', '/path/to/drive'.
+# Flag: --disk_show
+#
+# Example:
+# disk_show=('/' '/dev/sdb1'):
+# 'Disk (/): 74G / 118G (66%)'
+# 'Disk (/mnt/Videos): 823G / 893G (93%)'
+#
+# disk_show=('/'):
+# 'Disk (/): 74G / 118G (66%)'
+#
+disk_show=('/')
+
+# Disk subtitle.
+# What to append to the Disk subtitle.
+#
+# Default: 'mount'
+# Values: 'mount', 'name', 'dir', 'none'
+# Flag: --disk_subtitle
+#
+# Example:
+# name: 'Disk (/dev/sda1): 74G / 118G (66%)'
+# 'Disk (/dev/sdb2): 74G / 118G (66%)'
+#
+# mount: 'Disk (/): 74G / 118G (66%)'
+# 'Disk (/mnt/Local Disk): 74G / 118G (66%)'
+# 'Disk (/mnt/Videos): 74G / 118G (66%)'
+#
+# dir: 'Disk (/): 74G / 118G (66%)'
+# 'Disk (Local Disk): 74G / 118G (66%)'
+# 'Disk (Videos): 74G / 118G (66%)'
+#
+# none: 'Disk: 74G / 118G (66%)'
+# 'Disk: 74G / 118G (66%)'
+# 'Disk: 74G / 118G (66%)'
+disk_subtitle="mount"
+
+# Disk percent.
+# Show/Hide disk percent.
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --disk_percent
+#
+# Example:
+# on: 'Disk (/): 74G / 118G (66%)'
+# off: 'Disk (/): 74G / 118G'
+disk_percent="on"
+
+
+# Song
+
+
+# Manually specify a music player.
+#
+# Default: 'auto'
+# Values: 'auto', 'player-name'
+# Flag: --music_player
+#
+# Available values for 'player-name':
+#
+# amarok
+# audacious
+# banshee
+# bluemindo
+# clementine
+# cmus
+# deadbeef
+# deepin-music
+# dragon
+# elisa
+# exaile
+# gnome-music
+# gmusicbrowser
+# gogglesmm
+# guayadeque
+# io.elementary.music
+# iTunes
+# Music
+# juk
+# lollypop
+# MellowPlayer
+# mocp
+# mopidy
+# mpd
+# muine
+# netease-cloud-music
+# olivia
+# playerctl
+# pogo
+# pragha
+# qmmp
+# quodlibet
+# rhythmbox
+# sayonara
+# smplayer
+# spotify
+# strawberry
+# tauonmb
+# tomahawk
+# vlc
+# xmms2d
+# xnoise
+# yarock
+music_player="auto"
+
+# Format to display song information.
+#
+# Default: '%artist% - %album% - %title%'
+# Values: '%artist%', '%album%', '%title%'
+# Flag: --song_format
+#
+# Example:
+# default: 'Song: Jet - Get Born - Sgt Major'
+song_format="%artist% - %album% - %title%"
+
+# Print the Artist, Album and Title on separate lines
+#
+# Default: 'off'
+# Values: 'on', 'off'
+# Flag: --song_shorthand
+#
+# Example:
+# on: 'Artist: The Fratellis'
+# 'Album: Costello Music'
+# 'Song: Chelsea Dagger'
+#
+# off: 'Song: The Fratellis - Costello Music - Chelsea Dagger'
+song_shorthand="off"
+
+# 'mpc' arguments (specify a host, password etc).
+#
+# Default: ''
+# Example: mpc_args=(-h HOST -P PASSWORD)
+mpc_args=()
+
+
+# Text Colors
+
+
+# Text Colors
+#
+# Default: 'distro'
+# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
+# Flag: --colors
+#
+# Each number represents a different part of the text in
+# this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info'
+#
+# Example:
+# colors=(distro) - Text is colored based on Distro colors.
+# colors=(4 6 1 8 8 6) - Text is colored in the order above.
+colors=(distro)
+
+
+# Text Options
+
+
+# Toggle bold text
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --bold
+bold="on"
+
+# Enable/Disable Underline
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --underline
+underline_enabled="on"
+
+# Underline character
+#
+# Default: '-'
+# Values: 'string'
+# Flag: --underline_char
+underline_char="-"
+
+
+# Info Separator
+# Replace the default separator with the specified string.
+#
+# Default: ':'
+# Flag: --separator
+#
+# Example:
+# separator="->": 'Shell-> bash'
+# separator=" =": 'WM = dwm'
+separator=":"
+
+
+# Color Blocks
+
+
+# Color block range
+# The range of colors to print.
+#
+# Default: '0', '15'
+# Values: 'num'
+# Flag: --block_range
+#
+# Example:
+#
+# Display colors 0-7 in the blocks. (8 colors)
+# neofetch --block_range 0 7
+#
+# Display colors 0-15 in the blocks. (16 colors)
+# neofetch --block_range 0 15
+block_range=(0 15)
+
+# Toggle color blocks
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --color_blocks
+color_blocks="on"
+
+# Color block width in spaces
+#
+# Default: '3'
+# Values: 'num'
+# Flag: --block_width
+block_width=3
+
+# Color block height in lines
+#
+# Default: '1'
+# Values: 'num'
+# Flag: --block_height
+block_height=1
+
+# Color Alignment
+#
+# Default: 'auto'
+# Values: 'auto', 'num'
+# Flag: --col_offset
+#
+# Number specifies how far from the left side of the terminal (in spaces) to
+# begin printing the columns, in case you want to e.g. center them under your
+# text.
+# Example:
+# col_offset="auto" - Default behavior of neofetch
+# col_offset=7 - Leave 7 spaces then print the colors
+col_offset="auto"
+
+# Progress Bars
+
+
+# Bar characters
+#
+# Default: '-', '='
+# Values: 'string', 'string'
+# Flag: --bar_char
+#
+# Example:
+# neofetch --bar_char 'elapsed' 'total'
+# neofetch --bar_char '-' '='
+bar_char_elapsed="-"
+bar_char_total="="
+
+# Toggle Bar border
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --bar_border
+bar_border="on"
+
+# Progress bar length in spaces
+# Number of chars long to make the progress bars.
+#
+# Default: '15'
+# Values: 'num'
+# Flag: --bar_length
+bar_length=15
+
+# Progress bar colors
+# When set to distro, uses your distro's logo colors.
+#
+# Default: 'distro', 'distro'
+# Values: 'distro', 'num'
+# Flag: --bar_colors
+#
+# Example:
+# neofetch --bar_colors 3 4
+# neofetch --bar_colors distro 5
+bar_color_elapsed="distro"
+bar_color_total="distro"
+
+
+# Info display
+# Display a bar with the info.
+#
+# Default: 'off'
+# Values: 'bar', 'infobar', 'barinfo', 'off'
+# Flags: --memory_display
+# --battery_display
+# --disk_display
+#
+# Example:
+# bar: '[---=======]'
+# infobar: 'info [---=======]'
+# barinfo: '[---=======] info'
+# off: 'info'
+memory_display="off"
+battery_display="off"
+disk_display="off"
+
+
+# Backend Settings
+
+
+# Image backend.
+#
+# Default: 'ascii'
+# Values: 'ascii', 'caca', 'catimg', 'chafa', 'jp2a', 'iterm2', 'off',
+# 'pot', 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty', 'ueberzug',
+# 'viu'
+
+# Flag: --backend
+image_backend="ascii"
+
+# Image Source
+#
+# Which image or ascii file to display.
+#
+# Default: 'auto'
+# Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/'
+# 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")'
+# Flag: --source
+#
+# NOTE: 'auto' will pick the best image source for whatever image backend is used.
+# In ascii mode, distro ascii art will be used and in an image mode, your
+# wallpaper will be used.
+image_source="auto"
+
+
+# Ascii Options
+
+
+# Ascii distro
+# Which distro's ascii art to display.
+#
+# Default: 'auto'
+# Values: 'auto', 'distro_name'
+# Flag: --ascii_distro
+# NOTE: AIX, Hash, Alpine, AlterLinux, Amazon, Anarchy, Android, instantOS,
+# Antergos, antiX, "AOSC OS", "AOSC OS/Retro", Apricity, ArchCraft,
+# ArcoLinux, ArchBox, ARCHlabs, ArchStrike, XFerience, ArchMerge, Arch,
+# Artix, Arya, Bedrock, Bitrig, BlackArch, BLAG, BlankOn, BlueLight,
+# Bodhi, bonsai, BSD, BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS,
+# Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover, Condres,
+# Container_Linux, Crystal Linux, CRUX, Cucumber, dahlia, Debian, Deepin,
+# DesaOS, Devuan, DracOS, DarkOs, Itc, DragonFly, Drauger, Elementary,
+# EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD,
+# FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo,
+# gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra, HydroOS
+# Hyperbola, iglunix, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion, Korora,
+# KSLinux, Kubuntu, LEDE, LaxerOS, LibreELEC, LFS, Linux_Lite, LMDE,
+# Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva, Manjaro, TeArch, Maui,
+# Mer, Minix, LinuxMint, Live_Raizo, MX_Linux, Namib, Neptune, NetBSD,
+# Netrunner, Nitrux, NixOS, Nurunner, NuTyX, OBRevenge, OpenBSD,
+# openEuler, OpenIndiana, openmamba, OpenMandriva, OpenStage, OpenWrt,
+# osmc, Oracle, OS Elbrus, PacBSD, Parabola, Pardus, Parrot, Parsix,
+# TrueOS, PCLinuxOS, Pengwin, Peppermint, Pisi, popos, Porteus, PostMarketOS,
+# Proxmox, PuffOS, Puppy, PureOS, Qubes, Qubyt, Quibian, Radix, Raspbian,
+# Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan, Regata, Regolith,
+# Rocky, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific, Septor,
+# SereneLinux, SharkLinux, Siduction, SkiffOS, Slackware, SliTaz, SmartOS,
+# Solus, Source_Mage, Sparky, Star, SteamOS, SunOS, openSUSE_Leap, t2,
+# openSUSE_Tumbleweed, openSUSE, SwagArch, Tails, Trisquel,
+# Ubuntu-Cinnamon, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE,
+# Ubuntu-Studio, Ubuntu, Univention, Venom, Void, VNux, LangitKetujuh, semc,
+# Obarun, windows10, Windows7, Xubuntu, Zorin, and IRIX have ascii logos.
+# NOTE: Arch, Ubuntu, Redhat, Fedora and Dragonfly have 'old' logo variants.
+# Use '{distro name}_old' to use the old logos.
+# NOTE: Ubuntu has flavor variants.
+# Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME,
+# Ubuntu-Studio, Ubuntu-Mate or Ubuntu-Budgie to use the flavors.
+# NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu,
+# CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android,
+# Artix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola,
+# Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS,
+# Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian,
+# postmarketOS, and Void have a smaller logo variant.
+# Use '{distro name}_small' to use the small variants.
+ascii_distro="auto"
+
+# Ascii Colors
+#
+# Default: 'distro'
+# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
+# Flag: --ascii_colors
+#
+# Example:
+# ascii_colors=(distro) - Ascii is colored based on Distro colors.
+# ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors.
+ascii_colors=(distro)
+
+# Bold ascii logo
+# Whether or not to bold the ascii logo.
+#
+# Default: 'on'
+# Values: 'on', 'off'
+# Flag: --ascii_bold
+ascii_bold="on"
+
+
+# Image Options
+
+
+# Image loop
+# Setting this to on will make neofetch redraw the image constantly until
+# Ctrl+C is pressed. This fixes display issues in some terminal emulators.
+#
+# Default: 'off'
+# Values: 'on', 'off'
+# Flag: --loop
+image_loop="off"
+
+# Thumbnail directory
+#
+# Default: '~/.cache/thumbnails/neofetch'
+# Values: 'dir'
+thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch"
+
+# Crop mode
+#
+# Default: 'normal'
+# Values: 'normal', 'fit', 'fill'
+# Flag: --crop_mode
+#
+# See this wiki page to learn about the fit and fill options.
+# https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F
+crop_mode="normal"
+
+# Crop offset
+# Note: Only affects 'normal' crop mode.
+#
+# Default: 'center'
+# Values: 'northwest', 'north', 'northeast', 'west', 'center'
+# 'east', 'southwest', 'south', 'southeast'
+# Flag: --crop_offset
+crop_offset="center"
+
+# Image size
+# The image is half the terminal width by default.
+#
+# Default: 'auto'
+# Values: 'auto', '00px', '00%', 'none'
+# Flags: --image_size
+# --size
+image_size="auto"
+
+# Catimg block size.
+# Control the resolution of catimg.
+#
+# Default: '2'
+# Values: '1', '2'
+# Flags: --catimg_size
+catimg_size="2"
+
+# Gap between image and text
+#
+# Default: '3'
+# Values: 'num', '-num'
+# Flag: --gap
+gap=3
+
+# Image offsets
+# Only works with the w3m backend.
+#
+# Default: '0'
+# Values: 'px'
+# Flags: --xoffset
+# --yoffset
+yoffset=0
+xoffset=0
+
+# Image background color
+# Only works with the w3m backend.
+#
+# Default: ''
+# Values: 'color', 'blue'
+# Flag: --bg_color
+background_color=
+
+
+# Misc Options
+
+# Stdout mode
+# Turn off all colors and disables image backend (ASCII/Image).
+# Useful for piping into another command.
+# Default: 'off'
+# Values: 'on', 'off'
+stdout="off"
diff --git a/setup/managed/quickshell/.gitignore b/setup/managed/quickshell/.gitignore
new file mode 100644
index 0000000..bb3cef2
--- /dev/null
+++ b/setup/managed/quickshell/.gitignore
@@ -0,0 +1 @@
+.qmlls.ini
\ No newline at end of file
diff --git a/setup/managed/quickshell/Config.qml b/setup/managed/quickshell/Config.qml
new file mode 100644
index 0000000..b84aabb
--- /dev/null
+++ b/setup/managed/quickshell/Config.qml
@@ -0,0 +1,127 @@
+pragma Singleton
+import QtQuick
+import Quickshell
+import Quickshell.Io
+
+Singleton {
+ id: root
+
+ //*=======================================================================*/
+ // READ THIS NOTE:
+ // Simply add to this list in order to create your
+ // own color schemes, they will automatically show up in the theme picker.
+ property var colors: themes[themes[settings.currentTheme] == null ? 'default' : settings.currentTheme]
+ property var themes: {
+ "default": {
+ "base": "#d8d8d8",
+ "shadow": "#9b9b9b",
+ "highlight": "#efefef",
+ "urgent": "#ff723e",
+ "accent": "#207874",
+ "text": "#000000",
+ "outline": "#000000",
+ "outlineGradientFade": "#161616",
+ "defaultWallpaperPath": ""
+ },
+ "yorha": {
+ "base": "#d9caba",
+ "shadow": "#baafa1",
+ "highlight": "#f0e2d3",
+ "urgent": "#ff854c",
+ "accent": "#626335",
+ "text": "#3e3d38",
+ "outline": "#3d3d39",
+ "outlineGradientFade": "#5b5b45",
+ "defaultWallpaperPath": ""
+ },
+ "cherry": {
+ "base": "#f4c9ef",
+ "shadow": "#c7a4cc",
+ "highlight": "#f9d0f7",
+ "urgent": "#ff936c",
+ "accent": "#c950bb",
+ "text": "#321d32",
+ "outline": "#20091d",
+ "outlineGradientFade": "#3e233e",
+ "defaultWallpaperPath": ""
+ },
+ "indigo": {
+ "base": "#bac4e6",
+ "shadow": "#7e8bad",
+ "highlight": "#d0def9",
+ "urgent": "#e83939",
+ "accent": "#3e7c99",
+ "text": "#0d0d19",
+ "outline": "#1a2135",
+ "outlineGradientFade": "#223143",
+ "defaultWallpaperPath": ""
+ },
+ "gleep": {
+ "base": "#bae6c5",
+ "shadow": "#93c48c",
+ "highlight": "#ccf9e7",
+ "urgent": "#ff7559",
+ "accent": "#3e9949",
+ "text": "#0d1913",
+ "outline": "#21351a",
+ "outlineGradientFade": "#284223",
+ "defaultWallpaperPath": ""
+ }
+ }
+
+ enum SystemPopup {
+ Startmenu,
+ ThemePicker,
+ AppLauncher,
+ None
+ }
+
+ property bool openSettingsWindow: false
+
+ property alias settings: settingsJsonAdapter.settings
+ FileView {
+ path: Qt.resolvedUrl("./settings.json")
+ // when changes are made on disk, reload the file's content
+ watchChanges: true
+ onFileChanged: reload()
+ // when changes are made to properties in the adapter, save them
+ onAdapterUpdated: writeAdapter()
+
+ onLoadFailed: error => {
+ if (error == FileViewError.FileNotFound) {
+ writeAdapter();
+ }
+ }
+
+ JsonAdapter {
+ id: settingsJsonAdapter
+ property JsonObject settings: JsonObject {
+ property string version: "0.1"
+ property bool militaryTimeClockFormat: true
+ property string systemProfileImageSource: "/home/mayday/dotfiles/img/pfp.jpg"
+ property string currentTheme: "default"
+ property bool setWallpaperToThemeWallpaper: true
+ property JsonObject execCommands: JsonObject {
+ property string terminal: "kitty"
+ property string files: "nemo"
+ }
+ property JsonObject systemDetails: JsonObject {
+ property string osName: "Linux Distro"
+ property string osVersion: "Distro Version"
+ property string ram: "Ram"
+ property string cpu: "CPU Name"
+ property string gpu: "GPU Name"
+ }
+ property JsonObject bar: JsonObject {
+ property int fontSize: 12
+ property int trayIconSize: 16
+ property bool monochromeTrayIcons: true
+ }
+
+ onCurrentThemeChanged: {
+ console.info("Updated theme to: " + currentTheme);
+ }
+ }
+ }
+ }
+}
diff --git a/setup/managed/quickshell/NewBorder.qml b/setup/managed/quickshell/NewBorder.qml
new file mode 100644
index 0000000..fb14dd7
--- /dev/null
+++ b/setup/managed/quickshell/NewBorder.qml
@@ -0,0 +1,37 @@
+import QtQuick
+
+Rectangle {
+
+ property bool commonBorder: true
+
+ property int lBorderwidth: 1
+ property int rBorderwidth: 1
+ property int tBorderwidth: 1
+ property int bBorderwidth: 1
+
+ property int commonBorderWidth: 1
+ property int zValue: -1
+
+ z: zValue
+
+ property string borderColor: "white"
+ property Gradient borderGradient
+
+ color: "transparent"
+ border.color: borderColor
+ border.width: commonBorderWidth
+
+ gradient: borderGradient != null ? borderGradient : null
+
+ anchors {
+ left: parent.left
+ right: parent.right
+ top: parent.top
+ bottom: parent.bottom
+
+ topMargin: commonBorder ? -commonBorderWidth : -tBorderwidth
+ bottomMargin: commonBorder ? -commonBorderWidth : -bBorderwidth
+ leftMargin: commonBorder ? -commonBorderWidth : -lBorderwidth
+ rightMargin: commonBorder ? -commonBorderWidth : -rBorderwidth
+ }
+}
diff --git a/setup/managed/quickshell/README.MD b/setup/managed/quickshell/README.MD
new file mode 100644
index 0000000..3d343d9
--- /dev/null
+++ b/setup/managed/quickshell/README.MD
@@ -0,0 +1,19 @@
+# Linux Retroism | Quickshell Frontend
+
+Before going into details:
+
+I must point out the fact that this is my first time using Qt/QML/Quickshell for
+a project like this.
+
+I will likely update and refactor the quickshell project to improve things with time, as
+the initial versions may not follow best practices for design or readability.
+
+## Style Variants
+
+You can add your own color-schemes in the `Config.qml` file, they will be updated
+and added automatically to the theme switcher UI.
+
+Various other settings can be changed/set by editing the `settings.json` file; although
+those values can also be changed using the settings GUI.
+
+> I am planning on making a GUI for creating and adding your own themes.
diff --git a/setup/managed/quickshell/Time.qml b/setup/managed/quickshell/Time.qml
new file mode 100644
index 0000000..abee869
--- /dev/null
+++ b/setup/managed/quickshell/Time.qml
@@ -0,0 +1,16 @@
+pragma Singleton
+
+import Quickshell
+import QtQuick
+
+Singleton {
+ id: root
+ readonly property string time: {
+ Qt.formatDateTime(clock.date, " MMM d yyyy | hh:mm");
+ }
+
+ SystemClock {
+ id: clock
+ precision: SystemClock.Seconds
+ }
+}
diff --git a/setup/managed/quickshell/flake.lock b/setup/managed/quickshell/flake.lock
new file mode 100644
index 0000000..dbcb281
--- /dev/null
+++ b/setup/managed/quickshell/flake.lock
@@ -0,0 +1,27 @@
+{
+ "nodes": {
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1754151594,
+ "narHash": "sha256-S30TWshtDmNlU30u842RidFUraKj1f2dd4nrKRHm3gE=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "7b6929d8b900de3142638310f8bc40cff4f2c507",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixpkgs-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "nixpkgs": "nixpkgs"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/setup/managed/quickshell/flake.nix b/setup/managed/quickshell/flake.nix
new file mode 100644
index 0000000..cdd1d5d
--- /dev/null
+++ b/setup/managed/quickshell/flake.nix
@@ -0,0 +1,31 @@
+{
+ description = "Qt dev flake, new to flakes this is prolly shit. Use `which qmlls` to get language server dir.";
+
+ inputs = {
+ nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
+ };
+
+ outputs = {
+ self,
+ nixpkgs,
+ }: let
+ system = "x86_64-linux";
+
+ pkgs = import nixpkgs {
+ inherit system;
+ config = {};
+ };
+ in {
+ packages.${system}.default = pkgs.callPackage ./package.nix {};
+ devShells.${system}.default = pkgs.mkShell {
+ nativeBuildInputs = with pkgs; [];
+ buildInputs = with pkgs; [
+ kdePackages.qtdeclarative
+ kdePackages.qt5compat
+ ];
+ shellHook = ''
+ export QML_IMPORT_PATH=$PWD/src
+ '';
+ };
+ };
+}
diff --git a/setup/managed/quickshell/fonts/Charcoal.ttf b/setup/managed/quickshell/fonts/Charcoal.ttf
new file mode 100644
index 0000000..56e0835
Binary files /dev/null and b/setup/managed/quickshell/fonts/Charcoal.ttf differ
diff --git a/setup/managed/quickshell/fonts/MaterialSymbolsSharp_Filled_36pt-Regular.ttf b/setup/managed/quickshell/fonts/MaterialSymbolsSharp_Filled_36pt-Regular.ttf
new file mode 100644
index 0000000..1bec3fe
Binary files /dev/null and b/setup/managed/quickshell/fonts/MaterialSymbolsSharp_Filled_36pt-Regular.ttf differ
diff --git a/setup/managed/quickshell/fonts/Monaco.ttf b/setup/managed/quickshell/fonts/Monaco.ttf
new file mode 100644
index 0000000..57217b3
Binary files /dev/null and b/setup/managed/quickshell/fonts/Monaco.ttf differ
diff --git a/setup/managed/quickshell/package.nix b/setup/managed/quickshell/package.nix
new file mode 100644
index 0000000..c153d20
--- /dev/null
+++ b/setup/managed/quickshell/package.nix
@@ -0,0 +1,29 @@
+{
+ lib,
+ symlinkJoin,
+ makeWrapper,
+ quickshell,
+ kdePackages,
+ configPath ? ./.,
+}: let
+ qmlPath = lib.makeSearchPath "lib/qt-6/qml" [
+ kdePackages.qtbase
+ kdePackages.qtdeclarative
+ kdePackages.qt5compat
+ ];
+in
+ symlinkJoin {
+ pname = "retroism";
+ inherit (quickshell) version;
+
+ paths = [quickshell];
+ nativeBuildInputs = [makeWrapper];
+
+ postBuild = ''
+ makeWrapper $out/bin/quickshell $out/bin/retroism \
+ --set QML2_IMPORT_PATH "${qmlPath}" \
+ --add-flags '-p ${configPath}'
+ '';
+
+ meta.mainProgram = "retroism";
+ }
diff --git a/setup/managed/quickshell/popups/AppLauncher.qml b/setup/managed/quickshell/popups/AppLauncher.qml
new file mode 100644
index 0000000..fcde2fd
--- /dev/null
+++ b/setup/managed/quickshell/popups/AppLauncher.qml
@@ -0,0 +1,239 @@
+import Quickshell
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls.Basic
+import Quickshell.Wayland
+import ".."
+import "../utils" as Utils
+
+/* NOTE:
+* This entire module is quite a mess, and is likely going to get a complete re-write.
+* I'm experimenting with creating the entire window frame/designs with SVG in order to
+* skip the need of creating everything out of rectangles and borders.
+*
+*/
+PopupWindow {
+ id: root
+
+ property int menuWidth: 0
+ property int popupWidth: 600
+ property int screenHeight: 0
+ property var currentApps: []
+ property var closeCallback: function () {}
+
+ // Once again, I must mention that these values are confusing but since I want to
+ // capture focus immediately when the app launcher is opened, without the user having
+ // to move their mouse cursor to it; the mess is necessary.
+ anchor.window: taskbar
+ anchor.rect.x: Screen.width / 2 - menuWidth / 2
+ anchor.rect.y: parentWindow.implicitHeight
+ implicitWidth: taskbar.width
+ implicitHeight: screenHeight - parentWindow.implicitHeight - 4
+ color: "transparent"
+
+ // This is quite hacky, the reason this exists is so the search bar gains immediate focus
+ // when you open the AppLauncher.
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ root.closeCallback();
+ }
+ }
+ Rectangle {
+ id: frame
+ opacity: 0
+ //anchors.fill: parent
+ anchors.horizontalCenter: parent.horizontalCenter
+ implicitHeight: 350
+ implicitWidth: root.popupWidth
+ color: Config.colors.base
+ layer.enabled: true
+
+ property int topOffset: 20
+
+ PopupWindowFrame {
+ id: startMenuFrame
+ windowTitle: "Search"
+ windowTitleIcon: "\ue8b6"
+ windowTitleDecorationWidth: 190
+ Item {
+ id: content
+ anchors.fill: startMenuFrame
+ anchors.margins: 8
+ anchors.topMargin: frame.topOffset + 20
+ clip: true
+
+ ColumnLayout {
+ anchors.fill: parent
+ anchors.leftMargin: 8
+ anchors.rightMargin: 8
+ Rectangle {
+ Layout.alignment: Qt.AlignTop
+ Layout.fillWidth: true
+ implicitHeight: 40
+ color: Config.colors.highlight
+ border.color: Config.colors.outline
+ border.width: 1
+ clip: true
+ TextField {
+ id: searchInput
+ width: parent.width
+ anchors.centerIn: parent
+ text: ""
+ font.pixelSize: 16
+ font.family: fontMonaco.name
+ color: Config.colors.text
+ selectionColor: Config.colors.shadow
+ padding: 2
+ selectByMouse: true
+ cursorVisible: false
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ focus: true
+
+ background: Rectangle {
+ color: "transparent"
+ }
+
+ Keys.onEscapePressed: {
+ root.closeCallback();
+ }
+
+ Component.onCompleted: {
+ searchInput.forceActiveFocus();
+ }
+ onAccepted: {
+ if (root.currentApps.length == 1) {
+ root.currentApps[0].execute();
+ root.closeCallback();
+ }
+ }
+ onTextChanged: {
+ root.currentApps = Utils.AppSearch.fuzzyQuery(searchInput.text);
+ //console.log(Utils.AppSearch.fuzzyQuery(searchInput.text)[0].name);
+ }
+ }
+ Rectangle {
+ implicitHeight: 40
+ implicitWidth: 40
+ Layout.alignment: Qt.AlignLeft
+ color: Config.colors.base
+ border.color: Config.colors.outline
+ border.width: 1
+ Text {
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ anchors.fill: parent
+ font.family: iconFont.name
+ font.pixelSize: 24
+ text: "\ue8b6"
+ }
+ }
+ }
+ Rectangle {
+ implicitWidth: parent.width
+ implicitHeight: parent.height - 60
+ color: "transparent"
+ border.color: Config.colors.outline
+ border.width: 1
+ clip: true
+
+ ListView {
+ id: appsView
+ model: root.currentApps
+
+ anchors.fill: parent
+ anchors.margins: 6
+ anchors.bottomMargin: 1
+
+ flickableDirection: Flickable.VerticalFlick
+ boundsBehavior: Flickable.DragOverBounds
+ maximumFlickVelocity: 3500
+ clip: true
+
+ spacing: 8
+
+ delegate: Item {
+ width: parent.width
+ height: 40
+ Button {
+ width: parent.width
+ height: 40
+ opacity: mouse.hovered ? 0.75 : 1
+ background: Rectangle {
+ anchors.fill: parent
+ color: parent.pressed ? Config.colors.shadow : Config.colors.highlight
+ border.width: 1
+ }
+ onReleased: {
+ modelData.execute();
+ root.closeCallback();
+ }
+ RowLayout {
+ anchors.fill: parent
+ spacing: 0
+ property var iconPath: Utils.AppSearch.getIcon(modelData.icon)
+ Image {
+ Layout.leftMargin: 8
+ asynchronous: true
+ Layout.maximumWidth: 24
+ Layout.maximumHeight: 24
+ antialiasing: true
+ source: parent.iconPath
+ }
+ Text {
+ Layout.fillWidth: true
+ Layout.leftMargin: 8
+ Layout.alignment: Qt.AlignLeft
+ text: modelData.name
+ }
+ }
+ HoverHandler {
+ id: mouse
+ acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad
+ cursorShape: Qt.PointingHandCursor
+ }
+ }
+ }
+
+ ScrollIndicator.horizontal: ScrollIndicator {
+ active: appsView.moving
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*=== Animations ===*/
+ OpacityAnimator {
+ id: openAnimation
+ target: frame
+ from: 0
+ to: 1
+ duration: 140
+ easing.type: Easing.OutCubic
+ }
+ OpacityAnimator {
+ id: closeAnimation
+ target: frame
+ from: 1
+ to: 0
+ duration: 80
+ easing.type: Easing.InOutQuad
+ onFinished: root.visible = false
+ }
+ }
+
+ function openAppLauncher() {
+ root.visible = true;
+ root.currentApps = Utils.AppSearch.fuzzyQuery("A");
+ searchInput.text = "";
+ openAnimation.start();
+ }
+
+ function closeAppLauncher() {
+ closeAnimation.start();
+ Config.currentPopup = Config.SystemPopup.None;
+ }
+}
diff --git a/setup/managed/quickshell/popups/PopupWindowFrame.qml b/setup/managed/quickshell/popups/PopupWindowFrame.qml
new file mode 100644
index 0000000..e8bda5e
--- /dev/null
+++ b/setup/managed/quickshell/popups/PopupWindowFrame.qml
@@ -0,0 +1,178 @@
+import Quickshell
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls.Basic
+
+import ".."
+
+/* NOTE:
+* This entire module is quite a mess, and is likely going to get a complete re-write.
+* I'm experimenting with creating the entire window frame/designs with SVG in order to
+* skip the need of creating everything out of rectangles and borders.
+*
+*/
+Rectangle {
+ id: root
+ opacity: 1
+ anchors.fill: parent
+ color: Config.colors.base
+ layer.enabled: true
+
+ property int windowTitleDecorationWidth: 100
+ property string windowTitle: "Window Title"
+ property string windowTitleIcon: "\uf088"
+
+ /*=== Top Bar Styling (name and bars) ===*/
+ Item {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ implicitHeight: 25
+ RowLayout {
+ id: panelName
+ anchors.centerIn: parent
+ ColumnLayout {
+ spacing: 1
+ Repeater {
+ model: 4
+ Rectangle {
+ implicitHeight: 2
+ implicitWidth: windowTitleDecorationWidth
+ gradient: Gradient {
+ GradientStop {
+ position: 0.0
+ color: Config.colors.highlight
+ }
+ GradientStop {
+ position: 0.5
+ color: Config.colors.highlight
+ }
+ GradientStop {
+ position: 1.0
+ color: Config.colors.outline
+ }
+ }
+ }
+ }
+ }
+ Text {
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ font.family: iconFont.name
+ font.pixelSize: 18
+ opacity: 0.8
+ text: root.windowTitleIcon
+ color: Config.colors.text
+ }
+ Text {
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ font.family: fontCharcoal.name
+ font.pixelSize: 12
+ text: root.windowTitle
+ color: Config.colors.text
+ }
+ ColumnLayout {
+ spacing: 1
+ Repeater {
+ model: 4
+ Rectangle {
+ implicitHeight: 2
+ implicitWidth: windowTitleDecorationWidth
+ gradient: Gradient {
+ GradientStop {
+ position: 0.0
+ color: Config.colors.highlight
+ }
+ GradientStop {
+ position: 0.5
+ color: Config.colors.highlight
+ }
+ GradientStop {
+ position: 1.0
+ color: Config.colors.outline
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ /*=== =============================== ===*/
+
+ /*=== Window Frame (entire window frame) ===*/
+ // As you can see here, I use a combination of *many* borders
+ // in order to give a retro/pixel-style window frame around each
+ // window. This is quite retarded.
+ //
+ // This is the initial and dumbest way of doing this, perhaps
+ // in the future I can figure out to make a window frame with
+ // SVG? I'm unsure of better alternatives as of now. For now
+ // it at least looks the way I want it to look.
+ NewBorder {
+ commonBorderWidth: 4
+ commonBorder: false
+ lBorderwidth: 1
+ rBorderwidth: 10
+ tBorderwidth: 10
+ bBorderwidth: 10
+ zValue: 0
+ borderColor: Config.colors.highlight
+ }
+ NewBorder {
+ commonBorderWidth: 4
+ commonBorder: false
+ lBorderwidth: 10
+ rBorderwidth: 1
+ tBorderwidth: 10
+ bBorderwidth: 1
+ zValue: 0
+ borderColor: Config.colors.shadow
+ }
+ NewBorder {
+ commonBorderWidth: 1
+ commonBorder: false
+ lBorderwidth: 0
+ rBorderwidth: 0
+ tBorderwidth: 10
+ bBorderwidth: 0
+ zValue: 0
+ borderColor: Config.colors.outline
+ }
+
+ NewBorder {
+ commonBorderWidth: 1
+ commonBorder: false
+ lBorderwidth: -7
+ rBorderwidth: -7
+ tBorderwidth: -7 - 20
+ bBorderwidth: -7
+ zValue: 0
+ opacity: 0.5
+ borderColor: Config.colors.outline
+ }
+ NewBorder {
+ commonBorderWidth: 1
+ commonBorder: false
+ lBorderwidth: -8
+ rBorderwidth: -8
+ tBorderwidth: -8 - (20)
+ bBorderwidth: -8
+ zValue: 0
+ opacity: 0.2
+ borderColor: Config.colors.outline
+ }
+ Rectangle {
+ id: innerOutline
+ anchors {
+ fill: parent
+ margins: 6
+ }
+ anchors.topMargin: 6 + 20
+ color: "transparent"
+ implicitWidth: parent.width
+ implicitHeight: 4
+ border.width: 1
+ border.color: Config.colors.outline
+ }
+ /*=== ================================== ===*/
+}
diff --git a/setup/managed/quickshell/popups/StartMenu.qml b/setup/managed/quickshell/popups/StartMenu.qml
new file mode 100644
index 0000000..026b322
--- /dev/null
+++ b/setup/managed/quickshell/popups/StartMenu.qml
@@ -0,0 +1,426 @@
+import Quickshell
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls.Basic
+
+import ".."
+
+/* NOTE:
+* This entire module is quite a mess, and is likely going to get a complete re-write.
+* I'm experimenting with creating the entire window frame/designs with SVG in order to
+* skip the need of creating everything out of rectangles and borders.
+*/
+PopupWindow {
+ id: root
+
+ property int menuWidth: 0
+ property var closeCallback: function () {}
+ anchor.window: taskbar
+ anchor.rect.x: menuWidth
+ anchor.rect.y: parentWindow.implicitHeight
+ implicitWidth: 480
+ implicitHeight: 276
+ color: "transparent"
+
+ Rectangle {
+ id: frame
+ opacity: 0
+ anchors.fill: parent
+ color: Config.colors.base
+ layer.enabled: true
+
+ property int topOffset: 20
+
+ PopupWindowFrame {
+ id: startMenuFrame
+ windowTitle: "Your Computer"
+ windowTitleIcon: "\ue30c"
+ windowTitleDecorationWidth: 150
+ Item {
+ id: content
+ anchors.fill: startMenuFrame
+ anchors.margins: 18
+ anchors.topMargin: frame.topOffset + 18
+
+ ColumnLayout {
+ spacing: 8
+ RowLayout {
+ spacing: 8
+ implicitWidth: content.width
+
+ Item {
+ implicitWidth: 150
+ implicitHeight: 150
+ Image {
+ asynchronous: true
+ anchors.fill: parent
+ source: Config.settings.systemProfileImageSource
+ fillMode: Image.PreserveAspectCrop
+ clip: true
+ }
+
+ Rectangle {
+ anchors.fill: parent
+ color: "transparent"
+ border.color: Config.colors.outline
+ border.width: 1
+ }
+ }
+ Item {
+ id: headerContent
+ Layout.fillWidth: true
+ implicitHeight: 150
+ Rectangle {
+ anchors.fill: parent
+ color: "transparent"
+ border.color: Config.colors.outline
+ border.width: 1
+ }
+
+ Item {
+ anchors.fill: parent
+ anchors.margins: 8
+ ColumnLayout {
+ spacing: 8
+
+ RowLayout {
+ spacing: 8
+ Text {
+ font.family: iconFont.name
+ font.pixelSize: 16
+ text: "\ue161"
+ color: Config.colors.text
+ }
+ Text {
+ font.family: fontMonaco.name
+ font.pixelSize: 14
+ text: Config.settings.systemDetails.osName
+ color: Config.colors.text
+ }
+ }
+ RowLayout {
+ spacing: 8
+ Text {
+ font.family: iconFont.name
+ font.pixelSize: 16
+ text: "\ue394"
+ color: Config.colors.text
+ }
+ Text {
+ font.family: fontMonaco.name
+ font.pixelSize: 14
+ text: Config.settings.systemDetails.osVersion
+ color: Config.colors.text
+ }
+ }
+ RowLayout {
+ spacing: 8
+ Text {
+ font.family: iconFont.name
+ font.pixelSize: 16
+ text: "\uf7a3"
+ color: Config.colors.text
+ }
+ Text {
+ font.family: fontMonaco.name
+ font.pixelSize: 14
+ text: Config.settings.systemDetails.ram
+ color: Config.colors.text
+ }
+ }
+ RowLayout {
+ spacing: 8
+ Text {
+ font.family: iconFont.name
+ font.pixelSize: 16
+ text: "\ue322"
+ color: Config.colors.text
+ }
+ Text {
+ font.family: fontMonaco.name
+ font.pixelSize: 14
+ text: Config.settings.systemDetails.cpu
+ color: Config.colors.text
+ }
+ }
+ RowLayout {
+ spacing: 8
+ Text {
+ font.family: iconFont.name
+ font.pixelSize: 16
+ text: "\ue2ac"
+ color: Config.colors.text
+ }
+
+ Text {
+ font.family: fontMonaco.name
+ font.pixelSize: 14
+ text: Config.settings.systemDetails.gpu
+ color: Config.colors.text
+ }
+ }
+ }
+ }
+ }
+ }
+ RowLayout {
+ spacing: 8
+ implicitWidth: content.width
+
+ Item {
+ implicitWidth: 150
+ implicitHeight: 60
+ Rectangle {
+ anchors.fill: parent
+ color: "transparent"
+ border.color: Config.colors.outline
+ border.width: 1
+ }
+ }
+
+ Item {
+ Layout.fillWidth: true
+ implicitHeight: 60
+ Layout.leftMargin: 1
+ RowLayout {
+ spacing: 14
+
+ Button {
+ id: filesButton
+ implicitHeight: 60
+ implicitWidth: 60
+
+ onClicked: () => {
+ Quickshell.execDetached(Config.settings.execCommands.files);
+ root.closeCallback();
+ }
+
+ background: Rectangle {
+ anchors.fill: parent
+ color: Config.colors.outline
+ opacity: mouse0.hovered ? (0.2 + (filesButton.pressed ? 0.2 : 0.0)) : 0.1
+ border.width: 1
+ }
+ NewBorder {
+ commonBorderWidth: 2
+ commonBorder: false
+ lBorderwidth: 2
+ rBorderwidth: 2
+ tBorderwidth: 2
+ bBorderwidth: 2
+ zValue: -1
+ borderColor: Config.colors.shadow
+ }
+ NewBorder {
+ commonBorderWidth: 2
+ commonBorder: false
+ lBorderwidth: 2
+ rBorderwidth: 0
+ tBorderwidth: 2
+ bBorderwidth: 0
+ zValue: -1
+ opacity: 0.8
+ borderColor: Config.colors.highlight
+ }
+ Text {
+ anchors.centerIn: parent
+ font.family: iconFont.name
+ font.pixelSize: 48
+ opacity: 0.4
+ color: Config.colors.text
+ text: "\ue2c7"
+ }
+ HoverHandler {
+ id: mouse0
+ acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad
+ cursorShape: Qt.PointingHandCursor
+ }
+ }
+ Button {
+ id: terminalButton
+ implicitHeight: 60
+ implicitWidth: 60
+
+ onClicked: () => {
+ Quickshell.execDetached(Config.settings.execCommands.terminal);
+ root.closeCallback();
+ }
+
+ background: Rectangle {
+ anchors.fill: parent
+ color: Config.colors.outline
+ opacity: mouse.hovered ? (0.2 + (terminalButton.pressed ? 0.2 : 0.0)) : 0.1
+ border.width: 1
+ }
+ NewBorder {
+ commonBorderWidth: 2
+ commonBorder: false
+ lBorderwidth: 2
+ rBorderwidth: 2
+ tBorderwidth: 2
+ bBorderwidth: 2
+ zValue: -1
+ borderColor: Config.colors.shadow
+ }
+ NewBorder {
+ commonBorderWidth: 2
+ commonBorder: false
+ lBorderwidth: 2
+ rBorderwidth: 0
+ tBorderwidth: 2
+ bBorderwidth: 0
+ zValue: -1
+ opacity: 0.8
+ borderColor: Config.colors.highlight
+ }
+ Text {
+ anchors.centerIn: parent
+ font.family: iconFont.name
+ font.pixelSize: 48
+ opacity: 0.4
+ color: Config.colors.text
+ text: "\ueb8e"
+ }
+ HoverHandler {
+ id: mouse
+ acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad
+ cursorShape: Qt.PointingHandCursor
+ }
+ }
+ Button {
+ id: settingsButton
+ implicitHeight: 60
+ implicitWidth: 60
+
+ onClicked: () => {
+ Config.openSettingsWindow = true;
+ root.closeCallback();
+ }
+
+ background: Rectangle {
+ anchors.fill: parent
+ color: Config.colors.outline
+ opacity: mouse2.hovered ? (0.2 + (settingsButton.pressed ? 0.2 : 0.0)) : 0.1
+ border.width: 1
+ }
+ NewBorder {
+ commonBorderWidth: 2
+ commonBorder: false
+ lBorderwidth: 2
+ rBorderwidth: 2
+ tBorderwidth: 2
+ bBorderwidth: 2
+ zValue: -1
+ borderColor: Config.colors.shadow
+ }
+ NewBorder {
+ commonBorderWidth: 2
+ commonBorder: false
+ lBorderwidth: 2
+ rBorderwidth: 0
+ tBorderwidth: 2
+ bBorderwidth: 0
+ zValue: -1
+ opacity: 0.8
+ borderColor: Config.colors.highlight
+ }
+ Text {
+ anchors.centerIn: parent
+ font.family: iconFont.name
+ font.pixelSize: 48
+ opacity: 0.4
+ color: Config.colors.text
+ text: "\ue8b8"
+ }
+ HoverHandler {
+ id: mouse2
+ acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad
+ cursorShape: Qt.PointingHandCursor
+ }
+ }
+ Button {
+ id: powerButton
+ implicitHeight: 60
+ implicitWidth: 60
+
+ onClicked: () => {
+ root.closeCallback();
+ }
+
+ background: Rectangle {
+ anchors.fill: parent
+ color: Config.colors.outline
+ opacity: mouse3.hovered ? (0.2 + (powerButton.pressed ? 0.2 : 0.0)) : 0.1
+ border.width: 1
+ }
+ NewBorder {
+ commonBorderWidth: 2
+ commonBorder: false
+ lBorderwidth: 2
+ rBorderwidth: 2
+ tBorderwidth: 2
+ bBorderwidth: 2
+ zValue: -1
+ borderColor: Config.colors.shadow
+ }
+ NewBorder {
+ commonBorderWidth: 2
+ commonBorder: false
+ lBorderwidth: 2
+ rBorderwidth: 0
+ tBorderwidth: 2
+ bBorderwidth: 0
+ zValue: -1
+ opacity: 0.8
+ borderColor: Config.colors.highlight
+ }
+ Text {
+ anchors.centerIn: parent
+ font.family: iconFont.name
+ font.pixelSize: 48
+ opacity: 0.4
+ color: Config.colors.text
+ text: "\uf418"
+ }
+ HoverHandler {
+ id: mouse3
+ acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad
+ cursorShape: Qt.PointingHandCursor
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*=== Animations ===*/
+ OpacityAnimator {
+ id: openAnimation
+ target: frame
+ from: 0
+ to: 1
+ duration: 140
+ easing.type: Easing.OutCubic
+ }
+ OpacityAnimator {
+ id: closeAnimation
+ target: frame
+ from: 1
+ to: 0
+ duration: 80
+ easing.type: Easing.InOutQuad
+ onFinished: root.visible = false
+ }
+ }
+
+ function openStartMenu() {
+ root.visible = true;
+ openAnimation.start();
+ }
+
+ function closeStartMenu() {
+ closeAnimation.start();
+ }
+}
diff --git a/setup/managed/quickshell/popups/ThemeMenu.qml b/setup/managed/quickshell/popups/ThemeMenu.qml
new file mode 100644
index 0000000..9d4fcc9
--- /dev/null
+++ b/setup/managed/quickshell/popups/ThemeMenu.qml
@@ -0,0 +1,215 @@
+import Quickshell
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls.Basic
+
+import ".."
+
+/* NOTE:
+* This entire module is quite a mess, and is likely going to get a complete re-write.
+* I'm experimenting with creating the entire window frame/designs with SVG in order to
+* skip the need of creating everything out of rectangles and borders.
+*/
+PopupWindow {
+ id: root
+
+ property int menuWidth: 0
+ anchor.window: taskbar
+ anchor.rect.x: menuWidth
+ anchor.rect.y: parentWindow.implicitHeight
+ implicitWidth: 600
+ implicitHeight: 182
+ color: "transparent"
+
+ Rectangle {
+ id: frame
+ opacity: 0
+ anchors.fill: parent
+ color: Config.colors.base
+ layer.enabled: true
+
+ property int topOffset: 20
+
+ PopupWindowFrame {
+ id: startMenuFrame
+ windowTitle: "Themes"
+ windowTitleIcon: "\ue40a"
+ windowTitleDecorationWidth: 235
+ Item {
+ id: content
+ anchors.fill: startMenuFrame
+ anchors.margins: 8
+ anchors.topMargin: frame.topOffset + 20
+ clip: true
+
+ ColumnLayout {
+ spacing: 0
+ Item {
+ implicitHeight: 110
+ implicitWidth: startMenuFrame.width
+
+ Flickable {
+ id: flickable
+ width: parent.width
+ height: 105
+
+ contentWidth: row.width + 5 * Object.keys(Config.themes).length
+ contentHeight: row.height
+
+ flickableDirection: Flickable.HorizontalFlick
+ boundsBehavior: Flickable.DragOverBounds
+ maximumFlickVelocity: 3500
+
+ property int themeColorShowWidth: 12
+
+ RowLayout {
+ id: row
+ spacing: 10
+ height: parent.height
+
+ Repeater {
+ model: Object.keys(Config.themes)
+ Button {
+ implicitWidth: 150
+ implicitHeight: 100
+ //color: "lightcoral"
+ //border.color: "darkred"
+ opacity: pressed ? 0.6 : 1
+ clip: true
+
+ onReleased: () => {
+ Config.settings.currentTheme = modelData;
+ }
+
+ background: Rectangle {
+ anchors.fill: parent
+ color: mouse.hovered ? Config.colors.shadow : Config.colors.base
+ border.width: 1
+ }
+ NewBorder {
+ commonBorderWidth: 2
+ commonBorder: false
+ lBorderwidth: 0
+ rBorderwidth: 1
+ tBorderwidth: 0
+ bBorderwidth: 1
+ zValue: -1
+ borderColor: Config.colors.outline
+ }
+ ColumnLayout {
+ width: parent.width
+ height: parent.height
+ spacing: 0
+ RowLayout {
+ Layout.alignment: Qt.AlignHCenter
+ spacing: 0
+ Rectangle {
+ implicitWidth: flickable.themeColorShowWidth
+ implicitHeight: 50
+ color: Config.themes[modelData].base
+ border.width: Config.settings.currentTheme == modelData ? 1 : 0
+ }
+ Rectangle {
+ implicitWidth: flickable.themeColorShowWidth
+ implicitHeight: 50
+ color: Config.themes[modelData].accent
+ border.width: 0
+ }
+ Rectangle {
+ implicitWidth: flickable.themeColorShowWidth
+ implicitHeight: 50
+ color: Config.themes[modelData].highlight
+ border.width: 0
+ }
+ Rectangle {
+ implicitWidth: flickable.themeColorShowWidth
+ implicitHeight: 50
+ color: Config.themes[modelData].shadow
+ border.width: 0
+ }
+ Rectangle {
+ implicitWidth: flickable.themeColorShowWidth
+ implicitHeight: 50
+ color: Config.themes[modelData].text
+ border.width: 0
+ }
+ }
+ Text {
+ Layout.alignment: Qt.AlignHCenter
+ font.family: fontMonaco.name
+ font.pixelSize: 16
+ text: modelData
+ }
+ }
+ HoverHandler {
+ id: mouse
+ acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad
+ cursorShape: Qt.PointingHandCursor
+ }
+ }
+ }
+ }
+ }
+ MouseArea {
+ anchors.fill: parent
+ acceptedButtons: Qt.NoButton
+
+ onWheel: function (wheel) {
+ var delta = wheel.angleDelta.y * 0.2;
+ flickable.contentX = Math.max(0, Math.min(flickable.contentWidth - flickable.width, flickable.contentX - delta));
+ }
+ }
+ }
+
+ Item {
+ Layout.leftMargin: 8
+ RowLayout {
+ Layout.alignment: Qt.AlignHCenter
+ spacing: 6
+
+ Text {
+ font.family: fontCharcoal.name
+ font.pixelSize: 13
+ text: "Current Theme:"
+ }
+ Text {
+ font.family: fontMonaco.name
+ font.pixelSize: 13
+ text: Config.settings.currentTheme
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /*=== Animations ===*/
+ OpacityAnimator {
+ id: openAnimation
+ target: frame
+ from: 0
+ to: 1
+ duration: 140
+ easing.type: Easing.OutCubic
+ }
+ OpacityAnimator {
+ id: closeAnimation
+ target: frame
+ from: 1
+ to: 0
+ duration: 80
+ easing.type: Easing.InOutQuad
+ onFinished: root.visible = false
+ }
+ }
+
+ function openThemeMenu() {
+ root.visible = true;
+ openAnimation.start();
+ }
+
+ function closeThemeMenu() {
+ closeAnimation.start();
+ Config.currentPopup = Config.SystemPopup.None;
+ }
+}
diff --git a/setup/managed/quickshell/popups/qmldir b/setup/managed/quickshell/popups/qmldir
new file mode 100644
index 0000000..35dce28
--- /dev/null
+++ b/setup/managed/quickshell/popups/qmldir
@@ -0,0 +1,4 @@
+module Popups
+StartMenu 1.0 StartMenu.qml
+PopupWindowFrame 1.0 PopupWindowFrame.qml
+AppLauncher 1.0 AppLauncher.qml
\ No newline at end of file
diff --git a/setup/managed/quickshell/settings.json b/setup/managed/quickshell/settings.json
new file mode 100644
index 0000000..a610c09
--- /dev/null
+++ b/setup/managed/quickshell/settings.json
@@ -0,0 +1,25 @@
+{
+ "settings": {
+ "bar": {
+ "fontSize": 16,
+ "monochromeTrayIcons": true,
+ "trayIconSize": 20
+ },
+ "currentTheme": "indigo",
+ "execCommands": {
+ "files": "nemo",
+ "terminal": "kitty"
+ },
+ "militaryTimeClockFormat": true,
+ "setWallpaperToThemeWallpaper": true,
+ "systemDetails": {
+ "cpu": "13th Gen Intel I3",
+ "gpu": "Intel Integrated Graphics",
+ "osName": "NixOS-unstable",
+ "osVersion": "25.11 Xantusia",
+ "ram": "8GB"
+ },
+ "systemProfileImageSource": "/home/mayday/dotfiles/img/pfp.jpg",
+ "version": "0.1"
+ }
+}
diff --git a/setup/managed/quickshell/shell.qml b/setup/managed/quickshell/shell.qml
new file mode 100644
index 0000000..f3ab069
--- /dev/null
+++ b/setup/managed/quickshell/shell.qml
@@ -0,0 +1,83 @@
+//@ pragma UseQApplication
+//@ pragma Env QS_NO_RELOAD_POPUP=1
+//@ pragma Env QT_QUICK_CONTROLS_STYLE=Basic
+//@ pragma Env QT_QUICK_FLICKABLE_WHEEL_DECELERATION=10000
+
+/* NOTE: CHANGE THESE IF YOU WANT TO USE A DIFFERENT ICON THEME:*/
+//@ pragma IconTheme RetroismIcons
+//@ pragma Env QS_ICON_THEME=RetroismIcons
+
+import QtQuick
+import Quickshell
+
+import "taskbar" as Taskbar
+import "popups" as Popups
+
+Scope {
+ id: root
+ FontLoader {
+ id: iconFont
+ source: "fonts/MaterialSymbolsSharp_Filled_36pt-Regular.ttf"
+ }
+ FontLoader {
+ id: fontMonaco
+ source: "fonts/Monaco.ttf"
+ }
+ FontLoader {
+ id: fontCharcoal
+ source: "fonts/Charcoal.ttf"
+ }
+ Taskbar.Bar {}
+
+ FloatingWindow {
+ id: settingsWindow
+ title: "RetroismSettingsWindow"
+ reloadableId: "RetroismSettingsWindow"
+ visible: Config.openSettingsWindow
+ Popups.PopupWindowFrame {
+ id: settingsWindowFrame
+ windowTitle: "Settings"
+ windowTitleIcon: "\ue8b8"
+ windowTitleDecorationWidth: (settingsWindow.width / 2) - 70
+
+ anchors.leftMargin: -1
+ anchors.bottomMargin: -1
+ anchors.rightMargin: -1
+ Item {
+ id: content
+ anchors.fill: settingsWindowFrame
+ anchors.margins: 18
+ anchors.topMargin: 20 + 18
+ clip: true
+ Rectangle {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ color: Config.colors.highlight
+ border.width: 1
+ border.color: Config.colors.outline
+ height: 148
+ Text {
+ anchors.fill: parent
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ font.family: fontMonaco.name
+ font.pixelSize: 28
+ text: "Linux Retroism " + Config.settings.version
+ }
+ Text {
+ anchors.fill: parent
+ anchors.bottomMargin: 16
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignBottom
+ font.family: fontMonaco.name
+ font.pixelSize: 12
+ text: "Version 0.1 is very early and does not yet have a proper settings menu.\nPlease look forward for future releases on github ~ diinki"
+ }
+ }
+ }
+ }
+ onClosed: {
+ Config.openSettingsWindow = false;
+ }
+ }
+}
diff --git a/setup/managed/quickshell/taskbar/Bar.qml b/setup/managed/quickshell/taskbar/Bar.qml
new file mode 100644
index 0000000..b284d38
--- /dev/null
+++ b/setup/managed/quickshell/taskbar/Bar.qml
@@ -0,0 +1,284 @@
+import Quickshell
+import Quickshell.Wayland
+import Quickshell.Io
+import QtQuick
+
+import "../popups" as Popups
+import ".."
+
+Scope {
+ // Taskbar variants, we have one taskber per screen.
+ Variants {
+ model: Quickshell.screens
+ Item {
+ id: root
+ required property var modelData
+ property int currentPopup: Config.SystemPopup.None
+
+ PanelWindow {
+ id: taskbar
+ screen: root.modelData
+ WlrLayershell.layer: WlrLayer.Bottom
+ WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand
+
+ anchors {
+ top: true
+ left: true
+ right: true
+ }
+ implicitHeight: 39
+
+ /*=== Taskbar Background (colors & shading) ===*/
+ color: Config.colors.base
+ Item {
+ id: taskbarBackground
+ anchors.fill: parent
+ NewBorder {
+ commonBorderWidth: 4
+ commonBorder: false
+ lBorderwidth: 10
+ rBorderwidth: 1
+ tBorderwidth: 10
+ bBorderwidth: 1
+ borderColor: Config.colors.shadow
+ }
+ NewBorder {
+ commonBorderWidth: 4
+ commonBorder: false
+ lBorderwidth: 10
+ rBorderwidth: 10
+ tBorderwidth: 1
+ bBorderwidth: 10
+ borderColor: Config.colors.highlight
+ }
+
+ Rectangle {
+ id: barBackground
+ anchors {
+ fill: parent
+ margins: 0
+ }
+ color: "transparent"
+ radius: 0
+ border.width: 1
+ border.color: Config.colors.outline
+ }
+ }
+ /*=== ===================================== ===*/
+
+ /*=== Workspaces & Background for it ===*/
+ Item {
+ id: test2
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.left: parent.left
+ height: parent.height - 8
+
+ // The margins are weird due to the additional outlines added to each button
+ // that add depth, which is 1 pixel; thus we expand the width by 5 and not 4.
+ anchors.leftMargin: 11
+ width: workspaces.width + 5
+ Rectangle {
+ id: background2
+ anchors.fill: test2
+
+ anchors.bottomMargin: -2
+ color: "transparent"
+ Rectangle {
+ anchors.fill: background2
+ border.width: 0
+ color: Config.colors.shadow
+ }
+ Rectangle {
+ anchors.fill: background2
+ color: "transparent"
+ border.width: 1
+ z: -5
+ anchors.margins: -1
+ anchors.bottomMargin: 1
+ }
+ }
+ Workspaces {
+ id: workspaces
+ anchors.leftMargin: 2
+ anchors.rightMargin: 0
+ }
+ }
+ /*=== ============================== ===*/
+
+ /*=== StartMenu & Other popup Stuff ===*/
+ Popups.StartMenu {
+ id: startMenu
+ menuWidth: workspaces.width + startmenuButton.width
+ closeCallback: taskbar.closeAllPopups
+ }
+ Popups.ThemeMenu {
+ id: themeMenu
+ menuWidth: workspaces.width + startmenuButton.width + themeMenuButton.width
+ }
+ Popups.AppLauncher {
+ id: appLauncher
+ closeCallback: taskbar.closeAllPopups
+ menuWidth: taskbar.width / 2
+ popupWidth: 500
+ screenHeight: modelData.height
+ }
+ function closeAllPopups() {
+ switch (root.currentPopup) {
+ case Config.SystemPopup.Startmenu:
+ startMenu.closeStartMenu();
+ break;
+ case Config.SystemPopup.ThemePicker:
+ themeMenu.closeThemeMenu();
+ break;
+ case Config.SystemPopup.AppLauncher:
+ appLauncher.closeAppLauncher();
+ break;
+ }
+ root.currentPopup = Config.SystemPopup.None;
+ }
+
+ TaskbarButton {
+ id: startmenuButton
+ isToggled: root.currentPopup == Config.SystemPopup.Startmenu ? true : false
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.leftMargin: workspaces.width + 20 + 4
+ onClicked: {
+ if (root.currentPopup == Config.SystemPopup.None) {
+ startMenu.openStartMenu();
+ root.currentPopup = Config.SystemPopup.Startmenu;
+ } else {
+ taskbar.closeAllPopups();
+ root.currentPopup = Config.SystemPopup.None;
+ }
+ }
+ }
+ TaskbarButton {
+ id: themeMenuButton
+ isToggled: root.currentPopup == Config.SystemPopup.ThemePicker ? true : false
+ iconFontValue: "\ue3ae"
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.leftMargin: workspaces.width + 40 + 11
+ onClicked: {
+ if (root.currentPopup == Config.SystemPopup.None) {
+ themeMenu.openThemeMenu();
+ root.currentPopup = Config.SystemPopup.ThemePicker;
+ } else {
+ taskbar.closeAllPopups();
+ root.currentPopup = Config.SystemPopup.None;
+ }
+ }
+ }
+ TaskbarButton {
+ id: appLauncherButton
+ isToggled: root.currentPopup == Config.SystemPopup.AppLauncher ? true : false
+ iconFontValue: "\ue8b6"
+ anchors.centerIn: parent
+ onClicked: {
+ if (root.currentPopup == Config.SystemPopup.None) {
+ appLauncher.openAppLauncher();
+ root.currentPopup = Config.SystemPopup.AppLauncher;
+ } else {
+ taskbar.closeAllPopups();
+ root.currentPopup = Config.SystemPopup.None;
+ }
+ }
+ }
+ Scope {
+ id: appLauncherIpc
+ property string screenName: taskbar.screen.name
+ IpcHandler {
+ target: "appLauncher_" + appLauncherIpc.screenName
+ function toggleAppLauncher() {
+ if (root.currentPopup == Config.SystemPopup.None) {
+ appLauncher.openAppLauncher();
+ root.currentPopup = Config.SystemPopup.AppLauncher;
+ } else {
+ taskbar.closeAllPopups();
+ root.currentPopup = Config.SystemPopup.None;
+ }
+ }
+ }
+ }
+
+ /*=== ============================= ===*/
+
+ /*=== System Tray & Background for it ===*/
+ Item {
+ id: test
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.right: parent.right
+ anchors.rightMargin: 12
+ height: parent.height - 8
+ width: sysTray.width + 18
+ Rectangle {
+ id: background
+ anchors.fill: test
+
+ anchors.bottomMargin: -2
+ color: "transparent"
+ Rectangle {
+ anchors.fill: background
+ border.width: 0
+ color: Config.colors.shadow
+ }
+ Rectangle {
+ anchors.fill: background
+ color: "transparent"
+ border.width: 1
+ z: -5
+ anchors.margins: -1
+ anchors.bottomMargin: 1
+ }
+ }
+ SysTray {
+ id: sysTray
+ }
+ }
+ /*=== =============================== ===*/
+ }
+
+ /*=== POPUP CLOSING PANEL ===*/
+ // This panel is strictly for detecting clicks
+ // outside of popups in order to close them.
+ PanelWindow {
+ id: overlay
+ screen: root.modelData
+ color: "transparent"
+
+ implicitHeight: screen.height
+
+ // Better UX to not have it close on hotbar press? idk. TODO: Figure this out
+ //implicitHeight: screen.height - taskbar.implicitHeight
+
+ anchors {
+ bottom: true
+ left: true
+ right: true
+ }
+
+ visible: root.currentPopup != Config.SystemPopup.None ? true : false
+
+ exclusionMode: ExclusionMode.Ignore
+
+ MouseArea {
+ id: popupArea
+ width: Screen.width
+ height: Screen.height
+ visible: root.currentPopup != Config.SystemPopup.None ? true : false
+ onClicked: {
+ taskbar.closeAllPopups();
+ }
+ }
+ }
+ /*=== =================== ===*/
+ }
+ }
+
+ enum SystemPopups {
+ Startmenu,
+ ThemePicker,
+ None
+ }
+}
diff --git a/setup/managed/quickshell/taskbar/ClockWidget.qml b/setup/managed/quickshell/taskbar/ClockWidget.qml
new file mode 100644
index 0000000..5a6b6c8
--- /dev/null
+++ b/setup/managed/quickshell/taskbar/ClockWidget.qml
@@ -0,0 +1,11 @@
+import QtQuick
+import ".."
+
+Text {
+ text: Time.time
+ color: Config.colors.text
+ font.pixelSize: Config.settings.bar.fontSize
+ font.family: fontMonaco.name
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+}
diff --git a/setup/managed/quickshell/taskbar/SysTray.qml b/setup/managed/quickshell/taskbar/SysTray.qml
new file mode 100644
index 0000000..f2d5699
--- /dev/null
+++ b/setup/managed/quickshell/taskbar/SysTray.qml
@@ -0,0 +1,96 @@
+import Quickshell
+import Quickshell.Widgets
+import QtQuick
+import QtQuick.Layouts
+import Quickshell.Services.SystemTray
+import QtQuick.Effects
+
+import ".."
+
+RowLayout {
+ id: sysTrayRow
+ anchors.right: parent.right
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.rightMargin: 12
+
+ Repeater {
+ id: sysTray
+ model: SystemTray.items
+
+ MouseArea {
+ id: trayItem
+ property SystemTrayItem item: modelData
+ implicitWidth: Config.settings.bar.trayIconSize
+ implicitHeight: Config.settings.bar.trayIconSize
+
+ onClicked: event => {
+ switch (event.button) {
+ case Qt.LeftButton:
+ if (item.hasMenu) {
+ menu.open();
+ }
+ break;
+ case Qt.RightButton:
+ if (item.hasMenu) {
+ menu.open();
+ }
+ break;
+ }
+
+ event.accepted = true;
+ }
+
+ // TODO: Create a bespoke menu design instead of using QsMenu.
+ QsMenuAnchor {
+ id: menu
+
+ menu: trayItem.item.menu
+ anchor.window: taskbar
+
+ // Yes I know, this is a confusing way to get the position for the menu, but that's
+ // just how Qt is.
+ anchor.rect.x: taskbar.width - (sysTrayRow.width + clockWidget.width - trayItem.x)
+ anchor.rect.y: taskbar.height - 10
+
+ anchor.rect.height: trayItem.height
+ anchor.edges: Edges.Bottom
+ }
+
+ IconImage {
+ id: trayIcon
+ source: trayItem.item.icon
+ anchors.centerIn: parent
+ width: parent.width
+ height: parent.height
+ visible: false
+ }
+ Loader {
+ anchors.fill: trayIcon
+ sourceComponent: MultiEffect {
+ source: trayIcon
+ saturation: Config.settings.bar.monochromeTrayIcons ? -1.0 : 0
+ contrast: Config.settings.bar.monochromeTrayIcons ? 0.7 : 0.0
+ opacity: mouse.hovered || menu.visible ? 1 : 0.7
+ blurEnabled: false
+ shadowEnabled: true
+
+ shadowBlur: 0
+ blurMax: 1
+ shadowScale: 1
+ shadowVerticalOffset: 1
+ shadowHorizontalOffset: 1
+ shadowOpacity: 1
+ shadowColor: "black"
+ }
+ }
+ HoverHandler {
+ id: mouse
+ acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad
+ cursorShape: Qt.PointingHandCursor
+ }
+ }
+ }
+ ClockWidget {
+ id: clockWidget
+ }
+}
diff --git a/setup/managed/quickshell/taskbar/TaskbarButton.qml b/setup/managed/quickshell/taskbar/TaskbarButton.qml
new file mode 100644
index 0000000..3a24bd2
--- /dev/null
+++ b/setup/managed/quickshell/taskbar/TaskbarButton.qml
@@ -0,0 +1,55 @@
+import Quickshell
+import QtQuick
+import QtQuick.Controls.Basic
+
+import ".."
+
+Button {
+ id: root
+
+ property bool isToggled: false
+ property string iconFontValue: "\ue5c3"
+ property string toggledIconFontValue: "\ue5c5"
+
+ implicitWidth: 22
+ implicitHeight: 22
+
+ NewBorder {
+ commonBorderWidth: 1
+ commonBorder: false
+ lBorderwidth: 0
+ rBorderwidth: 1
+ tBorderwidth: 0
+ bBorderwidth: 1
+ borderColor: Config.colors.outline
+ zValue: -1
+ }
+
+ background: Rectangle {
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: parent.width
+ height: parent.height
+ border.width: 1
+ border.color: root.isToggled ? Config.colors.accent : Config.colors.outline
+ color: "transparent"
+ opacity: mouse.hovered ? 0.4 : 1
+ radius: 0
+
+ Text {
+ font.family: iconFont.name
+ horizontalAlignment: Text.AlignHCenter
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ verticalAlignment: Text.AlignVCenter
+ font.pixelSize: root.isToggled ? 32 : 20
+ text: root.isToggled ? root.toggledIconFontValue : root.iconFontValue
+ color: root.isToggled ? Config.colors.accent : Config.colors.outline
+ }
+ }
+ HoverHandler {
+ id: mouse
+ acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad
+ cursorShape: Qt.PointingHandCursor
+ }
+}
diff --git a/setup/managed/quickshell/taskbar/Workspaces.qml b/setup/managed/quickshell/taskbar/Workspaces.qml
new file mode 100644
index 0000000..ff41bd6
--- /dev/null
+++ b/setup/managed/quickshell/taskbar/Workspaces.qml
@@ -0,0 +1,94 @@
+import Quickshell
+import Quickshell.Hyprland
+import Quickshell.I3
+import QtQuick
+import QtQuick.Controls.Basic
+import QtQuick.Layouts
+
+import ".."
+
+RowLayout {
+ id: workspaces
+ spacing: 3
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+
+ property bool usingHyprland: Hyprland.workspaces.values.length == 0 ? false : true
+
+ // TODO: Improve this functionality
+ property var currentWorkspaces: usingHyprland ? Hyprland.workspaces.values.filter(w => w.monitor.name == taskbar.screen.name) : I3.workspaces.values.filter(w => w.monitor.name == taskbar.screen.name)
+
+
+ Repeater {
+ model: parent.currentWorkspaces
+ //model: Hyprland.workspaces.values.filter(w => w.monitor.name == taskbar.screen.name)
+ Button {
+ id: control
+ anchors.centerIn: parent.centerIn
+ contentItem: Text {
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ text: usingHyprland ? modelData.id : modelData.number
+ font.family: fontMonaco.name
+ width: 10
+ height: 10
+ font.pixelSize: Config.settings.bar.fontSize
+ color: Config.colors.text
+ }
+ onPressed: event => {
+ if(usingHyprland) {
+ Hyprland.dispatch(`workspace ` + modelData.id);
+ }else {
+ I3.dispatch(`workspace ` + modelData.number);
+ }
+ event.accepted = true;
+ }
+ NewBorder {
+ commonBorderWidth: 2
+ commonBorder: false
+ lBorderwidth: -2
+ rBorderwidth: 0
+ tBorderwidth: -4
+ bBorderwidth: -1
+ borderColor: Config.colors.outline
+ zValue: -1
+ }
+
+ // TODO: Improve this, it's very messy right now.
+ property int focusedWindowId: 0
+ function getColor() {
+ if (usingHyprland == true) {
+ focusedWindowId = Hyprland.focusedWorkspace.id;
+ }else {
+ focusedWindowId = I3.focusedWorkspace.number;
+ }
+
+ if (modelData.urgent) {
+ return Config.colors.urgent;
+ } else {
+ if ((usingHyprland && modelData.id == focusedWindowId) || mouse.hovered) {
+ return Config.colors.shadow;
+ }else if ((usingHyprland == false && modelData.number == focusedWindowId) || mouse.hovered) {
+ return Config.colors.shadow;
+ }
+ }
+ return Config.colors.base;
+ }
+ background: Rectangle {
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ border.width: 1
+ border.color: Config.colors.outline
+ width: 22
+ height: 22
+ color: getColor()
+ }
+
+ HoverHandler {
+ id: mouse
+ acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad
+ cursorShape: Qt.PointingHandCursor
+ }
+ }
+ }
+}
diff --git a/setup/managed/quickshell/taskbar/qmldir b/setup/managed/quickshell/taskbar/qmldir
new file mode 100644
index 0000000..7c0cf03
--- /dev/null
+++ b/setup/managed/quickshell/taskbar/qmldir
@@ -0,0 +1,6 @@
+module Taskbar
+Bar 1.0 Bar.qml
+TaskbarButton 1.0 TaskbarButton.qml
+Workspaces 1.0 Workspaces.qml
+ClockWidget 1.0 ClockWidget.qml
+SysTray 1.0 SysTray.qml
diff --git a/setup/managed/quickshell/utils/AppSearch.qml b/setup/managed/quickshell/utils/AppSearch.qml
new file mode 100644
index 0000000..876e3fa
--- /dev/null
+++ b/setup/managed/quickshell/utils/AppSearch.qml
@@ -0,0 +1,32 @@
+pragma Singleton
+import Quickshell
+
+Singleton {
+
+ readonly property list list: Array.from(DesktopEntries.applications.values).sort((a, b) => a.name.localeCompare(b.name))
+
+ readonly property var preppedNames: list.map(a => ({
+ name: Fuzzy.prepare(`${a.name} `),
+ entry: a
+ }))
+
+ readonly property var preppedIcons: list.map(a => ({
+ name: Fuzzy.prepare(`${a.icon} `),
+ entry: a
+ }))
+
+ function fuzzyQuery(search: string): var { // Idk why list doesn't work
+ return Fuzzy.go(search, preppedNames, {
+ all: true,
+ key: "name"
+ }).map(r => {
+ return r.obj.entry;
+ });
+ }
+
+ function getIcon(iconName) {
+ if (!iconName || iconName.length == 0)
+ return false;
+ return Quickshell.iconPath(iconName, true);
+ }
+}
diff --git a/setup/managed/quickshell/utils/Fuzzy.qml b/setup/managed/quickshell/utils/Fuzzy.qml
new file mode 100644
index 0000000..5f2b641
--- /dev/null
+++ b/setup/managed/quickshell/utils/Fuzzy.qml
@@ -0,0 +1,17 @@
+pragma Singleton
+import Quickshell
+import "./fuzzysort.js" as FuzzySort
+
+/**
+ * Wrapper for FuzzySort to play nicely with Quickshell's imports
+ */
+
+Singleton {
+ function go(...args) {
+ return FuzzySort.go(...args);
+ }
+
+ function prepare(...args) {
+ return FuzzySort.prepare(...args);
+ }
+}
diff --git a/setup/managed/quickshell/utils/fuzzysort.js b/setup/managed/quickshell/utils/fuzzysort.js
new file mode 100644
index 0000000..1290b16
--- /dev/null
+++ b/setup/managed/quickshell/utils/fuzzysort.js
@@ -0,0 +1,682 @@
+.pragma library
+
+// https://github.com/farzher/fuzzysort
+// License: MIT | Copyright (c) 2018 Stephen Kamenar
+// A copy of the license is available in the `licenses` folder of this repository
+
+var single = (search, target) => {
+ if(!search || !target) return NULL
+
+ var preparedSearch = getPreparedSearch(search)
+ if(!isPrepared(target)) target = getPrepared(target)
+
+ var searchBitflags = preparedSearch.bitflags
+ if((searchBitflags & target._bitflags) !== searchBitflags) return NULL
+
+ return algorithm(preparedSearch, target)
+}
+
+var go = (search, targets, options) => {
+ if(!search) return options?.all ? all(targets, options) : noResults
+
+ var preparedSearch = getPreparedSearch(search)
+ var searchBitflags = preparedSearch.bitflags
+ var containsSpace = preparedSearch.containsSpace
+
+ var threshold = denormalizeScore( options?.threshold || 0 )
+ var limit = options?.limit || INFINITY
+
+ var resultsLen = 0; var limitedCount = 0
+ var targetsLen = targets.length
+
+ function push_result(result) {
+ if(resultsLen < limit) { q.add(result); ++resultsLen }
+ else {
+ ++limitedCount
+ if(result._score > q.peek()._score) q.replaceTop(result)
+ }
+ }
+
+ // This code is copy/pasted 3 times for performance reasons [options.key, options.keys, no keys]
+
+ // options.key
+ if(options?.key) {
+ var key = options.key
+ for(var i = 0; i < targetsLen; ++i) { var obj = targets[i]
+ var target = getValue(obj, key)
+ if(!target) continue
+ if(!isPrepared(target)) target = getPrepared(target)
+
+ if((searchBitflags & target._bitflags) !== searchBitflags) continue
+ var result = algorithm(preparedSearch, target)
+ if(result === NULL) continue
+ if(result._score < threshold) continue
+
+ result.obj = obj
+ push_result(result)
+ }
+
+ // options.keys
+ } else if(options?.keys) {
+ var keys = options.keys
+ var keysLen = keys.length
+
+ outer: for(var i = 0; i < targetsLen; ++i) { var obj = targets[i]
+
+ { // early out based on bitflags
+ var keysBitflags = 0
+ for (var keyI = 0; keyI < keysLen; ++keyI) {
+ var key = keys[keyI]
+ var target = getValue(obj, key)
+ if(!target) { tmpTargets[keyI] = noTarget; continue }
+ if(!isPrepared(target)) target = getPrepared(target)
+ tmpTargets[keyI] = target
+
+ keysBitflags |= target._bitflags
+ }
+
+ if((searchBitflags & keysBitflags) !== searchBitflags) continue
+ }
+
+ if(containsSpace) for(let i=0; i -1000) {
+ if(keysSpacesBestScores[i] > NEGATIVE_INFINITY) {
+ var tmp = (keysSpacesBestScores[i] + allowPartialMatchScores[i]) / 4/*bonus score for having multiple matches*/
+ if(tmp > keysSpacesBestScores[i]) keysSpacesBestScores[i] = tmp
+ }
+ }
+ if(allowPartialMatchScores[i] > keysSpacesBestScores[i]) keysSpacesBestScores[i] = allowPartialMatchScores[i]
+ }
+ }
+
+ if(containsSpace) {
+ for(let i=0; i -1000) {
+ if(score > NEGATIVE_INFINITY) {
+ var tmp = (score + result._score) / 4/*bonus score for having multiple matches*/
+ if(tmp > score) score = tmp
+ }
+ }
+ if(result._score > score) score = result._score
+ }
+ }
+
+ objResults.obj = obj
+ objResults._score = score
+ if(options?.scoreFn) {
+ score = options.scoreFn(objResults)
+ if(!score) continue
+ score = denormalizeScore(score)
+ objResults._score = score
+ }
+
+ if(score < threshold) continue
+ push_result(objResults)
+ }
+
+ // no keys
+ } else {
+ for(var i = 0; i < targetsLen; ++i) { var target = targets[i]
+ if(!target) continue
+ if(!isPrepared(target)) target = getPrepared(target)
+
+ if((searchBitflags & target._bitflags) !== searchBitflags) continue
+ var result = algorithm(preparedSearch, target)
+ if(result === NULL) continue
+ if(result._score < threshold) continue
+
+ push_result(result)
+ }
+ }
+
+ if(resultsLen === 0) return noResults
+ var results = new Array(resultsLen)
+ for(var i = resultsLen - 1; i >= 0; --i) results[i] = q.poll()
+ results.total = resultsLen + limitedCount
+ return results
+}
+
+
+// this is written as 1 function instead of 2 for minification. perf seems fine ...
+// except when minified. the perf is very slow
+var highlight = (result, open='', close='') => {
+ var callback = typeof open === 'function' ? open : undefined
+
+ var target = result.target
+ var targetLen = target.length
+ var indexes = result.indexes
+ var highlighted = ''
+ var matchI = 0
+ var indexesI = 0
+ var opened = false
+ var parts = []
+
+ for(var i = 0; i < targetLen; ++i) { var char = target[i]
+ if(indexes[indexesI] === i) {
+ ++indexesI
+ if(!opened) { opened = true
+ if(callback) {
+ parts.push(highlighted); highlighted = ''
+ } else {
+ highlighted += open
+ }
+ }
+
+ if(indexesI === indexes.length) {
+ if(callback) {
+ highlighted += char
+ parts.push(callback(highlighted, matchI++)); highlighted = ''
+ parts.push(target.substr(i+1))
+ } else {
+ highlighted += char + close + target.substr(i+1)
+ }
+ break
+ }
+ } else {
+ if(opened) { opened = false
+ if(callback) {
+ parts.push(callback(highlighted, matchI++)); highlighted = ''
+ } else {
+ highlighted += close
+ }
+ }
+ }
+ highlighted += char
+ }
+
+ return callback ? parts : highlighted
+}
+
+
+var prepare = (target) => {
+ if(typeof target === 'number') target = ''+target
+ else if(typeof target !== 'string') target = ''
+ var info = prepareLowerInfo(target)
+ return new_result(target, {_targetLower:info._lower, _targetLowerCodes:info.lowerCodes, _bitflags:info.bitflags})
+}
+
+var cleanup = () => { preparedCache.clear(); preparedSearchCache.clear() }
+
+
+// Below this point is only internal code
+// Below this point is only internal code
+// Below this point is only internal code
+// Below this point is only internal code
+
+
+class Result {
+ get ['indexes']() { return this._indexes.slice(0, this._indexes.len).sort((a,b)=>a-b) }
+ set ['indexes'](indexes) { return this._indexes = indexes }
+ ['highlight'](open, close) { return highlight(this, open, close) }
+ get ['score']() { return normalizeScore(this._score) }
+ set ['score'](score) { this._score = denormalizeScore(score) }
+}
+
+class KeysResult extends Array {
+ get ['score']() { return normalizeScore(this._score) }
+ set ['score'](score) { this._score = denormalizeScore(score) }
+}
+
+var new_result = (target, options) => {
+ const result = new Result()
+ result['target'] = target
+ result['obj'] = options.obj ?? NULL
+ result._score = options._score ?? NEGATIVE_INFINITY
+ result._indexes = options._indexes ?? []
+ result._targetLower = options._targetLower ?? ''
+ result._targetLowerCodes = options._targetLowerCodes ?? NULL
+ result._nextBeginningIndexes = options._nextBeginningIndexes ?? NULL
+ result._bitflags = options._bitflags ?? 0
+ return result
+}
+
+
+var normalizeScore = score => {
+ if(score === NEGATIVE_INFINITY) return 0
+ if(score > 1) return score
+ return Math.E ** ( ((-score + 1)**.04307 - 1) * -2)
+}
+var denormalizeScore = normalizedScore => {
+ if(normalizedScore === 0) return NEGATIVE_INFINITY
+ if(normalizedScore > 1) return normalizedScore
+ return 1 - Math.pow((Math.log(normalizedScore) / -2 + 1), 1 / 0.04307)
+}
+
+
+var prepareSearch = (search) => {
+ if(typeof search === 'number') search = ''+search
+ else if(typeof search !== 'string') search = ''
+ search = search.trim()
+ var info = prepareLowerInfo(search)
+
+ var spaceSearches = []
+ if(info.containsSpace) {
+ var searches = search.split(/\s+/)
+ searches = [...new Set(searches)] // distinct
+ for(var i=0; i {
+ if(target.length > 999) return prepare(target) // don't cache huge targets
+ var targetPrepared = preparedCache.get(target)
+ if(targetPrepared !== undefined) return targetPrepared
+ targetPrepared = prepare(target)
+ preparedCache.set(target, targetPrepared)
+ return targetPrepared
+}
+var getPreparedSearch = (search) => {
+ if(search.length > 999) return prepareSearch(search) // don't cache huge searches
+ var searchPrepared = preparedSearchCache.get(search)
+ if(searchPrepared !== undefined) return searchPrepared
+ searchPrepared = prepareSearch(search)
+ preparedSearchCache.set(search, searchPrepared)
+ return searchPrepared
+}
+
+
+var all = (targets, options) => {
+ var results = []; results.total = targets.length // this total can be wrong if some targets are skipped
+
+ var limit = options?.limit || INFINITY
+
+ if(options?.key) {
+ for(var i=0;i= limit) return results
+ }
+ } else if(options?.keys) {
+ for(var i=0;i= 0; --keyI) {
+ var target = getValue(obj, options.keys[keyI])
+ if(!target) { objResults[keyI] = noTarget; continue }
+ if(!isPrepared(target)) target = getPrepared(target)
+ target._score = NEGATIVE_INFINITY
+ target._indexes.len = 0
+ objResults[keyI] = target
+ }
+ objResults.obj = obj
+ objResults._score = NEGATIVE_INFINITY
+ results.push(objResults); if(results.length >= limit) return results
+ }
+ } else {
+ for(var i=0;i= limit) return results
+ }
+ }
+
+ return results
+}
+
+
+var algorithm = (preparedSearch, prepared, allowSpaces=false, allowPartialMatch=false) => {
+ if(allowSpaces===false && preparedSearch.containsSpace) return algorithmSpaces(preparedSearch, prepared, allowPartialMatch)
+
+ var searchLower = preparedSearch._lower
+ var searchLowerCodes = preparedSearch.lowerCodes
+ var searchLowerCode = searchLowerCodes[0]
+ var targetLowerCodes = prepared._targetLowerCodes
+ var searchLen = searchLowerCodes.length
+ var targetLen = targetLowerCodes.length
+ var searchI = 0 // where we at
+ var targetI = 0 // where you at
+ var matchesSimpleLen = 0
+
+ // very basic fuzzy match; to remove non-matching targets ASAP!
+ // walk through target. find sequential matches.
+ // if all chars aren't found then exit
+ for(;;) {
+ var isMatch = searchLowerCode === targetLowerCodes[targetI]
+ if(isMatch) {
+ matchesSimple[matchesSimpleLen++] = targetI
+ ++searchI; if(searchI === searchLen) break
+ searchLowerCode = searchLowerCodes[searchI]
+ }
+ ++targetI; if(targetI >= targetLen) return NULL // Failed to find searchI
+ }
+
+ var searchI = 0
+ var successStrict = false
+ var matchesStrictLen = 0
+
+ var nextBeginningIndexes = prepared._nextBeginningIndexes
+ if(nextBeginningIndexes === NULL) nextBeginningIndexes = prepared._nextBeginningIndexes = prepareNextBeginningIndexes(prepared.target)
+ targetI = matchesSimple[0]===0 ? 0 : nextBeginningIndexes[matchesSimple[0]-1]
+
+ // Our target string successfully matched all characters in sequence!
+ // Let's try a more advanced and strict test to improve the score
+ // only count it as a match if it's consecutive or a beginning character!
+ var backtrackCount = 0
+ if(targetI !== targetLen) for(;;) {
+ if(targetI >= targetLen) {
+ // We failed to find a good spot for this search char, go back to the previous search char and force it forward
+ if(searchI <= 0) break // We failed to push chars forward for a better match
+
+ ++backtrackCount; if(backtrackCount > 200) break // exponential backtracking is taking too long, just give up and return a bad match
+
+ --searchI
+ var lastMatch = matchesStrict[--matchesStrictLen]
+ targetI = nextBeginningIndexes[lastMatch]
+
+ } else {
+ var isMatch = searchLowerCodes[searchI] === targetLowerCodes[targetI]
+ if(isMatch) {
+ matchesStrict[matchesStrictLen++] = targetI
+ ++searchI; if(searchI === searchLen) { successStrict = true; break }
+ ++targetI
+ } else {
+ targetI = nextBeginningIndexes[targetI]
+ }
+ }
+ }
+
+ // check if it's a substring match
+ var substringIndex = searchLen <= 1 ? -1 : prepared._targetLower.indexOf(searchLower, matchesSimple[0]) // perf: this is slow
+ var isSubstring = !!~substringIndex
+ var isSubstringBeginning = !isSubstring ? false : substringIndex===0 || prepared._nextBeginningIndexes[substringIndex-1] === substringIndex
+
+ // if it's a substring match but not at a beginning index, let's try to find a substring starting at a beginning index for a better score
+ if(isSubstring && !isSubstringBeginning) {
+ for(var i=0; i {
+ var score = 0
+
+ var extraMatchGroupCount = 0
+ for(var i = 1; i < searchLen; ++i) {
+ if(matches[i] - matches[i-1] !== 1) {score -= matches[i]; ++extraMatchGroupCount}
+ }
+ var unmatchedDistance = matches[searchLen-1] - matches[0] - (searchLen-1)
+
+ score -= (12+unmatchedDistance) * extraMatchGroupCount // penality for more groups
+
+ if(matches[0] !== 0) score -= matches[0]*matches[0]*.2 // penality for not starting near the beginning
+
+ if(!successStrict) {
+ score *= 1000
+ } else {
+ // successStrict on a target with too many beginning indexes loses points for being a bad target
+ var uniqueBeginningIndexes = 1
+ for(var i = nextBeginningIndexes[0]; i < targetLen; i=nextBeginningIndexes[i]) ++uniqueBeginningIndexes
+
+ if(uniqueBeginningIndexes > 24) score *= (uniqueBeginningIndexes-24)*10 // quite arbitrary numbers here ...
+ }
+
+ score -= (targetLen - searchLen)/2 // penality for longer targets
+
+ if(isSubstring) score /= 1+searchLen*searchLen*1 // bonus for being a full substring
+ if(isSubstringBeginning) score /= 1+searchLen*searchLen*1 // bonus for substring starting on a beginningIndex
+
+ score -= (targetLen - searchLen)/2 // penality for longer targets
+
+ return score
+ }
+
+ if(!successStrict) {
+ if(isSubstring) for(var i=0; i {
+ var seen_indexes = new Set()
+ var score = 0
+ var result = NULL
+
+ var first_seen_index_last_search = 0
+ var searches = preparedSearch.spaceSearches
+ var searchesLen = searches.length
+ var changeslen = 0
+
+ // Return _nextBeginningIndexes back to its normal state
+ var resetNextBeginningIndexes = () => {
+ for(let i=changeslen-1; i>=0; i--) target._nextBeginningIndexes[nextBeginningIndexesChanges[i*2 + 0]] = nextBeginningIndexesChanges[i*2 + 1]
+ }
+
+ var hasAtLeast1Match = false
+ for(var i=0; i=0; i--) {
+ if(toReplace !== target._nextBeginningIndexes[i]) break
+ target._nextBeginningIndexes[i] = newBeginningIndex
+ nextBeginningIndexesChanges[changeslen*2 + 0] = i
+ nextBeginningIndexesChanges[changeslen*2 + 1] = toReplace
+ changeslen++
+ }
+ }
+ }
+
+ score += result._score / searchesLen
+ allowPartialMatchScores[i] = result._score / searchesLen
+
+ // dock points based on order otherwise "c man" returns Manifest.cpp instead of CheatManager.h
+ if(result._indexes[0] < first_seen_index_last_search) {
+ score -= (first_seen_index_last_search - result._indexes[0]) * 2
+ }
+ first_seen_index_last_search = result._indexes[0]
+
+ for(var j=0; j score) {
+ if(allowPartialMatch) {
+ for(var i=0; i str.replace(/\p{Script=Latin}+/gu, match => match.normalize('NFD')).replace(/[\u0300-\u036f]/g, '')
+
+var prepareLowerInfo = (str) => {
+ str = remove_accents(str)
+ var strLen = str.length
+ var lower = str.toLowerCase()
+ var lowerCodes = [] // new Array(strLen) sparse array is too slow
+ var bitflags = 0
+ var containsSpace = false // space isn't stored in bitflags because of how searching with a space works
+
+ for(var i = 0; i < strLen; ++i) {
+ var lowerCode = lowerCodes[i] = lower.charCodeAt(i)
+
+ if(lowerCode === 32) {
+ containsSpace = true
+ continue // it's important that we don't set any bitflags for space
+ }
+
+ var bit = lowerCode>=97&&lowerCode<=122 ? lowerCode-97 // alphabet
+ : lowerCode>=48&&lowerCode<=57 ? 26 // numbers
+ // 3 bits available
+ : lowerCode<=127 ? 30 // other ascii
+ : 31 // other utf8
+ bitflags |= 1< {
+ var targetLen = target.length
+ var beginningIndexes = []; var beginningIndexesLen = 0
+ var wasUpper = false
+ var wasAlphanum = false
+ for(var i = 0; i < targetLen; ++i) {
+ var targetCode = target.charCodeAt(i)
+ var isUpper = targetCode>=65&&targetCode<=90
+ var isAlphanum = isUpper || targetCode>=97&&targetCode<=122 || targetCode>=48&&targetCode<=57
+ var isBeginning = isUpper && !wasUpper || !wasAlphanum || !isAlphanum
+ wasUpper = isUpper
+ wasAlphanum = isAlphanum
+ if(isBeginning) beginningIndexes[beginningIndexesLen++] = i
+ }
+ return beginningIndexes
+}
+var prepareNextBeginningIndexes = (target) => {
+ target = remove_accents(target)
+ var targetLen = target.length
+ var beginningIndexes = prepareBeginningIndexes(target)
+ var nextBeginningIndexes = [] // new Array(targetLen) sparse array is too slow
+ var lastIsBeginning = beginningIndexes[0]
+ var lastIsBeginningI = 0
+ for(var i = 0; i < targetLen; ++i) {
+ if(lastIsBeginning > i) {
+ nextBeginningIndexes[i] = lastIsBeginning
+ } else {
+ lastIsBeginning = beginningIndexes[++lastIsBeginningI]
+ nextBeginningIndexes[i] = lastIsBeginning===undefined ? targetLen : lastIsBeginning
+ }
+ }
+ return nextBeginningIndexes
+}
+
+var preparedCache = new Map()
+var preparedSearchCache = new Map()
+
+// the theory behind these being globals is to reduce garbage collection by not making new arrays
+var matchesSimple = []; var matchesStrict = []
+var nextBeginningIndexesChanges = [] // allows straw berry to match strawberry well, by modifying the end of a substring to be considered a beginning index for the rest of the search
+var keysSpacesBestScores = []; var allowPartialMatchScores = []
+var tmpTargets = []; var tmpResults = []
+
+// prop = 'key' 2.5ms optimized for this case, seems to be about as fast as direct obj[prop]
+// prop = 'key1.key2' 10ms
+// prop = ['key1', 'key2'] 27ms
+// prop = obj => obj.tags.join() ??ms
+var getValue = (obj, prop) => {
+ var tmp = obj[prop]; if(tmp !== undefined) return tmp
+ if(typeof prop === 'function') return prop(obj) // this should run first. but that makes string props slower
+ var segs = prop
+ if(!Array.isArray(prop)) segs = prop.split('.')
+ var len = segs.length
+ var i = -1
+ while (obj && (++i < len)) obj = obj[segs[i]]
+ return obj
+}
+
+var isPrepared = (x) => { return typeof x === 'object' && typeof x._bitflags === 'number' }
+var INFINITY = Infinity; var NEGATIVE_INFINITY = -INFINITY
+var noResults = []; noResults.total = 0
+var NULL = null
+
+var noTarget = prepare('')
+
+// Hacked version of https://github.com/lemire/FastPriorityQueue.js
+var fastpriorityqueue=r=>{var e=[],o=0,a={},v=r=>{for(var a=0,v=e[a],c=1;c>1]=e[a],c=1+(a<<1)}for(var f=a-1>>1;a>0&&v._score>1)e[a]=e[f];e[a]=v};return a.add=(r=>{var a=o;e[o++]=r;for(var v=a-1>>1;a>0&&r._score>1)e[a]=e[v];e[a]=r}),a.poll=(r=>{if(0!==o){var a=e[0];return e[0]=e[--o],v(),a}}),a.peek=(r=>{if(0!==o)return e[0]}),a.replaceTop=(r=>{e[0]=r,v()}),a}
+var q = fastpriorityqueue() // reuse this
\ No newline at end of file
diff --git a/setup/managed/quickshell/utils/qmldir b/setup/managed/quickshell/utils/qmldir
new file mode 100644
index 0000000..cd44172
--- /dev/null
+++ b/setup/managed/quickshell/utils/qmldir
@@ -0,0 +1,3 @@
+module Utils
+singleton Fuzzy 1.0 Fuzzy.qml
+singleton AppSearch 1.0 AppSearch.qml
\ No newline at end of file
diff --git a/setup/setup.sh b/setup/setup.sh
index 3ea70db..e174e51 100644
--- a/setup/setup.sh
+++ b/setup/setup.sh
@@ -1,10 +1,25 @@
#!/usr/bin/env bash
# Spaghetti so dense you could bounce a dime off it
+function overwriteDir {
+ cp -r -f $HOME/dotfiles/setup/managed/$1 $HOME/.config/$1
+}
+
nix-shell -p git
git pull https://github.com/morganmayday/dotfiles.git
echo "source = $HOME/dotfiles/hypr/index.conf" > "$HOME/.config/hypr/hyprland" # will overwrite any existing config
echo "include=config $HOME/dotfiles/hypr/mako" > "$HOME/.config/mako/config"
+overwriteDir gh
+overwriteDir gtk-4.0
+overwriteDir calibre
+overwriteDir inkscape
+overwriteDir kate
+overwriteDir kitty
+overwriteDir libreoffice
+overwriteDir nemo
+overwriteDir neofetch
+overwriteDir Pinta
+overwriteDir quickshell
sudo nixos-rebuild switch --impure --flake $HOME/dotfiles#atlas && reboot