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<author>[^_]+)", + "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 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<cphistory> + <operations /> + <params /> +</cphistory> 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 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<inkscape + version="1"> + <group + id="window"> + <group + id="menu" + state="1" /> + <group + id="commands" + state="1" /> + <group + id="snaptoolbox" + state="1" /> + <group + id="toppanel" + state="1" /> + <group + id="toolbox" + state="1" /> + <group + id="statusbar" + state="1" /> + <group + id="panels" + state="1" /> + <group + id="rulers" + state="1" /> + <group + id="scrollbars" + state="1" /> + </group> + <group + id="fullscreen"> + <group + id="menu" + state="1" /> + <group + id="commands" + state="1" /> + <group + id="snaptoolbox" + state="1" /> + <group + id="toppanel" + state="1" /> + <group + id="toolbox" + state="1" /> + <group + id="statusbar" + state="1" /> + <group + id="panels" + state="1" /> + <group + id="rulers" + state="1" /> + <group + id="scrollbars" + state="1" /> + </group> + <group + id="focus"> + <group + id="menu" + state="0" /> + <group + id="commands" + state="0" /> + <group + id="snaptoolbox" + state="0" /> + <group + id="toppanel" + state="0" /> + <group + id="toolbox" + state="0" /> + <group + id="statusbar" + state="0" /> + <group + id="panels" + state="0" /> + <group + id="rulers" + state="0" /> + <group + id="scrollbars" + state="0" /> + </group> + <group + id="template"> + <group + id="base" + pagecolor="#ffffff" + deskcolor="#d1d1d1" + pageopacity="0.0" + pagecheckerboard="0" + bordercolor="#000000" + borderopacity="0.25" + objecttolerance="10.0" + gridtolerance="10.0" + guidetolerance="10.0" + pageshadow="2" /> + </group> + <group + id="tools" + bounding_box="0"> + <group + id="shapes" + style="fill-rule:evenodd;" + selcue="1" + gradientdrag="1"> + <eventcontext + id="rect" + style="fill:blue;" + usecurrent="1" /> + <eventcontext + id="3dbox" + style="stroke:none;stroke-linejoin:round;" + usecurrent="1"> + <side + id="XYfront" + style="fill:#8686bf;stroke:none;stroke-linejoin:round;" + usecurrent="0" /> + <side + id="XYrear" + style="fill:#e9e9ff;stroke:none;stroke-linejoin:round;" + usecurrent="0" /> + <side + id="XZtop" + style="fill:#4d4d9f;stroke:none;stroke-linejoin:round;" + usecurrent="0" /> + <side + id="XZbottom" + style="fill:#afafde;stroke:none;stroke-linejoin:round;" + usecurrent="0" /> + <side + id="YZright" + style="fill:#353564;stroke:none;stroke-linejoin:round;" + usecurrent="0" /> + <side + id="YZleft" + style="fill:#d7d7ff;stroke:none;stroke-linejoin:round;" + usecurrent="0" /> + </eventcontext> + <eventcontext + id="arc" + style="fill:red;" + end="0" + start="0" + usecurrent="1" /> + <eventcontext + id="star" + magnitude="5" + style="fill:yellow;" + usecurrent="1" /> + <eventcontext + id="spiral" + style="fill:none;stroke:black" + expansion="1" + usecurrent="0" /> + </group> + <group + id="freehand" + style="fill:none;stroke:black;stroke-opacity:1;stroke-linejoin:miter;stroke-linecap:butt;"> + <eventcontext + id="pencil" + tolerance="15.0" + selcue="1" + style="stroke-width:1px;" + usecurrent="1" + average_all_sketches="1" + freehand-mode="0" + pressure="0" /> + <eventcontext + id="pen" + mode="drag" + selcue="1" + style="stroke-width:1px;" + usecurrent="1" + freehand-mode="3" /> + </group> + <eventcontext + id="calligraphic" + style="fill:black;fill-opacity:1;fill-rule:nonzero;stroke:none;" + mass="2" + angle="90" + width="15.1181102362205" + thinning="0" + flatness="0" + cap_rounding="1" + usecurrent="1" + tracebackground="0" + usepressure="0" + usetilt="0" + keep_selected="1" + abs_width="1" + unit="mm" + wiggle="0" + tremor="0"> + <group + id="preset"> + <group + id="cp0" + name="Dip pen" + mass="2" + wiggle="0.0" + angle="30.0" + thinning="10" + tremor="0.0" + flatness="-90" + cap_rounding="0.0" + tracebackground="0" + usepressure="1" + usetilt="1" /> + <group + id="cp1" + name="Marker" + mass="2" + wiggle="0.0" + angle="90.0" + thinning="0.0" + tremor="0.0" + flatness="0.0" + cap_rounding="1.0" + tracebackground="0" + usepressure="0" + usetilt="0" /> + <group + id="cp2" + name="Brush" + mass="2" + wiggle="25" + angle="45.0" + thinning="-40" + tremor="0.0" + flatness="16" + cap_rounding=".1" + tracebackground="0" + usepressure="1" + usetilt="1" /> + <group + id="cp3" + name="Wiggly" + usetilt="1" + tracebackground="0" + usepressure="1" + cap_rounding="0.1" + flatness="16" + tremor="18" + thinning="-30" + angle="30" + wiggle="50" + mass="0" /> + <group + id="cp4" + name="Splotch" + width="100" + usetilt="1" + tracebackground="0" + usepressure="0" + cap_rounding="1" + flatness="0" + tremor="10" + thinning="30" + angle="30" + wiggle="0" + mass="0" /> + <group + id="cp5" + name="Tracing" + width="50" + mass="0" + wiggle="0.0" + angle="0.0" + thinning="0.0" + tremor="0.0" + flatness="0" + cap_rounding="0.0" + tracebackground="1" + usepressure="1" + usetilt="1" /> + </group> + </eventcontext> + <eventcontext + id="eraser" + mode="1" + style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none;" + mass="3.00" + drag="1" + angle="30" + width="10" + thinning="0.1" + flatness="0.0" + cap_rounding="1.4" + usecurrent="0" + tracebackground="0" + usepressure="1" + usetilt="0" + selcue="1" /> + <eventcontext + id="lpetool" + mode="drag" + style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none;" + unit="px" /> + <eventcontext + id="text" + usecurrent="1" + gradientdrag="1" + font_sample="AaBbCcIiPpQq12369$€¢?.;/()" + show_sample_in_list="1" + use_svg2="1" + style="line-height:1.25;font-family:sans-serif;font-size:40px;text-orientation:auto" + selcue="1" + align_mode="0" + writing_mode="0" + orientation_mode="0" + direction_mode="0" /> + <eventcontext + id="nodes" + selcue="1" + gradientdrag="1" + pathflash_enabled="1" + pathflash_unselected="0" + pathflash_timeout="500" + show_handles="1" + show_outline="0" + sculpting_profile="1" + single_node_transform_handles="0" + show_transform_handles="0" + live_outline="1" + live_objects="1" + show_helperpath="0" + edit_clipping_paths="0" + edit_masks="0" /> + <eventcontext + id="marker" + selcue="1" + gradientdrag="1" /> + <eventcontext + id="tweak" + selcue="0" + gradientdrag="0" + show_handles="0" + width="0.2" + force="0.2" + fidelity="0.5" + usepressure="1" + style="fill:red;stroke:none;" + usecurrent="1" + mode="0" + doh="1" + dos="1" + dol="1" + doo="1" /> + <eventcontext + id="spray" + selcue="1" + gradientdrag="0" + usepressure="1" + width="15" + population="70" + mode="1" + rotation_variation="0" + scale_variation="0" + standard_deviation="70" + mean="0" /> + <eventcontext + id="gradient" + selcue="1" + newgradient="1" + newfillorstroke="1" /> + <eventcontext + id="mesh" + selcue="1" /> + <eventcontext + id="zoom" + selcue="1" + gradientdrag="0" /> + <eventcontext + id="dropper" + selcue="1" + gradientdrag="1" + pick="1" + setalpha="1" /> + <eventcontext + id="select" + selcue="1" + gradientdrag="0" + changelayer="1" + changepage="1" /> + <eventcontext + id="connector" + style="fill:none;fill-rule:evenodd;stroke:black;stroke-opacity:1;stroke-linejoin:miter;stroke-width:1px;stroke-linecap:butt;" + selcue="1" + curvature="0" /> + <eventcontext + id="paintbucket" + style="fill:#a0a0a0;stroke:none;" + usecurrent="1" /> + <group + id="geometric" + mode="drag" /> + <group + id="picker" /> + </group> + <group + id="palette"> + <group + id="dashes"> + <dash + id="solid" + style="stroke-dasharray:none" /> + <dash + id="dash-1-1" + style="stroke-dasharray:1,1" /> + <dash + id="dash-1-2" + style="stroke-dasharray:1,2" /> + <dash + id="dash-1-3" + style="stroke-dasharray:1,3" /> + <dash + id="dash-1-4" + style="stroke-dasharray:1,4" /> + <dash + id="dash-1-6" + style="stroke-dasharray:1,6" /> + <dash + id="dash-1-8" + style="stroke-dasharray:1,8" /> + <dash + id="dash-1-12" + style="stroke-dasharray:1,12" /> + <dash + id="dash-1-24" + style="stroke-dasharray:1,24" /> + <dash + id="dash-1-48" + style="stroke-dasharray:1,48" /> + <dash + id="dash-empty" + style="stroke-dasharray:0 11" /> + <dash + id="dash-2-1" + style="stroke-dasharray:2,1" /> + <dash + id="dash-3-1" + style="stroke-dasharray:3,1" /> + <dash + id="dash-4-1" + style="stroke-dasharray:4,1" /> + <dash + id="dash-6-1" + style="stroke-dasharray:6,1" /> + <dash + id="dash-8-1" + style="stroke-dasharray:8,1" /> + <dash + id="dash-12-1" + style="stroke-dasharray:12,1" /> + <dash + id="dash-24-1" + style="stroke-dasharray:24,1" /> + <dash + id="dash-2-2" + style="stroke-dasharray:2,2" /> + <dash + id="dash-3-3" + style="stroke-dasharray:3,3" /> + <dash + id="dash-4-4" + style="stroke-dasharray:4,4" /> + <dash + id="dash-6-6" + style="stroke-dasharray:6,6" /> + <dash + id="dash-8-8" + style="stroke-dasharray:8,8" /> + <dash + id="dash-12-12" + style="stroke-dasharray:12,12" /> + <dash + id="dash-24-24" + style="stroke-dasharray:24,24" /> + <dash + id="dash-2-4" + style="stroke-dasharray:2,4" /> + <dash + id="dash-4-2" + style="stroke-dasharray:4,2" /> + <dash + id="dash-2-6" + style="stroke-dasharray:2,6" /> + <dash + id="dash-6-2" + style="stroke-dasharray:6,2" /> + <dash + id="dash-4-8" + style="stroke-dasharray:4,8" /> + <dash + id="dash-8-4" + style="stroke-dasharray:8,4" /> + <dash + id="dash-2-1-012-1" + style="stroke-dasharray:2,1,0.5,1" /> + <dash + id="dash-4-2-1-2" + style="stroke-dasharray:4,2,1,2" /> + <dash + id="dash-8-2-1-2" + style="stroke-dasharray:8,2,1,2" /> + <dash + id="dash-012-012" + style="stroke-dasharray:0.5,0.5" /> + <dash + id="dash-014-014" + style="stroke-dasharray:0.25,0.25" /> + <dash + id="dash-0110-0110" + style="stroke-dasharray:0.1,0.1" /> + </group> + </group> + <group + id="colorselector" + page="1" + switcher="1"> + <group + id="RGB" + visible="1" /> + <group + id="HSL" + visible="1" /> + <group + id="CMYK" + visible="1" /> + <group + id="HSV" + visible="1" /> + <group + id="HSLuv" + visible="1" /> + <group + id="OKLAB" + visible="1" /> + <group + id="CMS" + visible="1" /> + <group + id="OKHSL" /> + </group> + <group + id="embedded"> + <group + id="swatches" + panel_size="1" + panel_mode="1" + panel_ratio="100" + panel_wrap="0" + palette="Inkscape default"> + <group + id="pinned" + none="1" + rgb000000="1" + black="1" + rgb808080="1" + gray-50="1" + rgbffffff="1" + white="1" /> + </group> + </group> + <group + id="dialogs"> + <group + id="toolbox" /> + <group + id="fillstroke" + page="1" /> + <group + id="filtereffects" /> + <group + id="textandfont" /> + <group + id="transformation" + applyseparately="0" /> + <group + id="align" /> + <group + id="xml" + h="500" + w="300" /> + <group + id="find" /> + <group + id="spellcheck" + w="200" + h="250" + ignorenumbers="1" /> + <group + id="documentoptions" + state="1" /> + <group + id="preferences" + state="1" + page="14" /> + <group + id="gradienteditor" /> + <group + id="object" /> + <group + id="export" + default="" + append_extension="1" + path=""> + <group + id="exportarea" /> + <group + id="defaultxdpi" /> + </group> + <group + id="save_as" + default="org.inkscape.output.svg.inkscape" + append_extension="1" + enable_preview="1" + path="" + use_current_dir="1" + enable_svgexport="0" /> + <group + id="save_copy" + default="" + append_extension="1" + enable_preview="1" + path="" /> + <group + id="open" + enable_preview="1" + path="" /> + <group + id="import" + enable_preview="1" + path="" + ask="1" + ask_svg="1" + link="embed" + scale="auto" + forcexdpi="0" /> + <group + id="clonetiler" + dotrace="0" /> + <group + id="gridtiler" /> + <group + id="extension-error" + show-on-startup="0" /> + <group + id="memory" /> + <group + id="messages" /> + <group + id="swatches" + palette="Auto" /> + <group + id="iconpreview" /> + <group + id="aboutextensions" /> + <group + id="treeeditor" /> + <group + id="layers" + maxDepth="20" + w="200" + h="300" /> + <group + id="trace" + state="1" /> + <group + id="script" /> + <group + id="input" /> + <group + id="colorpickerwindow" /> + <group + id="undo-history" /> + <group + id="objects" + expand_to_layer="1" /> + </group> + <group + id="printing"> + <settings + id="ps" /> + <group + id="debug" + add-label-comments="0" /> + </group> + <group + id="options" + rotationlock="1"> + <group + id="renderingcache" + size="512" /> + <group + id="useoldpdfexporter" + value="0" /> + <group + id="highlightoriginal" + value="1" /> + <group + id="relinkclonesonduplicate" + value="0" /> + <group + id="mapalt" + value="1" /> + <group + id="trackalt" + value="0" /> + <group + id="switchonextinput" + value="0" /> + <group + id="useextinput" + value="1" /> + <group + id="nudgedistance" + value="2px" /> + <group + id="rotationsnapsperpi" + value="12" /> + <group + id="cursortolerance" + value="8.0" /> + <group + id="dragtolerance" + value="4.0" /> + <group + id="grabsize" + value="4" /> + <group + id="displayprofile" + enable="0" + from_display="0" + intent="0" + uri="" /> + <group + id="softproof" + enable="0" + intent="0" + gamutcolor="#808080" + gamutwarn="0" + bpc="0" + uri="" /> + <group + id="savewindowgeometry" + value="1" /> + <group + id="defaultoffsetwidth" + value="2px" /> + <group + id="defaultscale" + value="2px" /> + <group + id="maxrecentdocuments" + value="36" /> + <group + id="zoomincrement" + value="1.414213562" /> + <group + id="zoomcorrection" + value="1.0" + unit="mm" /> + <group + id="keyscroll" + value="15" /> + <group + id="wheelscroll" + value="40" /> + <group + id="spacebarpans" + value="1" /> + <group + id="transientpolicy" + value="1" /> + <group + id="scrollingacceleration" + value="0.4" /> + <group + id="snapdelay" + value="0" /> + <group + id="snapweight" + value="0.5" /> + <group + id="snapclosestonly" + value="0" /> + <group + id="snapindicator" + value="1" /> + <group + id="autoscrollspeed" + value="0.7" /> + <group + id="autoscrolldistance" + value="-10" /> + <group + id="simplifythreshold" + value="0.002" /> + <group + id="bitmapeditor" + value="gimp" /> + <group + id="svgeditor" + value="inkscape" /> + <group + id="bitmapautoreload" + value="1" /> + <group + id="dialogtype" + value="1" /> + <group + id="dialogsskiptaskbar" + value="1" /> + <group + id="defaultwindowsize" + value="2" /> + <group + id="arenatilescachesize" + value="8192" /> + <group + id="preservetransform" + value="0" /> + <group + id="clonecompensation" + value="1" /> + <group + id="cloneorphans" + value="0" /> + <group + id="stickyzoom" + value="0" /> + <group + id="selcue" + value="2" /> + <group + id="transform" + stroke="1" + rectcorners="1" + pattern="1" + gradient="1" /> + <group + id="dash" + scale="1" /> + <group + id="kbselection" + inlayer="1" + onlyvisible="1" + onlysensitive="1" /> + <group + id="selection" + layerdeselect="1" /> + <group + id="createbitmap" /> + <group + id="compassangledisplay" + value="0" /> + <group + id="middlemousezoom" + value="1" /> + <group + id="maskobject" + topmost="1" + remove="1" /> + <group + id="blurquality" + value="0" /> + <group + id="filterquality" + value="1" /> + <group + id="startmode" + outline="0" /> + <group + id="outlinemode" + value="0" /> + <group + id="wireframecolors" + onlight="255" + ondark="4294967295" + images="4278190335" + clips="16711935" + masks="65535" /> + <group + id="svgoutput" + disable_optimizations="0" + usenamedcolors="0" + numericprecision="8" + minimumexponent="-8" + inlineattrs="0" + indent="2" + pathstring_format="2" + forcerepeatcommands="0" + incorrect_attributes_warn="1" + incorrect_attributes_remove="0" + incorrect_style_properties_warn="1" + incorrect_style_properties_remove="0" + style_defaults_warn="1" + style_defaults_remove="0" + check_on_reading="0" + check_on_editing="0" + check_on_writing="0" + sort_attributes="0" /> + <group + id="externalresources"> + <group + id="xml" + allow_net_access="0" /> + </group> + <group + id="forkgradientvectors" + value="1" /> + <group + id="autosave" + enable="1" + interval="10" + path="" + max="50" /> + <group + id="grids" + no_emphasize_when_zoomedout="0"> + <group + id="xy" + origin_x="0.0" + origin_y="0.0" + spacing_x="1.0" + spacing_y="1.0" + empspacing="5" + dotted="0" /> + <group + id="axonom" + units="mm" + origin_x="0.0" + origin_y="0.0" + spacing_y="1.0" + angle_x="30.0" + angle_z="30.0" + empspacing="5" /> + <group + id="modular" + units="mm" + origin_x="0.0" + origin_y="0.0" + spacing_x="40.0" + spacing_y="40.0" + gapx="10" + gapy="10" + marginx="0" + marginy="0" /> + </group> + <group + id="workarounds" + partialdynamic="0" /> + <group + id="font" + unitType="2" /> + <group + id="boot" + theme="colorful"> + <group + id="shown" + ver1.4="1" /> + </group> + <group + id="rendering" /> + <group + id="threading" /> + <group + id="ruler" /> + <group + id="snapping" + snap-bbox="1" + snap-bbox-edge="1" + snap-bbox-corner="1" + snap-bbox-edge-midpoint="0" + snap-bbox-center="0" + simple-snap-bbox="1" + snap-node-category="1" + snap-path="1" + snap-path-intersection="0" + snap-node-cusp="1" + snap-node-smooth="1" + snap-line-midpoint="1" + snap-line-tangential="0" + snap-line-perpendicular="0" + simple-snap-nodes="1" + snap-alignment="0" + snap-alignment-self="0" + snap-distribution="0" + simple-snap-alignment="0" + snap-others="1" + snap-object-midpoint="0" + snap-rotation-center="0" + snap-text-baseline="1" + snap-path-mask="1" + snap-path-clip="1" + snap-page-border="1" + snap-page-margin="1" + snap-grid="1" + snap-grid-line="1" + snap-guide="1" /> + </group> + <group + id="extensions" + org.inkscape.output.png.inkscape.png_bitdepth="99" + org.inkscape.output.png.inkscape.png_compression="6" + org.inkscape.output.png.inkscape.png_antialias="2" + org.inkscape.template.other.size="512.0" + org.inkscape.template.other.unit="px" + org.inkscape.template.from-file.filename="/nix/store/0nj9pq9vmknp0dgrm5fg60fq91613xpc-inkscape-with-extensions-1.4/share/inkscape/templates/about_screen.svg" /> + <group + id="desktop" + style="fill:#550000;text-orientation:auto"> + <group + width="1091" + height="563" + x="0" + y="0" + maximized="1" + fullscreen="0" + id="geometry" /> + <group + id="XYfront" /> + <group + id="XYrear" /> + <group + id="XZtop" /> + <group + id="XZbottom" /> + <group + id="YZleft" /> + <group + id="YZright" /> + </group> + <group + id="devices" /> + <group + id="toolbox" + icononly="1" + secondary="1" + simplesnap="1" + small="1"> + <group + id="tools" + icononly="1" + small="0" + iconsize="16" + width="26"> + <group + id="buttons" /> + </group> + <group + id="controlbars" + iconsize="16" /> + </group> + <group + id="statusbar"> + <group + id="visibility" /> + </group> + <group + id="iconpreview" + autoRefresh="1" + pack="1" + selectionHold="1" + showFrames="1" + selectionOnly="0"> + <group + id="sizes"> + <group + id="default"> + <group + value="16" + show="1" + id="size16" /> + <group + value="22" + show="0" + id="size22" /> + <group + value="24" + show="1" + id="size24" /> + <group + value="32" + show="1" + id="size32" /> + <group + value="48" + show="1" + id="size48" /> + <group + value="50" + show="0" + id="size50" /> + <group + value="64" + show="0" + id="size64" /> + <group + value="72" + show="0" + id="size72" /> + <group + value="80" + show="0" + id="size80" /> + <group + value="96" + show="0" + id="size96" /> + <group + value="128" + show="1" + id="size128" /> + <group + value="256" + show="0" + id="size256" /> + </group> + </group> + </group> + <group + id="debug" /> + <group + id="ui" + language="" /> + <group + id="live_effects" + flattening="0" /> + <group + id="theme" + defaultPreferDarkTheme="1" + defaultIconTheme="Mint-Y-Sand" + defaultGtkTheme="Mint-Y-Dark-Aqua" + narrowSpinButton="1" + preferDarkTheme="1" + darkTheme="1" + symbolicIcons="1" + symbolicDefaultBaseColors="0" + symbolicDefaultHighColors="0" + gtkTheme="Adwaita" + iconTheme="multicolor"> + <group + id="multicolor" + symbolicBaseColor="3958107135" + symbolicSuccessColor="10029823" + symbolicWarningColor="4279865599" + symbolicErrorColor="10086143" /> + </group> +</inkscape> 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> +<!-- + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . +--> +<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Module1" script:language="StarBasic">REM ***** BASIC ***** + +Sub Main + +End Sub</script:module> \ 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE library:library PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "library.dtd"> +<library:library xmlns:library="http://openoffice.org/2000/library" library:name="Standard" library:readonly="false" library:passwordprotected="false"/> 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE library:library PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "library.dtd"> +<library:library xmlns:library="http://openoffice.org/2000/library" library:name="Standard" library:readonly="false" library:passwordprotected="false"> + <library:element library:name="Module1"/> +</library:library> 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE library:libraries PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "libraries.dtd"> +<library:libraries xmlns:library="http://openoffice.org/2000/library" xmlns:xlink="http://www.w3.org/1999/xlink"> + <library:library library:name="Standard" library:link="false"/> +</library:libraries> 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE library:libraries PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "libraries.dtd"> +<library:libraries xmlns:library="http://openoffice.org/2000/library" xmlns:xlink="http://www.w3.org/1999/xlink"> + <library:library library:name="Standard" library:link="false"/> +</library:libraries> 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!--This is a generated file. Do not alter this file!--> +<java xmlns="http://openoffice.org/2004/java/framework/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> +<enabled xsi:nil="true"></enabled> +<userClassPath xsi:nil="true"></userClassPath> +<vmParameters xsi:nil="true"></vmParameters> +<jreLocations xsi:nil="true"></jreLocations> +<javaInfo xsi:nil="true"></javaInfo> +</java> 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 @@ +<?xml version="1.0"?> +<conf:configuration-backend-db xmlns:conf="http://openoffice.org/extensionmanager/configuration-registry/2010"/> 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 @@ +<?xml version="1.0"?> +<help:help-backend-db xmlns:help="http://openoffice.org/extensionmanager/help-registry/2010"/> 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 @@ +<?xml version="1.0"?> +<conf:configuration-backend-db xmlns:conf="http://openoffice.org/extensionmanager/configuration-registry/2010"/> 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 @@ +<?xml version="1.0"?> +<help:help-backend-db xmlns:help="http://openoffice.org/extensionmanager/help-registry/2010"/> 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 @@ +<?xml version="1.0"?> +<conf:configuration-backend-db xmlns:conf="http://openoffice.org/extensionmanager/configuration-registry/2010"/> 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 @@ +<?xml version="1.0"?> +<help:help-backend-db xmlns:help="http://openoffice.org/extensionmanager/help-registry/2010"/> 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<oor:items xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> +<item oor:path="/org.openoffice.Office.Common/Misc"><prop oor:name="FirstRun" oor:op="fuse"><value>false</value></prop></item> +<item oor:path="/org.openoffice.Office.Common/Misc"><prop oor:name="LastTipOfTheDayID" oor:op="fuse"><value>0</value></prop></item> +<item oor:path="/org.openoffice.Office.Common/Misc"><prop oor:name="LastTipOfTheDayShown" oor:op="fuse"><value>20345</value></prop></item> +<item oor:path="/org.openoffice.Office.Common/Misc"><prop oor:name="Persona" oor:op="fuse"><value>no</value></prop></item> +<item oor:path="/org.openoffice.Office.Common/Misc"><prop oor:name="PersonaSettings" oor:op="fuse"><value></value></prop></item> +<item oor:path="/org.openoffice.Office.Common/Misc"><prop oor:name="ShowTipOfTheDay" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Office.Common/Misc"><prop oor:name="UseOpenCL" oor:op="fuse"><value>false</value></prop></item> +<item oor:path="/org.openoffice.Office.Histories/Histories/org.openoffice.Office.Histories:HistoryInfo['PickList']/ItemList"><node oor:name="file:///home/mayday/Downloads/estradiol-calc.xlsx" oor:op="replace"><prop oor:name="Title" oor:op="fuse"><value>estradiol-calc</value></prop><prop oor:name="Filter" oor:op="fuse"><value>Calc MS Excel 2007 XML</value></prop><prop oor:name="Pinned" oor:op="fuse"><value xsi:nil="true"/></prop><prop oor:name="ReadOnly" oor:op="fuse"><value>false</value></prop><prop oor:name="Thumbnail" oor:op="fuse"><value>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</value></prop></node></item> +<item oor:path="/org.openoffice.Office.Histories/Histories/org.openoffice.Office.Histories:HistoryInfo['PickList']/ItemList"><node oor:name="file:///home/mayday/keys/dotfiles.pub" oor:op="replace"><prop oor:name="Title" oor:op="fuse"><value>dotfiles</value></prop><prop oor:name="Filter" oor:op="fuse"><value>Text</value></prop><prop oor:name="Pinned" oor:op="fuse"><value xsi:nil="true"/></prop><prop oor:name="ReadOnly" oor:op="fuse"><value>false</value></prop><prop oor:name="Thumbnail" oor:op="fuse"><value>iVBORw0KGgoAAAANSUhEUgAAAYwAAAIACAYAAACRo1t0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAgAElEQVR4nO3cd3Rc5YH38d+9o95775a7ZUu2MdjGgA0YU4zBFAMBwgaSvNndbDZhN8myKbCQBAIJJPQaIIAxJTSDe8FN7r3J3XIv6l2auff9Y4ok2yTPvn+8MTnfzzmcgzQzd27/3tE815bruq4AAPgb7L/3DAAAvh4IBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwEjY33sG/jdc15VlWXIcR5Jk23bod3/lVXJdBV7nkyxbVo9pBf/flXpNJ/S4Zcl1XSn0uOt/vmsFHg88V5LbY3q9n6/un13/69Vj2oEfe/zc+72/ehktWVZwXs5eT71f2z2vwXlxfD45riuPx9P9uh7LoTPWS8/Xnrlegv9/5vbSV7y++/0s/7rQV62X3vOtc6zj4HL2nHavtRR4zrm2b3AZu9e55PM5sm37jGWUXFf+9RH4z3UDD+hc82L12l/OnK8zf3eueTx7XQbnzxeaP7mufI4j2/Z074t/9Xg497T/1r53ru19zu0b2D7dzw/uo1/9vj236VftV72np3PO29/aJ4P7cu/9JzitHo+dMZ9/a9v0WpbQ+UF/dT3+b7fR+eK8CkZoh3NdOYGV7D8wJMfp3oy2bct1HDk+nyzb7n6tzrEz2/6N6PMFpiXJcRzZHo8cxyfX8h949hknNTs0XUc+x5Un8LN/PoI7rSPLCjxP6o5Prx1b/pNSj50x+NweSy7JP9+O48jj8cjx+eQG5sm2Lfl8gd87TveO5/jnref89nzccZxQVCXJdRzJskK/sz2eXh8xgztx6OC1bSkwT7bHIzuwPMFpB6cRfI3jurIsO3SCCM6TzniPnuvYf/D0iPZZ6yU0R/4wyr+PhOLWY77P3P7B6TuOI6vHeghuZ8dxZdtWINa2f3+QLY/H0/26HvGSLNl2YNn9bybbkgLXL6H9xb9PuGftk8HXuz3WU3C/Dq5vp8fEgsvXcz3557k7Zq7jhI6R4HL3PnkF14t/nkL7h21LriPHcXs9FtzHgq+1bVuOzyfZPS4qgvuJZYcuVM5c3/7/dxTM65kBCUbODS2vK8eVrDPiFdxPQvtb8D1cyWNb/unIPsdxF1xw/35vWXavi7Xgc4N7XPd27d5G3dvO6V7vgf08tI0C56LgvPkvQHpcSAbXVeC1wWl+XZ13f5LqeRLovvLtrr9lWTqwe5v2Hz7lP+m7buDSL3ClGLyiCx5UjivHkTweWzu2bNSJuhbZHo8a6uvldSTbsuTt7NCJE8dV39Aky7LU2d6q48ePq7G5VZZlh2IR3Ck629vU0tp+jk84/h0puHMHdzqf4wvsrP5nOT4nMMtu4ADzdV/9WK4aGxvlWrZs25avq1O1dQ2yPB7Jlf+KvMfVtsdjy/Z4Qgeux+MJnND9nxzaWprV0eX1nxhtW3bgMcuytGnlYr014yN1upJcn+pqa1RTU6uOzk5Jltpbm9Xc2uY/iXg71djYrLbWFjW3tMm27dABElxyq8c6aKivU0trqxrr69Tc2ibX8aq2pkanTtfI67hyfV6dPHlCtfWNoSz4HF/v9eJzQuvddV3/egxs4+CVtWVZ6uxoU3Nzi1qam9XW3tn7E0wgnsH9I7AG/RcJtv8xb1enampq5HMs2fJp3dq1auvyn/S8XV2B95F83i61tbXLdfwn767OTv8J33VCJ1nb9qi1panHOrLU2FCvto4u2bZUV1ur1rZ2NTbUqbm1I3Ty77l/W4GoW7YlSz2vSP2/X79uteqaOwMXOo7WrFqlNm/3svpPcvJ/mg5+EgksfXD/CDwh8LN/vdiWpYaGRv+J27Il16faulo5wU8JUmjaPm+namtOq66+QV1eryzLUlNDvZqaW0PBtazen9Jc1/H/J0sey1JDXa3aO72yA9O0bSsQKK+8gWn6vF51eb2h/c0NzpvPq8bGZtl24LgIrrPAxYrrOv6LTse/Tdpam9Xe0dXrwip0seJ4VXP6tDq9vlAsguEOXiwEl8k9YxspcBHmP1f5zztdHW1qam4NvVdnu3//DE3P6Ex4fvI8+OCDD/69ZyKo58e1+lPHtHlbleKTUxUVEa4TRw5o2859ysvL0YJP39Xa3aeUk5GkuIREeWwFrk78Jbddn3Zu3aKmDkcpSQnqaKnXkcOH9Pabryun71BVfv6W3vnL59qwda9GVgzQbx78hfYfq1Fzh6v8lHD97Bf/o1N1jWr32SrITtG7rz6tF6bP0nVXTdCR3Rv0h2de0MIvlyo5t49y05NDV21OYKf/73+7V3uaY3VBWaksp1X/55675Kb114CiLHU2HNPdd9+j/GHjlJ+eoNMHNuub3/43XXjlFCXHWPrjY7/SXz79Qtv2n9Cw/jn6/RO/1/q1a3S43lFr9Wo99NxfdMWF/fXCGx9o6JB+WrtmjWrrGmSHRysuyqNNGzeqzWspJSley2Z/qD+++Cct+nK5igeWq+nIdv34xw8ouWSYCrOSFa4Ovfzyqxo5YbIS1aiXX35Fq1Z8qT++PF39SrL00C8e0pp161TnjVJZaaZ+/bMf66mX3lbJ4OHKSYrUC7//jT5ctElXXnqRXvzNj7WwqlnFce36cO5y1R6q0sMP/0oLKjcoJydbf37hSVVu2a09VbvVp1+pXvnjb7VhZ7Xq6ho0YGA/tZ/ep2/c/R0NHnulMpNidHh7pe79l5/qsqunKD7Ko/WLPtKPHnpGk2+crHDL0qzpz+uxVz7VlGsu1+nDu/XfP7lf73y6SBOumqQ3fvsTrT1mK9V3XDOXblFpUY7CIiLV0dKohqZWyfGpob5G23buVUpChH7yw3/Xhm07tWjZao0aUaaXnn1OFWMvU1tjnU4c2K7XZsxWWWm6/vjS24pSsz5fuln5ia6eemmGxl8yWu+99Jie/2CZrpt4iTYsnaXXpn+kyqVLFJfdRwc3LtYnc5dqZeUKJadnq3L+J/rNY49r2epNyu8zUKd2rdEr0z9VbkGRkpPi1FBfp7rTJ7X7wGFFRYartb1LMTFROnn8uOTx6OCuLdq0fZ/6DSpTlMerDWtXac/BExpcNlBdLY06euSwqo+cVGZmulqaGnT08CEdPVmrjPRUdbY1afPmLbLCYxQfG6325npt3rJNnugExcVEavprz+n9jz7T9gPHNXpkmZ5+4jGtWrdRlWu3avToC+R2Nmv/waNKTUnWqcN79O4HH2neZx9q3d5a2Q179MgTL2nb5jU63RGpIf2KVLV9k47XtCgrI1UvPvmokktGaP+qWaqsOq6jO1bps/lLNH/2HOX1r1BatKONm3fIjoiU23pajz/1okaMqNBTjz+qkvKxchuPaduu/UrPypbdUa9fPfKw5i5YrOpTLRoxbKD27dqu000dUutJ/fHFNzXy4rGKtDr0/NPPqr6pUTPefksLl1Qqv98wpSVG64Hvf0t7muJ0QVkf/ez+72vTnmotWrBYBUXZevWlNzRu3Fi98ORjis0bovRor9Zt3Kb4pFRFhVuqq6vXiSPVqj5eo6zMdJ04ckDbq/YrNzdHx3Zv1KNP/EErKivVFZGs0sJsVVet0w9+cL9SS0eoJCfV/wnsa/op47wKRvDjfOupA3rgwUcVGR0jrydGsZ3H9MtHn1VsbJSikrPUfHSHKjfv14EtK3WkLVJD+xWGPtratq0P33hei9fv0MJZnyi1aLAWfPCath+q0dbNmzTy4gnKzMjUN26/UTPeekvF/ftr8ZcL1HdQhcorRsrTfEQfzV6mipEXqGxYuayOJp2qOaW9+47omquv1F9ef04ZF9yoqaNy9OL0ebr68ov9fxoLXHEc2rlOuw6flq+jVaMvGqXtq5fqWINPbS0tuuiCcq1YNEftbphaWzs0fNggzZ89W1Z4jDzRSYpu2qP3l+7V83/4raI9PkXHJqi4T1+5zSe092Sb+ubE6s13P1Zpnz6qPnpCgwaUan/VFv364UdUOmqiVFOlmfOWaNYXszVo2DD96fkX9S8P/k7jK0rkc6WOtjbt37NLaYWD1L8wSzEJSdq0do0GjRijlMR4XTj6YlXvWK++o6/RwDSftp8M02MP36/HH3lI46dOU9+0cB1uitJ9d0zWkUMHVV9Xo+oTDbrq8ku0vnKBFq7aoZLsFFWf7tDdd39DR3du1Oip39IVFw3TjHfe0aXX3aSR5WUqzEjQO2+/q+IBQzVg4ADlZaVr0dzZkh2p1javhg3pp9mzvlB4XKw6nAgN7FOg2V/MVVxMtOyYDBXlJmnWgiWKiY1QXFqB+paWym06pYTCcl0xeqiWzvtYlVsPKTc9QS0dXVrw+ccacMF4LZz+rA57U1S7fb5+/vgrik9JV0F2kpau3KbHf/trrfz8HXXE5Mhtb1TtiSNavn6nrrn2Oh3ZukS/fvpN3frN72jsRaO0es67emnGPP3zj/5T6bGdmr9krWIiLOWUDlF6Yqz69h+k7etWKK1osE7sWicrMV/Nx3YpvmCYplw7SXs3r9XV3/iexg4r1YKZMzR/dZUGDR6s4rxsPfub/9L0L5YrM7dIdku1nntnliZeNkY//cl/avi4iTq9b7Pe++hzjbp0kpJjpPUrl+nTOUs09fprNevtp/Xaxyt0ct9G1VtJ2jRvumat3qXNy+cpKmewGg9s1PwlK/TZzNkaN/EqrVkwU8tXrdWsBcs0YkiJXn3rYz39x6f0yevPKS5/iIYPHaTkGGn52m2aOOkKHdu9SW++P1cjLxyl+IQUjR4zRlWb12nCDbfr2Lblyhl5g+67pkyvvTNTcZ5WzVxQqR3rV8hOytORbSt0tMXS3k2VsuMztWvDUqX3v0jXT7xURXnpeurRR3SysV3PPfWERl17l0rjmvTvP3lQF0++U2OHFuutt97U2lUrtOt4u7wnqrTtdLgee+hHsu0INR7Zrhff/lSHdq7T3MrtSkmMUV1dgw7s3aOa2hptWbde1975A5XGnNLsDUc1vCBa63celOvr0uhR5fr4gw911Y03a2vlUvUdOkwLv5iplJw8zf5iliouGKk/v/SMDh07rvc/nq1rJl2pB75/r1ZtP6Ts/CLFOfV68vnX1VR7XDsON6hfSZ5GXnK1UnVK89dW64pxI5WckaeWE7vVHp2tstK8wKeer2cwzrM/SflXYkxSukYNH6y6ujqF2baSMgs0bGCxausbFB0VpY4unyZcc5Nuve4yVR+oliQ9+8Qj+v2Lb0uSFi9fppTsAg0ZNFANJw5o79Fm/et379PwAcXqdGyVDRuml55+RlfcfLeGDuqvG6feofJ+OXr84Z/plJWu++79pgpTI/XQz3+miPRsXX3lZYqPjZEj6aopU3V0yxJ9NGdp90dLS/IFgjVv5ieqaXW1ff1ybT54WvPnzlK75dHqL+frWF2r5nzxheyIKC2cN0tNbS36fM48RUZ5NPuTT3W0pkHpWVmSpLKyMmVkZKowN1XVR08qLSVZrV1hmnrdRC2ZP1teO0IZ6ZmKCXM17bv/qQkVRdq7/5Cy8wpkdzRr/8FqRcbFKykuRtlF/ZSfk62BQ0eof5+8wPc6kuQL/L3Z/+eONQs/1e7GSH1zyqVqa21VmMcjKUqp8RFqaJbCw8MVGRkhSSoo6afLx41WTIT/a7C4lHxdMXqwPp+7QAnJKf7V4vGE/mRlWa727dmlffsOqENRuvWOOzVmxCC9/uyT2nHgsObNXiBPVKTmzZml1tZ6zZ6/WFFhlr6YPU/NNYe0YMla2U6r5ixYpBN7Nmrlxl3qajypT2Yt8k/f9ig83D8vSdn9NG5YsWbPma/MogG6dNQQvffW69pxrEUTL6tQW2ubxk2com/fdYsyUxNVc3SPHvj5g+pK6atJl12knesW67fPT9e022+XJOVmJKlqb7WKiwokSSnxYdp76IQG5adoy9IF2rjrsFprDumjWYuUnleicG+TmjsdRUXYioqJU1tzg+zwGIVZzlnrpV//gRo/caIuu6hCkuTxRGrqnfdp6jWXqfzCixXT1aAPp7+trOIyFaTGatT4yeqbn66WllbJjtS1N92i7OQYdUjyOZbGT5qq++68SVs3bJTPjtZ1N9+hSZeM1P69e9TQ3KrcgkK1NJzW8ZONampuUUFRkWqP7VNnTKauGTdUL73yqo7XN8sNi1JxaR8dqj6otMxsHa8+qOkz3tfqVcs1/b2PZIeH6ejOSu0+7dOwojQ5Pq8+fes5PfrCB7r9ztu0aukK3XDH93T7jeNUuXKVIqJjtbdquw4dO6E2J0w/ffhJ5UW16Z0Z76ty5UqdbArT975zr8r65aut3auS4gJV7dipgpJSqb1WHb4wFeRk6vD+vaptblVBbpZWL5qlt9/7UCtXb9So8Tfq7tuuVVx8knLTE/TJ+zP03gefyIrN0j333KFlcz/QghWbFBcZpjmffaLaVkc71y/Tmu0HlRgboR07dystO1utzc1yfJ3asmmj2nyWTh7Ypa1VhzVg4GDlZCSrvaNDMfHJ+qd//aGuumSUli9aoJIh4/T9H/6Hbpo0Tpm5xWo/uk2LNh3Tj394nxxvlyTJ9pxnp9r/R+flUjQ3NSm7aIByEy299e4HamnvUumgckV1nNK7H85UeGSMHNdVl9crn+OVJH3j3n/Wt26fIknqW1yi6KhoFffpq+EV5fI4zfps7kJt2r5b8dFheuT++7SrMVwVAwpVc+KYDh86Isv2KCo6Rl2tjTpQfUSe8DBFx8SorblDa1av1d69e7Rt/0k5ClN2drZcRxo+ckRgji2FhYXJbTmpVbuPaOot03T9xAl65bFf6mBDhKbdcrOuuLRC//Pz/1BnUpFuueVWXTSwQP91/4+V03ekbr/9NsV56nSsOUwdR3fqi9mz9Njv/qBVKxbrd8+9rcvGX6ptG9bp5Kla9asYrXhfjbbtO6l9Gxfrty9/pLKBfdTe1qhFCxcqOiVH4U6bmrrCVZwTrxnvvqvnfv+o5q7YqOa649qyfae2bd2sti5HUqQ6muu1ZVuVTu3bqJ8/+qxGX3Shtm7bqYaWTp08Wq3P//K22iNzVBAnrVq1Xju2+z/6tzQ1aPXa9dqze5dqm9tUW1evsROuUs3+zdp7rFaS5OvqUOgrTVcaPLRC/Yrz1dJQowMHq+V1XKWkpWnd0nlSSo6m3TZNZUWp+o//+JlKho3TrTffrLyoJv30l7/RqMsn6eZbb5HvxC499OQbuuLaGzVt6hQdq1qt2tYu7d65Q9s2b5UkNTQ06tIrr9ahHWu1be9xjZl0i1Z+/rbstP6KkdTS4SgxMUmS1NnRrtjkXP3Lj36iX/z0h/K4LUrIGajv33O9Xnv9z6o5XKUPl+7T6888rGefelKbVi/S1ppY/e6Bb+nR3z+jWSvW69KrJmvqlOt0Yud6vfHqC1q5q0YVAwu0Zs1aVe3ZpwEVFyo92lXVnoOSpK6OjtDXUBHhYdq+fq027dgjSbLDwpUYF+t/0I7V5RcU6he/fUrX3nRr6PiwLKvXxUrwGwqP7WrLptWav3iZMnKyZTle2ZK6vD6pq1VzZy9QRm6R5G3TscP7NG/hcuUUlqirpUGnTtcrPjlVibGRyijop/z4Lv38vx9U+ZgJOrRznZRYoPt/9APdOu12ffuum+WRtOTLJRpQMUqS1NTapbFXTNYjv/qVxlQMVnZmopZ9OUdfLt2kkuJidXU6mnbnfbrhykvkazyp1154Ruml5UpwGrTzwAmlJdr6csVKVZ+oV1fDIT327Dt6/e03NfPN5/Tl8kpt3XNEpX2KdGDfAQ0ur9CaZQvUFZ6o9sY6ZeRka3/VOq2oXCdfRKzCWmrli8xUfryrk01eJcbHKjMzXXZkokqyYlW5ba9umnaHrrrkIs3/9GN1eaI0fNRoJXratWrtBqXk9NN377tX/XIzFJ2YqtycdMUlpmhY+XBFR0bICo9UfGykJKm0bx/trdqgBbM/1eeLVmnf5mX65x//SmPHXy7b16VNK+briaee1s79p5SZkRbaZl9X59WfpCT/wRAREaHqvTvV7MbqzjvvUFp8hHZs26KIlALdcesNSoiLUU5unjLS05SZlaPM9BRFRUUrJjpKlmWpvGK4DlZtlTc8XkOHDdHQ/n1UtWuvLrpsovoXZaujS8pKS9TefdUqqxilCKdRleu2a+ptd6lsQB/VHTugLbuP6J5vf09xTp2Wr92qPiXF6uj0aujQMh3et1NJ+YN003VXyGN1f9nY0tyk3OKBGj28TAMGDZK3q12jr7hOFYP6aNDAQepq69DVk6eqX3G+Bg4sVZvX1ZSbp6kgJ0t9iwqVklWoCWOGatWajbr8mikaWVEuu6NW63ZU61vf+a6KslOUmpmn4SOGq0+fEkVHhCk5NU01xw8pIjFHV40fq4MHqzXmsvGKjY7R9VMma/+ODUoqKNOUK8dqxZKFCotLV2yEpdTMPCUnxCg3K1UH9h9SYmqa0tJS1dJQo+qjJzSkYqSifE2q90bqe9/7rsK66rWlqlrZWamKS85QjFq1YccBFRflq8uxVF4+THkFxaoYWqbiPqXKzUxVQlKqCgsLlBgbrdgoj3bt2K69B6qV33eI8lOjtHhJpa668XYNKMzSkIrR6ltcoIF9i9Tl2pp6663Kz8lRSVGe3LBETbtlqrJzclWYlaTo1BzdcuN1ys4tUkFetlrra9XQ1qXkpHilZuWrb0m+8opKVV42RCWlfZSVFq1ly1fr5rv/SVnJsYqNT1BeXp5SkxJk2WHKys1Tv9JCWYE/iSalZGr85RMUZXvV0uFoxOgxqiivUHK0rdoWn66YOFHDyofLaWtQesFATZ40QXlFpUpJitWIUWN1bM8mdUZn6567btWIYWXaULlYSSUVmjblCnksKTk1TYVFRYqLjlRWXpGsjkadbGjXoP59lJicrNz8fMXH+E9I6Zm56tNngC6+aJg629rU2VKjTz6do4uvvFYpMdKpQ/v1xfwlumHyddq1aY0O13ao36AyTb5ukhLj4pSbn6+0lGTlFpbqwhGDVH3kpC69dJySUjJ0yYXDdOhYrS677BIlxCcoIylGVXsPa8rN01RSmKeMpEh9uXyNpt51rwbkpcj1xGrY0EGhYb3hkbEaMGigkuJiFJ+YpL79+islKU4+x1VZeYVOHaxSVEZf3XTNeMXExio7N1sJCfEq7DtQQ/rma/GCecodOEp33XK9OhtPafP2XWqob1b/wWUqL6/QiOEVSkuIVkbhAJVkRMsXnaaKwSUqGTRCQ0vStGrjLt1+z7d0weBSrV+7WsdPnFJ4bIZuvmmy+g4arAsvGK6+/QapMCdVO7dtU/8Rl+jiEQOVnlWi0SPK1Ld/P8XGx6mwME+b1q5S7sALdfetU5SQEKfs3DwlJMRp0LALVNY3R2vWbVTJgCHKzUxTUlKKCgryFRlmK6uwnxLC27X3SL0mTbpKHU21SkzLUlvDKbW7kbpwzBgdP1Cl4qFjddXY8t4DMb6GLPdcA+jPA+caVx0a6XKOcdvdY7oVGjURnE7w9T3H3qvX9BQajeL/0T+dc72293v6h+1abs8RJIERFsFRFD2GZ4aGAwem0XO4YM8hir2WO7C8vYeE6hxD/84eE99zGGKvddhjiG/wPc4e0tq9fnsN5e01Kuyrt9W5n9d9P4PU+zU9t2Gv9RIa2dU9dNE/vNQJDfv8qu3jHylma9aHf1ZDRI5um3x5YIitFVr4c42Tl+uGtpF11nt3D6u1A+vRcbvnRaH9s/f9N199P0HoJaH1E9pGgX3Mlf+9j+3foVdef0slw8bpG1MnademSv15xme64PLrdP3lY7T6y9nyJfbR6PK+gWGrtn8Ysn9u/O/jWnIt//DVM9/4zO145hDV7vUr/9DR0DKefW9Er2kH10mvIa3dw7Nt29bOjas0d/EKZZcM1i3XT5Tr+PwDWXoMR+2eh+BwXf/Pvo5mffThhzpS06Jrb7hZpfkZoRF0Vq/XdR9DoWM0uF9LZx3Hf22f/qrHz3xucBivvmI6XzfnVTB6nqC8Xm9oOJvHY6mry/+np7CwMP8X3KF7KvxfIDmuIzswFNXx+eT1+SRZCg8Pk8/nC7yBJNuWJzC8MTImXrHRkerq6pLrOrLtMHk8gXHePp8s2yPbclVX36CYuDiFB4Yker2BeQkPl6XusfTBU68d+Bu14/PfKBicZvDKLBiO4Fj04BjwIJ/PF7jvwf/74BDZQAlDQ3R7juM/8z4M/xBM/01osix5AuslOIbc4wkL3N/hC50MHZ8vFGSP7b8vQbL8w3Yl+Xz+bdL9sy/03lboXgb/wezx2KHl97+PNzSvweHSweUMHjrBUHTf9+G/2TK4/JbV+2ZDy/IvX/DeGjewXJLTPS+BZQkOZwyu0+D7he4bCM6H64ZOtv7X+y8gbNsOLW/wvh1f8D0D+2LwJBWc/pn3cwSD4wvcP2QHTh4+n0+yLIUF7g2SZfe4L8gJ3YPT88QmKRB+//0pwQAH15/H47/Hoff9J4F7HXTGBVjw58A28Xg8/tf5fPK5jmzLE9qHg/u5P9qB/aPH/SPd9y+5Zz3e6+IluP8Ejo/gft0z0MH7kXRGJLqPH/8FgWXZkuXK8p/t/cPUXf9QYAXuAfEFB6ZYthzX6bVtFDiGrcC8BPcHN7Cdet5bEtwPel6o9LonKbg9pdCx7Quci4L7LMH4/8V1u69s5Mp/qaTQAbJy7kc60JGo2yZPCG3U7hOsGzq4ly/8QnsOnZblCdd1N0xVSlykf0cOXNEePrhfkfGpSk9JkOToxSf+Rwc60/SbB/41FBLLOvdVOc4PZ17FBg/o4FXx1+mA7b5adbovEDweKfBpVVKPG+5M/wWE80CPK/rQxdX93eMAAAydSURBVIrO/tT41S93e520pe77Mb4Wy/81dF59hxG8Etu6ZolefWO6tm/brE1Vh9S/OEvv/vkNLVm9UaX9B2jxF39RWGqxYjpP6i+zlysrOUp/ev1NLVtRqZSiMhXEd+nlP/1Z+4/VqzQvVTNmfKTy8mHaumaplq/eoD179yszO1vrKpdIMamqObBF7380U05Usgpy0nT/976pOZVblF9YopyMNBVmJGj52q26csIlajhZrenT39HKdVtU1G+I7LZTmvHue6pcs0Gp2QVKjo8J/TkDfz89/04curr3//S12zZnLkdwWXr+HHy853PPez3nN7AcoX/yRH97Gc65Xr5Oy/81dF6NkgreS7F7xzY1NrfoVM0pHdm/V3sPHZEdHqGDW1fp44VrlBTlaO7CpVq5dIE6rHB9/sE7KqkYr4uGlsrn86mpvk7R0TGa+d6bOtLk6vi+zVq386CWLFqs9s52HTl+SkkpKYoOD5PtNOtkfassb5NefvU1SZYGDxysG6d9QyOG9PXPV+BjtSS1tzTJtSO1Y+2Xmrd8g05XV2nOktUqLCpWVES4JD51APjHdF4FI8gTHqncvHxlZuUqNz1Zi2bPVKMTpyH9CnXixEmNueY2HV0/W+8trtK0G65UTc1p5eTnKzE+Tpa3RZ989oXy+w9RWmy4Wjo9uuv2m/Xi47+Ukz5QowYVqL61WaePH5Oik9Red1Ir1+/UBSMq5O1okySFhdmKjYsLzY8lV11d/vHUC2fPVGdUqvoX56ru9GnlDx2n73/7Tq3+cpYWVq6XpF7fRwDAP4rzKxiBj5FxCYlKTEhQQny84hITVVhUrOa6E7Jjk9V88rAkW8Wp0QpLyFKkJY2/fIJmvPR7LVhTpczMLOXmZOpw9SFl5uRo25bNyup/gZpPn9CA8guVl52ptIQUJSanqG//gbrowgsV4+nS6aZOpUR7VNMujRxRrvdefUZzl66RJCVl5Mpbf0jvz1qi/D791XjqiCLjU9TaVKvDe3dqzfrNSkrLVEZqcq/lAIB/JOf3l97BL7ktqamhXhFRMQqPCNfxfdv01Atv6jv3P6DSrCTJddXS0qywiGhFRoTJ8XnV2Nyi2Ng4hYfZWvz5e1q46ah++cAP5ZH05ZyZ2n+8VrmFpbrysjFqb22WVx5FRYTJcS1FhIepsaFB4ZFRio7yj4fvaG9Va7tXyUkJamyoV1RsnFyfV5GRUWpurFeX61FyYnyvIZMA8I/kvA7GmfcBuIHhbqeOHVJjh6U+RXlnj/3u+TrX/8+S76naoaSMPKUlx/u/kJarzo4uhUdG+MdeW933dQSHAPb8AvHMIZnnvKejx+sZoQHgH9F5FYyzbxzq9WDoxBwcYui6Pf/t+t7DJXuetHvdfCaFxtmffWLvHih71j+N3SMsPecl+Lrge3/db8wBgK9yXgXjb+n5iUPy3ygW/Pfvz3X3cfcNRt13dQYf6xkETvAA8Ld9rYIBAPj7Ob9GSQEAzlsEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACMEAwBghGAAAIwQDACAEYIBADBCMAAARggGAMAIwQAAGCEYAAAjBAMAYIRgAACMEAwAgBGCAQAwQjAAAEYIBgDACMEAABghGAAAIwQDAGCEYAAAjBAMAIARggEAMEIwAABGCAYAwAjBAAAYIRgAACP/F1GK4JBHheUuAAAAAElFTkSuQmCC</value></prop></node></item> +<item oor:path="/org.openoffice.Office.Histories/Histories/org.openoffice.Office.Histories:HistoryInfo['PickList']/OrderList"><node oor:name="0" oor:op="replace"><prop oor:name="HistoryItemRef" oor:op="fuse"><value>file:///home/mayday/Downloads/estradiol-calc.xlsx</value></prop></node></item> +<item oor:path="/org.openoffice.Office.Histories/Histories/org.openoffice.Office.Histories:HistoryInfo['PickList']/OrderList"><node oor:name="1" oor:op="replace"><prop oor:name="HistoryItemRef" oor:op="fuse"><value>file:///home/mayday/keys/dotfiles.pub</value></prop></node></item> +<item oor:path="/org.openoffice.Office.Logging/Settings"><node oor:name="unopkg" oor:op="replace"><prop oor:name="LogLevel" oor:op="fuse"><value>2147483647</value></prop><prop oor:name="DefaultHandler" oor:op="fuse"><value>com.sun.star.logging.FileHandler</value></prop><node oor:name="HandlerSettings"><prop oor:name="FileURL" oor:op="fuse"><value>$(userurl)/$(loggername).log</value></prop></node><prop oor:name="DefaultFormatter" oor:op="fuse"><value>com.sun.star.logging.PlainTextFormatter</value></prop><node oor:name="FormatterSettings"></node></node></item> +<item oor:path="/org.openoffice.Office.Recovery/RecoveryInfo"><prop oor:name="SessionData" oor:op="fuse"><value>false</value></prop></item> +<item oor:path="/org.openoffice.Office.Recovery/RecoveryList"><node oor:name="recovery_item_1" oor:op="remove"/></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/formatobjectbar']"><prop oor:name="ContextActive" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/formatobjectbar']"><prop oor:name="ContextSensitive" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/formatobjectbar']"><prop oor:name="DockPos" oor:op="fuse"><value>0,2</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/formatobjectbar']"><prop oor:name="Docked" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/formatobjectbar']"><prop oor:name="DockingArea" oor:op="fuse"><value>0</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/formatobjectbar']"><prop oor:name="HideFromToolbarMenu" oor:op="fuse"><value>false</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/formatobjectbar']"><prop oor:name="Locked" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/formatobjectbar']"><prop oor:name="NoClose" oor:op="fuse"><value>false</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/formatobjectbar']"><prop oor:name="Pos" oor:op="fuse"><value>2147483647,2147483647</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/formatobjectbar']"><prop oor:name="Size" oor:op="fuse"><value>0,0</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/formatobjectbar']"><prop oor:name="SoftClose" oor:op="fuse"><value>false</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/formatobjectbar']"><prop oor:name="Style" oor:op="fuse"><value>0</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/formatobjectbar']/UIName"><value xml:lang="en-US">Formatting</value></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/formatobjectbar']"><prop oor:name="Visible" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="ContextActive" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="ContextSensitive" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="DockPos" oor:op="fuse"><value>0,0</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="Docked" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="DockingArea" oor:op="fuse"><value>0</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="HideFromToolbarMenu" oor:op="fuse"><value>false</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="Locked" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="NoClose" oor:op="fuse"><value>false</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="Pos" oor:op="fuse"><value>2147483647,2147483647</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="Size" oor:op="fuse"><value>0,0</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="SoftClose" oor:op="fuse"><value>false</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="Style" oor:op="fuse"><value>0</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']/UIName"><value xml:lang="en-US">Standard</value></item> +<item oor:path="/org.openoffice.Office.UI.CalcWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="Visible" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.Sidebar/Content/DeckList/org.openoffice.Office.UI.Sidebar:Deck['A11yCheckDeck']"><prop oor:name="ContextList" oor:op="fuse"><value><it>com.sun.star.text.TextDocument, any, visible</it><it>com.sun.star.text.GlobalDocument, any, visible</it><it>com.sun.star.text.WebDocument, any, visible</it><it>com.sun.star.xforms.XMLFormDocument, any, visible</it><it>com.sun.star.sdb.FormDesign, any, visible</it><it>com.sun.star.sdb.TextReportDesign, any, visible</it></value></prop></item> +<item oor:path="/org.openoffice.Office.UI.Sidebar/Content/DeckList/org.openoffice.Office.UI.Sidebar:Deck['FindDeck']"><prop oor:name="ContextList" oor:op="fuse"><value><it>com.sun.star.text.TextDocument, any, visible</it><it>com.sun.star.text.GlobalDocument, any, visible</it><it>com.sun.star.text.WebDocument, any, visible</it><it>com.sun.star.xforms.XMLFormDocument, any, visible</it><it>com.sun.star.sdb.FormDesign, any, visible</it><it>com.sun.star.sdb.TextReportDesign, any, visible</it></value></prop></item> +<item oor:path="/org.openoffice.Office.UI.Sidebar/Content/DeckList/org.openoffice.Office.UI.Sidebar:Deck['GalleryDeck']"><prop oor:name="ContextList" oor:op="fuse"><value><it>com.sun.star.sheet.SpreadsheetDocument, any, visible</it><it>com.sun.star.drawing.DrawingDocument, any, visible</it><it>com.sun.star.presentation.PresentationDocument, any, visible</it><it>com.sun.star.text.TextDocument, any, visible</it><it>com.sun.star.text.GlobalDocument, any, visible</it><it>com.sun.star.text.WebDocument, any, visible</it><it>com.sun.star.xforms.XMLFormDocument, any, visible</it><it>com.sun.star.sdb.FormDesign, any, visible</it><it>com.sun.star.sdb.TextReportDesign, any, visible</it></value></prop></item> +<item oor:path="/org.openoffice.Office.UI.Sidebar/Content/DeckList/org.openoffice.Office.UI.Sidebar:Deck['InspectorDeck']"><prop oor:name="ContextList" oor:op="fuse"><value><it>com.sun.star.text.TextDocument, any, visible</it><it>com.sun.star.text.GlobalDocument, any, visible</it><it>com.sun.star.text.WebDocument, any, visible</it><it>com.sun.star.xforms.XMLFormDocument, any, visible</it><it>com.sun.star.sdb.FormDesign, any, visible</it><it>com.sun.star.sdb.TextReportDesign, any, visible</it></value></prop></item> +<item oor:path="/org.openoffice.Office.UI.Sidebar/Content/DeckList/org.openoffice.Office.UI.Sidebar:Deck['NavigatorDeck']"><prop oor:name="ContextList" oor:op="fuse"><value><it>com.sun.star.sheet.SpreadsheetDocument, any, visible</it><it>com.sun.star.drawing.DrawingDocument, any, visible</it><it>com.sun.star.presentation.PresentationDocument, any, visible</it><it>com.sun.star.text.TextDocument, any, visible</it><it>com.sun.star.text.GlobalDocument, any, visible</it><it>com.sun.star.text.WebDocument, any, visible</it><it>com.sun.star.xforms.XMLFormDocument, any, visible</it><it>com.sun.star.sdb.FormDesign, any, visible</it><it>com.sun.star.sdb.TextReportDesign, any, visible</it></value></prop></item> +<item oor:path="/org.openoffice.Office.UI.Sidebar/Content/DeckList/org.openoffice.Office.UI.Sidebar:Deck['PropertyDeck']"><prop oor:name="ContextList" oor:op="fuse"><value><it>any, any, visible</it></value></prop></item> +<item oor:path="/org.openoffice.Office.UI.Sidebar/Content/DeckList/org.openoffice.Office.UI.Sidebar:Deck['ScFunctionsDeck']"><prop oor:name="ContextList" oor:op="fuse"><value><it>com.sun.star.sheet.SpreadsheetDocument, any, visible</it></value></prop></item> +<item oor:path="/org.openoffice.Office.UI.Sidebar/Content/DeckList/org.openoffice.Office.UI.Sidebar:Deck['StyleListDeck']"><prop oor:name="ContextList" oor:op="fuse"><value><it>com.sun.star.sheet.SpreadsheetDocument, any, visible</it><it>com.sun.star.drawing.DrawingDocument, any, visible</it><it>com.sun.star.presentation.PresentationDocument, any, visible</it><it>com.sun.star.text.TextDocument, any, visible</it><it>com.sun.star.text.GlobalDocument, any, visible</it><it>com.sun.star.text.WebDocument, any, visible</it><it>com.sun.star.xforms.XMLFormDocument, any, visible</it><it>com.sun.star.sdb.FormDesign, any, visible</it><it>com.sun.star.sdb.TextReportDesign, any, visible</it></value></prop></item> +<item oor:path="/org.openoffice.Office.UI.Sidebar/Content/DeckList/org.openoffice.Office.UI.Sidebar:Deck['SwManageChangesDeck']"><prop oor:name="ContextList" oor:op="fuse"><value><it>com.sun.star.text.TextDocument, Annotation, visible</it><it>com.sun.star.text.GlobalDocument, Annotation, visible</it><it>com.sun.star.text.WebDocument, Annotation, visible</it><it>com.sun.star.xforms.XMLFormDocument, Annotation, visible</it><it>com.sun.star.sdb.FormDesign, Annotation, visible</it><it>com.sun.star.sdb.TextReportDesign, Annotation, visible</it><it>com.sun.star.text.TextDocument, DrawText, visible</it><it>com.sun.star.text.GlobalDocument, DrawText, visible</it><it>com.sun.star.text.WebDocument, DrawText, visible</it><it>com.sun.star.xforms.XMLFormDocument, DrawText, visible</it><it>com.sun.star.sdb.FormDesign, DrawText, visible</it><it>com.sun.star.sdb.TextReportDesign, DrawText, visible</it><it>com.sun.star.text.TextDocument, Table, visible</it><it>com.sun.star.text.GlobalDocument, Table, visible</it><it>com.sun.star.text.WebDocument, Table, visible</it><it>com.sun.star.xforms.XMLFormDocument, Table, visible</it><it>com.sun.star.sdb.FormDesign, Table, visible</it><it>com.sun.star.sdb.TextReportDesign, Table, visible</it><it>com.sun.star.text.TextDocument, Text, visible</it><it>com.sun.star.text.GlobalDocument, Text, visible</it><it>com.sun.star.text.WebDocument, Text, visible</it><it>com.sun.star.xforms.XMLFormDocument, Text, visible</it><it>com.sun.star.sdb.FormDesign, Text, visible</it><it>com.sun.star.sdb.TextReportDesign, Text, visible</it><it>com.sun.star.text.TextDocument, default, visible</it><it>com.sun.star.text.GlobalDocument, default, visible</it><it>com.sun.star.text.WebDocument, default, visible</it><it>com.sun.star.xforms.XMLFormDocument, default, visible</it><it>com.sun.star.sdb.FormDesign, default, visible</it><it>com.sun.star.sdb.TextReportDesign, default, visible</it></value></prop></item> +<item oor:path="/org.openoffice.Office.UI.Sidebar/Content/DeckList/org.openoffice.Office.UI.Sidebar:Deck['WriterPageDeck']"><prop oor:name="ContextList" oor:op="fuse"><value><it>com.sun.star.text.TextDocument, any, visible</it><it>com.sun.star.text.GlobalDocument, any, visible</it><it>com.sun.star.text.WebDocument, any, visible</it><it>com.sun.star.xforms.XMLFormDocument, any, visible</it><it>com.sun.star.sdb.FormDesign, any, visible</it><it>com.sun.star.sdb.TextReportDesign, any, visible</it></value></prop></item> +<item oor:path="/org.openoffice.Office.UI.Sidebar/Content"><prop oor:name="LastActiveDeck" oor:op="fuse"><value><it>any,PropertyDeck</it><it>com.sun.star.formula.FormulaProperties,ElementsDeck</it><it>com.sun.star.sheet.SpreadsheetDocument,PropertyDeck</it><it>com.sun.star.text.TextDocument,PropertyDeck</it></value></prop></item> +<item oor:path="/org.openoffice.Office.UI.Sidebar/Content/PanelList/org.openoffice.Office.UI.Sidebar:Panel['ParaPropertyPanel']"><prop oor:name="ContextList" oor:op="fuse"><value><it>com.sun.star.sheet.SpreadsheetDocument, DrawText, visible, .uno:ParagraphDialog</it><it>com.sun.star.sheet.SpreadsheetDocument, DrawLine, hidden, .uno:ParagraphDialog</it><it>com.sun.star.drawing.DrawingDocument, DrawLine, hidden, .uno:ParagraphDialog</it><it>com.sun.star.presentation.PresentationDocument, DrawLine, hidden, .uno:ParagraphDialog</it><it>com.sun.star.drawing.DrawingDocument, 3DObject, hidden, .uno:ParagraphDialog</it><it>com.sun.star.presentation.PresentationDocument, 3DObject, hidden, .uno:ParagraphDialog</it><it>com.sun.star.drawing.DrawingDocument, Draw, hidden, .uno:ParagraphDialog</it><it>com.sun.star.presentation.PresentationDocument, Draw, hidden, .uno:ParagraphDialog</it><it>com.sun.star.drawing.DrawingDocument, DrawFontwork, hidden, .uno:ParagraphDialog</it><it>com.sun.star.presentation.PresentationDocument, DrawFontwork, hidden, .uno:ParagraphDialog</it><it>com.sun.star.drawing.DrawingDocument, DrawText, visible, .uno:ParagraphDialog</it><it>com.sun.star.presentation.PresentationDocument, DrawText, visible, .uno:ParagraphDialog</it><it>com.sun.star.drawing.DrawingDocument, Graphic, hidden, .uno:ParagraphDialog</it><it>com.sun.star.presentation.PresentationDocument, Graphic, hidden, .uno:ParagraphDialog</it><it>com.sun.star.drawing.DrawingDocument, Table, visible, .uno:ParagraphDialog</it><it>com.sun.star.presentation.PresentationDocument, Table, visible, .uno:ParagraphDialog</it><it>com.sun.star.drawing.DrawingDocument, TextObject, visible, .uno:ParagraphDialog</it><it>com.sun.star.presentation.PresentationDocument, TextObject, visible, .uno:ParagraphDialog</it><it>com.sun.star.text.TextDocument, Annotation, visible, .uno:ParagraphDialog</it><it>com.sun.star.text.GlobalDocument, Annotation, visible, .uno:ParagraphDialog</it><it>com.sun.star.text.WebDocument, Annotation, visible, .uno:ParagraphDialog</it><it>com.sun.star.xforms.XMLFormDocument, Annotation, visible, .uno:ParagraphDialog</it><it>com.sun.star.sdb.FormDesign, Annotation, visible, .uno:ParagraphDialog</it><it>com.sun.star.sdb.TextReportDesign, Annotation, visible, .uno:ParagraphDialog</it><it>com.sun.star.text.TextDocument, DrawText, visible, .uno:ParagraphDialog</it><it>com.sun.star.text.GlobalDocument, DrawText, visible, .uno:ParagraphDialog</it><it>com.sun.star.text.WebDocument, DrawText, visible, .uno:ParagraphDialog</it><it>com.sun.star.xforms.XMLFormDocument, DrawText, visible, .uno:ParagraphDialog</it><it>com.sun.star.sdb.FormDesign, DrawText, visible, .uno:ParagraphDialog</it><it>com.sun.star.sdb.TextReportDesign, DrawText, visible, .uno:ParagraphDialog</it><it>com.sun.star.text.TextDocument, Table, visible, .uno:ParagraphDialog</it><it>com.sun.star.text.GlobalDocument, Table, visible, .uno:ParagraphDialog</it><it>com.sun.star.text.WebDocument, Table, visible, .uno:ParagraphDialog</it><it>com.sun.star.xforms.XMLFormDocument, Table, visible, .uno:ParagraphDialog</it><it>com.sun.star.sdb.FormDesign, Table, visible, .uno:ParagraphDialog</it><it>com.sun.star.sdb.TextReportDesign, Table, visible, .uno:ParagraphDialog</it><it>com.sun.star.text.TextDocument, Text, visible, .uno:ParagraphDialog</it><it>com.sun.star.text.GlobalDocument, Text, visible, .uno:ParagraphDialog</it><it>com.sun.star.text.WebDocument, Text, visible, .uno:ParagraphDialog</it><it>com.sun.star.xforms.XMLFormDocument, Text, visible, .uno:ParagraphDialog</it><it>com.sun.star.sdb.FormDesign, Text, visible, .uno:ParagraphDialog</it><it>com.sun.star.sdb.TextReportDesign, Text, visible, .uno:ParagraphDialog</it><it>com.sun.star.text.TextDocument, default, visible, .uno:ParagraphDialog</it><it>com.sun.star.text.GlobalDocument, default, visible, .uno:ParagraphDialog</it><it>com.sun.star.text.WebDocument, default, visible, .uno:ParagraphDialog</it><it>com.sun.star.xforms.XMLFormDocument, default, visible, .uno:ParagraphDialog</it><it>com.sun.star.sdb.FormDesign, default, visible, .uno:ParagraphDialog</it><it>com.sun.star.sdb.TextReportDesign, default, visible, .uno:ParagraphDialog</it></value></prop></item> +<item oor:path="/org.openoffice.Office.UI.Sidebar/Content/PanelList/org.openoffice.Office.UI.Sidebar:Panel['ScAlignmentPropertyPanel']"><prop oor:name="ContextList" oor:op="fuse"><value><it>com.sun.star.sheet.SpreadsheetDocument, Auditing, visible, .uno:Hyphenate</it><it>com.sun.star.sheet.SpreadsheetDocument, Cell, visible, .uno:Hyphenate</it><it>com.sun.star.sheet.SpreadsheetDocument, default, visible, .uno:Hyphenate</it><it>com.sun.star.sheet.SpreadsheetDocument, EditCell, visible, .uno:Hyphenate</it><it>com.sun.star.sheet.SpreadsheetDocument, Pivot, visible, .uno:Hyphenate</it><it>com.sun.star.sheet.SpreadsheetDocument, Sparkline, visible, .uno:Hyphenate</it></value></prop></item> +<item oor:path="/org.openoffice.Office.UI.Sidebar/Content/PanelList/org.openoffice.Office.UI.Sidebar:Panel['ScCellAppearancePropertyPanel']"><prop oor:name="ContextList" oor:op="fuse"><value><it>com.sun.star.sheet.SpreadsheetDocument, Auditing, visible, .uno:FormatCellDialog</it><it>com.sun.star.sheet.SpreadsheetDocument, Cell, visible, .uno:FormatCellDialog</it><it>com.sun.star.sheet.SpreadsheetDocument, EditCell, visible, .uno:FormatCellDialog</it><it>com.sun.star.sheet.SpreadsheetDocument, default, visible, .uno:FormatCellDialog</it><it>com.sun.star.sheet.SpreadsheetDocument, Pivot, visible, .uno:FormatCellDialog</it><it>com.sun.star.sheet.SpreadsheetDocument, Sparkline, visible, .uno:FormatCellDialog</it></value></prop></item> +<item oor:path="/org.openoffice.Office.UI.Sidebar/Content/PanelList/org.openoffice.Office.UI.Sidebar:Panel['ScNumberFormatPropertyPanel']"><prop oor:name="ContextList" oor:op="fuse"><value><it>com.sun.star.sheet.SpreadsheetDocument, Auditing, visible, .uno:FormatCellDialog</it><it>com.sun.star.sheet.SpreadsheetDocument, Cell, visible, .uno:FormatCellDialog</it><it>com.sun.star.sheet.SpreadsheetDocument, EditCell, visible, .uno:FormatCellDialog</it><it>com.sun.star.sheet.SpreadsheetDocument, default, visible, .uno:FormatCellDialog</it><it>com.sun.star.sheet.SpreadsheetDocument, Pivot, visible, .uno:FormatCellDialog</it><it>com.sun.star.sheet.SpreadsheetDocument, Sparkline, visible, .uno:FormatCellDialog</it></value></prop></item> +<item oor:path="/org.openoffice.Office.UI.Sidebar/Content/PanelList/org.openoffice.Office.UI.Sidebar:Panel['StylesPropertyPanel']"><prop oor:name="ContextList" oor:op="fuse"><value><it>com.sun.star.text.TextDocument, Annotation, visible, .uno:EditStyle</it><it>com.sun.star.text.GlobalDocument, Annotation, visible, .uno:EditStyle</it><it>com.sun.star.text.WebDocument, Annotation, visible, .uno:EditStyle</it><it>com.sun.star.xforms.XMLFormDocument, Annotation, visible, .uno:EditStyle</it><it>com.sun.star.sdb.FormDesign, Annotation, visible, .uno:EditStyle</it><it>com.sun.star.sdb.TextReportDesign, Annotation, visible, .uno:EditStyle</it><it>com.sun.star.text.TextDocument, DrawText, visible, .uno:EditStyle</it><it>com.sun.star.text.GlobalDocument, DrawText, visible, .uno:EditStyle</it><it>com.sun.star.text.WebDocument, DrawText, visible, .uno:EditStyle</it><it>com.sun.star.xforms.XMLFormDocument, DrawText, visible, .uno:EditStyle</it><it>com.sun.star.sdb.FormDesign, DrawText, visible, .uno:EditStyle</it><it>com.sun.star.sdb.TextReportDesign, DrawText, visible, .uno:EditStyle</it><it>com.sun.star.text.TextDocument, Table, visible, .uno:EditStyle</it><it>com.sun.star.text.GlobalDocument, Table, visible, .uno:EditStyle</it><it>com.sun.star.text.WebDocument, Table, visible, .uno:EditStyle</it><it>com.sun.star.xforms.XMLFormDocument, Table, visible, .uno:EditStyle</it><it>com.sun.star.sdb.FormDesign, Table, visible, .uno:EditStyle</it><it>com.sun.star.sdb.TextReportDesign, Table, visible, .uno:EditStyle</it><it>com.sun.star.text.TextDocument, Text, visible, .uno:EditStyle</it><it>com.sun.star.text.GlobalDocument, Text, visible, .uno:EditStyle</it><it>com.sun.star.text.WebDocument, Text, visible, .uno:EditStyle</it><it>com.sun.star.xforms.XMLFormDocument, Text, visible, .uno:EditStyle</it><it>com.sun.star.sdb.FormDesign, Text, visible, .uno:EditStyle</it><it>com.sun.star.sdb.TextReportDesign, Text, visible, .uno:EditStyle</it><it>com.sun.star.text.TextDocument, default, visible, .uno:EditStyle</it><it>com.sun.star.text.GlobalDocument, default, visible, .uno:EditStyle</it><it>com.sun.star.text.WebDocument, default, visible, .uno:EditStyle</it><it>com.sun.star.xforms.XMLFormDocument, default, visible, .uno:EditStyle</it><it>com.sun.star.sdb.FormDesign, default, visible, .uno:EditStyle</it><it>com.sun.star.sdb.TextReportDesign, default, visible, .uno:EditStyle</it><it>com.sun.star.sheet.SpreadsheetDocument, Auditing, visible, .uno:EditStyle</it><it>com.sun.star.sheet.SpreadsheetDocument, Cell, visible, .uno:EditStyle</it><it>com.sun.star.sheet.SpreadsheetDocument, default, visible, .uno:EditStyle</it><it>com.sun.star.sheet.SpreadsheetDocument, EditCell, visible, .uno:EditStyle</it><it>com.sun.star.sheet.SpreadsheetDocument, Pivot, visible, .uno:EditStyle</it><it>com.sun.star.sheet.SpreadsheetDocument, Sparkline, visible, .uno:EditStyle</it></value></prop></item> +<item oor:path="/org.openoffice.Office.UI.Sidebar/Content/PanelList/org.openoffice.Office.UI.Sidebar:Panel['TextPropertyPanel']"><prop oor:name="ContextList" oor:op="fuse"><value><it>com.sun.star.sheet.SpreadsheetDocument, Auditing, visible, .uno:CellTextDlg</it><it>com.sun.star.sheet.SpreadsheetDocument, Cell, visible, .uno:CellTextDlg</it><it>com.sun.star.sheet.SpreadsheetDocument, default, visible, .uno:CellTextDlg</it><it>com.sun.star.sheet.SpreadsheetDocument, DrawText, visible, .uno:FontDialog</it><it>com.sun.star.sheet.SpreadsheetDocument, DrawLine, hidden, .uno:FontDialog</it><it>com.sun.star.sheet.SpreadsheetDocument, EditCell, visible, .uno:FontDialog</it><it>com.sun.star.sheet.SpreadsheetDocument, Pivot, visible, .uno:CellTextDlg</it><it>com.sun.star.sheet.SpreadsheetDocument, Sparkline, visible, .uno:FontDialog</it><it>com.sun.star.drawing.DrawingDocument, Draw, hidden, .uno:FontDialog</it><it>com.sun.star.presentation.PresentationDocument, Draw, hidden, .uno:FontDialog</it><it>com.sun.star.drawing.DrawingDocument, DrawFontwork, hidden, .uno:FontDialog</it><it>com.sun.star.presentation.PresentationDocument, DrawFontwork, hidden, .uno:FontDialog</it><it>com.sun.star.drawing.DrawingDocument, DrawText, visible, .uno:FontDialog</it><it>com.sun.star.presentation.PresentationDocument, DrawText, visible, .uno:FontDialog</it><it>com.sun.star.drawing.DrawingDocument, DrawLine, hidden, .uno:FontDialog</it><it>com.sun.star.presentation.PresentationDocument, DrawLine, hidden, .uno:FontDialog</it><it>com.sun.star.drawing.DrawingDocument, Graphic, hidden, .uno:FontDialog</it><it>com.sun.star.presentation.PresentationDocument, Graphic, hidden, .uno:FontDialog</it><it>com.sun.star.drawing.DrawingDocument, OutlineText, visible, .uno:FontDialog</it><it>com.sun.star.presentation.PresentationDocument, OutlineText, visible, .uno:FontDialog</it><it>com.sun.star.drawing.DrawingDocument, Table, visible, .uno:FontDialog</it><it>com.sun.star.presentation.PresentationDocument, Table, visible, .uno:FontDialog</it><it>com.sun.star.drawing.DrawingDocument, TextObject, visible, .uno:FontDialog</it><it>com.sun.star.presentation.PresentationDocument, TextObject, visible, .uno:FontDialog</it><it>com.sun.star.text.TextDocument, Annotation, visible, .uno:FontDialog</it><it>com.sun.star.text.GlobalDocument, Annotation, visible, .uno:FontDialog</it><it>com.sun.star.text.WebDocument, Annotation, visible, .uno:FontDialog</it><it>com.sun.star.xforms.XMLFormDocument, Annotation, visible, .uno:FontDialog</it><it>com.sun.star.sdb.FormDesign, Annotation, visible, .uno:FontDialog</it><it>com.sun.star.sdb.TextReportDesign, Annotation, visible, .uno:FontDialog</it><it>com.sun.star.text.TextDocument, DrawText, visible, .uno:FontDialog</it><it>com.sun.star.text.GlobalDocument, DrawText, visible, .uno:FontDialog</it><it>com.sun.star.text.WebDocument, DrawText, visible, .uno:FontDialog</it><it>com.sun.star.xforms.XMLFormDocument, DrawText, visible, .uno:FontDialog</it><it>com.sun.star.sdb.FormDesign, DrawText, visible, .uno:FontDialog</it><it>com.sun.star.sdb.TextReportDesign, DrawText, visible, .uno:FontDialog</it><it>com.sun.star.text.TextDocument, Table, visible, .uno:FontDialog</it><it>com.sun.star.text.GlobalDocument, Table, visible, .uno:FontDialog</it><it>com.sun.star.text.WebDocument, Table, visible, .uno:FontDialog</it><it>com.sun.star.xforms.XMLFormDocument, Table, visible, .uno:FontDialog</it><it>com.sun.star.sdb.FormDesign, Table, visible, .uno:FontDialog</it><it>com.sun.star.sdb.TextReportDesign, Table, visible, .uno:FontDialog</it><it>com.sun.star.text.TextDocument, Text, visible, .uno:FontDialog</it><it>com.sun.star.text.GlobalDocument, Text, visible, .uno:FontDialog</it><it>com.sun.star.text.WebDocument, Text, visible, .uno:FontDialog</it><it>com.sun.star.xforms.XMLFormDocument, Text, visible, .uno:FontDialog</it><it>com.sun.star.sdb.FormDesign, Text, visible, .uno:FontDialog</it><it>com.sun.star.sdb.TextReportDesign, Text, visible, .uno:FontDialog</it><it>com.sun.star.text.TextDocument, default, visible, .uno:FontDialog</it><it>com.sun.star.text.GlobalDocument, default, visible, .uno:FontDialog</it><it>com.sun.star.text.WebDocument, default, visible, .uno:FontDialog</it><it>com.sun.star.xforms.XMLFormDocument, default, visible, .uno:FontDialog</it><it>com.sun.star.sdb.FormDesign, default, visible, .uno:FontDialog</it><it>com.sun.star.sdb.TextReportDesign, default, visible, .uno:FontDialog</it></value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="ContextActive" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="ContextSensitive" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="DockPos" oor:op="fuse"><value>0,0</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="Docked" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="DockingArea" oor:op="fuse"><value>0</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="HideFromToolbarMenu" oor:op="fuse"><value>false</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="Locked" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="NoClose" oor:op="fuse"><value>false</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="Pos" oor:op="fuse"><value>2147483647,2147483647</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="Size" oor:op="fuse"><value>0,0</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="SoftClose" oor:op="fuse"><value>false</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="Style" oor:op="fuse"><value>0</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']/UIName"><value xml:lang="en-US">Standard</value></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/standardbar']"><prop oor:name="Visible" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/textobjectbar']"><prop oor:name="ContextActive" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/textobjectbar']"><prop oor:name="ContextSensitive" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/textobjectbar']"><prop oor:name="DockPos" oor:op="fuse"><value>0,1</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/textobjectbar']"><prop oor:name="Docked" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/textobjectbar']"><prop oor:name="DockingArea" oor:op="fuse"><value>0</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/textobjectbar']"><prop oor:name="HideFromToolbarMenu" oor:op="fuse"><value>false</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/textobjectbar']"><prop oor:name="Locked" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/textobjectbar']"><prop oor:name="NoClose" oor:op="fuse"><value>false</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/textobjectbar']"><prop oor:name="Pos" oor:op="fuse"><value>2147483647,2147483647</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/textobjectbar']"><prop oor:name="Size" oor:op="fuse"><value>0,0</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/textobjectbar']"><prop oor:name="SoftClose" oor:op="fuse"><value>false</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/textobjectbar']"><prop oor:name="Style" oor:op="fuse"><value>0</value></prop></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/textobjectbar']/UIName"><value xml:lang="en-US">Formatting</value></item> +<item oor:path="/org.openoffice.Office.UI.WriterWindowState/UIElements/States/org.openoffice.Office.UI.WindowState:WindowStateType['private:resource/toolbar/textobjectbar']"><prop oor:name="Visible" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Office.Views/Windows"><node oor:name="SplitWindow0" oor:op="replace"><prop oor:name="Visible" oor:op="fuse"><value xsi:nil="true"/></prop><node oor:name="UserData"><prop oor:name="UserItem" oor:op="fuse" oor:type="xs:string"><value>V1,2,0</value></prop></node><prop oor:name="WindowState" oor:op="fuse"><value xsi:nil="true"/></prop></node></item> +<item oor:path="/org.openoffice.Office.Views/Windows"><node oor:name="SplitWindow1" oor:op="replace"><prop oor:name="Visible" oor:op="fuse"><value xsi:nil="true"/></prop><node oor:name="UserData"><prop oor:name="UserItem" oor:op="fuse" oor:type="xs:string"><value>V1,2,0</value></prop></node><prop oor:name="WindowState" oor:op="fuse"><value xsi:nil="true"/></prop></node></item> +<item oor:path="/org.openoffice.Office.Views/Windows"><node oor:name="SplitWindow2" oor:op="replace"><prop oor:name="Visible" oor:op="fuse"><value xsi:nil="true"/></prop><node oor:name="UserData"><prop oor:name="UserItem" oor:op="fuse" oor:type="xs:string"><value>V1,2,1,0,10336</value></prop></node><prop oor:name="WindowState" oor:op="fuse"><value xsi:nil="true"/></prop></node></item> +<item oor:path="/org.openoffice.Office.Views/Windows"><node oor:name="SplitWindow3" oor:op="replace"><prop oor:name="Visible" oor:op="fuse"><value xsi:nil="true"/></prop><node oor:name="UserData"><prop oor:name="UserItem" oor:op="fuse" oor:type="xs:string"><value>V1,2,0</value></prop></node><prop oor:name="WindowState" oor:op="fuse"><value xsi:nil="true"/></prop></node></item> +<item oor:path="/org.openoffice.Office.Views/Windows/org.openoffice.Office.Views:WindowType['scalc/10336']/UserData"><prop oor:name="Data" oor:op="fuse" oor:type="xs:string"><value>V2,V,0,AL:(5,16,0/0/48/450,48;450)</value></prop></item> +<item oor:path="/org.openoffice.Office.Views/Windows/org.openoffice.Office.Views:WindowType['scalc/10336']"><prop oor:name="WindowState" oor:op="fuse"><value></value></prop></item> +<item oor:path="/org.openoffice.Office.Views/Windows"><node oor:name="scalc/10365" oor:op="replace"><prop oor:name="Visible" oor:op="fuse"><value xsi:nil="true"/></prop><node oor:name="UserData"><prop oor:name="Data" oor:op="fuse" oor:type="xs:string"><value>V2,V,128</value></prop></node><prop oor:name="WindowState" oor:op="fuse"><value></value></prop></node></item> +<item oor:path="/org.openoffice.Office.Views/Windows"><node oor:name="scalc/26100" oor:op="replace"><prop oor:name="Visible" oor:op="fuse"><value xsi:nil="true"/></prop><node oor:name="UserData"><prop oor:name="Data" oor:op="fuse" oor:type="xs:string"><value>V2,V,20</value></prop></node><prop oor:name="WindowState" oor:op="fuse"><value></value></prop></node></item> +<item oor:path="/org.openoffice.Office.Views/Windows/org.openoffice.Office.Views:WindowType['swriter/10336']/UserData"><prop oor:name="Data" oor:op="fuse" oor:type="xs:string"><value>V2,V,0,AL:(5,16,0/0/49/450,49;450)</value></prop></item> +<item oor:path="/org.openoffice.Office.Views/Windows/org.openoffice.Office.Views:WindowType['swriter/10336']"><prop oor:name="WindowState" oor:op="fuse"><value></value></prop></item> +<item oor:path="/org.openoffice.Office.Views/Windows"><node oor:name="swriter/10365" oor:op="replace"><prop oor:name="Visible" oor:op="fuse"><value xsi:nil="true"/></prop><node oor:name="UserData"><prop oor:name="Data" oor:op="fuse" oor:type="xs:string"><value>V2,V,128</value></prop></node><prop oor:name="WindowState" oor:op="fuse"><value></value></prop></node></item> +<item oor:path="/org.openoffice.Office.Writer/FmtAidsAutocomplete"><prop oor:name="EncloseWithCharacters" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Setup/L10N"><prop oor:name="ooLocale" oor:op="fuse"><value>en-US</value></prop></item> +<item oor:path="/org.openoffice.Setup/Office/Factories/org.openoffice.Setup:Factory['com.sun.star.sheet.SpreadsheetDocument']"><prop oor:name="ooSetupFactoryWindowAttributes" oor:op="fuse"><value>0,0,944,1140;5;0,0,1899,1140;</value></prop></item> +<item oor:path="/org.openoffice.Setup/Office/Factories/org.openoffice.Setup:Factory['com.sun.star.text.TextDocument']"><prop oor:name="ooSetupFactoryWindowAttributes" oor:op="fuse"><value>57,50,1806,1101;5;0,32,1921,1169;</value></prop></item> +<item oor:path="/org.openoffice.Setup/Office"><prop oor:name="LastCompatibilityCheckID" oor:op="fuse"><value>480(Build:2)</value></prop></item> +<item oor:path="/org.openoffice.Setup/Office"><prop oor:name="OfficeRestartInProgress" oor:op="fuse"><value>false</value></prop></item> +<item oor:path="/org.openoffice.Setup/Office"><prop oor:name="ooSetupInstCompleted" oor:op="fuse"><value>true</value></prop></item> +<item oor:path="/org.openoffice.Setup/Product"><prop oor:name="LastTimeDonateShown" oor:op="fuse"><value>1755219638</value></prop></item> +<item oor:path="/org.openoffice.Setup/Product"><prop oor:name="LastTimeGetInvolvedShown" oor:op="fuse"><value>1755219638</value></prop></item> +<item oor:path="/org.openoffice.Setup/Product"><prop oor:name="ooSetupLastVersion" oor:op="fuse"><value>24.8</value></prop></item> +</oor:items> 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 @@ +<?xml version="1.0"?> +<conf:configuration-backend-db xmlns:conf="http://openoffice.org/extensionmanager/configuration-registry/2010"/> 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 @@ +<?xml version="1.0"?> +<help:help-backend-db xmlns:help="http://openoffice.org/extensionmanager/help-registry/2010"/> 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<DesktopEntry> 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<DesktopEntry> 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<preparedSearch.spaceSearches.length; i++) keysSpacesBestScores[i] = NEGATIVE_INFINITY + + for (var keyI = 0; keyI < keysLen; ++keyI) { + target = tmpTargets[keyI] + if(target === noTarget) { tmpResults[keyI] = noTarget; continue } + + tmpResults[keyI] = algorithm(preparedSearch, target, /*allowSpaces=*/false, /*allowPartialMatch=*/containsSpace) + if(tmpResults[keyI] === NULL) { tmpResults[keyI] = noTarget; continue } + + // todo: this seems weird and wrong. like what if our first match wasn't good. this should just replace it instead of averaging with it + // if our second match isn't good we ignore it instead of averaging with it + if(containsSpace) for(let i=0; i<preparedSearch.spaceSearches.length; i++) { + if(allowPartialMatchScores[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<preparedSearch.spaceSearches.length; i++) { if(keysSpacesBestScores[i] === NEGATIVE_INFINITY) continue outer } + } else { + var hasAtLeast1Match = false + for(let i=0; i < keysLen; i++) { if(tmpResults[i]._score !== NEGATIVE_INFINITY) { hasAtLeast1Match = true; break } } + if(!hasAtLeast1Match) continue + } + + var objResults = new KeysResult(keysLen) + for(let i=0; i < keysLen; i++) { objResults[i] = tmpResults[i] } + + if(containsSpace) { + var score = 0 + for(let i=0; i<preparedSearch.spaceSearches.length; i++) score += keysSpacesBestScores[i] + } else { + // todo could rewrite this scoring to be more similar to when there's spaces + // if we match multiple keys give us bonus points + var score = NEGATIVE_INFINITY + for(let i=0; i<keysLen; i++) { + var result = objResults[i] + if(result._score > -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='<b>', close='</b>') => { + 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<searches.length; i++) { + if(searches[i] === '') continue + var _info = prepareLowerInfo(searches[i]) + spaceSearches.push({lowerCodes:_info.lowerCodes, _lower:searches[i].toLowerCase(), containsSpace:false}) + } + } + + return {lowerCodes: info.lowerCodes, _lower: info._lower, containsSpace: info.containsSpace, bitflags: info.bitflags, spaceSearches: spaceSearches} +} + + + +var getPrepared = (target) => { + 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<targets.length;i++) { var obj = targets[i] + var target = getValue(obj, options.key) + if(target == NULL) continue + if(!isPrepared(target)) target = getPrepared(target) + var result = new_result(target.target, {_score: target._score, obj: obj}) + results.push(result); if(results.length >= limit) return results + } + } else if(options?.keys) { + for(var i=0;i<targets.length;i++) { var obj = targets[i] + var objResults = new KeysResult(options.keys.length) + for (var keyI = options.keys.length - 1; keyI >= 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<targets.length;i++) { var target = targets[i] + if(target == NULL) continue + if(!isPrepared(target)) target = getPrepared(target) + target._score = NEGATIVE_INFINITY + target._indexes.len = 0 + results.push(target); if(results.length >= 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<nextBeginningIndexes.length; i=nextBeginningIndexes[i]) { + if(i <= substringIndex) continue + + for(var s=0; s<searchLen; s++) if(searchLowerCodes[s] !== prepared._targetLowerCodes[i+s]) break + if(s === searchLen) { substringIndex = i; isSubstringBeginning = true; break } + } + } + + // tally up the score & keep track of matches for highlighting later + // if it's a simple match, we'll switch to a substring match if a substring exists + // if it's a strict match, we'll switch to a substring match only if that's a better score + + var calculateScore = matches => { + 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<searchLen; ++i) matchesSimple[i] = substringIndex+i // at this point it's safe to overwrite matchehsSimple with substr matches + var matchesBest = matchesSimple + var score = calculateScore(matchesBest) + } else { + if(isSubstringBeginning) { + for(var i=0; i<searchLen; ++i) matchesSimple[i] = substringIndex+i // at this point it's safe to overwrite matchehsSimple with substr matches + var matchesBest = matchesSimple + var score = calculateScore(matchesSimple) + } else { + var matchesBest = matchesStrict + var score = calculateScore(matchesStrict) + } + } + + prepared._score = score + + for(var i = 0; i < searchLen; ++i) prepared._indexes[i] = matchesBest[i] + prepared._indexes.len = searchLen + + const result = new Result() + result.target = prepared.target + result._score = prepared._score + result._indexes = prepared._indexes + return result +} +var algorithmSpaces = (preparedSearch, target, allowPartialMatch) => { + 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<searchesLen; ++i) { + allowPartialMatchScores[i] = NEGATIVE_INFINITY + var search = searches[i] + + result = algorithm(search, target) + if(allowPartialMatch) { + if(result === NULL) continue + hasAtLeast1Match = true + } else { + if(result === NULL) {resetNextBeginningIndexes(); return NULL} + } + + // if not the last search, we need to mutate _nextBeginningIndexes for the next search + var isTheLastSearch = i === searchesLen - 1 + if(!isTheLastSearch) { + var indexes = result._indexes + + var indexesIsConsecutiveSubstring = true + for(let i=0; i<indexes.len-1; i++) { + if(indexes[i+1] - indexes[i] !== 1) { + indexesIsConsecutiveSubstring = false; break; + } + } + + if(indexesIsConsecutiveSubstring) { + var newBeginningIndex = indexes[indexes.len-1] + 1 + var toReplace = target._nextBeginningIndexes[newBeginningIndex-1] + for(let i=newBeginningIndex-1; 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<result._indexes.len; ++j) seen_indexes.add(result._indexes[j]) + } + + if(allowPartialMatch && !hasAtLeast1Match) return NULL + + resetNextBeginningIndexes() + + // allows a search with spaces that's an exact substring to score well + var allowSpacesResult = algorithm(preparedSearch, target, /*allowSpaces=*/true) + if(allowSpacesResult !== NULL && allowSpacesResult._score > score) { + if(allowPartialMatch) { + for(var i=0; i<searchesLen; ++i) { + allowPartialMatchScores[i] = allowSpacesResult._score / searchesLen + } + } + return allowSpacesResult + } + + if(allowPartialMatch) result = target + result._score = score + + var i = 0 + for (let index of seen_indexes) result._indexes[i++] = index + result._indexes.len = i + + return result +} + +// we use this instead of just .normalize('NFD').replace(/[\u0300-\u036f]/g, '') because that screws with japanese characters +var remove_accents = (str) => 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<<bit + } + + return {lowerCodes:lowerCodes, bitflags:bitflags, containsSpace:containsSpace, _lower:lower} +} +var prepareBeginningIndexes = (target) => { + 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<o;){var s=c+1;a=c,s<o&&e[s]._score<e[c]._score&&(a=s),e[a-1>>1]=e[a],c=1+(a<<1)}for(var f=a-1>>1;a>0&&v._score<e[f]._score;f=(a=f)-1>>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<e[v]._score;v=(a=v)-1>>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