diff options
67 files changed, 6472 insertions, 453 deletions
diff --git a/dotfiles/.config/DankMaterialShell/.changelog-1.4 b/dotfiles/.config/DankMaterialShell/.changelog-1.4 new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/dotfiles/.config/DankMaterialShell/.changelog-1.4 diff --git a/dotfiles/.config/DankMaterialShell/.firstlaunch b/dotfiles/.config/DankMaterialShell/.firstlaunch new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/dotfiles/.config/DankMaterialShell/.firstlaunch diff --git a/dotfiles/.config/DankMaterialShell/firefox.css b/dotfiles/.config/DankMaterialShell/firefox.css new file mode 100644 index 0000000..a8efeae --- /dev/null +++ b/dotfiles/.config/DankMaterialShell/firefox.css @@ -0,0 +1,132 @@ +@media -moz-pref("userChrome.theme-material") { + :root { + --md-sys-color-primary: #006877; + --md-sys-color-surface-tint: #006877; + --md-sys-color-on-primary: #ffffff; + --md-sys-color-primary-container: #a3eeff; + --md-sys-color-on-primary-container: #001f25; + --md-sys-color-secondary: #4a6268; + --md-sys-color-on-secondary: #ffffff; + --md-sys-color-secondary-container: #cde7ed; + --md-sys-color-on-secondary-container: #051f24; + --md-sys-color-tertiary: #545d7e; + --md-sys-color-on-tertiary: #ffffff; + --md-sys-color-tertiary-container: #dce1ff; + --md-sys-color-on-tertiary-container: #111a37; + --md-sys-color-error: #ba1a1a; + --md-sys-color-on-error: #ffffff; + --md-sys-color-error-container: #ffdad6; + --md-sys-color-on-error-container: #410002; + --md-sys-color-background: #f9f9f9; + --md-sys-color-on-background: #1b1b1b; + --md-sys-color-surface: #f9f9f9; + --md-sys-color-on-surface: #1b1b1b; + --md-sys-color-surface-variant: #e2e2e2; + --md-sys-color-on-surface-variant: #474747; + --md-sys-color-outline: #777777; + --md-sys-color-outline-variant: #c6c6c6; + --md-sys-color-shadow: #000000; + --md-sys-color-scrim: #000000; + --md-sys-color-inverse-surface: #303030; + --md-sys-color-inverse-on-surface: #f1f1f1; + --md-sys-color-inverse-primary: #52d7f0; + --md-sys-color-primary-fixed: #a3eeff; + --md-sys-color-on-primary-fixed: #001f25; + --md-sys-color-primary-fixed-dim: #52d7f0; + --md-sys-color-on-primary-fixed-variant: #004e5a; + --md-sys-color-secondary-fixed: #cde7ed; + --md-sys-color-on-secondary-fixed: #051f24; + --md-sys-color-secondary-fixed-dim: #b2cbd1; + --md-sys-color-on-secondary-fixed-variant: #334a50; + --md-sys-color-tertiary-fixed: #dce1ff; + --md-sys-color-on-tertiary-fixed: #111a37; + --md-sys-color-tertiary-fixed-dim: #bcc5eb; + --md-sys-color-on-tertiary-fixed-variant: #3d4665; + --md-sys-color-surface-dim: #dadada; + --md-sys-color-surface-bright: #f9f9f9; + --md-sys-color-surface-container-lowest: #ffffff; + --md-sys-color-surface-container-low: #f3f3f3; + --md-sys-color-surface-container: #f9f9f9; + --md-sys-color-surface-container-high: #f9f9f9; + --md-sys-color-surface-container-highest: #f9f9f9; + + --m3-radius: 12px; + --m3-radius-sm: 10px; + --m3-elev-0: none; + --m3-elev-1: 0 1px 2px rgba(0,0,0,.08), 0 1px 3px rgba(0,0,0,.06); + --m3-elev-2: 0 2px 6px rgba(0,0,0,.10), 0 1px 3px rgba(0,0,0,.06); + + --tab-height: 34px; + --urlbar-height: 38px; + + --state-hover: color-mix(in srgb, var(--md-sys-color-on-surface) 8%, transparent); + --state-press: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent); + + --focus-ring: 0 0 0 2px color-mix(in srgb, var(--md-sys-color-primary) 70%, transparent); + } +} + +@media (prefers-color-scheme: dark) { + :root { + --md-sys-color-primary: #52d7f0; + --md-sys-color-surface-tint: #52d7f0; + --md-sys-color-on-primary: #00363e; + --md-sys-color-primary-container: #004e5a; + --md-sys-color-on-primary-container: #a3eeff; + --md-sys-color-secondary: #b2cbd1; + --md-sys-color-on-secondary: #1c3439; + --md-sys-color-secondary-container: #334a50; + --md-sys-color-on-secondary-container: #cde7ed; + --md-sys-color-tertiary: #bcc5eb; + --md-sys-color-on-tertiary: #262f4d; + --md-sys-color-tertiary-container: #3d4665; + --md-sys-color-on-tertiary-container: #dce1ff; + --md-sys-color-error: #ffb4ab; + --md-sys-color-on-error: #690005; + --md-sys-color-error-container: #93000a; + --md-sys-color-on-error-container: #ffdad6; + --md-sys-color-background: #131313; + --md-sys-color-on-background: #e2e2e2; + --md-sys-color-surface: #131313; + --md-sys-color-on-surface: #e2e2e2; + --md-sys-color-surface-variant: #474747; + --md-sys-color-on-surface-variant: #c6c6c6; + --md-sys-color-outline: #919191; + --md-sys-color-outline-variant: #474747; + --md-sys-color-shadow: #000000; + --md-sys-color-scrim: #000000; + --md-sys-color-inverse-surface: #e2e2e2; + --md-sys-color-inverse-on-surface: #303030; + --md-sys-color-inverse-primary: #006877; + --md-sys-color-primary-fixed: #a3eeff; + --md-sys-color-on-primary-fixed: #001f25; + --md-sys-color-primary-fixed-dim: #52d7f0; + --md-sys-color-on-primary-fixed-variant: #004e5a; + --md-sys-color-secondary-fixed: #cde7ed; + --md-sys-color-on-secondary-fixed: #051f24; + --md-sys-color-secondary-fixed-dim: #b2cbd1; + --md-sys-color-on-secondary-fixed-variant: #334a50; + --md-sys-color-tertiary-fixed: #dce1ff; + --md-sys-color-on-tertiary-fixed: #111a37; + --md-sys-color-tertiary-fixed-dim: #bcc5eb; + --md-sys-color-on-tertiary-fixed-variant: #3d4665; + --md-sys-color-surface-dim: #131313; + --md-sys-color-surface-bright: #393939; + --md-sys-color-surface-container-lowest: #0e0e0e; + --md-sys-color-surface-container-low: #1b1b1b; + --md-sys-color-surface-container: #1f1f1f; + --md-sys-color-surface-container-high: #2a2a2a; + --md-sys-color-surface-container-highest: #353535; + + --m3-elev-1: 0 1px 2px rgba(0,0,0,.50), 0 1px 3px rgba(0,0,0,.35); + --m3-elev-2: 0 4px 10px rgba(0,0,0,.55), 0 1px 3px rgba(0,0,0,.35); + + --state-hover: color-mix(in srgb, var(--md-sys-color-on-surface) 6%, transparent); + --state-press: color-mix(in srgb, var(--md-sys-color-on-surface) 10%, transparent); + } +} + +/* idk if this even works, but the suggestion in the material updated readme bricks symbols no matter how many fallbacks I add */ +:root { + font-family: system-ui, "Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !important; +} diff --git a/dotfiles/.config/DankMaterialShell/plugin_settings.json b/dotfiles/.config/DankMaterialShell/plugin_settings.json new file mode 100644 index 0000000..3e14a79 --- /dev/null +++ b/dotfiles/.config/DankMaterialShell/plugin_settings.json @@ -0,0 +1,22 @@ +{ + "powerUsagePlugin": { + "enabled": true, + "refreshInterval": 2, + "selectedPopout": "processList" + }, + "emojiLauncher": { + "enabled": true, + "recentEmojis": "ð" + }, + "calculator": { + "enabled": true, + "trigger": "=" + }, + "dankPomodoroTimer": { + "enabled": true, + "autoStartBreaks": true + }, + "usbManager": { + "enabled": false + } +}
\ No newline at end of file diff --git a/dotfiles/.config/DankMaterialShell/settings.json b/dotfiles/.config/DankMaterialShell/settings.json new file mode 100644 index 0000000..1f36cf5 --- /dev/null +++ b/dotfiles/.config/DankMaterialShell/settings.json @@ -0,0 +1,887 @@ +{ + "currentThemeName": "custom", + "currentThemeCategory": "custom", + "customThemeFile": "/home/yaroslav/.config/DankMaterialShell/themes/ultramar/theme.json", + "registryThemeVariants": { + "modus": { + "dark": { + "flavor": "vivendi", + "accent": "blue" + } + }, + "amoledBlack": { + "dark": { + "flavor": "black", + "accent": "white" + } + }, + "bru": { + "dark": { + "flavor": "espresso", + "accent": "teal" + }, + "light": { + "flavor": "latte", + "accent": "teal" + } + }, + "ultramar": { + "dark": { + "flavor": "oscuro", + "accent": "turquesa" + }, + "light": { + "flavor": "claro", + "accent": "turquesa" + } + } + }, + "matugenScheme": "scheme-rainbow", + "matugenContrast": 0, + "runUserMatugenTemplates": true, + "matugenTargetMonitor": "", + "popupTransparency": 0.7, + "dockTransparency": 1, + "widgetBackgroundColor": "sth", + "widgetBackgroundCustomColor": "#6750A4", + "widgetBackgroundCustomStrength": 0.5, + "widgetColorMode": "default", + "controlCenterTileColorMode": "primary", + "buttonColorMode": "primaryContainer", + "cornerRadius": 6, + "niriLayoutGapsOverride": 6, + "niriLayoutRadiusOverride": 1, + "niriLayoutBorderSize": 3, + "hyprlandLayoutGapsOverride": -1, + "hyprlandLayoutGapsOutOverride": -1, + "hyprlandLayoutRadiusOverride": -1, + "hyprlandLayoutBorderSize": -1, + "hyprlandResizeOnBorder": false, + "mangoLayoutGapsOverride": -1, + "mangoLayoutGapsOutOverride": -1, + "mangoLayoutRadiusOverride": -1, + "mangoLayoutBorderSize": -1, + "mangoTrackpadNaturalScrolling": true, + "firstDayOfWeek": -1, + "showWeekNumber": false, + "calendarBackend": "auto", + "clockFormat": "24h", + "showSeconds": true, + "padHours12Hour": false, + "useFahrenheit": false, + "windSpeedUnit": "kmh", + "nightModeEnabled": false, + "animationSpeed": 4, + "customAnimationDuration": 148, + "syncComponentAnimationSpeeds": false, + "popoutAnimationSpeed": 4, + "popoutCustomAnimationDuration": 120, + "modalAnimationSpeed": 1, + "modalCustomAnimationDuration": 150, + "enableRippleEffects": true, + "animationVariant": 0, + "motionEffect": 1, + "m3ElevationEnabled": true, + "m3ElevationIntensity": 12, + "m3ElevationOpacity": 30, + "m3ElevationColorMode": "default", + "m3ElevationLightDirection": "top", + "m3ElevationCustomColor": "#000000", + "modalElevationEnabled": true, + "popoutElevationEnabled": true, + "barElevationEnabled": false, + "blurEnabled": true, + "blurForegroundLayers": true, + "blurLayerOutlineOpacity": 0.4, + "blurBorderEnabled": true, + "blurBorderColor": "outline", + "blurBorderCustomColor": "#ffffff", + "blurBorderOpacity": 0.6, + "wallpaperFillMode": "Fill", + "blurredWallpaperLayer": true, + "blurWallpaperOnOverview": false, + "wallpaperBackgroundColorMode": "black", + "wallpaperBackgroundCustomColor": "#000000", + "showLauncherButton": true, + "showWorkspaceSwitcher": true, + "showFocusedWindow": true, + "showWeather": true, + "showMusic": true, + "showClipboard": true, + "showCpuUsage": true, + "showMemUsage": true, + "showCpuTemp": true, + "showGpuTemp": true, + "selectedGpuIndex": 0, + "enabledGpuPciIds": [], + "showSystemTray": true, + "systemTrayIconTintMode": "none", + "systemTrayIconTintSaturation": 50, + "systemTrayIconTintStrength": 135, + "showClock": true, + "showNotificationButton": true, + "showBattery": true, + "showBatteryPercent": true, + "showBatteryPercentOnlyOnBattery": false, + "showBatteryTime": false, + "showBatteryTimeOnlyOnBattery": false, + "batteryPillStyle": false, + "batteryPillPercentSign": false, + "showControlCenterButton": true, + "showCapsLockIndicator": true, + "controlCenterShowNetworkIcon": true, + "controlCenterShowBluetoothIcon": true, + "controlCenterShowAudioIcon": true, + "controlCenterShowAudioPercent": false, + "controlCenterShowVpnIcon": true, + "controlCenterShowBrightnessIcon": false, + "controlCenterShowBrightnessPercent": false, + "controlCenterShowMicIcon": false, + "controlCenterShowMicPercent": true, + "controlCenterShowBatteryIcon": false, + "controlCenterShowPrinterIcon": false, + "controlCenterShowScreenSharingIcon": true, + "controlCenterShowIdleInhibitorIcon": false, + "controlCenterShowDoNotDisturbIcon": false, + "showPrivacyButton": true, + "privacyShowMicIcon": false, + "privacyShowCameraIcon": false, + "privacyShowScreenShareIcon": false, + "controlCenterWidgets": [ + { + "id": "volumeSlider", + "enabled": true, + "width": 50 + }, + { + "id": "brightnessSlider", + "enabled": true, + "width": 50 + }, + { + "id": "wifi", + "enabled": true, + "width": 50 + }, + { + "id": "builtin_vpn", + "enabled": true, + "width": 50 + }, + { + "id": "bluetooth", + "enabled": true, + "width": 50 + }, + { + "id": "nightMode", + "enabled": true, + "width": 25 + }, + { + "id": "darkMode", + "enabled": true, + "width": 25 + }, + { + "id": "audioOutput", + "enabled": true, + "width": 50 + }, + { + "id": "audioInput", + "enabled": true, + "width": 50 + }, + { + "id": "diskUsage", + "enabled": true, + "width": 50, + "instanceId": "morbslj4y4y10hed2bj", + "mountPath": "/" + }, + { + "id": "colorPicker", + "enabled": true, + "width": 50 + } + ], + "showWorkspaceIndex": true, + "showWorkspaceName": false, + "showWorkspacePadding": true, + "workspaceScrolling": false, + "showWorkspaceApps": false, + "workspaceDragReorder": true, + "maxWorkspaceIcons": 3, + "workspaceAppIconSizeOffset": 0, + "groupWorkspaceApps": true, + "groupActiveWorkspaceApps": false, + "workspaceFollowFocus": false, + "showOccupiedWorkspacesOnly": false, + "reverseScrolling": false, + "dwlShowAllTags": false, + "workspaceActiveAppHighlightEnabled": false, + "workspaceColorMode": "default", + "workspaceFocusedCustomColor": "#6750A4", + "workspaceOccupiedColorMode": "primaryContainer", + "workspaceOccupiedCustomColor": "#625B71", + "workspaceUnfocusedColorMode": "default", + "workspaceUnfocusedCustomColor": "#49454E", + "workspaceUrgentColorMode": "default", + "workspaceUrgentCustomColor": "#B3261E", + "workspaceFocusedBorderEnabled": false, + "workspaceFocusedBorderColor": "primary", + "workspaceFocusedBorderCustomColor": "#6750A4", + "workspaceFocusedBorderThickness": 2, + "workspaceUnfocusedMonitorSeparateAppearance": true, + "workspaceUnfocusedMonitorColorMode": "secondary", + "workspaceUnfocusedMonitorFocusedCustomColor": "#6750A4", + "workspaceUnfocusedMonitorOccupiedColorMode": "secondaryContainer", + "workspaceUnfocusedMonitorOccupiedCustomColor": "#625B71", + "workspaceUnfocusedMonitorUnfocusedColorMode": "default", + "workspaceUnfocusedMonitorUnfocusedCustomColor": "#49454E", + "workspaceUnfocusedMonitorUrgentColorMode": "default", + "workspaceUnfocusedMonitorUrgentCustomColor": "#B3261E", + "workspaceUnfocusedMonitorBorderEnabled": false, + "workspaceUnfocusedMonitorBorderColor": "primary", + "workspaceUnfocusedMonitorBorderCustomColor": "#6750A4", + "workspaceUnfocusedMonitorBorderThickness": 2, + "workspaceNameIcons": {}, + "waveProgressEnabled": false, + "scrollTitleEnabled": false, + "mediaAdaptiveWidthEnabled": true, + "audioVisualizerEnabled": true, + "mediaUseAlbumArtAccent": false, + "audioScrollMode": "volume", + "audioWheelScrollAmount": 2, + "audioDeviceScrollVolumeEnabled": false, + "mediaExcludePlayers": [], + "clockCompactMode": false, + "focusedWindowCompactMode": false, + "focusedWindowSize": 1, + "focusedWindowShowIcon": true, + "runningAppsCompactMode": true, + "barMaxVisibleApps": 0, + "barMaxVisibleRunningApps": 0, + "barShowOverflowBadge": true, + "trayAutoOverflow": true, + "trayPopupSingleLine": true, + "trayMaxVisibleItems": 0, + "appsDockHideIndicators": false, + "appsDockColorizeActive": false, + "appsDockActiveColorMode": "primary", + "appsDockEnlargeOnHover": false, + "appsDockEnlargePercentage": 125, + "appsDockIconSizePercentage": 100, + "keyboardLayoutNameCompactMode": false, + "keyboardLayoutNameShowIcon": false, + "runningAppsCurrentWorkspace": true, + "runningAppsGroupByApp": false, + "runningAppsCurrentMonitor": false, + "appIdSubstitutions": [], + "centeringMode": "index", + "clockDateFormat": "yyyy幎MMæddæ¥", + "lockDateFormat": "ddd d MMM yyyy", + "greeterRememberLastSession": true, + "greeterRememberLastUser": true, + "greeterAutoLogin": false, + "greeterEnableFprint": false, + "greeterEnableU2f": false, + "greeterWallpaperPath": "", + "greeterLockDateFormat": "", + "greeterFontFamily": "", + "greeterWallpaperFillMode": "", + "greeterPamExternallyManaged": false, + "greeterSyncPending": false, + "greeterSyncBaseline": {}, + "mediaSize": 1, + "appLauncherViewMode": "list", + "spotlightModalViewMode": "list", + "browserPickerViewMode": "grid", + "browserUsageHistory": {}, + "appPickerViewMode": "grid", + "filePickerUsageHistory": {}, + "sortAppsAlphabetically": false, + "appLauncherGridColumns": 4, + "spotlightCloseNiriOverview": true, + "rememberLastQuery": false, + "rememberLastMode": true, + "spotlightSectionViewModes": {}, + "appDrawerSectionViewModes": {}, + "niriOverviewOverlayEnabled": true, + "niriOverviewLauncherStyle": "full", + "dankLauncherV2Size": "medium", + "dankLauncherV2ShowSourceBadges": true, + "dankLauncherV2BorderEnabled": true, + "dankLauncherV2BorderThickness": 2, + "dankLauncherV2BorderColor": "outline", + "dankLauncherV2ShowFooter": true, + "dankLauncherV2UnloadOnClose": true, + "dankLauncherV2IncludeFilesInAll": false, + "dankLauncherV2IncludeFoldersInAll": false, + "launcherUseOverlayLayer": false, + "launcherStyle": "full", + "spotlightBarShowModeChips": false, + "keybindsFloatingWindow": false, + "useAutoLocation": false, + "weatherEnabled": true, + "dashTabs": [ + { + "id": "overview", + "enabled": true + }, + { + "id": "media", + "enabled": true + }, + { + "id": "wallpaper", + "enabled": true + }, + { + "id": "weather", + "enabled": true + }, + { + "id": "settings", + "enabled": true + } + ], + "networkPreference": "wifi", + "iconThemeDark": "breeze-dark", + "iconThemeLight": "breeze", + "iconThemePerMode": true, + "lastAppliedIconTheme": "breeze-dark", + "cursorSettings": { + "theme": "System Default", + "size": 24, + "niri": { + "hideWhenTyping": false, + "hideAfterInactiveMs": 0 + }, + "hyprland": { + "hideOnKeyPress": false, + "hideOnTouch": false, + "inactiveTimeout": 0 + }, + "dwl": { + "cursorHideTimeout": 0 + } + }, + "launcherLogoMode": "apps", + "launcherLogoCustomPath": "", + "launcherLogoColorOverride": "", + "launcherLogoColorInvertOnMode": false, + "launcherLogoBrightness": 0.5, + "launcherLogoContrast": 1, + "launcherLogoSizeOffset": 0, + "fontFamily": "Monospace", + "monoFontFamily": "Monospace", + "fontWeight": 600, + "fontScale": 1, + "textRenderType": 0, + "textRenderQuality": 0, + "notepadUseMonospace": true, + "notepadFontFamily": "", + "notepadFontSize": 14, + "notificationSummaryFontSize": 0, + "notificationBodyFontSize": 0, + "notepadShowLineNumbers": false, + "notepadAutoSave": false, + "notepadSlideoutSide": "right", + "notepadDefaultMode": "slideout", + "notepadTransparencyOverride": -1, + "notepadLastCustomTransparency": 0.7, + "notepadUseCompositorGap": false, + "notepadEdgeGap": 0, + "soundsEnabled": true, + "useSystemSoundTheme": true, + "soundLogin": false, + "soundNewNotification": true, + "soundVolumeChanged": false, + "soundPluggedIn": true, + "muteSoundsWhenMediaPlaying": true, + "acMonitorTimeout": 0, + "acLockTimeout": 0, + "acSuspendTimeout": 0, + "acSuspendBehavior": 0, + "acProfileName": "", + "acPostLockMonitorTimeout": 0, + "batteryMonitorTimeout": 0, + "batteryLockTimeout": 0, + "batterySuspendTimeout": 0, + "batterySuspendBehavior": 0, + "batteryProfileName": "", + "batteryPostLockMonitorTimeout": 0, + "batteryChargeLimit": 100, + "batteryNotifyChargeLimit": false, + "batteryCriticalThreshold": 10, + "batteryNotifyCritical": true, + "batteryLowThreshold": 20, + "batteryNotifyLow": false, + "batteryChargeLimitNotificationType": 0, + "batteryLowNotificationType": 0, + "batteryCriticalNotificationType": 1, + "batteryAutoPowerSaver": false, + "lockBeforeSuspend": true, + "loginctlLockIntegration": true, + "fadeToLockEnabled": true, + "fadeToLockGracePeriod": 5, + "fadeToDpmsEnabled": true, + "fadeToDpmsGracePeriod": 5, + "launchPrefix": "", + "brightnessDevicePins": {}, + "wifiNetworkPins": {}, + "bluetoothDevicePins": {}, + "audioInputDevicePins": {}, + "audioOutputDevicePins": {}, + "gtkThemingEnabled": false, + "qtThemingEnabled": false, + "syncModeWithPortal": true, + "terminalsAlwaysDark": false, + "muxType": "tmux", + "muxUseCustomCommand": false, + "muxCustomCommand": "", + "muxSessionFilter": "", + "runDmsMatugenTemplates": true, + "matugenTemplateGtk": true, + "matugenTemplateNiri": true, + "matugenTemplateHyprland": false, + "matugenTemplateMangowc": false, + "matugenTemplateQt5ct": true, + "matugenTemplateQt6ct": true, + "matugenTemplateFirefox": true, + "matugenTemplatePywalfox": false, + "matugenTemplateZenBrowser": false, + "matugenTemplateVesktop": false, + "matugenTemplateVencord": true, + "matugenTemplateEquibop": false, + "matugenTemplateGhostty": false, + "matugenTemplateKitty": true, + "matugenTemplateFoot": true, + "matugenTemplateAlacritty": true, + "matugenTemplateNeovim": false, + "matugenTemplateWezterm": false, + "matugenTemplateDgop": true, + "matugenTemplateKcolorscheme": true, + "matugenTemplateVscode": false, + "matugenTemplateEmacs": false, + "matugenTemplateZed": false, + "matugenTemplateNeovimSettings": { + "dark": { + "baseTheme": "github_dark", + "harmony": 0.5 + }, + "light": { + "baseTheme": "github_light", + "harmony": 0.5 + } + }, + "matugenTemplateNeovimSetBackground": true, + "showDock": false, + "dockAutoHide": false, + "dockSmartAutoHide": false, + "dockUseOverlayLayer": false, + "dockGroupByApp": true, + "dockRestoreSpecialWorkspaceOnClick": false, + "dockOpenOnOverview": true, + "dockPosition": 1, + "dockSpacing": 4, + "dockBottomGap": -70, + "dockMargin": 0, + "dockIconSize": 40, + "dockIndicatorStyle": "circle", + "dockBorderEnabled": true, + "dockBorderColor": "surfaceText", + "dockBorderOpacity": 1, + "dockBorderThickness": 1, + "dockIsolateDisplays": true, + "dockLauncherEnabled": true, + "dockLauncherLogoMode": "os", + "dockLauncherLogoCustomPath": "", + "dockLauncherLogoColorOverride": "primary", + "dockLauncherLogoSizeOffset": 0, + "dockLauncherLogoBrightness": 0.5, + "dockLauncherLogoContrast": 1, + "dockMaxVisibleApps": 0, + "dockMaxVisibleRunningApps": 0, + "dockShowOverflowBadge": true, + "dockShowTrash": false, + "dockTrashFileManager": "default", + "dockTrashCustomCommand": "", + "notificationOverlayEnabled": false, + "notificationPopupShadowEnabled": true, + "notificationPopupPrivacyMode": false, + "notificationForegroundLayers": true, + "modalDarkenBackground": true, + "lockScreenShowPowerActions": true, + "lockScreenShowSystemIcons": true, + "lockScreenShowTime": true, + "lockScreenShowDate": true, + "lockScreenShowProfileImage": true, + "lockScreenShowPasswordField": true, + "lockScreenShowMediaPlayer": true, + "lockScreenPowerOffMonitorsOnLock": false, + "lockAtStartup": false, + "enableFprint": false, + "maxFprintTries": 15, + "enableU2f": false, + "u2fMode": "or", + "lockPamPath": "", + "lockPamInlineFprint": false, + "lockPamInlineU2f": false, + "lockPamExternallyManaged": false, + "lockU2fPamPath": "", + "lockScreenInactiveColor": "#000000", + "lockScreenNotificationMode": 2, + "lockScreenVideoEnabled": false, + "lockScreenVideoPath": "", + "lockScreenVideoCycling": false, + "lockScreenWallpaperPath": "", + "lockScreenWallpaperFillMode": "", + "lockScreenFontFamily": "", + "hideBrightnessSlider": false, + "notificationTimeoutLow": 5000, + "notificationTimeoutNormal": 5000, + "notificationTimeoutCritical": 0, + "notificationCompactMode": true, + "notificationShowTimeoutBar": true, + "notificationDedupeEnabled": true, + "notificationPopupPosition": 0, + "notificationAnimationSpeed": 1, + "notificationCustomAnimationDuration": 400, + "notificationHistoryEnabled": true, + "notificationHistoryMaxCount": 50, + "notificationHistoryMaxAgeDays": 7, + "notificationHistorySaveLow": true, + "notificationHistorySaveNormal": true, + "notificationHistorySaveCritical": true, + "notificationRules": [], + "notificationFocusedMonitor": false, + "osdAlwaysShowValue": true, + "osdPosition": 6, + "osdVolumeEnabled": true, + "osdMediaVolumeEnabled": true, + "osdMediaPlaybackEnabled": false, + "osdBrightnessEnabled": true, + "osdIdleInhibitorEnabled": true, + "osdMicMuteEnabled": true, + "osdCapsLockEnabled": true, + "osdPowerProfileEnabled": true, + "osdAudioOutputEnabled": true, + "powerActionConfirm": true, + "powerActionHoldDuration": 0.25, + "powerMenuActions": [ + "reboot", + "logout", + "poweroff", + "lock", + "suspend", + "restart" + ], + "powerMenuDefaultAction": "logout", + "powerMenuGridLayout": true, + "customPowerActionLock": "", + "customPowerActionLogout": "", + "customPowerActionSuspend": "", + "customPowerActionHibernate": "", + "customPowerActionReboot": "", + "customPowerActionPowerOff": "", + "updaterHideWidget": false, + "updaterCheckOnStart": false, + "updaterUseCustomCommand": false, + "updaterCustomCommand": "", + "updaterTerminalAdditionalParams": "", + "updaterIntervalSeconds": 1800, + "updaterIncludeFlatpak": true, + "updaterAllowAUR": true, + "updaterIgnoredPackages": [], + "displayNameMode": "system", + "screenPreferences": {}, + "showOnLastDisplay": {}, + "niriOutputSettings": {}, + "hyprlandOutputSettings": {}, + "displayProfiles": {}, + "activeDisplayProfile": {}, + "displayProfileAutoSelect": false, + "displayShowDisconnected": false, + "displaySnapToEdge": true, + "connectedFrameBarStyleBackups": {}, + "barConfigs": [ + { + "id": "default", + "name": "Main Bar", + "enabled": true, + "position": 0, + "screenPreferences": [ + "all" + ], + "showOnLastDisplay": true, + "leftWidgets": [ + { + "id": "launcherButton", + "enabled": true + }, + { + "id": "separator", + "enabled": true + }, + { + "id": "clock", + "enabled": true + }, + { + "id": "weather", + "enabled": true + }, + { + "id": "separator", + "enabled": true + }, + { + "id": "workspaceSwitcher", + "enabled": true + }, + { + "id": "separator", + "enabled": true + }, + { + "id": "music", + "enabled": true, + "mediaSize": 3 + }, + { + "id": "controlCenterButton", + "enabled": true, + "showNetworkIcon": false, + "showBluetoothIcon": false, + "showAudioIcon": true, + "showAudioPercent": true, + "showVpnIcon": false, + "showBrightnessIcon": false, + "showBrightnessPercent": false, + "showMicIcon": false, + "showMicPercent": false, + "showBatteryIcon": false, + "showPrinterIcon": false, + "showScreenSharingIcon": false + } + ], + "centerWidgets": [], + "rightWidgets": [ + { + "id": "separator", + "enabled": true + }, + { + "id": "keyboard_layout_name", + "enabled": true, + "keyboardLayoutNameCompactMode": true + }, + { + "id": "separator", + "enabled": true + }, + { + "id": "cpuUsage", + "enabled": true, + "minimumWidth": false + }, + { + "id": "cpuTemp", + "enabled": true, + "minimumWidth": false + }, + { + "id": "memUsage", + "enabled": true, + "minimumWidth": false, + "showSwap": false + }, + { + "id": "separator", + "enabled": true + }, + { + "id": "notificationButton", + "enabled": true + }, + { + "id": "separator", + "enabled": true + }, + { + "id": "controlCenterButton", + "enabled": true, + "showAudioIcon": false, + "showAudioPercent": false, + "showBrightnessIcon": false, + "showBrightnessPercent": false, + "showMicPercent": false, + "showBatteryIcon": false, + "showScreenSharingIcon": true + }, + { + "id": "systemTray", + "enabled": true + } + ], + "spacing": 0, + "innerPadding": 2, + "bottomGap": 0, + "transparency": 0.89, + "widgetTransparency": 1, + "squareCorners": true, + "noBackground": false, + "maximizeWidgetIcons": false, + "maximizeWidgetText": false, + "removeWidgetPadding": false, + "widgetPadding": 4, + "gothCornersEnabled": false, + "gothCornerRadiusOverride": false, + "gothCornerRadiusValue": 12, + "borderEnabled": true, + "borderColor": "surfaceText", + "borderOpacity": 0.4, + "borderThickness": 1, + "widgetOutlineEnabled": false, + "widgetOutlineColor": "surfaceText", + "widgetOutlineOpacity": 0.4, + "widgetOutlineThickness": 1, + "fontScale": 1.1, + "iconScale": 1.15, + "autoHide": false, + "autoHideDelay": 250, + "showOnWindowsOpen": false, + "openOnOverview": true, + "visible": true, + "popupGapsAuto": true, + "popupGapsManual": 0, + "maximizeDetection": true, + "scrollEnabled": true, + "scrollXBehavior": "column", + "scrollYBehavior": "workspace", + "shadowIntensity": 0, + "shadowOpacity": 85, + "shadowColorMode": "custom", + "shadowCustomColor": "#000000", + "clickThrough": false + } + ], + "desktopClockEnabled": false, + "desktopClockStyle": "analog", + "desktopClockTransparency": 0.8, + "desktopClockColorMode": "primary", + "desktopClockCustomColor": { + "r": 1, + "g": 1, + "b": 1, + "a": 1, + "hsvHue": -1, + "hsvSaturation": 0, + "hsvValue": 1, + "hslHue": -1, + "hslSaturation": 0, + "hslLightness": 1, + "valid": true + }, + "desktopClockShowDate": true, + "desktopClockShowAnalogNumbers": false, + "desktopClockShowAnalogSeconds": true, + "desktopClockX": -1, + "desktopClockY": -1, + "desktopClockWidth": 280, + "desktopClockHeight": 180, + "desktopClockDisplayPreferences": [ + "all" + ], + "systemMonitorEnabled": false, + "systemMonitorShowHeader": true, + "systemMonitorTransparency": 0.8, + "systemMonitorColorMode": "primary", + "systemMonitorCustomColor": { + "r": 1, + "g": 1, + "b": 1, + "a": 1, + "hsvHue": -1, + "hsvSaturation": 0, + "hsvValue": 1, + "hslHue": -1, + "hslSaturation": 0, + "hslLightness": 1, + "valid": true + }, + "systemMonitorShowCpu": true, + "systemMonitorShowCpuGraph": true, + "systemMonitorShowCpuTemp": true, + "systemMonitorShowGpuTemp": false, + "systemMonitorGpuPciId": "", + "systemMonitorShowMemory": true, + "systemMonitorShowMemoryGraph": true, + "systemMonitorShowNetwork": true, + "systemMonitorShowNetworkGraph": true, + "systemMonitorShowDisk": true, + "systemMonitorShowTopProcesses": false, + "systemMonitorTopProcessCount": 3, + "systemMonitorTopProcessSortBy": "cpu", + "systemMonitorGraphInterval": 60, + "systemMonitorLayoutMode": "auto", + "systemMonitorX": -1, + "systemMonitorY": -1, + "systemMonitorWidth": 320, + "systemMonitorHeight": 480, + "systemMonitorDisplayPreferences": [ + "all" + ], + "systemMonitorVariants": [], + "desktopWidgetPositions": {}, + "desktopWidgetGridSettings": { + "HDMI-A-1": { + "enabled": true + } + }, + "desktopWidgetInstances": [], + "desktopWidgetGroups": [], + "builtInPluginSettings": { + "dms_settings_search": { + "trigger": "?" + } + }, + "clipboardClickToPaste": false, + "clipboardEnterToPaste": false, + "clipboardRememberTypeFilter": false, + "clipboardTypeFilter": "all", + "clipboardVisibleEntryActions": [ + "pin", + "edit", + "delete" + ], + "launcherPluginVisibility": { + "calculator": { + "allowWithoutTrigger": true + } + }, + "launcherPluginOrder": [], + "frameEnabled": false, + "frameThickness": 16, + "frameRounding": 23, + "frameColor": "", + "frameOpacity": 1, + "frameScreenPreferences": [ + "all" + ], + "frameBarSize": 40, + "frameShowOnOverview": false, + "frameBlurEnabled": true, + "frameCloseGaps": true, + "frameLauncherEmergeSide": "bottom", + "frameLauncherArcExtender": false, + "frameLauncherEdgeHover": false, + "frameMode": "connected", + "barInsetPaddingShared": -1, + "barInsetPaddingSyncAll": false, + "frameBarInsetPadding": -1, + "configVersion": 12 +}
\ No newline at end of file diff --git a/dotfiles/.config/DankMaterialShell/themes/ultramar/theme.json b/dotfiles/.config/DankMaterialShell/themes/ultramar/theme.json new file mode 100644 index 0000000..48388e0 --- /dev/null +++ b/dotfiles/.config/DankMaterialShell/themes/ultramar/theme.json @@ -0,0 +1,105 @@ +{ + "id": "ultramar", + "name": "Ultramar", + "version": "1.0.0", + "author": "yar", + "description": "Warm theme based on Bru", + "dark": { + "surfaceText": "#f5e8c7", + "surfaceVariantText": "#fbf3db", + "backgroundText": "#f5e8c7", + "outline": "#8a7f6f", + "error": "#fa5750", + "warning": "#ed8649", + "info": "#4695f7" + }, + "light": { + "surfaceText": "#3a2f22", + "surfaceVariantText": "#2d241a", + "backgroundText": "#3a2f22", + "outline": "#8a7f6f", + "error": "#d2212d", + "warning": "#c25d1e", + "info": "#0072d4" + }, + "variants": { + "type": "multi", + "defaults": { + "dark": { + "accent": "turquesa", + "flavor": "oscuro" + }, + "light": { + "accent": "turquesa", + "flavor": "claro" + } + }, + "flavors": [ + { + "id": "oscuro", + "name": "Oscuro", + "dark": { + "surface": "#26211c", + "surfaceVariant": "#322b23", + "background": "#1c1814", + "surfaceContainer": "#26211c", + "surfaceContainerHigh": "#322b23", + "surfaceContainerHighest": "#3a332b" + }, + "light": {} + }, + { + "id": "claro", + "name": "Claro", + "dark": {}, + "light": { + "surface": "#f3ead0", + "surfaceVariant": "#ece3cc", + "background": "#faf3e0", + "surfaceContainer": "#f3ead0", + "surfaceContainerHigh": "#ece3cc", + "surfaceContainerHighest": "#e0d4b0" + } + } + ], + "accents": [ + { + "id": "turquesa", + "oscuro": { + "primary": "#7fac96", + "primaryText": "#1c1814", + "primaryContainer": "#1f3630", + "secondary": "#e2b55a", + "surfaceTint": "#1f2924" + }, + "claro": { + "primary": "#5b8277", + "primaryText": "#faf3e0", + "primaryContainer": "#bbe0cf", + "secondary": "#b2872f", + "surfaceTint": "#fcf6da" + }, + "name": "Turquesa" + }, + { + "id": "verde", + "oscuro": { + "primary": "#92b078", + "primaryText": "#1c1814", + "primaryContainer": "#36481e", + "secondary": "#e2b55a", + "surfaceTint": "#242817" + }, + "claro": { + "primary": "#6d974b", + "primaryText": "#faf3e0", + "primaryContainer": "#dfe4be", + "secondary": "#b2872f", + "surfaceTint": "#dfe4be" + }, + "name": "Verde" + } + ] + }, + "sourceDir": "ultramar" +} diff --git a/dotfiles/.config/alacritty/alacritty.toml b/dotfiles/.config/alacritty/alacritty.toml index e21168c..a91ca9b 100644 --- a/dotfiles/.config/alacritty/alacritty.toml +++ b/dotfiles/.config/alacritty/alacritty.toml @@ -11,7 +11,7 @@ args = ["-i", "Oxygen-Sys-App-Message"] program = "canberra-gtk-play" [font] -size = 9.0 +size = 10.0 [scrolling] multiplier = 10 @@ -19,7 +19,7 @@ multiplier = 10 [window] blur = true dynamic_padding = true -opacity = 1 +opacity = 0.94 padding = { x = 2, y = 2 } [[hints.enabled]] diff --git a/dotfiles/.config/alacritty/ultramar-dark.toml b/dotfiles/.config/alacritty/ultramar-dark.toml index cd2ac69..37d46b0 100644 --- a/dotfiles/.config/alacritty/ultramar-dark.toml +++ b/dotfiles/.config/alacritty/ultramar-dark.toml @@ -1,5 +1,5 @@ [colors.primary] -background = "#151517" +background = "#0d0906" foreground = "#fcf8e2" [colors.bright] diff --git a/dotfiles/.config/alacritty/ultramar-light.toml b/dotfiles/.config/alacritty/ultramar-light.toml index b93e837..ffea003 100644 --- a/dotfiles/.config/alacritty/ultramar-light.toml +++ b/dotfiles/.config/alacritty/ultramar-light.toml @@ -1,5 +1,5 @@ [colors.primary] -background = "#faf6e5" +background = "#fcf6da" foreground = "#1b1e25" [colors.bright] diff --git a/dotfiles/.config/beets/config.yaml b/dotfiles/.config/beets/config.yaml index f6f2a28..bf0f03b 100644 --- a/dotfiles/.config/beets/config.yaml +++ b/dotfiles/.config/beets/config.yaml @@ -1,5 +1,5 @@ directory: "~/music" -plugins: convert fetchart embedart +plugins: musicbrainz convert fetchart embedart convert: auto: no never_convert_lossy_files: yes @@ -10,6 +10,11 @@ convert: ogg: ffmpeg -i $source -y -vn -acodec libvorbis -aq 6 $dest fetchart: maxwidth: 1200 + sources: + - coverart: releasegroup + - coverart: release + - filesystem + - '*' embedart: auto: yes maxwidth: 500 diff --git a/dotfiles/.config/calcurse/conf b/dotfiles/.config/calcurse/conf new file mode 100644 index 0000000..d1b5f1d --- /dev/null +++ b/dotfiles/.config/calcurse/conf @@ -0,0 +1,33 @@ +appearance.calendarview=monthly +appearance.compactpanels=no +appearance.defaultpanel=todo +appearance.layout=1 +appearance.headerline=yes +appearance.eventseparator=yes +appearance.dayseparator=yes +appearance.emptyline=yes +appearance.emptyday=-- +appearance.notifybar=yes +appearance.sidebarwidth=38 +appearance.theme=cyan on default +appearance.todoview=hide-completed +appearance.headingpos=right-justified +daemon.enable=no +daemon.log=no +format.inputdate=1 +format.notifydate=%a %F +format.notifytime=%T +format.appointmenttime=%H:%M +format.outputdate=%D +format.dayheading=%B %e, %Y +general.autogc=no +general.autosave=yes +general.confirmdelete=yes +general.confirmquit=yes +general.firstdayofweek=monday +general.multipledays=yes +general.periodicsave=0 +general.systemevents=yes +notification.command=printf '\a' +notification.notifyall=flagged-only +notification.warning=300 diff --git a/dotfiles/.config/calcurse/hooks/post-save b/dotfiles/.config/calcurse/hooks/post-save new file mode 100755 index 0000000..d797649 --- /dev/null +++ b/dotfiles/.config/calcurse/hooks/post-save @@ -0,0 +1,34 @@ +#!/bin/sh + +data_dir="$HOME/.calcurse" +config_dir="$HOME/.calcurse" + +if [ ! -d "$data_dir" ]; then + data_dir="${XDG_DATA_HOME:-$HOME/.local/share}/calcurse" + config_dir="${XDG_CONFIG_HOME:-$HOME/.config}/calcurse" +fi + +cd "$data_dir" || exit + +# Do not do anything when synchronizing with a CalDAV server. +[ -f caldav/lock ] && exit + +# Run the CalDAV synchronization script. +if [ -d caldav ] && command -v calcurse-caldav >/dev/null; then + ( + date="$(date +'%b %d %H:%M:%S')" + notify-send "ð
Calcurse" "Saving and syncing with caldav server..." + echo "$date Running calcurse-caldav from the post-save hook..." + timeout 60 calcurse-caldav + rc=$? + if [ $rc -eq 124 ]; then + notify-send "ð
Calcurse" "â Syncing timed out" + elif [ $rc -gt 0 ]; then + notify-send "ð
Calcurse" "â Syncing failed (see logs)" + else + notify-send "ð
Calcurse" "Calendar saved and synced" + fi + echo + rm caldav/lock + ) >>caldav/log 2>&1 +fi diff --git a/dotfiles/.config/calcurse/hooks/pre-load b/dotfiles/.config/calcurse/hooks/pre-load new file mode 100755 index 0000000..20787fe --- /dev/null +++ b/dotfiles/.config/calcurse/hooks/pre-load @@ -0,0 +1,28 @@ +#!/bin/sh + +[ -d "$HOME/.calcurse" ] && data_dir="$HOME/.calcurse" || data_dir="${XDG_DATA_HOME:-$HOME/.local/share}/calcurse" + +cd "$data_dir" || exit + +# Do not do anything when synchronizing with a CalDAV server. +[ -f caldav/lock ] && exit + +# Run the CalDAV synchronization script. +if [ -d caldav ] && command -v calcurse-caldav >/dev/null; then + ( + date="$(date +'%b %d %H:%M:%S')" + notify-send "ð
Calcurse" "Loading and syncing with caldav server..." + echo "$date Running calcurse-caldav from the pre-load hook..." + timeout 60 calcurse-caldav + rc=$? + if [ $rc -eq 124 ]; then + notify-send "ð
Calcurse" "â Syncing timed out" + elif [ $rc -gt 0 ]; then + notify-send "ð
Calcurse" "â Syncing failed (see logs)" + else + notify-send "ð
Calcurse" "Calendar synced" + fi + echo + rm caldav/lock + ) >>caldav/log 2>&1 +fi diff --git a/dotfiles/.config/calcurse/keys b/dotfiles/.config/calcurse/keys new file mode 100644 index 0000000..3304bbb --- /dev/null +++ b/dotfiles/.config/calcurse/keys @@ -0,0 +1,56 @@ +# +# Calcurse keys configuration file +# +# In this file the keybindings used by Calcurse are defined. +# It is generated automatically by Calcurse and is maintained +# via the key configuration menu of the interactive user +# interface. It should not be edited directly. + +generic-cancel ESC +generic-select SPC +generic-credits @ +generic-help ? +generic-quit q Q +generic-save s S ^S +generic-reload R +generic-copy c +generic-paste p ^V +generic-change-view TAB +generic-prev-view KEY_BTAB +generic-import i I +generic-export x X +generic-goto g G +generic-other-cmd o O +generic-config-menu C +generic-redraw ^R +generic-add-appt ^A +generic-add-todo ^T +generic-prev-day T ^H +generic-next-day t ^L +generic-prev-week W ^K +generic-next-week w +generic-prev-month M +generic-next-month m +generic-prev-year Y +generic-next-year y +generic-scroll-down ^N +generic-scroll-up ^P +generic-goto-today ^G +generic-command : +move-right l L RGT +move-left h H LFT +move-down j J DWN +move-up k K UP +start-of-week 0 +end-of-week $ +add-item a A +del-item d D +edit-item e E +view-item v V RET +pipe-item | +flag-item ! +repeat r +edit-note n N +view-note > +raise-priority + +lower-priority - diff --git a/dotfiles/.config/fontconfig/fonts.conf b/dotfiles/.config/fontconfig/fonts.conf index 144d7e5..d12f5c7 100644 --- a/dotfiles/.config/fontconfig/fonts.conf +++ b/dotfiles/.config/fontconfig/fonts.conf @@ -7,6 +7,7 @@ <family>IBM Plex Serif</family> <family>JetBrainsMono NF</family> <family>Noto Color Emoji</family> + <family>Sarasa UI J</family> </prefer> </alias> <alias> @@ -15,6 +16,7 @@ <family>IBM Plex Sans</family> <family>JetBrainsMono NF</family> <family>Noto Color Emoji</family> + <family>Sarasa UI J</family> </prefer> </alias> <alias> @@ -23,6 +25,7 @@ <family>IBM Plex Sans</family> <family>JetBrainsMono NF</family> <family>Noto Color Emoji</family> + <family>Sarasa UI J</family> </prefer> </alias> <alias> @@ -30,6 +33,7 @@ <prefer> <family>JetBrainsMono NF</family> <family>Noto Color Emoji</family> + <family>Sarasa Mono J</family> </prefer> </alias> </fontconfig> diff --git a/dotfiles/.config/lf/lfrc b/dotfiles/.config/lf/lfrc index 4069f05..72d39c7 100644 --- a/dotfiles/.config/lf/lfrc +++ b/dotfiles/.config/lf/lfrc @@ -149,7 +149,7 @@ map i push A<a-b><a-b><a-f> # rename before extention map a push A<a-b> # rename after extention map <c-n> push :mkdir<space> map <c-t> push :$touch<space> -map <c-r> reload +map r reload map <enter> shell map D delete map <enter> shell @@ -162,7 +162,7 @@ map Y :yank-path map L $LESSOPEN='| ~/.local/bin/scope %s' less -r $f # open file preview in pager map P hard_link map <a-p> soft_link -map r archive +map R archive # Mouse bindings map <m-3> :dragon diff --git a/dotfiles/.config/mimeapps.list b/dotfiles/.config/mimeapps.list index 374bff8..6f381a9 100644 --- a/dotfiles/.config/mimeapps.list +++ b/dotfiles/.config/mimeapps.list @@ -1,47 +1,54 @@ [Default Applications] -application/pdf=org.pwmt.zathura.desktop; -application/epub+zip=org.pwmt.zathura.desktop; -application/rdf+xml=org.qutebrowser.qutebrowser.desktop; -application/xhtml+xml=org.qutebrowser.qutebrowser.desktop; -application/xml=org.qutebrowser.qutebrowser.desktop; -application/x-mimearchive=org.qutebrowser.qutebrowser.desktop; -application/x-object=mpv.desktop; -application/octet-stream=mpv.desktop; -application/x-cue=mpv.desktop; -audio/mpeg=mpv.desktop; -audio/ogg=mpv.desktop; -audio/vnd.wave=mpv.desktop; -audio/x-dsf=mpv.desktop; -audio/x-it=mpv.desktop; -audio/x-mod=mpv.desktop; -audio/x-s3m=mpv.desktop; -audio/x-xm=mpv.desktop; -audio/flac=mpv.desktop; -image/apng=nsxiv.desktop; -image/bmp=nsxiv.desktop; -image/gif=nsxiv.desktop; -image/jpeg=nsxiv.desktop; -image/png=nsxiv.desktop; -image/webp=nsxiv.desktop; -image/heic=nsxiv.desktop; -image/heif=nsxiv.desktop; -image/svg+xml=org.inkscape.Inkscape.desktop -text/html=org.qutebrowser.qutebrowser.desktop; -text/xml=nvim.desktop; -text/plain=nvim.desktop; -text/csv=nvim.desktop; -video/webm=mpv.desktop; +application/epub+zip=org.pwmt.zathura.desktop +application/octet-stream=mpv.desktop +application/pdf=org.pwmt.zathura.desktop +application/rdf+xml=org.qutebrowser.qutebrowser.desktop application/wps-office.doc=libreoffice-writer.desktop -x-scheme-handler/discord-589393213723246592=discord-589393213723246592.desktop; -x-scheme-handler/http=org.qutebrowser.qutebrowser.desktop; -x-scheme-handler/https=org.qutebrowser.qutebrowser.desktop; -x-scheme-handler/qute=org.qutebrowser.qutebrowser.desktop; +application/x-cue=mpv.desktop +application/x-fictionbook+xml=org.pwmt.zathura.desktop +application/x-mimearchive=org.qutebrowser.qutebrowser.desktop +application/x-object=mpv.desktop +application/xhtml+xml=org.qutebrowser.qutebrowser.desktop +application/xml=org.qutebrowser.qutebrowser.desktop +audio/flac=mpv.desktop +audio/mpeg=mpv.desktop +audio/ogg=mpv.desktop +audio/vnd.wave=mpv.desktop +audio/x-dsf=mpv.desktop +audio/x-it=mpv.desktop +audio/x-mod=mpv.desktop +audio/x-s3m=mpv.desktop +audio/x-xm=mpv.desktop +image/apng=nsxiv.desktop +image/bmp=nsxiv.desktop +image/gif=nsxiv.desktop +image/heic=nsxiv.desktop +image/heif=nsxiv.desktop +image/jpeg=nsxiv.desktop +image/png=nsxiv.desktop +image/svg+xml=org.inkscape.Inkscape.desktop +image/webp=nsxiv.desktop +text/csv=nvim.desktop +text/html=firefox.desktop +text/plain=nvim.desktop +text/xml=nvim.desktop +video/webm=mpv.desktop +video/matroska=mpv.desktop x-scheme-handler/discord-455712169795780630=discord-455712169795780630.desktop +x-scheme-handler/discord-589393213723246592=discord-589393213723246592.desktop +x-scheme-handler/geo=openstreetmap-geo-handler.desktop +x-scheme-handler/http=firefox.desktop +x-scheme-handler/https=firefox.desktop x-scheme-handler/mailto=neomutt.desktop -x-scheme-handler/tg=org.telegram.desktop.desktop x-scheme-handler/msteams=teams.desktop +x-scheme-handler/qute=org.qutebrowser.qutebrowser.desktop +x-scheme-handler/tg=org.telegram.desktop.desktop x-scheme-handler/tonsite=org.telegram.desktop.desktop [Added Associations] +x-scheme-handler/geo=openstreetmap-geo-handler.desktop; x-scheme-handler/tg=userapp-Telegram Desktop-BLI1G1.desktop;org.telegram.desktop.desktop; x-scheme-handler/tonsite=org.telegram.desktop.desktop; + +[Removed Associations] + diff --git a/dotfiles/.config/mimeo/associations.txt b/dotfiles/.config/mimeo/associations.txt index f429a5d..ecfd9f7 100644 --- a/dotfiles/.config/mimeo/associations.txt +++ b/dotfiles/.config/mimeo/associations.txt @@ -1,12 +1,3 @@ -mpv -quiet %U >/dev/null 2>&1 - ^https?://(www.)?youtube.com/watch\?.*v= - ^https?://(www.)?youtube.com/shorts/ - ^https?://(music.)?youtube.com/watch\?.*v= - ^https?://youtu.be/ - ^https?://.*\.mkv - ^https?://.*\.webm - ^https?://.*\.mp4 - imgurl %U ^https?://.*\.png ^https?://.*\.jpg diff --git a/dotfiles/.config/mpv/input.conf b/dotfiles/.config/mpv/input.conf index 6e789ac..2798fee 100644 --- a/dotfiles/.config/mpv/input.conf +++ b/dotfiles/.config/mpv/input.conf @@ -205,6 +205,8 @@ k add volume 2 s cycle sub S cycle sub down +Ctrl+s cycle secondary-sid +Ctrl+S cycle secondary-sid down a cycle audio A cycle audio down diff --git a/dotfiles/.config/mpv/mpv.conf b/dotfiles/.config/mpv/mpv.conf index 136a5e6..c0d4e43 100644 --- a/dotfiles/.config/mpv/mpv.conf +++ b/dotfiles/.config/mpv/mpv.conf @@ -7,8 +7,10 @@ slang=en,eng,es,spa,ru,rus osd-font=monospace osd-msg3="${?core-idle==yes:ï}${?core-idle==no:ï} ${time-pos}/${duration} ${media-title}" input-ipc-server=/tmp/mpvsock +keep-open=yes sub-auto=fuzzy +sub-file-paths=sub:subs:subtitles ytdl-format="bestvideo[height<=1440]+bestaudio" diff --git a/dotfiles/.config/niri/config.kdl b/dotfiles/.config/niri/config.kdl index 469fd71..13d30c4 100644 --- a/dotfiles/.config/niri/config.kdl +++ b/dotfiles/.config/niri/config.kdl @@ -12,7 +12,7 @@ input { // You can set rules, model, layout, variant and options. // For more information, see xkeyboard-config(7). layout "us,es,ru" - options "lv3:ralt_switch,grp:alt_shift_toggle,misc:typo,caps:escape,grp_led:caps" + options "lv3:ralt_switch,grp:alt_space_toggle,misc:typo,caps:escape_shifted_capslock" } } @@ -65,49 +65,9 @@ cursor { hide-when-typing } - -// You can configure outputs by their name, which you can find -// by running `niri msg outputs` while inside a niri instance. -// The built-in laptop monitor is usually called "eDP-1". -// Find more information on the wiki: -// https://github.com/YaLTeR/niri/wiki/Configuration:-Outputs -// Remember to uncomment the node by removing "/-"! -output "eDP-1" { - // Uncomment this line to disable this output. - // off - - background-color "#000000" - - // Resolution and, optionally, refresh rate of the output. - // The format is "<width>x<height>" or "<width>x<height>@<refresh rate>". - // If the refresh rate is omitted, niri will pick the highest refresh rate - // for the resolution. - // If the mode is omitted altogether or is invalid, niri will pick one automatically. - // Run `niri msg outputs` while inside a niri instance to list all outputs and their modes. - // mode "1920x1080@120.030" - - // You can use integer or fractional scale, for example use 1.5 for 150% scale. - // scale 2 - - // Transform allows to rotate the output counter-clockwise, valid values are: - // normal, 90, 180, 270, flipped, flipped-90, flipped-180 and flipped-270. - // transform "normal" - - // Position of the output in the global coordinate space. - // This affects directional monitor actions like "focus-monitor-left", and cursor movement. - // The cursor can only move between directly adjacent outputs. - // Output scale and rotation has to be taken into account for positioning: - // outputs are sized in logical, or scaled, pixels. - // For example, a 3840Ã2160 output with scale 2.0 will have a logical size of 1920Ã1080, - // so to put another output directly adjacent to it on the right, set its x to 1920. - // If the position is unset or results in an overlap, the output is instead placed - // automatically. - position x=0 y=800 -} - -output "DP-1" { - background-color "#000000" - position x=1536 y=0 +overview { + zoom 0.33 + backdrop-color "#00807F" } // Settings that influence how windows are positioned and sized. @@ -115,7 +75,9 @@ output "DP-1" { // https://github.com/YaLTeR/niri/wiki/Configuration:-Layout layout { // Set gaps around windows in logical pixels. - gaps 5 + gaps 10 + + background-color "#00000000" // When to center a column when changing focus, options are: // - "never", default behavior, focusing an off-screen column will keep at the left @@ -202,7 +164,7 @@ layout { // active-color "#5b8277" // inactive-color "#4d4d42" - active-gradient from="#1f5c9a" to="#99d0b5" angle=60 + active-gradient from="#89b6a0" to="#0fc0d0" angle=90 inactive-gradient from="#252832" to="#676775" angle=45 } @@ -244,13 +206,37 @@ layout { insert-hint { color "#5b8277" } + + tab-indicator { + // off + // hide-when-single-tab + place-within-column + gap 0 + width 10 + length total-proportion=0.8 + // position "bottom" + gaps-between-tabs 6 + corner-radius 2 + // active-color "#89b6a0" + // inactive-color "#ccbe99" + active-gradient from="#0fc0d0" to="#89b6a0" angle=180 + inactive-gradient from="#000000" to="#ccbe99" angle=180 + } } -// Add lines like this to spawn processes at startup. -// Note that running niri as a session supports xdg-desktop-autostart, -// which may be more convenient to use. -// See the binds section below for more spawn examples. -// spawn-at-startup "alacritty" "-e" "fish" +gestures { + dnd-edge-view-scroll { + trigger-width 200 + delay-ms 200 + max-speed 4000 + } + + dnd-edge-workspace-switch { + trigger-height 100 + delay-ms 200 + max-speed 4000 + } +} // Uncomment this line to ask the clients to omit their client-side decorations if possible. // If the client will specifically ask for CSD, the request will be honored. @@ -278,6 +264,12 @@ animations { slowdown 0.4 } +blur { + passes 3 + noise 0.1 + saturation 1.5 +} + // Window rules let you adjust behavior for individual windows. // Find more information on the wiki: // https://github.com/YaLTeR/niri/wiki/Configuration:-Window-Rules @@ -289,12 +281,22 @@ layer-rule { } layer-rule { - match namespace="notifications" match namespace="rofi" shadow { on; } } +layer-rule { + match layer="top" + match layer="overlay" + match namespace="notifications" + match namespace="rofi" + + background-effect { + xray false + } +} + // Work around WezTerm's initial configure bug // by setting an empty default-column-width. window-rule { @@ -307,21 +309,35 @@ window-rule { window-rule { match app-id="GLava" + match app-id="com.libretro.RetroArch" + border { off; } shadow { off; } } window-rule { - match app-id="Alacritty" - match app-id="Mattermost" + match app-id=r#"^[aA]+lacritty"# + match app-id="mattermost-desktop" + match app-id="org.telegram.desktop" + + default-column-width { fixed 770; } - default-column-width { proportion 0.31; } + background-effect { + blur true + xray false + } +} + +window-rule { + match app-id="org.pwmt.zathura" + + default-column-width { fixed 1100; } } window-rule { match app-id="org.qutebrowser.qutebrowser" - default-column-width { proportion 0.69; } + default-column-width { fixed 1150; } } // Example: block out two password managers from screen capture. @@ -344,51 +360,45 @@ window-rule { } spawn-at-startup "pipewire-restart" -spawn-at-startup "waybar_launch" spawn-at-startup "playerctld" "daemon" spawn-at-startup "mpd-restart" spawn-at-startup "blueman-applet" -spawn-at-startup "mako" -spawn-at-startup "setsessionenv" spawn-at-startup "bash" "-c" "GTK_IM_MODULE= fcitx5 -d" spawn-at-startup "xwayland-satellite" spawn-at-startup "setsessionenv" +// spawn-at-startup "qs" "-c" "noctalia-shell" +spawn-at-startup "dsearch" "serve" +spawn-at-startup "dms" "run" environment { DISPLAY ":0" TERM "alacritty" + QT_QPA_PLATFORM "wayland;xcb" + QT_QPA_PLATFORMTHEME "gtk3" + QT_QPA_PLATFORMTHEME_QT6 "gtk3" } -spawn-at-startup "gsettings" "set" "org.gnome.desktop.interface" "gtk-theme" "Breeze" -spawn-at-startup "gsettings" "set" "org.gnome.desktop.interface" "icon-theme" "Arc" +// spawn-at-startup "gsettings" "set" "org.gnome.desktop.interface" "gtk-theme" "Breeze" +// spawn-at-startup "gsettings" "set" "org.gnome.desktop.interface" "icon-theme" "Arc" spawn-at-startup "gsettings" "set" "org.gnome.desktop.interface" "font-name" "monospace 10" spawn-at-startup "gsettings" "set" "org.gnome.desktop.interface" "color-scheme" "prefer-dark" -spawn-at-startup "swaybg" "-i" "/home/yaroslav/.config/wall1.png" "-m" "fill" - -// Just a nice jingle on startup because why not -spawn-at-startup "canberra-gtk-play" "-i" "Oxygen-Sys-App-Positive" - binds { - // Keys consist of modifiers separated by + signs, followed by an XKB key name - // in the end. To find an XKB name for a particular key, you may use a program - // like wev. - // // "Mod" is a special modifier equal to Super when running on a TTY, and to Alt // when running as a winit window. // // Most actions that you can bind here can also be invoked programmatically with // `niri msg action do-something`. - // Mod-Shift-/, which is usually the same as Mod-?, - // shows a list of important hotkeys. - Mod+Shift+Slash { show-hotkey-overlay; } - - // Suggested binds for running programs: terminal, app launcher, screen locker. Mod+Return { spawn "alacritty"; } - Mod+D { spawn "rofi" "-show" "drun" "-sidebar-mode" "-modi" "drun,run,filebrowser,ssh,combi"; } - Mod+X { spawn "lock-color"; } - Mod+Shift+X { spawn "lock-color" "screenon"; } + + // Noctalia + Mod+S { toggle-overview; } + XF86VoiceCommand { toggle-overview; } // For my remote + + // Keyboard pointer control + Mod+V { spawn "wl-kbptr" "-o" "modes=floating,click" "-o" "mode_floating.source=detect"; } + Mod+Shift+V { spawn "wl-kbptr" "-o" "modes=tile,bisect"; } // Example volume keys mappings for PipeWire & WirePlumber. // The allow-when-locked=true property makes them work even when the session is locked. @@ -398,6 +408,10 @@ binds { XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; } + XF86AudioPrev allow-when-locked=true { spawn "lmc" "prev"; } + XF86AudioPlay allow-when-locked=true { spawn "lmc" "toggle"; } + XF86AudioNext allow-when-locked=true { spawn "lmc" "next"; } + Mod+Shift+F5 allow-when-locked=true { spawn "lmc" "back" "5"; } Mod+F5 allow-when-locked=true { spawn "lmc" "prev"; } Mod+F6 allow-when-locked=true { spawn "lmc" "toggle"; } @@ -499,22 +513,22 @@ binds { // To avoid scrolling through workspaces really fast, you can use // the cooldown-ms property. The bind will be rate-limited to this value. // You can set a cooldown on any bind, but it's most useful for the wheel. - Mod+WheelScrollDown cooldown-ms=200 { focus-workspace-down; } - Mod+WheelScrollUp cooldown-ms=200 { focus-workspace-up; } - Mod+Ctrl+WheelScrollDown cooldown-ms=200 { move-column-to-workspace-down; } - Mod+Ctrl+WheelScrollUp cooldown-ms=200 { move-column-to-workspace-up; } + Mod+WheelScrollDown { focus-workspace-down; } + Mod+WheelScrollUp { focus-workspace-up; } + Mod+Ctrl+WheelScrollDown { move-column-to-workspace-down; } + Mod+Ctrl+WheelScrollUp { move-column-to-workspace-up; } - Mod+WheelScrollRight cooldown-ms=200 { focus-column-right; } - Mod+WheelScrollLeft cooldown-ms=200 { focus-column-left; } - Mod+Ctrl+WheelScrollRight cooldown-ms=200 { move-column-right; } - Mod+Ctrl+WheelScrollLeft cooldown-ms=200 { move-column-left; } + Mod+WheelScrollRight { focus-column-right; } + Mod+WheelScrollLeft { focus-column-left; } + Mod+Ctrl+WheelScrollRight { move-column-right; } + Mod+Ctrl+WheelScrollLeft { move-column-left; } // Usually scrolling up and down with Shift in applications results in // horizontal scrolling; these binds replicate that. - Mod+Shift+WheelScrollDown cooldown-ms=200 { focus-column-right; } - Mod+Shift+WheelScrollUp cooldown-ms=200 { focus-column-left; } - Mod+Ctrl+Shift+WheelScrollDown cooldown-ms=200 { move-column-right; } - Mod+Ctrl+Shift+WheelScrollUp cooldown-ms=200 { move-column-left; } + Mod+Shift+WheelScrollDown { focus-column-right; } + Mod+Shift+WheelScrollUp { focus-column-left; } + Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } + Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } // Similarly, you can bind touchpad scroll "ticks". // Touchpad scrolling is continuous, so for these binds it is split into @@ -581,8 +595,9 @@ binds { Mod+R { switch-preset-column-width; } Mod+Shift+R { switch-preset-window-height; } Mod+Ctrl+R { reset-window-height; } - Mod+F { maximize-column; } + Mod+F { maximize-window-to-edges; } Mod+Shift+F { fullscreen-window; } + Mod+Ctrl+F { maximize-column; } Mod+C { center-column; } // Finer width adjustments. @@ -593,47 +608,35 @@ binds { // * adjust width as a percentage of screen width: "-10%" or "+10%" // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0, // set-column-width "100" will make the column occupy 200 physical screen pixels. - Mod+Minus { set-column-width "-10%"; } - Mod+Equal { set-column-width "+10%"; } + Mod+Minus { set-column-width "-5%"; } + Mod+Equal { set-column-width "+5%"; } // Finer height adjustments when in column with other windows. - Mod+Shift+Minus { set-window-height "-10%"; } - Mod+Shift+Equal { set-window-height "+10%"; } + Mod+Shift+Minus { set-window-height "-5%"; } + Mod+Shift+Equal { set-window-height "+5%"; } // Switch between floating and tiling. Mod+Shift+Space { toggle-window-floating; } Mod+Space { switch-focus-between-floating-and-tiling; } - // Actions to switch layouts. - // Note: if you uncomment these, make sure you do NOT have - // a matching layout switch hotkey configured in xkb options above. - // Having both at once on the same hotkey will break the switching, - // since it will switch twice upon pressing the hotkey (once by xkb, once by niri). - // Mod+Space { switch-layout "next"; } - // Mod+Shift+Space { switch-layout "prev"; } + // Toggle tabbed column display mode. + // Windows in this column will appear as vertical tabs, + // rather than stacked on top of each other. + Mod+W { toggle-column-tabbed-display; } Print { screenshot; } Ctrl+Print { screenshot-screen; } Alt+Print { screenshot-window; } - Mod+Print { spawn "swayrecord"; } - - // The quit action will show a confirmation dialog to avoid accidental exits. - Mod+Shift+E { spawn "rofi" "-show" "session" "-matching" "prefix" "-modi" "session:rofisession"; } // Powers off the monitors. To turn them back on, do any input like // moving the mouse or pressing any other key. Mod+Shift+P { power-off-monitors; } - // Mako commands - Mod+Ctrl+Space { spawn "makoctl" "dismiss"; } - Mod+Ctrl+Shift+Space { spawn "makoctl" "restore"; } - // Menus/Quick actions Mod+F1 { spawn "menuman"; } - Mod+F2 { spawn "menumako"; } - Mod+F3 { spawn "rofi" "-show" "display" "-modi" "display:rofidisplay"; } Mod+F4 { spawn "menublk"; } Mod+F10 { spawn "chcolors"; } + Mod+F11 { spawn "dms" "ipc" "color-picker" "toggle"; } Mod+F12 { spawn "rofi" "-show" "tz" "-modi" "tz:rofitz"; } Mod+Shift+N { spawn "networkmanager_dmenu"; } Mod+Shift+C { spawn "rofi" "-show" "calc" "-modi" "calc" "-no-show-match" "-no-sort"; } @@ -644,6 +647,7 @@ binds { Mod+M { spawn "sh" "-c" "$TERM -e ncmpcpp"; } Mod+A { spawn "sh" "-c" "$TERM -T 'neomutt' -e neomutt"; } Mod+N { spawn "sh" "-c" "$TERM -T 'newsboat' -e newsboat && killall -42 waybar"; } + Mod+B { spawn "sh" "-c" "$TERM -T 'calcurse' -e calcurse"; } Mod+T { spawn "toggletorrent"; } Mod+Ctrl+T { spawn "launch-transmission"; } @@ -654,6 +658,11 @@ binds { Mod+Ctrl+Shift+apostrophe { spawn "menupass" "-s"; } } -switch-events { - lid-close { spawn "swaysession" "suspend"; } -} +include "local.kdl" +// include "noctalia.kdl" +// include "noctalia-binds.kdl" +include "dms/binds.kdl" +include "dms/colors.kdl" +include "dms/layout.kdl" +include "dms/cursor.kdl" +include "dms/wpblur.kdl" diff --git a/dotfiles/.config/niri/dms/alttab.kdl b/dotfiles/.config/niri/dms/alttab.kdl new file mode 100644 index 0000000..89f82bf --- /dev/null +++ b/dotfiles/.config/niri/dms/alttab.kdl @@ -0,0 +1,10 @@ +// ! DO NOT EDIT ! + // ! AUTO-GENERATED BY DMS ! + // ! CHANGES WILL BE OVERWRITTEN ! + // ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE ! + + recent-windows { + highlight { + corner-radius 1 + } + } diff --git a/dotfiles/.config/niri/dms/binds.kdl b/dotfiles/.config/niri/dms/binds.kdl new file mode 100644 index 0000000..c324b2e --- /dev/null +++ b/dotfiles/.config/niri/dms/binds.kdl @@ -0,0 +1,88 @@ +binds { + // === Application Launchers === + Mod+D hotkey-overlay-title="Application Launcher" { + spawn "dms" "ipc" "call" "spotlight" "toggle"; + } + Mod+Shift+D { + spawn-sh "dms ipc call widget openWith launcherButton files"; + } + // Mod+V hotkey-overlay-title="Clipboard Manager" { + // spawn "dms" "ipc" "call" "clipboard" "toggle"; + // } + + Mod+Shift+E hotkey-overlay-title="Power Menu: Toggle" { spawn "dms" "ipc" "call" "powermenu" "toggle"; } + + Ctrl+Shift+Escape hotkey-overlay-title="Task Manager" { + spawn "dms" "ipc" "call" "processlist" "focusOrToggle"; + } + Mod+Backslash { spawn-sh "dms ipc call dash open overview"; } + Mod+Shift+Backslash { spawn-sh "dms ipc call dash open weather"; } + Mod+Ctrl+Backslash { spawn-sh "dms ipc call dash open media"; } + Mod+F2 { spawn-sh "dms ipc call control-center toggle"; } + Mod+F3 hotkey-overlay-title="Settings" { + spawn "dms" "ipc" "call" "settings" "focusOrToggle"; + } + + Mod+Ctrl+Space { spawn "dms" "ipc" "call" "notifications" "dismissAllPopups"; } + Mod+Shift+Ctrl+Space hotkey-overlay-title="Notification Center" { + spawn "dms" "ipc" "call" "notifications" "toggle"; + } + + // === Security === + Mod+X hotkey-overlay-title="Lock Screen" { + spawn "dms" "ipc" "call" "lock" "lock"; + } + + // === Audio Controls === + // XF86AudioRaiseVolume allow-when-locked=true { + // spawn "dms" "ipc" "call" "audio" "increment" "3"; + // } + // XF86AudioLowerVolume allow-when-locked=true { + // spawn "dms" "ipc" "call" "audio" "decrement" "3"; + // } + // XF86AudioMute allow-when-locked=true { + // spawn "dms" "ipc" "call" "audio" "mute"; + // } + // XF86AudioMicMute allow-when-locked=true { + // spawn "dms" "ipc" "call" "audio" "micmute"; + // } + // XF86AudioPause allow-when-locked=true { + // spawn "dms" "ipc" "call" "mpris" "playPause"; + // } + // XF86AudioPlay allow-when-locked=true { + // spawn "dms" "ipc" "call" "mpris" "playPause"; + // } + // XF86AudioPrev allow-when-locked=true { + // spawn "dms" "ipc" "call" "mpris" "previous"; + // } + // XF86AudioNext allow-when-locked=true { + // spawn "dms" "ipc" "call" "mpris" "next"; + // } + // Ctrl+XF86AudioRaiseVolume allow-when-locked=true { + // spawn "dms" "ipc" "call" "mpris" "increment" "3"; + // } + // Ctrl+XF86AudioLowerVolume allow-when-locked=true { + // spawn "dms" "ipc" "call" "mpris" "decrement" "3"; + // } + + // === Brightness Controls === + XF86MonBrightnessUp allow-when-locked=true { + spawn "dms" "ipc" "call" "brightness" "increment" "5" ""; + } + XF86MonBrightnessDown allow-when-locked=true { + spawn "dms" "ipc" "call" "brightness" "decrement" "5" ""; + } + Mod+Alt+Up allow-when-locked=true { + spawn "dms" "ipc" "call" "brightness" "increment" "5" ""; + } + Mod+Alt+Down allow-when-locked=true { + spawn "dms" "ipc" "call" "brightness" "decrement" "5" ""; + } + + // === System Controls === + Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } +} + +switch-events { + lid-close { spawn "loginctl" "suspend"; } +} diff --git a/dotfiles/.config/niri/dms/colors.kdl b/dotfiles/.config/niri/dms/colors.kdl new file mode 100644 index 0000000..37504be --- /dev/null +++ b/dotfiles/.config/niri/dms/colors.kdl @@ -0,0 +1,39 @@ +// ! Auto-generated file. Do not edit directly. +// Remove `include "dms/colors.kdl"` from your config to override. + +layout { + background-color "transparent" + + focus-ring { + active-color "#52d7f0" + inactive-color "#919191" + urgent-color "#ffb4ab" + } + + border { + active-color "#52d7f0" + inactive-color "#919191" + urgent-color "#ffb4ab" + } + + shadow { + color "#00000070" + } + + tab-indicator { + active-color "#52d7f0" + inactive-color "#919191" + urgent-color "#ffb4ab" + } + + insert-hint { + color "#52d7f080" + } +} + +recent-windows { + highlight { + active-color "#004e5a" + urgent-color "#ffb4ab" + } +} diff --git a/dotfiles/.config/niri/dms/cursor.kdl b/dotfiles/.config/niri/dms/cursor.kdl new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/dotfiles/.config/niri/dms/cursor.kdl diff --git a/dotfiles/.config/niri/dms/layout.kdl b/dotfiles/.config/niri/dms/layout.kdl new file mode 100644 index 0000000..224f927 --- /dev/null +++ b/dotfiles/.config/niri/dms/layout.kdl @@ -0,0 +1,22 @@ +// ! DO NOT EDIT ! + // ! AUTO-GENERATED BY DMS ! + // ! CHANGES WILL BE OVERWRITTEN ! + // ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE ! + + layout { + gaps 6 + + border { + width 3 + } + + focus-ring { + width 3 + } + } + window-rule { + geometry-corner-radius 1 + clip-to-geometry true + tiled-state true + draw-border-with-background false + } diff --git a/dotfiles/.config/niri/dms/outputs.kdl b/dotfiles/.config/niri/dms/outputs.kdl new file mode 100644 index 0000000..f56685f --- /dev/null +++ b/dotfiles/.config/niri/dms/outputs.kdl @@ -0,0 +1,14 @@ +// Auto-generated by DMS - do not edit manually + +output "HDMI-A-1" { + mode "1920x1080@74.973" + scale 1 + position x=0 y=360 +} + +output "DP-1" { + mode "2560x1440@165.000" + scale 1 + position x=1920 y=0 +} + diff --git a/dotfiles/.config/niri/dms/windowrules.kdl b/dotfiles/.config/niri/dms/windowrules.kdl new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/dotfiles/.config/niri/dms/windowrules.kdl diff --git a/dotfiles/.config/niri/dms/wpblur.kdl b/dotfiles/.config/niri/dms/wpblur.kdl new file mode 100644 index 0000000..3d58802 --- /dev/null +++ b/dotfiles/.config/niri/dms/wpblur.kdl @@ -0,0 +1,9 @@ +// ! DO NOT EDIT ! +// ! AUTO-GENERATED BY DMS ! +// ! CHANGES WILL BE OVERWRITTEN ! +// ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE ! + +layer-rule { + match namespace="dms:blurwallpaper" + place-within-backdrop true +} diff --git a/dotfiles/.config/niri/noctalia-binds.kdl b/dotfiles/.config/niri/noctalia-binds.kdl new file mode 100644 index 0000000..ca104cc --- /dev/null +++ b/dotfiles/.config/niri/noctalia-binds.kdl @@ -0,0 +1,24 @@ +binds { + Mod+D { spawn-sh "qs -c noctalia-shell ipc call launcher toggle"; } + // this isn't dry but whatever + Menu { spawn-sh "qs -c noctalia-shell ipc call launcher toggle"; } + + Mod+Ctrl+Shift+Space { spawn-sh "qs -c noctalia-shell ipc call notifications toggleHistory"; } + Mod+Ctrl+Space { spawn-sh "qs -c noctalia-shell ipc call notifications invokeDefaultAndDismiss"; } + + Mod+Shift+E { spawn-sh "qs -c noctalia-shell ipc call sessionMenu toggle"; } + Mod+X { spawn-sh "qs -c noctalia-shell ipc call lockScreen lock"; } + + Mod+F3 { spawn-sh "qs -c noctalia-shell ipc call settings open"; } + Mod+Backslash { spawn-sh "qs -c noctalia-shell ipc call controlCenter toggle"; } + Mod+Shift+Backslash { spawn-sh "qs -c noctalia-shell ipc call calendar toggle"; } +} + +switch-events { + lid-close { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "sessionMenu" "lockAndSuspend"; } +} + +layer-rule { + match namespace="^noctalia-overview*" + place-within-backdrop true +} diff --git a/dotfiles/.config/niri/noctalia.kdl b/dotfiles/.config/niri/noctalia.kdl new file mode 100644 index 0000000..872e93c --- /dev/null +++ b/dotfiles/.config/niri/noctalia.kdl @@ -0,0 +1,35 @@ +layout { + + focus-ring { + active-color "#ffc799" + inactive-color "#0c0c0c" + urgent-color "#ff8080" + } + + border { + active-color "#ffc799" + inactive-color "#0c0c0c" + urgent-color "#ff8080" + } + + shadow { + color "#00000070" + } + + tab-indicator { + active-color "#ffc799" + inactive-color "#e66800" + urgent-color "#ff8080" + } + + insert-hint { + color "#ffc79980" + } +} + +recent-windows { + highlight { + active-color "#ffc799" + urgent-color "#ff8080" + } +} diff --git a/dotfiles/.config/noctalia/colors.json b/dotfiles/.config/noctalia/colors.json new file mode 100644 index 0000000..614161b --- /dev/null +++ b/dotfiles/.config/noctalia/colors.json @@ -0,0 +1,18 @@ +{ + "mError": "#ff8080", + "mHover": "#282828", + "mOnError": "#000000", + "mOnHover": "#ffffff", + "mOnPrimary": "#000000", + "mOnSecondary": "#000000", + "mOnSurface": "#ffffff", + "mOnSurfaceVariant": "#a0a0a0", + "mOnTertiary": "#000000", + "mOutline": "#505050", + "mPrimary": "#ffc799", + "mSecondary": "#99ffe4", + "mShadow": "#000000", + "mSurface": "#0c0c0c", + "mSurfaceVariant": "#1c1c1c", + "mTertiary": "#fbadff" +} diff --git a/dotfiles/.config/noctalia/colorschemes/ADW/ADW.json b/dotfiles/.config/noctalia/colorschemes/ADW/ADW.json new file mode 100644 index 0000000..272cd92 --- /dev/null +++ b/dotfiles/.config/noctalia/colorschemes/ADW/ADW.json @@ -0,0 +1,94 @@ +{ + "dark": { + "mPrimary": "#3584e4", + "mOnPrimary": "#ffffff", + "mSecondary": "#1b467c", + "mOnSecondary": "#ffffff", + "mTertiary": "#ffffff", + "mOnTertiary": "#2e3436", + "mError": "#c01c28", + "mOnError": "#ffffff", + "mSurface": "#242424", + "mOnSurface": "#ffffff", + "mHover": "#3584e4", + "mOnHover": "#ffffff", + "mSurfaceVariant": "#1e1e1e", + "mOnSurfaceVariant": "#ffffff", + "mOutline": "#3d3846", + "mShadow": "#000000", + "terminal": { + "background": "#1e1e1e", + "foreground": "#ffffff", + "cursor": "#3584e4", + "cursorText": "#ffffff", + "selectionBg": "#3584e4", + "selectionFg": "#ffffff", + "normal": { + "black": "#241f31", + "red": "#c01c28", + "green": "#2ec27e", + "yellow": "#f5c211", + "blue": "#1e78e4", + "magenta": "#9841bb", + "cyan": "#0ab9dc", + "white": "#c0bfbc" + }, + "bright": { + "black": "#5e5c64", + "red": "#ed333b", + "green": "#57e389", + "yellow": "#f8e45c", + "blue": "#51a1ff", + "magenta": "#c061cb", + "cyan": "#4fd2fd", + "white": "#ffffff" + } + } + }, + "light": { + "mPrimary": "#3584e4", + "mOnPrimary": "#ffffff", + "mSecondary": "#2e3436", + "mOnSecondary": "#ffffff", + "mTertiary": "#2ec27e", + "mOnTertiary": "#ffffff", + "mError": "#e01b24", + "mOnError": "#ffffff", + "mSurface": "#fafafa", + "mOnSurface": "#2e3436", + "mHover": "#3584e4", + "mOnHover": "#ffffff", + "mSurfaceVariant": "#ffffff", + "mOnSurfaceVariant": "#2e3436", + "mOutline": "#d6d6d6", + "mShadow": "#000000", + "terminal": { + "background": "#ffffff", + "foreground": "#2e3436", + "cursor": "#3584e4", + "cursorText": "#ffffff", + "selectionBg": "#3584e4", + "selectionFg": "#ffffff", + "normal": { + "black": "#171421", + "red": "#c01c28", + "green": "#26a269", + "yellow": "#a2734c", + "blue": "#12488b", + "magenta": "#a347ba", + "cyan": "#2aa1b3", + "white": "#d0cfcc" + }, + "bright": { + "black": "#5e5c64", + "red": "#f66151", + "green": "#33d17a", + "yellow": "#e5a50a", + "blue": "#3584e4", + "magenta": "#c061cb", + "cyan": "#33c7de", + "white": "#ffffff" + } + } + } +} diff --git a/dotfiles/.config/noctalia/colorschemes/Breeze/Breeze.json b/dotfiles/.config/noctalia/colorschemes/Breeze/Breeze.json new file mode 100644 index 0000000..68988b9 --- /dev/null +++ b/dotfiles/.config/noctalia/colorschemes/Breeze/Breeze.json @@ -0,0 +1,94 @@ +{ + "dark": { + "mPrimary": "#3daee9", + "mOnPrimary": "#141618", + "mSecondary": "#1d99f3", + "mOnSecondary": "#141618", + "mTertiary": "#9b59b6", + "mOnTertiary": "#141618", + "mError": "#da4453", + "mOnError": "#141618", + "mSurface": "#202224", + "mOnSurface": "#fcfcfc", + "mHover": "#3daee9", + "mOnHover": "#141618", + "mSurfaceVariant": "#292d32", + "mOnSurfaceVariant": "#a1a9b1", + "mOutline": "#707d8a", + "mShadow": "#272c31", + "terminal": { + "background": "#232627", + "foreground": "#fcfcfc", + "cursor": "#3daee9", + "cursorText": "#232627", + "selectionBg": "#3daee9", + "selectionFg": "#ffffff", + "normal": { + "black": "#232627", + "red": "#ed1515", + "green": "#11d116", + "yellow": "#f67400", + "blue": "#1d99f3", + "magenta": "#9b59b6", + "cyan": "#1abc9c", + "white": "#fcfcfc" + }, + "bright": { + "black": "#7f8c8d", + "red": "#c0392b", + "green": "#1cdc9a", + "yellow": "#fdbc4b", + "blue": "#3daee9", + "magenta": "#8e44ad", + "cyan": "#16a085", + "white": "#ffffff" + } + } + }, + "light": { + "mPrimary": "#3daee9", + "mOnPrimary": "#ffffff", + "mSecondary": "#2980b9", + "mOnSecondary": "#ffffff", + "mTertiary": "#9b59b6", + "mOnTertiary": "#ffffff", + "mError": "#da4453", + "mOnError": "#ffffff", + "mSurface": "#ffffff", + "mOnSurface": "#232629", + "mHover": "#3daee9", + "mOnHover": "#ffffff", + "mSurfaceVariant": "#eff0f1", + "mOnSurfaceVariant": "#707d8a", + "mOutline": "#e3e5e7", + "mShadow": "#e3e5e7", + "terminal": { + "background": "#ebe8e4", + "foreground": "#383e3f", + "cursor": "#383e3f", + "cursorText": "#ebe8e4", + "selectionBg": "#383e3f", + "selectionFg": "#ebe8e4", + "normal": { + "black": "#383e3f", + "red": "#cd5c60", + "green": "#39855f", + "yellow": "#b87e3c", + "blue": "#2683b5", + "magenta": "#845a84", + "cyan": "#48a9a9", + "white": "#c9c2bd" + }, + "bright": { + "black": "#7d8468", + "red": "#ef6787", + "green": "#3e594e", + "yellow": "#d1832e", + "blue": "#4f9cb8", + "magenta": "#605db3", + "cyan": "#008b8b", + "white": "#60696b" + } + } + } +}
\ No newline at end of file diff --git a/dotfiles/.config/noctalia/colorschemes/Osaka jade/Osaka jade.json b/dotfiles/.config/noctalia/colorschemes/Osaka jade/Osaka jade.json new file mode 100644 index 0000000..0e450fa --- /dev/null +++ b/dotfiles/.config/noctalia/colorschemes/Osaka jade/Osaka jade.json @@ -0,0 +1,94 @@ +{ + "dark": { + "mPrimary": "#1E9177", + "mOnPrimary": "#B8C8C4", + "mSecondary": "#167A63", + "mOnSecondary": "#B8C8C4", + "mTertiary": "#26A589", + "mOnTertiary": "#B8C8C4", + "mError": "#933636", + "mOnError": "#B8C8C4", + "mSurface": "#081512", + "mOnSurface": "#A6B5B1", + "mSurfaceVariant": "#0F251F", + "mOnSurfaceVariant": "#99A8A4", + "mOutline": "#1B6352", + "mShadow": "#040A09", + "mHover": "#26A589", + "mOnHover": "#B8C8C4", + "terminal": { + "cursorText": "#141b1e", + "cursor": "#dadada", + "foreground": "#dadada", + "background": "#141b1e", + "selectionFg": "#dadada", + "selectionBg": "#141b1e", + "normal": { + "black": "#232a2d", + "red": "#e57474", + "green": "#8ccf7e", + "yellow": "#e5c76b", + "blue": "#67b0e8", + "magenta": "#c47fd5", + "cyan": "#6cbfbf", + "white": "#b3b9b8" + }, + "bright": { + "black": "#464e50", + "red": "#ef7e7e", + "green": "#96d988", + "yellow": "#f4d67a", + "blue": "#71baf2", + "magenta": "#ce89df", + "cyan": "#67cbe7", + "white": "#bdc3c2" + } + } + }, + "light": { + "mPrimary": "#3B7561", + "mOnPrimary": "#D8E5DB", + "mSecondary": "#526E4A", + "mOnSecondary": "#D8E5DB", + "mTertiary": "#4A8069", + "mOnTertiary": "#D8E5DB", + "mError": "#854145", + "mOnError": "#D8E5DB", + "mSurface": "#AEC2B4", + "mOnSurface": "#2C3D35", + "mSurfaceVariant": "#95AD9C", + "mOnSurfaceVariant": "#263731", + "mOutline": "#5C7A6A", + "mShadow": "#8A9E90", + "mHover": "#4A8069", + "mOnHover": "#D8E5DB", + "terminal": { + "foreground": "#5c6a72", + "background": "#efebd4", + "selectionFg": "#5c6a72", + "selectionBg": "#eaedc8", + "cursorText": "#eaedc8", + "cursor": "#f57d26", + "normal": { + "black": "#7a8478", + "red": "#e67e80", + "green": "#9ab373", + "yellow": "#c1a266", + "blue": "#7fbbb3", + "magenta": "#d699b6", + "cyan": "#83c092", + "white": "#b2af9f" + }, + "bright": { + "black": "#a6b0a0", + "red": "#f85552", + "green": "#8da101", + "yellow": "#dfa000", + "blue": "#3a94c5", + "magenta": "#df69ba", + "cyan": "#35a77c", + "white": "#fffbef" + } + } + } +} diff --git a/dotfiles/.config/noctalia/colorschemes/Peche/Peche.json b/dotfiles/.config/noctalia/colorschemes/Peche/Peche.json new file mode 100644 index 0000000..cfcfba2 --- /dev/null +++ b/dotfiles/.config/noctalia/colorschemes/Peche/Peche.json @@ -0,0 +1,94 @@ +{ + "dark": { + "mPrimary": "#9DD2C0", + "mOnPrimary": "#0e1214", + "mSecondary": "#FADDD2", + "mOnSecondary": "#0e1214", + "mTertiary": "#E8B8A8", + "mOnTertiary": "#0e1214", + "mError": "#A7CCE1", + "mOnError": "#0e1214", + "mSurface": "#0e1214", + "mOnSurface": "#ABBCC4", + "mSurfaceVariant": "#192024", + "mOnSurfaceVariant": "#DBE2E6", + "mOutline": "#212B30", + "mShadow": "#000000", + "mHover": "#E8B8A8", + "mOnHover": "#0e1214", + "terminal": { + "normal": { + "black": "#0e1214", + "red": "#E8B8A8", + "green": "#9DD2C0", + "yellow": "#C7E5DB", + "blue": "#A7CCE1", + "magenta": "#B4E1E4", + "cyan": "#FADDD2", + "white": "#ABBCC4" + }, + "bright": { + "black": "#151c1e", + "red": "#E8B8A8", + "green": "#9DD2C0", + "yellow": "#C7E5DB", + "blue": "#A7CCE1", + "magenta": "#B4E1E4", + "cyan": "#FADDD2", + "white": "#DBE2E6" + }, + "foreground": "#ABBCC4", + "background": "#0e1214", + "selectionFg": "#ABBCC4", + "selectionBg": "#212B30", + "cursorText": "#0e1214", + "cursor": "#ABBCC4" + } + }, + "light": { + "mPrimary": "#6DB09A", + "mOnPrimary": "#E5EDF0", + "mSecondary": "#EABCAE", + "mOnSecondary": "#E5EDF0", + "mTertiary": "#E0A990", + "mOnTertiary": "#E5EDF0", + "mError": "#7FAFC7", + "mOnError": "#E5EDF0", + "mSurface": "#E8EFF2", + "mOnSurface": "#738A92", + "mSurfaceVariant": "#CFD9DE", + "mOnSurfaceVariant": "#435860", + "mOutline": "#C2CFD6", + "mShadow": "#B8C5D0", + "mHover": "#D68F6E", + "mOnHover": "#E5EDF0", + "terminal": { + "normal": { + "black": "#E8EFF2", + "red": "#D68F6E", + "green": "#5AA68D", + "yellow": "#6DB09A", + "blue": "#74A8C2", + "magenta": "#E8B8A8", + "cyan": "#A7CCE1", + "white": "#738A92" + }, + "bright": { + "black": "#CFD9DE", + "red": "#D68F6E", + "green": "#5AA68D", + "yellow": "#6DB09A", + "blue": "#74A8C2", + "magenta": "#E8B8A8", + "cyan": "#A7CCE1", + "white": "#435860" + }, + "foreground": "#738A92", + "background": "#E8EFF2", + "selectionFg": "#738A92", + "selectionBg": "#C2CFD6", + "cursorText": "#E8EFF2", + "cursor": "#738A92" + } + } +}
\ No newline at end of file diff --git a/dotfiles/.config/noctalia/colorschemes/Vesper/Vesper.json b/dotfiles/.config/noctalia/colorschemes/Vesper/Vesper.json new file mode 100644 index 0000000..07e9a84 --- /dev/null +++ b/dotfiles/.config/noctalia/colorschemes/Vesper/Vesper.json @@ -0,0 +1,94 @@ +{ + "dark": { + "mPrimary": "#FFC799", + "mOnPrimary": "#000000", + "mSecondary": "#99FFE4", + "mOnSecondary": "#000000", + "mTertiary": "#FBADFF", + "mOnTertiary": "#000000", + "mError": "#FF8080", + "mOnError": "#000000", + "mSurface": "#0C0C0C", + "mOnSurface": "#FFFFFF", + "mSurfaceVariant": "#1C1C1C", + "mOnSurfaceVariant": "#A0A0A0", + "mOutline": "#505050", + "mShadow": "#000000", + "mHover": "#282828", + "mOnHover": "#FFFFFF", + "terminal": { + "foreground": "#FFFFFF", + "background": "#0C0C0C", + "normal": { + "black": "#0C0C0C", + "red": "#FF8080", + "green": "#99FFE4", + "yellow": "#FFC799", + "blue": "#80B3FF", + "magenta": "#FBADFF", + "cyan": "#99FFE4", + "white": "#A0A0A0" + }, + "bright": { + "black": "#505050", + "red": "#FF8080", + "green": "#99FFE4", + "yellow": "#FFC799", + "blue": "#80B3FF", + "magenta": "#FBADFF", + "cyan": "#99FFE4", + "white": "#FFFFFF" + }, + "cursor": "#FFFFFF", + "cursorText": "#000000", + "selectionFg": "#000000", + "selectionBg": "#FFC799" + } + }, + "light": { + "mPrimary": "#FFB170", + "mOnPrimary": "#0C0C0C", + "mSecondary": "#00CC99", + "mOnSecondary": "#0C0C0C", + "mTertiary": "#FBADFF", + "mOnTertiary": "#0C0C0C", + "mError": "#FF8080", + "mOnError": "#0C0C0C", + "mSurface": "#F2F2F2", + "mOnSurface": "#0C0C0C", + "mSurfaceVariant": "#E5E5E5", + "mOnSurfaceVariant": "#282828", + "mOutline": "#505050", + "mShadow": "#D9D9D9", + "mHover": "#E0E0E0", + "mOnHover": "#0C0C0C", + "terminal": { + "foreground": "#0C0C0C", + "background": "#F2F2F2", + "normal": { + "black": "#F2F2F2", + "red": "#FF8080", + "green": "#00CC99", + "yellow": "#FFC799", + "blue": "#004A77", + "magenta": "#FBADFF", + "cyan": "#006B57", + "white": "#505050" + }, + "bright": { + "black": "#A0A0A0", + "red": "#FF8080", + "green": "#00CC99", + "yellow": "#FFC799", + "blue": "#80B3FF", + "magenta": "#FBADFF", + "cyan": "#99FFE4", + "white": "#0C0C0C" + }, + "cursor": "#0C0C0C", + "cursorText": "#F2F2F2", + "selectionFg": "#F2F2F2", + "selectionBg": "#FFC799" + } + } +} diff --git a/dotfiles/.config/noctalia/plugins.json b/dotfiles/.config/noctalia/plugins.json new file mode 100644 index 0000000..ae7f05a --- /dev/null +++ b/dotfiles/.config/noctalia/plugins.json @@ -0,0 +1,16 @@ +{ + "sources": [ + { + "enabled": true, + "name": "Noctalia Plugins", + "url": "https://github.com/noctalia-dev/noctalia-plugins" + } + ], + "states": { + "file-search": { + "enabled": true, + "sourceUrl": "https://github.com/noctalia-dev/noctalia-plugins" + } + }, + "version": 2 +} diff --git a/dotfiles/.config/noctalia/plugins/file-search/LauncherProvider.qml b/dotfiles/.config/noctalia/plugins/file-search/LauncherProvider.qml new file mode 100644 index 0000000..3ca5e88 --- /dev/null +++ b/dotfiles/.config/noctalia/plugins/file-search/LauncherProvider.qml @@ -0,0 +1,448 @@ +import QtQuick +import Quickshell +import Quickshell.Io +import qs.Commons + +Item { + id: root + + property var pluginApi: null + + // Provider metadata + property string name: pluginApi?.tr("provider.name") + property var launcher: null + property bool handleSearch: false + property string supportedLayouts: "list" + property bool supportsAutoPaste: false + + // Search state + property var currentResults: [] + property string currentQuery: "" + property bool searching: false + property int nextRequestId: 0 + property int activeRequestId: 0 + property int fileProcessRequestId: 0 + property int dirProcessRequestId: 0 + property int pendingProcessCount: 0 + property bool currentRequestFailed: false + property var pendingResultsByType: ({ "files": [], "dirs": [] }) + property string fdCommandPath: "" + property bool fdAvailable: false + + // Settings shortcuts + property var cfg: pluginApi?.pluginSettings || ({}) + property var defaults: pluginApi?.manifest?.metadata?.defaultSettings || ({}) + property bool showHidden: cfg.showHidden ?? defaults.showHidden ?? false + property int maxResults: cfg.maxResults ?? defaults.maxResults ?? 0 + property string fileOpener: cfg.fileOpener ?? defaults.fileOpener ?? "xdg-open" + property string fdCommand: cfg.fdCommand ?? defaults.fdCommand ?? "fd" + property string searchDirectory: cfg.searchDirectory ?? defaults.searchDirectory ?? "~" + + Process { + id: fileSearchProcess + running: false + + stdout: StdioCollector { + id: fileStdoutCollector + } + + stderr: StdioCollector { + id: fileStderrCollector + } + + onExited: function(exitCode) { + root.handleSearchProcessExit("files", fileProcessRequestId, exitCode, fileStdoutCollector.text, fileStderrCollector.text); + } + } + + Process { + id: dirSearchProcess + running: false + + stdout: StdioCollector { + id: dirStdoutCollector + } + + stderr: StdioCollector { + id: dirStderrCollector + } + + onExited: function(exitCode) { + root.handleSearchProcessExit("dirs", dirProcessRequestId, exitCode, dirStdoutCollector.text, dirStderrCollector.text); + } + } + + // Debounce timer for search + Timer { + id: searchDebouncer + interval: 300 + repeat: false + onTriggered: root.executeSearch(root.currentQuery) + } + + function init() { + Logger.i("FileSearch", "Initializing plugin"); + fdCommandPath = fdCommand; + fdAvailable = true; + Logger.i("FileSearch", "Using fd command:", fdCommandPath); + } + + function handleCommand(searchText) { + return searchText.startsWith(">file"); + } + + function commands() { + return [{ + "name": ">file", + "description": pluginApi?.tr("launcher.command.description"), + "icon": "file-search", + "isTablerIcon": true, + "isImage": false, + "onActivate": function() { + launcher.setSearchText(">file "); + } + }]; + } + + function getResults(searchText) { + if (!searchText.startsWith(">file")) { + return []; + } + + if (!fdAvailable) { + return [{ + "name": pluginApi?.tr("launcher.errors.fdNotFound.title"), + "description": pluginApi?.tr("launcher.errors.fdNotFound.description"), + "icon": "alert-circle", + "isTablerIcon": true, + "isImage": false, + "onActivate": function() {} + }]; + } + + var query = searchText.slice(5).trim(); + + if (query === "") { + return [{ + "name": pluginApi?.tr("launcher.prompts.emptyQuery.title"), + "description": pluginApi?.tr("launcher.prompts.emptyQuery.description", { "root": displaySearchDirectory() }), + "icon": "file-search", + "isTablerIcon": true, + "isImage": false, + "onActivate": function() {} + }]; + } + + if (query !== currentQuery) { + currentQuery = query; + activeRequestId = 0; + currentRequestFailed = false; + searching = true; + searchDebouncer.restart(); + + return [{ + "name": pluginApi?.tr("launcher.prompts.searching.title"), + "description": pluginApi?.tr("launcher.prompts.searching.description", { "query": query }), + "icon": "refresh", + "isTablerIcon": true, + "isImage": false, + "onActivate": function() {} + }]; + } + + if (searching) { + return [{ + "name": pluginApi?.tr("launcher.prompts.searching.title"), + "description": pluginApi?.tr("launcher.prompts.searching.description", { "query": query }), + "icon": "refresh", + "isTablerIcon": true, + "isImage": false, + "onActivate": function() {} + }]; + } + + return currentResults; + } + + function executeSearch(query) { + if (!fdAvailable || query === "") { + return; + } + + Logger.d("FileSearch", "Executing search for:", query); + + if (fileSearchProcess.running) { + fileSearchProcess.running = false; + } + if (dirSearchProcess.running) { + dirSearchProcess.running = false; + } + + var expandedDir = expandHomePath(searchDirectory); + + nextRequestId += 1; + var requestId = nextRequestId; + activeRequestId = requestId; + currentRequestFailed = false; + pendingProcessCount = 2; + pendingResultsByType = ({ "files": [], "dirs": [] }); + + var commonArgs = []; + + if (showHidden) { + commonArgs.push("--hidden"); + } + + if (maxResults > 0) { + commonArgs.push("--max-results", maxResults.toString()); + } + commonArgs.push("--base-directory", expandedDir); + commonArgs.push("--absolute-path"); + commonArgs.push("--color", "never"); + commonArgs.push(query); + + var fileArgs = ["--type", "f"].concat(commonArgs); + var dirArgs = ["--type", "d"].concat(commonArgs); + + fileProcessRequestId = requestId; + fileSearchProcess.command = [fdCommandPath].concat(fileArgs); + fileSearchProcess.running = true; + + dirProcessRequestId = requestId; + dirSearchProcess.command = [fdCommandPath].concat(dirArgs); + dirSearchProcess.running = true; + + Logger.d("FileSearch", "Running file command:", fdCommandPath, fileArgs.join(" ")); + Logger.d("FileSearch", "Running dir command:", fdCommandPath, dirArgs.join(" ")); + } + + function handleSearchProcessExit(kind, requestId, exitCode, stdoutText, stderrText) { + if (requestId !== activeRequestId || currentRequestFailed) { + return; + } + + if (exitCode !== 0) { + currentRequestFailed = true; + searching = false; + pendingProcessCount = 0; + Logger.e("FileSearch", "fd command failed with exit code:", exitCode); + Logger.e("FileSearch", "stderr:", stderrText); + currentResults = [{ + "name": pluginApi?.tr("launcher.errors.fdNotFound.title"), + "description": pluginApi?.tr("launcher.errors.fdNotFound.description"), + "icon": "alert-circle", + "isTablerIcon": true, + "onActivate": function() {} + }]; + if (launcher) { + launcher.updateResults(); + } + return; + } + + pendingResultsByType[kind] = parseRawPaths(stdoutText); + pendingProcessCount -= 1; + + if (pendingProcessCount <= 0) { + finalizeSearchResults(requestId); + } + } + + function finalizeSearchResults(requestId) { + if (requestId !== activeRequestId || currentRequestFailed) { + return; + } + + var results = []; + + for (var i = 0; i < pendingResultsByType.dirs.length; i++) { + results.push(formatFileEntry(pendingResultsByType.dirs[i], true)); + } + for (var j = 0; j < pendingResultsByType.files.length; j++) { + results.push(formatFileEntry(pendingResultsByType.files[j], false)); + } + + results = sortResults(results, currentQuery); + + if (maxResults > 0 && results.length > maxResults) { + results = results.slice(0, maxResults); + } + + if (results.length === 0) { + results.push({ + "name": pluginApi?.tr("launcher.prompts.noResults.title"), + "description": pluginApi?.tr("launcher.prompts.noResults.description", { "query": currentQuery }), + "icon": "file-off", + "isTablerIcon": true, + "isImage": false, + "onActivate": function() {} + }); + searching = false; + currentResults = results; + if (launcher) { + launcher.updateResults(); + } + return; + } + + searching = false; + currentResults = results; + Logger.d("FileSearch", "Found", results.length, "results"); + if (launcher) { + launcher.updateResults(); + } + } + + function parseRawPaths(output) { + var trimmed = output.trim(); + if (trimmed === "") { + return []; + } + return trimmed.split("\n").filter(function(line) { return line.trim() !== ""; }); + } + + function expandHomePath(pathValue) { + var expandedPath = pathValue; + if (expandedPath.startsWith("~")) { + expandedPath = Quickshell.env("HOME") + expandedPath.substring(1); + } + return expandedPath; + } + + function displaySearchDirectory() { + var expandedPath = expandHomePath(searchDirectory); + var homeDir = Quickshell.env("HOME"); + if (expandedPath.startsWith(homeDir)) { + return "~" + expandedPath.slice(homeDir.length); + } + return expandedPath; + } + + function sortResults(results, query) { + var queryLower = query.toLowerCase(); + results.sort(function(a, b) { + var rankA = resultRank(a, queryLower); + var rankB = resultRank(b, queryLower); + if (rankA !== rankB) { + return rankA - rankB; + } + + var nameA = (a.name || "").toLowerCase(); + var nameB = (b.name || "").toLowerCase(); + if (nameA < nameB) { + return -1; + } + if (nameA > nameB) { + return 1; + } + return (a.description || "").length - (b.description || "").length; + }); + return results; + } + + function resultRank(result, queryLower) { + var name = (result.name || "").toLowerCase(); + var description = (result.description || "").toLowerCase(); + var fullPath = description + "/" + name; + + if (name === queryLower) { + return 0; + } + if (name.startsWith(queryLower)) { + return 1; + } + if (name.indexOf(queryLower) !== -1) { + return 2; + } + if (fullPath.indexOf(queryLower) !== -1) { + return 3; + } + return 4; + } + + function formatFileEntry(filePath, forcedIsDirectory) { + var normalizedPath = filePath; + while (normalizedPath.length > 1 && normalizedPath.endsWith("/")) { + normalizedPath = normalizedPath.slice(0, -1); + } + + var isDirectory = (forcedIsDirectory !== undefined) ? forcedIsDirectory : normalizedPath !== filePath; + var parts = normalizedPath.split("/"); + var filename = parts[parts.length - 1]; + var parentPath = parts.slice(0, -1).join("/"); + + if (filename === "") { + filename = normalizedPath; + } + + var homeDir = Quickshell.env("HOME"); + if (parentPath.startsWith(homeDir)) { + parentPath = "~" + parentPath.slice(homeDir.length); + } + + return { + "name": filename, + "description": parentPath, + "icon": isDirectory ? "folder" : getFileIcon(filename), + "isTablerIcon": true, + "isImage": false, + "singleLine": false, + "onActivate": function() { + root.openFile(normalizedPath); + } + }; + } + + function getFileIcon(filename) { + var ext = filename.split(".").pop().toLowerCase(); + + // Images + if (["jpg", "jpeg", "png", "gif", "svg", "webp", "bmp", "ico"].indexOf(ext) !== -1) { + return "photo"; + } + + // Documents + if (["txt", "md", "pdf", "doc", "docx", "odt", "rtf"].indexOf(ext) !== -1) { + return "file-text"; + } + + // Code files + if (["js", "ts", "py", "java", "cpp", "c", "h", "qml", "rs", "go", "rb", "php", "html", "css", "json", "xml", "yaml", "yml"].indexOf(ext) !== -1) { + return "code"; + } + + // Archives + if (["zip", "tar", "gz", "bz2", "xz", "7z", "rar"].indexOf(ext) !== -1) { + return "file-zip"; + } + + // Audio + if (["mp3", "wav", "flac", "ogg", "m4a", "aac", "wma"].indexOf(ext) !== -1) { + return "music"; + } + + // Video + if (["mp4", "mkv", "avi", "mov", "wmv", "flv", "webm"].indexOf(ext) !== -1) { + return "video"; + } + + // Spreadsheets + if (["xls", "xlsx", "ods", "csv"].indexOf(ext) !== -1) { + return "table"; + } + + // Presentations + if (["ppt", "pptx", "odp"].indexOf(ext) !== -1) { + return "presentation"; + } + + // Default + return "file"; + } + + function openFile(filePath) { + Logger.i("FileSearch", "Opening file:", filePath); + Quickshell.execDetached([fileOpener, filePath]); + launcher.close(); + } +} diff --git a/dotfiles/.config/noctalia/plugins/file-search/Main.qml b/dotfiles/.config/noctalia/plugins/file-search/Main.qml new file mode 100644 index 0000000..087fe1e --- /dev/null +++ b/dotfiles/.config/noctalia/plugins/file-search/Main.qml @@ -0,0 +1,68 @@ +import QtQuick +import Quickshell.Io +import qs.Commons +import qs.Services.UI + +Item { + property var pluginApi: null + + Component.onCompleted: { + if (pluginApi) { + Logger.i("FileSearch", "Plugin initialized"); + } + } + + IpcHandler { + target: "plugin:file-search" + + // Toggle launcher in file search mode + function toggle() { + if (!pluginApi) return; + + pluginApi.withCurrentScreen(screen => { + var launcherPanel = PanelService.getPanel("launcherPanel", screen); + if (!launcherPanel) { + Logger.e("FileSearch", "Could not get launcher panel"); + return; + } + + var searchText = launcherPanel.searchText || ""; + var isInFileMode = searchText.startsWith(">file"); + + if (!launcherPanel.isPanelOpen) { + // Launcher closed - open with file search + Logger.i("FileSearch", "Opening launcher in file search mode"); + launcherPanel.open(); + launcherPanel.setSearchText(">file "); + } else if (isInFileMode) { + // Already in file mode - close launcher + Logger.i("FileSearch", "Closing launcher (toggle off)"); + launcherPanel.close(); + } else { + // Launcher open but different mode - switch to file search + Logger.i("FileSearch", "Switching to file search mode"); + launcherPanel.setSearchText(">file "); + } + }); + } + + // Open launcher with file search and specific query + function search(query: string) { + if (!pluginApi) return; + + pluginApi.withCurrentScreen(screen => { + var launcherPanel = PanelService.getPanel("launcherPanel", screen); + if (!launcherPanel) { + Logger.e("FileSearch", "Could not get launcher panel"); + return; + } + + var searchQuery = query || ""; + Logger.i("FileSearch", "Opening launcher with search query:", searchQuery); + + launcherPanel.open(); + launcherPanel.setSearchText(">file " + searchQuery); + }); + } + } +} diff --git a/dotfiles/.config/noctalia/plugins/file-search/README.md b/dotfiles/.config/noctalia/plugins/file-search/README.md new file mode 100644 index 0000000..1d5ef34 --- /dev/null +++ b/dotfiles/.config/noctalia/plugins/file-search/README.md @@ -0,0 +1,25 @@ +# File Search Plugin + +File search from the launcher. + +## Requirements + +This plugin requires [fd](https://github.com/sharkdp/fd#installation) to be installed. + +## Usage + +**Access from launcher:** + +Type `>file` in the Noctalia launcher to activate file search. + +**Toggle file search:** + +```bash +noctalia-shell ipc call plugin:file-search toggle +``` + +**Search with pre-filled query:** + +```bash +noctalia-shell ipc call plugin:file-search search "eko" +``` diff --git a/dotfiles/.config/noctalia/plugins/file-search/Settings.qml b/dotfiles/.config/noctalia/plugins/file-search/Settings.qml new file mode 100644 index 0000000..fc7ed87 --- /dev/null +++ b/dotfiles/.config/noctalia/plugins/file-search/Settings.qml @@ -0,0 +1,142 @@ +import QtQuick +import QtQuick.Layouts +import qs.Commons +import qs.Widgets + +ColumnLayout { + id: root + + property var pluginApi: null + + property var cfg: pluginApi?.pluginSettings || ({}) + property var defaults: pluginApi?.manifest?.metadata?.defaultSettings || ({}) + + property bool valueShowHidden: cfg.showHidden ?? defaults.showHidden + property int valueMaxResults: cfg.maxResults ?? defaults.maxResults + property string valueFileOpener: cfg.fileOpener ?? defaults.fileOpener + property string valueFdCommand: cfg.fdCommand ?? defaults.fdCommand + property string valueSearchDirectory: cfg.searchDirectory ?? defaults.searchDirectory + + spacing: Style.marginL + + Component.onCompleted: { + Logger.d("FileSearch", "Settings UI loaded"); + } + + ColumnLayout { + spacing: Style.marginM + Layout.fillWidth: true + + // Show Hidden Files Toggle + RowLayout { + Layout.fillWidth: true + spacing: Style.marginM + + ColumnLayout { + Layout.fillWidth: true + spacing: Style.marginS + + NText { + text: pluginApi?.tr("settings.showHidden.label") + font.pointSize: Style.fontSizeL + font.weight: Font.Medium + color: Color.mOnSurface + Layout.fillWidth: true + } + } + + NToggle { + checked: root.valueShowHidden + onToggled: root.valueShowHidden = checked + } + } + + // File Opener Input + NTextInput { + Layout.fillWidth: true + label: pluginApi?.tr("settings.fileOpener.label") + description: pluginApi?.tr("settings.fileOpener.description") + placeholderText: pluginApi?.tr("settings.fileOpener.placeholder") + text: root.valueFileOpener + onTextChanged: root.valueFileOpener = text + } + + // Search Directory Input + NTextInput { + Layout.fillWidth: true + label: pluginApi?.tr("settings.searchDirectory.label") + description: pluginApi?.tr("settings.searchDirectory.description") + placeholderText: pluginApi?.tr("settings.searchDirectory.placeholder") + text: root.valueSearchDirectory + onTextChanged: root.valueSearchDirectory = text + } + + // fd Command Path Input + NTextInput { + Layout.fillWidth: true + label: pluginApi?.tr("settings.fdCommand.label") + description: pluginApi?.tr("settings.fdCommand.description") + placeholderText: pluginApi?.tr("settings.fdCommand.placeholder") + text: root.valueFdCommand + onTextChanged: root.valueFdCommand = text + } + } + + // Max Results Slider + ColumnLayout { + Layout.fillWidth: true + spacing: Style.marginS + + RowLayout { + Layout.fillWidth: true + + NText { + text: pluginApi?.tr("settings.maxResults.label") + font.pointSize: Style.fontSizeL + font.weight: Font.Medium + color: Color.mOnSurface + Layout.fillWidth: true + } + + NText { + text: root.valueMaxResults === 0 ? pluginApi?.tr("settings.maxResults.unlimited") : root.valueMaxResults.toString() + font.pointSize: Style.fontSizeM + font.weight: Font.Medium + color: Color.mPrimary + } + } + + NText { + text: pluginApi?.tr("settings.maxResults.description") + font.pointSize: Style.fontSizeS + color: Color.mOnSurfaceVariant + wrapMode: Text.WordWrap + Layout.fillWidth: true + } + + NSlider { + Layout.fillWidth: true + from: 0 + to: 1000 + stepSize: 10 + value: root.valueMaxResults + onMoved: root.valueMaxResults = Math.round(value) + } + } + + function saveSettings() { + if (!pluginApi) { + Logger.e("FileSearch", "Cannot save settings: pluginApi is null"); + return; + } + + pluginApi.pluginSettings.showHidden = root.valueShowHidden; + pluginApi.pluginSettings.maxResults = root.valueMaxResults; + pluginApi.pluginSettings.fileOpener = root.valueFileOpener; + pluginApi.pluginSettings.searchDirectory = root.valueSearchDirectory; + pluginApi.pluginSettings.fdCommand = root.valueFdCommand; + pluginApi.saveSettings(); + + Logger.d("FileSearch", "Settings saved successfully"); + } +} diff --git a/dotfiles/.config/noctalia/plugins/file-search/i18n/en.json b/dotfiles/.config/noctalia/plugins/file-search/i18n/en.json new file mode 100644 index 0000000..8a56924 --- /dev/null +++ b/dotfiles/.config/noctalia/plugins/file-search/i18n/en.json @@ -0,0 +1,55 @@ +{ + "provider": { + "name": "File Search" + }, + "launcher": { + "command": { + "description": "Search files and folders" + }, + "errors": { + "fdNotFound": { + "title": "fd not found", + "description": "Please install fd to use file search" + } + }, + "prompts": { + "emptyQuery": { + "title": "Type to search files and folders", + "description": "Start typing to search in {{root}}" + }, + "searching": { + "title": "Searching...", + "description": "Looking for files and folders matching: {{query}}" + }, + "noResults": { + "title": "No results found", + "description": "No files or folders matching '{{query}}'" + } + } + }, + "settings": { + "showHidden": { + "label": "Include hidden files" + }, + "fileOpener": { + "label": "File opener command", + "description": "Command used to open files and folders", + "placeholder": "xdg-open" + }, + "searchDirectory": { + "label": "Search directory", + "description": "Directory to search for files and folders", + "placeholder": "~" + }, + "fdCommand": { + "label": "fd command path", + "description": "Command name or full path", + "placeholder": "fd" + }, + "maxResults": { + "label": "Maximum results", + "unlimited": "Unlimited", + "description": "Limit the number of search results displayed (set to 0 for unlimited)" + } + } +} diff --git a/dotfiles/.config/noctalia/plugins/file-search/i18n/fr.json b/dotfiles/.config/noctalia/plugins/file-search/i18n/fr.json new file mode 100644 index 0000000..361e020 --- /dev/null +++ b/dotfiles/.config/noctalia/plugins/file-search/i18n/fr.json @@ -0,0 +1,55 @@ +{ + "provider": { + "name": "Recherche de fichiers" + }, + "launcher": { + "command": { + "description": "Rechercher des fichiers et des dossiers" + }, + "errors": { + "fdNotFound": { + "title": "fd non trouvé", + "description": "Veuillez installer fd pour utiliser la recherche de fichiers" + } + }, + "prompts": { + "emptyQuery": { + "title": "Tapez pour rechercher des fichiers et des dossiers", + "description": "Commencez à taper pour rechercher dans {{root}}" + }, + "searching": { + "title": "Recherche en cours...", + "description": "Recherche de fichiers et dossiers correspondant à : {{query}}" + }, + "noResults": { + "title": "Aucun résultat trouvé", + "description": "Aucun fichier ou dossier ne correspond à '{{query}}'" + } + } + }, + "settings": { + "showHidden": { + "label": "Inclure les fichiers cachés" + }, + "fileOpener": { + "label": "Commande d'ouverture de fichier", + "description": "Commande utilisée pour ouvrir les fichiers et dossiers", + "placeholder": "xdg-open" + }, + "searchDirectory": { + "label": "Répertoire de recherche", + "description": "Répertoire où rechercher des fichiers et des dossiers", + "placeholder": "~" + }, + "fdCommand": { + "label": "Chemin de la commande fd", + "description": "Nom de la commande ou chemin complet", + "placeholder": "fd" + }, + "maxResults": { + "label": "Nombre maximal de résultats", + "unlimited": "Illimité", + "description": "Limiter le nombre de résultats de recherche affichés (définir à 0 pour illimité)" + } + } +} diff --git a/dotfiles/.config/noctalia/plugins/file-search/i18n/zh-CN.json b/dotfiles/.config/noctalia/plugins/file-search/i18n/zh-CN.json new file mode 100644 index 0000000..446924e --- /dev/null +++ b/dotfiles/.config/noctalia/plugins/file-search/i18n/zh-CN.json @@ -0,0 +1,55 @@ +{ + "provider": { + "name": "æä»¶æçŽ¢" + }, + "launcher": { + "command": { + "description": "æçŽ¢æä»¶åæä»¶å€¹" + }, + "errors": { + "fdNotFound": { + "title": "æªæŸå° fd", + "description": "请å®è£
fd ä»¥äœ¿çšæä»¶æçŽ¢" + } + }, + "prompts": { + "emptyQuery": { + "title": "èŸå
¥ä»¥æçŽ¢æä»¶åæä»¶å€¹", + "description": "åŒå§èŸå
¥ä»¥åš {{root}} äžæçŽ¢" + }, + "searching": { + "title": "æ£åšæçŽ¢âŠ", + "description": "æ£å𿥿Ÿå¹é
{{query}} çæä»¶åæä»¶å€¹" + }, + "noResults": { + "title": "æªæŸå°ç»æ", + "description": "没æå¹é
'{{query}}' çæä»¶ææä»¶å€¹" + } + } + }, + "settings": { + "showHidden": { + "label": "å
å«éèæä»¶" + }, + "fileOpener": { + "label": "æä»¶æåŒåœä»€", + "description": "çšäºæåŒæä»¶åæä»¶å€¹çåœä»€", + "placeholder": "xdg-open" + }, + "searchDirectory": { + "label": "æçŽ¢ç®åœ", + "description": "çšäºæçŽ¢æä»¶åæä»¶å€¹çç®åœ", + "placeholder": "~" + }, + "fdCommand": { + "label": "fd åœä»€è·¯åŸ", + "description": "åœä»€åç§°æå®æŽè·¯åŸ", + "placeholder": "fd" + }, + "maxResults": { + "label": "æå€§ç»ææ°", + "unlimited": "æ éå¶", + "description": "éå¶æŸç€ºçæçŽ¢ç»ææ°éïŒè®Ÿäžº 0 衚瀺æ éå¶ïŒ" + } + } +} diff --git a/dotfiles/.config/noctalia/plugins/file-search/i18n/zh-TW.json b/dotfiles/.config/noctalia/plugins/file-search/i18n/zh-TW.json new file mode 100644 index 0000000..0a31b1a --- /dev/null +++ b/dotfiles/.config/noctalia/plugins/file-search/i18n/zh-TW.json @@ -0,0 +1,55 @@ +{ + "provider": { + "name": "æªæ¡æå°" + }, + "launcher": { + "command": { + "description": "æå°æªæ¡èè³æå€Ÿ" + }, + "errors": { + "fdNotFound": { + "title": "æŸäžå° fd", + "description": "è«å®è£ fd ä»¥äœ¿çšæªæ¡æå°" + } + }, + "prompts": { + "emptyQuery": { + "title": "茞å
¥ä»¥æå°æªæ¡èè³æå€Ÿ", + "description": "éå§èŒžå
¥ä»¥åš {{root}} äžæå°" + }, + "searching": { + "title": "æ£åšæå°âŠ", + "description": "æ£åšå°æŸç¬Šå {{query}} çæªæ¡èè³æå€Ÿ" + }, + "noResults": { + "title": "æŸäžå°çµæ", + "description": "æ²æç¬Šå '{{query}}' çæªæ¡æè³æå€Ÿ" + } + } + }, + "settings": { + "showHidden": { + "label": "å
å«é±èæªæ¡" + }, + "fileOpener": { + "label": "æªæ¡éååœä»€", + "description": "çšæŒéåæªæ¡èè³æå€Ÿçåœä»€", + "placeholder": "xdg-open" + }, + "searchDirectory": { + "label": "æå°ç®é", + "description": "çšæŒæå°æªæ¡èè³æå€Ÿçç®é", + "placeholder": "~" + }, + "fdCommand": { + "label": "fd åœä»€è·¯åŸ", + "description": "åœä»€åçš±æå®æŽè·¯åŸ", + "placeholder": "fd" + }, + "maxResults": { + "label": "æå€§çµææž", + "unlimited": "ç¡éå¶", + "description": "éå¶é¡¯ç€ºçæå°çµææžéïŒèšçº 0 衚瀺ç¡éå¶ïŒ" + } + } +} diff --git a/dotfiles/.config/noctalia/plugins/file-search/manifest.json b/dotfiles/.config/noctalia/plugins/file-search/manifest.json new file mode 100644 index 0000000..0d0facf --- /dev/null +++ b/dotfiles/.config/noctalia/plugins/file-search/manifest.json @@ -0,0 +1,31 @@ +{ + "id": "file-search", + "name": "File Search", + "version": "1.0.4", + "minNoctaliaVersion": "4.1.2", + "author": "ericbreh", + "license": "MIT", + "repository": "https://github.com/noctalia-dev/noctalia-plugins", + "description": "File search from the launcher.", + "tags": [ + "Launcher", + "Productivity" + ], + "entryPoints": { + "main": "Main.qml", + "launcherProvider": "LauncherProvider.qml", + "settings": "Settings.qml" + }, + "dependencies": { + "plugins": [] + }, + "metadata": { + "defaultSettings": { + "showHidden": false, + "maxResults": 100, + "fileOpener": "xdg-open", + "searchDirectory": "~", + "fdCommand": "fd" + } + } +} diff --git a/dotfiles/.config/noctalia/plugins/file-search/preview.png b/dotfiles/.config/noctalia/plugins/file-search/preview.png Binary files differnew file mode 100644 index 0000000..e6cf000 --- /dev/null +++ b/dotfiles/.config/noctalia/plugins/file-search/preview.png diff --git a/dotfiles/.config/noctalia/settings.json b/dotfiles/.config/noctalia/settings.json new file mode 100644 index 0000000..ae5fc9a --- /dev/null +++ b/dotfiles/.config/noctalia/settings.json @@ -0,0 +1,749 @@ +{ + "appLauncher": { + "autoPasteClipboard": false, + "clipboardWatchImageCommand": "wl-paste --type image --watch cliphist store", + "clipboardWatchTextCommand": "wl-paste --type text --watch cliphist store", + "clipboardWrapText": true, + "customLaunchPrefix": "", + "customLaunchPrefixEnabled": false, + "density": "default", + "enableClipPreview": true, + "enableClipboardChips": true, + "enableClipboardHistory": false, + "enableClipboardSmartIcons": true, + "enableSessionSearch": true, + "enableSettingsSearch": true, + "enableWindowsSearch": true, + "iconMode": "native", + "ignoreMouseInput": false, + "overviewLayer": false, + "pinnedApps": [ + ], + "position": "top_center", + "screenshotAnnotationTool": "", + "showCategories": true, + "showIconBackground": false, + "sortByMostUsed": true, + "terminalCommand": "alacritty -e", + "viewMode": "list" + }, + "audio": { + "mprisBlacklist": [ + ], + "preferredPlayer": "", + "spectrumFrameRate": 30, + "spectrumMirrored": true, + "visualizerType": "linear", + "volumeFeedback": false, + "volumeFeedbackSoundFile": "", + "volumeOverdrive": false, + "volumeStep": 2 + }, + "bar": { + "autoHideDelay": 500, + "autoShowDelay": 150, + "backgroundOpacity": 0.93, + "barType": "simple", + "capsuleColorKey": "none", + "capsuleOpacity": 1, + "contentPadding": 2, + "density": "default", + "displayMode": "always_visible", + "enableExclusionZoneInset": true, + "fontScale": 1.05, + "frameRadius": 12, + "frameThickness": 8, + "hideOnOverview": false, + "marginHorizontal": 4, + "marginVertical": 4, + "middleClickAction": "none", + "middleClickCommand": "", + "middleClickFollowMouse": false, + "monitors": [ + ], + "mouseWheelAction": "none", + "mouseWheelWrap": true, + "outerCorners": true, + "position": "top", + "reverseScroll": false, + "rightClickAction": "controlCenter", + "rightClickCommand": "", + "rightClickFollowMouse": true, + "screenOverrides": [ + ], + "showCapsule": true, + "showOnWorkspaceSwitch": true, + "showOutline": false, + "useSeparateOpacity": false, + "widgetSpacing": 2, + "widgets": { + "center": [ + ], + "left": [ + { + "colorizeSystemIcon": "secondary", + "colorizeSystemText": "none", + "customIconPath": "", + "enableColorization": true, + "icon": "rocket", + "iconColor": "none", + "id": "Launcher", + "useDistroLogo": true + }, + { + "colorizeDistroLogo": false, + "colorizeSystemIcon": "secondary", + "colorizeSystemText": "none", + "customIconPath": "", + "enableColorization": true, + "icon": "adjustments-horizontal", + "id": "ControlCenter", + "useDistroLogo": false + }, + { + "clockColor": "primary", + "customFont": "", + "formatHorizontal": "yyyy幎MMæddæ¥ HH:mm:ss", + "formatVertical": "HH mm - dd MM", + "id": "Clock", + "tooltipFormat": "HH:mm ddd, MMM dd", + "useCustomFont": false + }, + { + "characterCount": 2, + "colorizeIcons": false, + "emptyColor": "secondary", + "enableScrollWheel": true, + "focusedColor": "primary", + "followFocusedScreen": false, + "fontWeight": "bold", + "groupedBorderOpacity": 1, + "hideUnoccupied": false, + "iconScale": 0.8, + "id": "Workspace", + "labelMode": "index", + "occupiedColor": "secondary", + "pillSize": 0.6, + "showApplications": true, + "showApplicationsHover": true, + "showBadge": true, + "showLabelsOnlyWhenOccupied": true, + "unfocusedIconsOpacity": 1 + }, + { + "compactMode": false, + "hideMode": "visible", + "hideWhenIdle": false, + "id": "MediaMini", + "maxWidth": 300, + "panelShowAlbumArt": true, + "scrollingMode": "hover", + "showAlbumArt": true, + "showArtistFirst": true, + "showProgressRing": true, + "showVisualizer": false, + "textColor": "none", + "useFixedWidth": false, + "visualizerType": "linear" + }, + { + "displayMode": "alwaysShow", + "iconColor": "primary", + "id": "Volume", + "middleClickCommand": "pwvucontrol || pavucontrol", + "textColor": "none" + } + ], + "right": [ + { + "hideWhenZero": true, + "hideWhenZeroUnread": false, + "iconColor": "none", + "id": "NotificationHistory", + "showUnreadBadge": true, + "unreadBadgeColor": "primary" + }, + { + "deviceNativePath": "__default__", + "displayMode": "graphic", + "hideIfIdle": false, + "hideIfNotDetected": true, + "id": "Battery", + "showNoctaliaPerformance": false, + "showPowerProfiles": false + }, + { + "compactMode": false, + "diskPath": "/", + "iconColor": "secondary", + "id": "SystemMonitor", + "showCpuCores": false, + "showCpuFreq": false, + "showCpuTemp": true, + "showCpuUsage": true, + "showDiskAvailable": false, + "showDiskUsage": false, + "showDiskUsageAsPercent": false, + "showGpuTemp": false, + "showLoadAverage": false, + "showMemoryAsPercent": false, + "showMemoryUsage": true, + "showNetworkStats": false, + "showSwapUsage": false, + "textColor": "none", + "useMonospaceFont": true, + "usePadding": false + }, + { + "applyToAllMonitors": false, + "displayMode": "onhover", + "iconColor": "secondary", + "id": "Brightness", + "textColor": "none" + }, + { + "displayMode": "forceOpen", + "iconColor": "primary", + "id": "KeyboardLayout", + "showIcon": true, + "textColor": "none" + }, + { + "displayMode": "onhover", + "iconColor": "none", + "id": "Network", + "textColor": "none" + }, + { + "blacklist": [ + ], + "chevronColor": "none", + "colorizeIcons": false, + "drawerEnabled": false, + "hidePassive": false, + "id": "Tray", + "pinned": [ + ] + } + ] + } + }, + "brightness": { + "backlightDeviceMappings": [ + ], + "brightnessStep": 5, + "enableDdcSupport": false, + "enforceMinimum": true + }, + "calendar": { + "cards": [ + { + "enabled": true, + "id": "calendar-header-card" + }, + { + "enabled": true, + "id": "calendar-month-card" + }, + { + "enabled": true, + "id": "weather-card" + } + ] + }, + "colorSchemes": { + "darkMode": true, + "generationMethod": "content", + "manualSunrise": "06:30", + "manualSunset": "18:30", + "monitorForColors": "", + "predefinedScheme": "Vesper", + "schedulingMode": "off", + "syncGsettings": true, + "useWallpaperColors": false + }, + "controlCenter": { + "cards": [ + { + "enabled": true, + "id": "profile-card" + }, + { + "enabled": true, + "id": "shortcuts-card" + }, + { + "enabled": true, + "id": "audio-card" + }, + { + "enabled": false, + "id": "brightness-card" + }, + { + "enabled": true, + "id": "weather-card" + }, + { + "enabled": true, + "id": "media-sysmon-card" + } + ], + "diskPath": "/", + "position": "close_to_bar_button", + "shortcuts": { + "left": [ + { + "id": "Network" + }, + { + "id": "Bluetooth" + }, + { + "id": "WallpaperSelector" + }, + { + "id": "NoctaliaPerformance" + } + ], + "right": [ + { + "id": "Notifications" + }, + { + "id": "PowerProfile" + }, + { + "id": "KeepAwake" + }, + { + "id": "NightLight" + } + ] + } + }, + "desktopWidgets": { + "enabled": true, + "gridSnap": true, + "gridSnapScale": true, + "monitorWidgets": [ + { + "name": "DP-1", + "widgets": [ + ] + }, + { + "name": "HDMI-A-1", + "widgets": [ + { + "hideMode": "visible", + "id": "MediaPlayer", + "roundedCorners": true, + "scale": 0.95, + "showAlbumArt": true, + "showBackground": true, + "showButtons": true, + "showVisualizer": true, + "visualizerType": "linear", + "x": 1500, + "y": 400 + }, + { + "id": "Weather", + "roundedCorners": true, + "scale": 1.035742359088177, + "showBackground": true, + "x": 1500, + "y": 280 + } + ] + } + ], + "overviewEnabled": true + }, + "dock": { + "animationSpeed": 1, + "backgroundOpacity": 1, + "colorizeIcons": false, + "deadOpacity": 0.6, + "displayMode": "auto_hide", + "dockType": "floating", + "enabled": true, + "floatingRatio": 0.14, + "groupApps": false, + "groupClickAction": "cycle", + "groupContextMenuMode": "extended", + "groupIndicatorStyle": "dots", + "inactiveIndicators": false, + "indicatorColor": "primary", + "indicatorOpacity": 0.6, + "indicatorThickness": 3, + "launcherIcon": "", + "launcherIconColor": "secondary", + "launcherPosition": "start", + "launcherUseDistroLogo": true, + "monitors": [ + ], + "onlySameOutput": true, + "pinnedApps": [ + ], + "pinnedStatic": false, + "position": "bottom", + "showDockIndicator": false, + "showLauncherIcon": true, + "sitOnFrame": false, + "size": 1 + }, + "general": { + "allowPanelsOnScreenWithoutBar": true, + "allowPasswordWithFprintd": false, + "animationDisabled": false, + "animationSpeed": 2, + "autoStartAuth": false, + "avatarImage": "/home/yaroslav/.face", + "boxRadiusRatio": 1, + "clockFormat": "hh\\nmm", + "clockStyle": "analog", + "compactLockScreen": false, + "dimmerOpacity": 0.2, + "enableBlurBehind": true, + "enableLockScreenCountdown": true, + "enableLockScreenMediaControls": true, + "enableShadows": true, + "forceBlackScreenCorners": false, + "iRadiusRatio": 1, + "keybinds": { + "keyDown": [ + "Down", + "Ctrl+J" + ], + "keyEnter": [ + "Return", + "Enter" + ], + "keyEscape": [ + "Esc" + ], + "keyLeft": [ + "Left", + "Ctrl+H" + ], + "keyRemove": [ + "Del", + "Ctrl+W" + ], + "keyRight": [ + "Right", + "Ctrl+L" + ], + "keyUp": [ + "Up", + "Ctrl+K" + ] + }, + "language": "", + "lockOnSuspend": true, + "lockScreenAnimations": true, + "lockScreenBlur": 0, + "lockScreenCountdownDuration": 3000, + "lockScreenMonitors": [ + ], + "lockScreenTint": 0, + "passwordChars": false, + "radiusRatio": 0.34, + "reverseScroll": false, + "scaleRatio": 1, + "screenRadiusRatio": 1, + "shadowDirection": "bottom_right", + "shadowOffsetX": 2, + "shadowOffsetY": 3, + "showChangelogOnStartup": true, + "showHibernateOnLockScreen": false, + "showScreenCorners": false, + "showSessionButtonsOnLockScreen": true, + "smoothScrollEnabled": false, + "telemetryEnabled": false + }, + "hooks": { + "colorGeneration": "", + "darkModeChange": "", + "enabled": false, + "performanceModeDisabled": "", + "performanceModeEnabled": "", + "screenLock": "", + "screenUnlock": "", + "session": "", + "startup": "", + "wallpaperChange": "" + }, + "idle": { + "customCommands": "[]", + "enabled": true, + "fadeDuration": 5, + "lockCommand": "", + "lockTimeout": 660, + "resumeLockCommand": "", + "resumeScreenOffCommand": "", + "resumeSuspendCommand": "", + "screenOffCommand": "", + "screenOffTimeout": 600, + "suspendCommand": "", + "suspendTimeout": 0 + }, + "location": { + "analogClockInCalendar": true, + "autoLocate": false, + "firstDayOfWeek": -1, + "hideWeatherCityName": false, + "hideWeatherTimezone": false, + "name": "ÑеÑÑÑПÑеÑк", + "showCalendarEvents": true, + "showCalendarWeather": true, + "showWeekNumberInCalendar": false, + "use12hourFormat": false, + "useFahrenheit": false, + "weatherEnabled": true, + "weatherShowEffects": true, + "weatherTaliaMascotAlways": false + }, + "network": { + "bluetoothAutoConnect": true, + "bluetoothDetailsViewMode": "grid", + "bluetoothHideUnnamedDevices": false, + "bluetoothRssiPollIntervalMs": 60000, + "bluetoothRssiPollingEnabled": false, + "disableDiscoverability": false, + "networkPanelView": "wifi", + "wifiDetailsViewMode": "list" + }, + "nightLight": { + "autoSchedule": true, + "dayTemp": "6500", + "enabled": false, + "forced": false, + "manualSunrise": "06:30", + "manualSunset": "18:30", + "nightTemp": "4000" + }, + "noctaliaPerformance": { + "disableDesktopWidgets": true, + "disableWallpaper": false + }, + "notifications": { + "backgroundOpacity": 1, + "clearDismissed": true, + "criticalUrgencyDuration": 15, + "density": "compact", + "enableBatteryToast": true, + "enableKeyboardLayoutToast": false, + "enableMarkdown": false, + "enableMediaToast": false, + "enabled": true, + "location": "top_right", + "lowUrgencyDuration": 3, + "monitors": [ + ], + "normalUrgencyDuration": 5, + "overlayLayer": true, + "respectExpireTimeout": false, + "saveToHistory": { + "critical": true, + "low": true, + "normal": true + }, + "sounds": { + "criticalSoundFile": "", + "enabled": false, + "excludedApps": "discord,firefox,chrome,chromium,edge", + "lowSoundFile": "", + "normalSoundFile": "", + "separateSounds": false, + "volume": 0.5 + } + }, + "osd": { + "autoHideMs": 2000, + "backgroundOpacity": 1, + "enabled": true, + "enabledTypes": [ + 0, + 1, + 2 + ], + "location": "left", + "monitors": [ + ], + "overlayLayer": true + }, + "plugins": { + "autoUpdate": false, + "notifyUpdates": true + }, + "sessionMenu": { + "countdownDuration": 10000, + "enableCountdown": false, + "largeButtonsLayout": "grid", + "largeButtonsStyle": true, + "position": "center", + "powerOptions": [ + { + "action": "lock", + "command": "", + "countdownEnabled": true, + "enabled": true, + "keybind": "1" + }, + { + "action": "suspend", + "command": "", + "countdownEnabled": true, + "enabled": true, + "keybind": "2" + }, + { + "action": "hibernate", + "command": "", + "countdownEnabled": true, + "enabled": true, + "keybind": "3" + }, + { + "action": "reboot", + "command": "", + "countdownEnabled": true, + "enabled": true, + "keybind": "4" + }, + { + "action": "logout", + "command": "", + "countdownEnabled": true, + "enabled": true, + "keybind": "5" + }, + { + "action": "shutdown", + "command": "", + "countdownEnabled": true, + "enabled": true, + "keybind": "6" + }, + { + "action": "rebootToUefi", + "command": "", + "countdownEnabled": true, + "enabled": true, + "keybind": "7" + }, + { + "action": "userspaceReboot", + "command": "", + "countdownEnabled": true, + "enabled": false, + "keybind": "" + } + ], + "showHeader": true, + "showKeybinds": true + }, + "settingsVersion": 59, + "systemMonitor": { + "batteryCriticalThreshold": 5, + "batteryWarningThreshold": 20, + "cpuCriticalThreshold": 90, + "cpuWarningThreshold": 80, + "criticalColor": "#a7cce1", + "diskAvailCriticalThreshold": 10, + "diskAvailWarningThreshold": 20, + "diskCriticalThreshold": 90, + "diskWarningThreshold": 80, + "enableDgpuMonitoring": false, + "externalMonitor": "resources || missioncenter || jdsystemmonitor || corestats || system-monitoring-center || gnome-system-monitor || plasma-systemmonitor || mate-system-monitor || ukui-system-monitor || deepin-system-monitor || pantheon-system-monitor", + "gpuCriticalThreshold": 90, + "gpuWarningThreshold": 80, + "memCriticalThreshold": 90, + "memWarningThreshold": 80, + "swapCriticalThreshold": 90, + "swapWarningThreshold": 80, + "tempCriticalThreshold": 90, + "tempWarningThreshold": 80, + "useCustomColors": true, + "warningColor": "#e8b8a8" + }, + "templates": { + "activeTemplates": [ + { + "enabled": true, + "id": "telegram" + }, + { + "enabled": true, + "id": "niri" + } + ], + "enableUserTheming": false + }, + "ui": { + "boxBorderEnabled": true, + "fontDefault": "monospace", + "fontDefaultScale": 1, + "fontFixed": "monospace", + "fontFixedScale": 1, + "panelBackgroundOpacity": 0.8, + "panelsAttachedToBar": true, + "scrollbarAlwaysVisible": true, + "settingsPanelMode": "attached", + "settingsPanelSideBarCardStyle": false, + "tooltipsEnabled": true, + "translucentWidgets": true + }, + "wallpaper": { + "automationEnabled": false, + "directory": "/home/yaroslav/pics/wallpapers", + "enableMultiMonitorDirectories": false, + "enabled": true, + "favorites": [ + ], + "fillColor": "#000000", + "fillMode": "crop", + "hideWallpaperFilenames": false, + "linkLightAndDarkWallpapers": true, + "monitorDirectories": [ + ], + "overviewBlur": 0.8, + "overviewEnabled": true, + "overviewTint": 0.5, + "panelPosition": "follow_bar", + "randomIntervalSec": 300, + "setWallpaperOnAllMonitors": true, + "showHiddenFiles": false, + "skipStartupTransition": false, + "solidColor": "#1a1a2e", + "sortOrder": "name", + "transitionDuration": 1500, + "transitionEdgeSmoothness": 0.05, + "transitionType": [ + "fade", + "disc", + "stripes", + "wipe", + "pixelate", + "honeycomb" + ], + "useOriginalImages": false, + "useSolidColor": false, + "useWallhaven": false, + "viewMode": "browse", + "wallhavenApiKey": "", + "wallhavenCategories": "111", + "wallhavenOrder": "desc", + "wallhavenPurity": "100", + "wallhavenQuery": "", + "wallhavenRatios": "", + "wallhavenResolutionHeight": "", + "wallhavenResolutionMode": "atleast", + "wallhavenResolutionWidth": "", + "wallhavenSorting": "relevance", + "wallpaperChangeMode": "random" + } +} diff --git a/dotfiles/.config/noctalia/user-templates.toml b/dotfiles/.config/noctalia/user-templates.toml new file mode 100644 index 0000000..e490907 --- /dev/null +++ b/dotfiles/.config/noctalia/user-templates.toml @@ -0,0 +1,17 @@ +[config] + +[templates] + +# User-defined templates +# Add your custom templates below +# Example: +# [templates.myapp] +# input_path = "~/.config/noctalia/templates/myapp.css" +# output_path = "~/.config/myapp/theme.css" +# post_hook = "myapp --reload-theme" + +# Remove this section and add your own templates +#[templates.placeholder] +#input_path = "/etc/xdg/quickshell/noctalia-shell/Assets/Templates/noctalia.json" +#output_path = "/home/yaroslav/.cache/noctalia/placeholder.json" + diff --git a/dotfiles/.config/qutebrowser/config.py b/dotfiles/.config/qutebrowser/config.py index b2d7492..e1e1fdf 100644 --- a/dotfiles/.config/qutebrowser/config.py +++ b/dotfiles/.config/qutebrowser/config.py @@ -73,8 +73,8 @@ c.downloads.remove_finished = 3000 c.url.searchengines = { "DEFAULT": "https://search.rhscz.eu/search?q={}" } -c.url.default_page = "https://takeoff.mriya.space/" -c.url.start_pages = "https://takeoff.mriya.space/" +c.url.default_page = "https://duckduckgo.com/" +c.url.start_pages = "https://duckduckgo.com/" ## Default fonts c.fonts.default_size = "11pt" diff --git a/dotfiles/.config/rofi/config.rasi b/dotfiles/.config/rofi/config.rasi index 33fce35..b4e5827 100644 --- a/dotfiles/.config/rofi/config.rasi +++ b/dotfiles/.config/rofi/config.rasi @@ -17,7 +17,7 @@ configuration { /* icon-theme: ;*/ /* drun-match-fields: "name,generic,exec,categories,keywords";*/ /* drun-categories: ;*/ -/* drun-show-actions: false;*/ + drun-show-actions: true; /* drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";*/ /* drun-url-launcher: "xdg-open";*/ /* disable-history: false;*/ diff --git a/dotfiles/.config/swaylock/config b/dotfiles/.config/swaylock/config index bb4dec0..19576ae 100644 --- a/dotfiles/.config/swaylock/config +++ b/dotfiles/.config/swaylock/config @@ -3,7 +3,7 @@ font=monospace scaling=fill indicator-radius=120 show-failed-attempts -inside-color=#000000bb +inside-color=#00000033 inside-ver-color=#3f6e90 inside-wrong-color=#b73030 inside-clear-color=#a1a6b2cc @@ -27,6 +27,6 @@ clock indicator image=~/.config/wall1.png datestr=%a, %F -effect-blur=10x5 +#effect-blur=10x5 show-keyboard-layout -layout-bg-color=#000000bb +layout-bg-color=#00000033 diff --git a/dotfiles/.config/waybar/config b/dotfiles/.config/waybar/config index f3a71da..403da07 100644 --- a/dotfiles/.config/waybar/config +++ b/dotfiles/.config/waybar/config @@ -1,224 +1,28 @@ // vim: filetype=json -{ +[{ "layer": "top", - "height": 32, + "height": 34, + "include": [ "~/.config/waybar/modules.json" ], "modules-left": [ - "sway/workspaces", + "clock", "niri/workspaces", - "sway/mode", - "custom/waybar-mpris", - "pulseaudio" + "mpris", + "wireplumber" ], "modules-center": [ - "clock", - "custom/weather" ], "modules-right": [ - "custom/rec-status", - "custom/swaykbd", + "custom/weather", "custom/mail-status", + "cpu", "memory", "backlight", "battery#bat0", "battery#bat1", "custom/batwatt", + "custom/torrent-status", "network", "niri/language", - "custom/torrent-status", - "tray" - ], - "sway/mode": { - "format": "<span style=\"italic\">{}</span>" - }, - "custom/waybar-mpris": { - "return-type": "json", - "exec": "waybar-mpris --autofocus --text-format=\"%i [%p] %a - %t\" --tooltip-format=\"%t by %a from %A\n%p/%d\n(%P)\" --pause='<span color=\"#5b8277\">ï</span>' --play='ï' --max-title 30", - "on-click": "lmc toggle", - "on-click-right": "lmc next" - }, - "mpd": { - "format": " {stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon} [{elapsedTime:%M:%S}] {artist} - {title}", - "format-disconnected": " Connection lost ", - "format-stopped": " ï {consumeIcon}{randomIcon}{repeatIcon}{singleIcon} [--:--] -- - --", - "unknown-tag": "N/A", - "interval": 2, - "max-length": 60, - "consume-icons": { - "on": "ï " - }, - "random-icons": { - "on": "ïŽ" - }, - "repeat-icons": { - "on": "ï " - }, - "single-icons": { - "on": "[s]" - }, - "state-icons": { - "paused": "<span color=\"#b2872f\">ï</span>", - "playing": "<span color=\"#5b8277\">ï</span>" - }, - "tooltip-format": "MPD now playing: {artist} - {title}", - "tooltip-format-disconnected": "MPD disconnected" - }, - "idle_inhibitor": { - "format": "{icon}", - "format-icons": { - "activated": "ï®", - "deactivated": "ï°" - } - }, - "tray": { - "icon-size": 16, - "spacing": 10 - }, - "clock": { - "format": "{:%Y幎%mæ%dæ¥ %H:%M:%S}", - "tooltip-format": "{calendar}", - "calendar": { - "mode": "year", - "mode-mon-col": 3 - }, - "interval": 1 - }, - "cpu": { - "format": "{usage}% ï", - "tooltip": false - }, - "memory": { - "format": "<span color=\"#5b8277\">ï</span> {used:0.3f}G", - "states": { - "warning": 90 - }, - "interval": 10 - }, - "temperature": { - // "thermal-zone": 2, - // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", - "critical-threshold": 80, - // "format-critical": "{temperatureC}°C {icon}", - "format": "{temperatureC}°C {icon}", - "format-icons": ["ï«", "ï", "ï©"] - }, - "backlight": { - // "device": "acpi_video1", - "format": "<span color=\"#5b8277\">{icon}</span> {percent}%", - "format-icons": ["ïª", "ï
"] - }, - "battery#bat0": { - "bat": "BAT0", - "format": "{icon} {capacity}%", - "format-charging": " <span color=\"#5b8277\">ïŠ</span> {capacity}%", - "format-plugged": "<span color=\"#5b8277\">ïŠ</span> {capacity}%", - "format-icons": [ - "<span color=\"#b73030\">ï</span>", - "<span color=\"#b2872f\">ï</span>", - "<span color=\"#5b8277\">ï</span>", - "<span color=\"#5b8277\">ï</span>", - "<span color=\"#5b8277\">ï</span>" - ] - }, - "battery#bat1": { - "bat": "BAT1", - "format": "{icon} {capacity}%", - "format-charging": " <span color=\"#5b8277\">ïŠ</span> {capacity}%", - "format-plugged": "<span color=\"#5b8277\">ïŠ</span> {capacity}%", - "format-icons": [ - "<span color=\"#b73030\">ï</span>", - "<span color=\"#b2872f\">ï</span>", - "<span color=\"#5b8277\">ï</span>", - "<span color=\"#5b8277\">ï</span>", - "<span color=\"#5b8277\">ï</span>" - ] - }, - "network": { - // "interface": "wlp2*", // (Optional) To force the use of this interface - "format-wifi": "<span color=\"#5b8277\">ï«</span> {essid}", - "format-ethernet": "<span color=\"#5b8277\">ïš</span> {ifname}", - "format-linked": "<span color=\"#5b8277\">ïš</span> {ifname}", - "format-disconnected": "î« disconnected", - "format-alt": "{ifname}: {ipaddr}/{cidr}", - "tooltip-format": "{ifname}: {ipaddr}/{cidr}" - }, - "pulseaudio": { - "scroll-step": 2, // %, can be a float - "format": "<span color=\"#5b8277\">{icon}</span> {volume}%", - "format-bluetooth": "<span color=\"#5b8277\">{icon}ï</span> {volume}% {format_source}", - "format-muted": "<span color=\"#b2872f\">ïŠ</span>", - "format-source": "{volume}% ï°", - "format-source-muted": "ï±", - "format-icons": { - "headphone": "ï¥", - "handsfree": "ï", - "headset": "ï", - "phone": "ï", - "portable": "ï", - "car": "ï¹", - "default": ["ïŠ", "ï§", "ïš"] - }, - "on-click": "$TERMINAL -e ncpamixer" - }, - "custom/rec-status": { - "format": "<span color=\"#5b8277\">{}</span>", - "signal": 5, - "interval": "once", - "exec": "barrecstatus" - }, - "custom/torrent-status": { - "format": "<span color=\"#5b8277\">{}</span>", - "signal": 10, - "interval": "once", - "exec": "bartorrentstatus" - }, - "custom/mail-status": { - "format": "<span color=\"#5b8277\">ð§</span> {}", - "signal": 9, - "interval": "once", - "exec": "barmailstatus", - "tooltip": false - }, - "custom/pac-status": { - "format": "<span color=\"#5b8277\">ï</span> {}", - "signal": 7, - "interval": "once", - "exec": "barpacstatus" - }, - "custom/news-status": { - "format": "<span color=\"#5b8277\">ïª</span> {}", - "signal": 8, - "interval": "once", - "exec": "barnewsstatus", - "tooltip": false - }, - "custom/weather": { - "format": "{}", - "interval": 180, - "exec": "barweather" - }, - "custom/ds4battery": { - "format": "ð® {}", - "interval": 180, - "exec": "bards4battery" - }, - "custom/batwatt": { - "return-type": "json", - "interval": 10, - "exec-if": "test -e /sys/class/power_supply/BAT0", - "exec": "barbatwatt", - "exec-on-event": true, - "on-click": "" - }, - "custom/swaykbd": { - "format": "{}", - "exec": "swaykbd", - "tooltip": false - }, - "niri/language": { - "on-click": "niri msg action switch-layout next", - "on-click-right": "niri msg action switch-layout prev", - "format-en": " ðºðž EN ", - "format-es": " ð²ðœ ES ", - "format-ru": " ð·ðº RU " - } -} + "tray", + ] +}] diff --git a/dotfiles/.config/waybar/modules.json b/dotfiles/.config/waybar/modules.json new file mode 100644 index 0000000..7f0f591 --- /dev/null +++ b/dotfiles/.config/waybar/modules.json @@ -0,0 +1,181 @@ +{ + "sway/mode": { + "format": "<span style=\"italic\">{}</span>" + }, + "mpris": { + "format": "{status_icon} {artist} - {title}", + "format-stopped": "{status_icon} - ", + "status-icons": { + "stopped": "<span color=\"#d6cda3\">ï</span>", + "paused": "<span color=\"#d6cda3\">ï</span>", + "playing": "<span color=\"#5b8277\">ï</span>" + }, + "artist-len": 20, + "title-len": 30 + }, + "tray": { + "icon-size": 16, + "spacing": 10 + }, + "clock": { + "locale": "ja_JP.UTF-8", + "format": "<span font='Sarasa Mono J' weight='600'>{:L%Y幎%mæ%dæ¥ïŒ%aïŒ%H:%M:%S}</span>", + "format-alt": "<span font='Sarasa Mono J' weight='600'>{:%H:%M:%S}</span>", + "tooltip-format": "<span font='Sarasa Mono J'>{calendar}</span>", + "calendar": { + "mode": "month", + "on-scroll": 1, + "format": { + "months": "<span size='13pt' weight='600'>{}</span>", + "weekdays": "{}", + "today": "<span color=\"#b73030\"><b>{}</b></span>" + } + }, + "actions": { + "on-scroll-up": "shift_up", + "on-scroll-down": "shift_down" + }, + "interval": 1 + }, + "cpu": { + "format": "<span color=\"#d6cda3\">ï</span> {usage}%", + "interval": 3 + }, + "memory": { + "format": "<span color=\"#d6cda3\">î¿
</span> {used:0.3f}G", + "states": { + "warning": 90 + }, + "interval": 10 + }, + "temperature": { + // "thermal-zone": 2, + // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", + "critical-threshold": 80, + // "format-critical": "{temperatureC}°C {icon}", + "format": "{temperatureC}°C {icon}", + "format-icons": ["ï«", "ï", "ï©"] + }, + "backlight": { + // "device": "acpi_video1", + "format": "<span color=\"#d6cda3\">{icon}</span> {percent}%", + "format-icons": ["ïª", "ï
"] + }, + "battery#bat0": { + "bat": "BAT0", + "format": "{icon} {capacity}%", + "format-charging": "<span color=\"#5b8277\">ïŠ</span> {capacity}%", + "format-plugged": "<span color=\"#5b8277\">ïŠ</span> {capacity}%", + "format-icons": [ + "<span color=\"#b73030\">ï</span>", + "<span color=\"#b2872f\">ï</span>", + "<span color=\"#5b8277\">ï</span>", + "<span color=\"#5b8277\">ï</span>", + "<span color=\"#5b8277\">ï</span>" + ] + }, + "battery#bat1": { + "bat": "BAT1", + "format": "{icon} {capacity}%", + "format-charging": "<span color=\"#5b8277\">ïŠ</span> {capacity}%", + "format-plugged": "<span color=\"#5b8277\">ïŠ</span> {capacity}%", + "format-icons": [ + "<span color=\"#b73030\">ï</span>", + "<span color=\"#b2872f\">ï</span>", + "<span color=\"#5b8277\">ï</span>", + "<span color=\"#5b8277\">ï</span>", + "<span color=\"#5b8277\">ï</span>" + ] + }, + "network": { + // "interface": "wlp2*", // (Optional) To force the use of this interface + "format-wifi": "<span color=\"#5b8277\">ï«</span>", + "format-ethernet": "<span color=\"#5b8277\">ó°</span>", + "format-linked": "<span color=\"#b2872f\">ó°²</span>", + "format-disconnected": "<span color=\"#b2872f\">ó°</span>", + "format-disabled": "<span color=\"#b73030\">ó°</span>", + "format-alt": "<span color=\"#d6cda3\">ó°</span> {ifname}: {bandwidthUpBits}<span color=\"#d6cda3\"></span> {bandwidthDownBits}<span color=\"#d6cda3\">îª</span>", + "tooltip-format": "{ifname}: {essid} {ipaddr}/{cidr} {bandwidthUpBits}<span color=\"#d6cda3\"></span> {bandwidthDownBits}<span color=\"#d6cda3\">îª</span>", + "interval": 3 + }, + "wireplumber": { + "scroll-step": 2, // %, can be a float + "format": "<span color=\"#5b8277\">{icon}</span> {volume}%", + "format-bluetooth": "<span color=\"#5b8277\">{icon}ï</span> {volume}% {format_source}", + "format-muted": "<span color=\"#b2872f\">ïŠ</span>", + "format-source": "{volume}% ï°", + "format-source-muted": "ï±", + "format-icons": { + "headphone": "ï¥", + "handsfree": "ï", + "headset": "ï", + "phone": "ï", + "portable": "ï", + "car": "ï¹", + "default": ["ïŠ", "ï§", "ïš"] + }, + "on-click": "$TERMINAL -e ncpamixer" + }, + "custom/rec-status": { + "format": "<span color=\"#5b8277\">{}</span>", + "signal": 5, + "interval": "once", + "exec": "barrecstatus" + }, + "custom/torrent-status": { + "format": "<span color=\"#d6cda3\">{}</span>", + "signal": 10, + "interval": "once", + "exec": "bartorrentstatus" + }, + "custom/mail-status": { + "format": "<span color=\"#d6cda3\">󰺻 </span>{}", + "signal": 9, + "interval": "once", + "exec": "barmailstatus", + "tooltip": false + }, + "custom/pac-status": { + "format": "ï {}", + "signal": 7, + "interval": "once", + "exec": "barpacstatus" + }, + "custom/news-status": { + "format": "ïª {}", + "signal": 8, + "interval": "once", + "exec": "barnewsstatus", + "tooltip": false + }, + "custom/weather": { + "format": "{}", + "interval": 180, + "exec": "barweather" + }, + "custom/ds4battery": { + "format": "ð® {}", + "interval": 180, + "exec": "bards4battery" + }, + "custom/batwatt": { + "return-type": "json", + "interval": 10, + "exec-if": "test -e /sys/class/power_supply/BAT0", + "exec": "barbatwatt", + "exec-on-event": true, + "on-click": "" + }, + "custom/swaykbd": { + "format": "{}", + "exec": "swaykbd", + "tooltip": false + }, + "niri/language": { + "on-click": "niri msg action switch-layout next", + "on-click-right": "niri msg action switch-layout prev", + "format-en": " ðºðž", + "format-es": " ð²ðœ", + "format-ru": " ð·ðº" + } +} diff --git a/dotfiles/.config/waybar/style.css b/dotfiles/.config/waybar/style.css index a8026f1..7f8c7ba 100644 --- a/dotfiles/.config/waybar/style.css +++ b/dotfiles/.config/waybar/style.css @@ -1,67 +1,28 @@ * { - font-size: 13px; + font-size: 14px; font-family: monospace; } window#waybar { - background: #000000; - /* background: linear-gradient(#000000, #151515); */ - color: #f2eccf; + background: #1e1c1a; + color: #fcf8e2; min-height: 0; - border-bottom: 2px solid #33333a; -} -#tray, -#language, -#custom-torrent-status, -#workspaces { - background: #151517; - margin: 3px 0 3px 0; - border-style: solid; - border-color: #33333a; + border: 2px solid #33333a; } #memory.warning { color: #b2872f; } -#tray{ - border-width: 2px 2px 2px 0; -} -#custom-torrent-status{ - border-width: 2px 0 2px 0; -} -#language { - border-width: 2px 0 2px 2px; -} -#workspaces { - padding: 0; - margin-right: 6px; - border-width: 2px; -} -#workspaces button { - padding: 0 0.6em; - color: #fcf8e2; - border-radius: 0; - border: 1px solid rgba(0, 0, 0, 0); -} -#workspaces button.visible { - color: #7fac96; - border-color: #7fac96; -} -#workspaces button.focused { - color: #000000; - border-color: #7fac96; - background: linear-gradient(60deg, #5b8277, #99d0b5); -} -#workspaces button:hover { - border: 1px solid #5b8277; -} +#cpu, #mpd, #tray, -#clock, +#mpris, #memory, #battery, #network, +#language, #backlight, -#pulseaudio, +#workspaces, #temperature, +#wireplumber, #custom-weather, #custom-swaykbd, #custom-ds4battery, @@ -69,12 +30,41 @@ window#waybar { #custom-pac-status, #custom-mail-status, #custom-news-status, -#custom-waybar-mpris, #custom-batwatt, #custom-torrent-status { color: #fcf8e2; - padding: 0 6px; + padding: 0 0.4em; + margin: 2px; +} +#clock { + font-weight: 500; + color: #d6cda3; + background: #0d0906; + border: 2px inset #1e1e23; + margin: 4px 2px 4px 4px; + padding: 0 0.4em; } -#custom-weather { - color: #5b8277; +#workspaces { + padding: 0; + margin: 6px; + background: #4a4842; +} +#workspaces button { + padding: 0 0.5em; + color: #fcf8e2; + border-radius: 0; + border: 2px solid #1e1e23; +} +#workspaces button.visible, +#workspaces button.active { + color: #7fac96; + border-color: #7fac96; +} +#workspaces button.focused { + color: #000000; + border-color: #7fac96; + background: linear-gradient(60deg, #5b8277, #99d0b5); +} +#workspaces button:hover { + border-color: #5b8277; } diff --git a/dotfiles/.config/wl-kbptr/config b/dotfiles/.config/wl-kbptr/config new file mode 100644 index 0000000..9d6dbac --- /dev/null +++ b/dotfiles/.config/wl-kbptr/config @@ -0,0 +1,56 @@ +# wl-kbptr can be configured with a configuration file. +# The file location can be passed with the -c parameter. +# Othewise the `$XDG_CONFIG_HOME/wl-kbptr/config` file will +# be loaded if it exits. Below is the default configuration. + +[general] +home_row_keys= +modes=tile,bisect +cancellation_status_code=0 + +[mode_tile] +label_color=#fffd +label_select_color=#fd0d +unselectable_bg_color=#2226 +selectable_bg_color=#0304 +selectable_border_color=#040c +label_font_family=sans-serif +label_font_size=8 50% 100 +label_symbols=abcdefghijklmnopqrstuvwxyz + +[mode_floating] +source=stdin +label_color=#fffd +label_select_color=#fd0d +unselectable_bg_color=#2226 +selectable_bg_color=#1718 +selectable_border_color=#040c +label_font_family=sans-serif +label_font_size=12 50% 100 +label_symbols=abcdefghijklmnopqrstuvwxyz + +[mode_bisect] +label_color=#fffd +label_font_size=20 +label_font_family=sans-serif +label_padding=12 +pointer_size=20 +pointer_color=#e22d +unselectable_bg_color=#2226 +even_area_bg_color=#0304 +even_area_border_color=#0408 +odd_area_bg_color=#0034 +odd_area_border_color=#0048 +history_border_color=#3339 + +[mode_split] +pointer_size=20 +pointer_color=#e22d +bg_color=#2226 +area_bg_color=#11111188 +vertical_color=#8888ffcc +horizontal_color=#008800cc +history_border_color=#3339 + +[mode_click] +button=left diff --git a/dotfiles/.config/zsh/.zshrc b/dotfiles/.config/zsh/.zshrc index 5684477..327c685 100644 --- a/dotfiles/.config/zsh/.zshrc +++ b/dotfiles/.config/zsh/.zshrc @@ -7,12 +7,10 @@ precmd_functions+=( precmd_vcs_info ) setopt prompt_subst if [ "$USER" = "root" ]; then - # Make it so that we display root's user@host on the left and colored red so - # that it is quite clear that we are under root. - PROMPT=$'\n''%{[38;5;14m%}%B%~ ${reset_color}%F{yellow}${vcs_info_msg_0_}%f'$'\n''%F{red}%n%f@%F{red}%m%f %F{green}â%f ' + # Display root's user colored red so that 'tis quite clear when we are root. + PROMPT=$'\n''%F{red}%n@%F{red}%m:%f%B%~ ${reset_color}%F{yellow}${vcs_info_msg_0_}%f'$'\n''%F{green}â%*#%f ' else - PROMPT=$'\n''%{[38;5;14m%}%B%~ ${reset_color}%F{yellow}${vcs_info_msg_0_}%f'$'\n''%F{green}â%f ' - RPROMPT='%{[38;5;14m%} %n%f@%F{red}%m%f' + PROMPT=$'\n''%{[38;5;14m%}%n@%F{red}%m:%f%B%~ ${reset_color}%F{yellow}${vcs_info_msg_0_}%f'$'\n''%F{green}â%*â%f ' fi zstyle ':vcs_info:git:*' formats 'î %b' diff --git a/dotfiles/.config/zsh/shortcuts b/dotfiles/.config/zsh/shortcuts index 63343ce..77ef9bf 100644 --- a/dotfiles/.config/zsh/shortcuts +++ b/dotfiles/.config/zsh/shortcuts @@ -55,7 +55,7 @@ bindkey '^F' fzf-file-widget bindkey '^A' fzf-cd-widget # Function for changing working dir after exiting lf -lfcd () { +lfcd() { tmp="$(mktemp)" lf -last-dir-path="$tmp" "$@" if [ -f "$tmp" ]; then @@ -86,13 +86,23 @@ alias YT="youtube-viewer" alias starwars="telnet towel.blinkenlights.nl" # git -gitcc () { +gitcc() { git clone "$(wl-paste --no-newline)" } +gitdel() { + git branch -D $2 + git push -d $1 $2 +} + # Audio alias mute="lmc mute" alias vu="lmc up 5" alias vd="lmc down 5" +# Split tunneling with network namespaces +fnetexec() { + sudo -E ip netns exec freenet sudo -E -u \#$(id -u) -g \#$(id -g) "$@"; +} + [ -f "$XDG_CONFIG_HOME/zsh/private" ] && . "$XDG_CONFIG_HOME/zsh/private" diff --git a/dotfiles/.local/bin/barweather b/dotfiles/.local/bin/barweather index 3fc7f42..a608b80 100755 --- a/dotfiles/.local/bin/barweather +++ b/dotfiles/.local/bin/barweather @@ -12,7 +12,7 @@ update_forecast() { forecast=$(curl -s wttr.in/"$location"?format=1) if [ ${#forecast} -lt 30 ]; then - printf "%s\n" "$forecast" > "$cachefile" + printf "%s\n" "$forecast" | sed -e 's/ / /g' > "$cachefile" fi } diff --git a/dotfiles/.local/bin/mailsync b/dotfiles/.local/bin/mailsync index d67db06..42b8079 100755 --- a/dotfiles/.local/bin/mailsync +++ b/dotfiles/.local/bin/mailsync @@ -9,14 +9,14 @@ notmuchrc="$HOME/.config/notmuchrc" mbsyncrc="$HOME/.config/mbsyncrc" # Run only if user logged in (prevent cron errors) -w | grep "^$USER\W" >/dev/null || exit +# w | grep "^$USER\W" >/dev/null || exit # Don't run if screen is locked (gpg key is locked too) -pidof swaylock && exit +# pidof swaylock && exit # Check several times before giving up, useful when just waking up from sleep # since internet is usually not available right away -wget -q --tries=3 --timeout=20 --spider 1.1.1.1 > /dev/null || exit +wget -q --tries=3 --timeout=20 --spider http://1.1.1.1 > /dev/null || exit thereis=0 @@ -39,12 +39,10 @@ do done if [ $thereis = 1 ]; then - mpv --really-quiet "$HOME/.local/share/soundalerts/mail.ogg" - killall -43 waybar + mpv --keep-open=no --really-quiet "$HOME/.local/share/soundalerts/mail.ogg" fi notmuch -c "$notmuchrc" new 2>/dev/null # Create a touch file that indicates the time of the last run of mailsync touch "$HOME/.cache/lastmailsync" - diff --git a/dotfiles/.local/bin/menumako b/dotfiles/.local/bin/menumako index 628a93a..96c564b 100755 --- a/dotfiles/.local/bin/menumako +++ b/dotfiles/.local/bin/menumako @@ -1,3 +1,3 @@ #!/bin/sh -makoctl menu rofi -dmenu -p "What to do?" +makoctl menu -- rofi -dmenu -p "What to do?" diff --git a/dotfiles/.local/bin/setbg b/dotfiles/.local/bin/setbg index 2e6dfba..bc8b8a2 100755 --- a/dotfiles/.local/bin/setbg +++ b/dotfiles/.local/bin/setbg @@ -10,6 +10,7 @@ cp "$1" "$dest" if [ -n "$SWAYSOCK" ]; then updisplay elif [ -n "$NIRI_SOCKET" ]; then + niri msg action do-screen-transition -d 200 killall swaybg setsid swaybg -i "$dest" -m fill& fi diff --git a/dotfiles/.local/bin/sshwiz b/dotfiles/.local/bin/sshwiz new file mode 100755 index 0000000..ba71b08 --- /dev/null +++ b/dotfiles/.local/bin/sshwiz @@ -0,0 +1,18 @@ +#!/bin/bash + +# SSH "wizard" script. Copies the public key and installs terminfo for first +# time use of a host. + +if [ -z "$1" ]; then + echo "usage: sshwiz <destination>" + exit 1 +fi + +target=$1 + +ssh-copy-id $target +echo "installing terminfo..." +infocmp $TERM > /tmp/$TERM.terminfo +rsync /tmp/$TERM.terminfo ${target}: +ssh $target "tic -x $TERM.terminfo" +echo "done" diff --git a/dotfiles/.local/share/oculante/config.json b/dotfiles/.local/share/oculante/config.json new file mode 100644 index 0000000..87bc4ca --- /dev/null +++ b/dotfiles/.local/share/oculante/config.json @@ -0,0 +1,154 @@ +{ + "accent_color": [ + 137, + 182, + 160 + ], + "background_color": [ + 0, + 0, + 0 + ], + "vsync": true, + "force_redraw": false, + "shortcuts": { + "AlwaysOnTop": [ + "T" + ], + "Fullscreen": [ + "F" + ], + "InfoMode": [ + "I" + ], + "EditMode": [ + "E" + ], + "NextImage": [ + "N" + ], + "FirstImage": [ + "Home" + ], + "LastImage": [ + "End" + ], + "PreviousImage": [ + "P" + ], + "RedChannel": [ + "R" + ], + "GreenChannel": [ + "G" + ], + "BlueChannel": [ + "B" + ], + "AlphaChannel": [ + "A" + ], + "RGBChannel": [ + "U" + ], + "RGBAChannel": [ + "C" + ], + "ResetView": [ + "V" + ], + "ZoomOut": [ + "Minus" + ], + "ZoomIn": [ + "Equals" + ], + "ZoomActualSize": [ + "Key1" + ], + "ZoomDouble": [ + "Key2" + ], + "ZoomThree": [ + "Key3" + ], + "ZoomFour": [ + "Key4" + ], + "ZoomFive": [ + "Key5" + ], + "CompareNext": [ + "C", + "LShift" + ], + "PanLeft": [ + "L" + ], + "PanRight": [ + "H" + ], + "PanUp": [ + "J" + ], + "PanDown": [ + "K" + ], + "DeleteFile": [ + "Delete" + ], + "ClearImage": [ + "Delete", + "LShift" + ], + "LosslessRotateRight": [ + "RBracket" + ], + "LosslessRotateLeft": [ + "LBracket" + ], + "Copy": [ + "C", + "LControl" + ], + "Paste": [ + "LControl", + "V" + ], + "Browse": [ + "LControl", + "O" + ], + "Quit": [ + "Q" + ], + "ZenMode": [ + "Z" + ] + }, + "keep_view": true, + "max_cache": 30, + "show_scrub_bar": true, + "wrap_folder": true, + "keep_edits": false, + "title_format": "{APP} | {VERSION} | {FULLPATH}", + "info_enabled": true, + "edit_enabled": false, + "show_checker_background": false, + "show_minimap": false, + "show_frame": false, + "svg_scale": 1.0, + "zen_mode": false, + "theme": "System", + "linear_mag_filter": false, + "linear_min_filter": true, + "use_mipmaps": true, + "fit_image_on_window_resize": true, + "zoom_multiplier": 1.0, + "borderless": false, + "min_window_size": [ + 100, + 100 + ], + "experimental_features": false +}
\ No newline at end of file diff --git a/dotfiles/.local/share/script-data/emoji b/dotfiles/.local/share/script-data/emoji index 42fc271..d3db56e 100644 --- a/dotfiles/.local/share/script-data/emoji +++ b/dotfiles/.local/share/script-data/emoji @@ -1628,6 +1628,2054 @@ ðŽó §ó ¢ó ¥ó ®ó §ó ¿ flag: England ðŽó §ó ¢ó ³ó £ó Žó ¿ flag: Scotland ðŽó §ó ¢ó ·ó ¬ó ³ó ¿ flag: Wales +âð» index pointing up: white skin +âðŒ index pointing up: tan skin +âðœ index pointing up: olive skin +âðŸ index pointing up: brown skin +âð¿ index pointing up: black skin +â¹ð» person bouncing ball: white skin +â¹ðŒ person bouncing ball: tan skin +â¹ðœ person bouncing ball: olive skin +â¹ðŸ person bouncing ball: brown skin +â¹ð¿ person bouncing ball: black skin +âð» raised fist: white skin +âðŒ raised fist: tan skin +âðœ raised fist: olive skin +âðŸ raised fist: brown skin +âð¿ raised fist: black skin +âð» raised hand: white skin +âðŒ raised hand: tan skin +âðœ raised hand: olive skin +âðŸ raised hand: brown skin +âð¿ raised hand: black skin +âð» victory hand: white skin +âðŒ victory hand: tan skin +âðœ victory hand: olive skin +âðŸ victory hand: brown skin +âð¿ victory hand: black skin +âð» writing hand: white skin +âðŒ writing hand: tan skin +âðœ writing hand: olive skin +âðŸ writing hand: brown skin +âð¿ writing hand: black skin +ð
ð» Santa Claus: white skin +ð
ðŒ Santa Claus: tan skin +ð
ðœ Santa Claus: olive skin +ð
ðŸ Santa Claus: brown skin +ð
ð¿ Santa Claus: black skin +ðð» snowboarder: white skin +ððŒ snowboarder: tan skin +ððœ snowboarder: olive skin +ððŸ snowboarder: brown skin +ðð¿ snowboarder: black skin +ðð» person running: white skin +ððŒ person running: tan skin +ððœ person running: olive skin +ððŸ person running: brown skin +ðð¿ person running: black skin +ðð» person surfing: white skin +ððŒ person surfing: tan skin +ððœ person surfing: olive skin +ððŸ person surfing: brown skin +ðð¿ person surfing: black skin +ðð» horse racing: white skin +ððŒ horse racing: tan skin +ððœ horse racing: olive skin +ððŸ horse racing: brown skin +ðð¿ horse racing: black skin +ðð» person swimming: white skin +ððŒ person swimming: tan skin +ððœ person swimming: olive skin +ððŸ person swimming: brown skin +ðð¿ person swimming: black skin +ðð» person lifting weights: white skin +ððŒ person lifting weights: tan skin +ððœ person lifting weights: olive skin +ððŸ person lifting weights: brown skin +ðð¿ person lifting weights: black skin +ðð» person golfing: white skin +ððŒ person golfing: tan skin +ððœ person golfing: olive skin +ððŸ person golfing: brown skin +ðð¿ person golfing: black skin +ðð» ear: white skin +ððŒ ear: tan skin +ððœ ear: olive skin +ððŸ ear: brown skin +ðð¿ ear: black skin +ðð» nose: white skin +ððŒ nose: tan skin +ððœ nose: olive skin +ððŸ nose: brown skin +ðð¿ nose: black skin +ðð» backhand index pointing up: white skin +ððŒ backhand index pointing up: tan skin +ððœ backhand index pointing up: olive skin +ððŸ backhand index pointing up: brown skin +ðð¿ backhand index pointing up: black skin +ðð» backhand index pointing down: white skin +ððŒ backhand index pointing down: tan skin +ððœ backhand index pointing down: olive skin +ððŸ backhand index pointing down: brown skin +ðð¿ backhand index pointing down: black skin +ðð» backhand index pointing left: white skin +ððŒ backhand index pointing left: tan skin +ððœ backhand index pointing left: olive skin +ððŸ backhand index pointing left: brown skin +ðð¿ backhand index pointing left: black skin +ðð» backhand index pointing right: white skin +ððŒ backhand index pointing right: tan skin +ððœ backhand index pointing right: olive skin +ððŸ backhand index pointing right: brown skin +ðð¿ backhand index pointing right: black skin +ðð» oncoming fist: white skin +ððŒ oncoming fist: tan skin +ððœ oncoming fist: olive skin +ððŸ oncoming fist: brown skin +ðð¿ oncoming fist: black skin +ðð» waving hand: white skin +ððŒ waving hand: tan skin +ððœ waving hand: olive skin +ððŸ waving hand: brown skin +ðð¿ waving hand: black skin +ðð» OK hand: white skin +ððŒ OK hand: tan skin +ððœ OK hand: olive skin +ððŸ OK hand: brown skin +ðð¿ OK hand: black skin +ðð» thumbs up: white skin +ððŒ thumbs up: tan skin +ððœ thumbs up: olive skin +ððŸ thumbs up: brown skin +ðð¿ thumbs up: black skin +ðð» thumbs down: white skin +ððŒ thumbs down: tan skin +ððœ thumbs down: olive skin +ððŸ thumbs down: brown skin +ðð¿ thumbs down: black skin +ðð» clapping hands: white skin +ððŒ clapping hands: tan skin +ððœ clapping hands: olive skin +ððŸ clapping hands: brown skin +ðð¿ clapping hands: black skin +ðð» open hands: white skin +ððŒ open hands: tan skin +ððœ open hands: olive skin +ððŸ open hands: brown skin +ðð¿ open hands: black skin +ðŠð» boy: white skin +ðŠðŒ boy: tan skin +ðŠðœ boy: olive skin +ðŠðŸ boy: brown skin +ðŠð¿ boy: black skin +ð§ð» girl: white skin +ð§ðŒ girl: tan skin +ð§ðœ girl: olive skin +ð§ðŸ girl: brown skin +ð§ð¿ girl: black skin +ðšð» man: white skin +ðšðŒ man: tan skin +ðšðœ man: olive skin +ðšðŸ man: brown skin +ðšð¿ man: black skin +ð©ð» woman: white skin +ð©ðŒ woman: tan skin +ð©ðœ woman: olive skin +ð©ðŸ woman: brown skin +ð©ð¿ woman: black skin +ð«ð» woman and man holding hands: white skin +ð«ðŒ woman and man holding hands: tan skin +ð«ðœ woman and man holding hands: olive skin +ð«ðŸ woman and man holding hands: brown skin +ð«ð¿ woman and man holding hands: black skin +ð¬ð» men holding hands: white skin +ð¬ðŒ men holding hands: tan skin +ð¬ðœ men holding hands: olive skin +ð¬ðŸ men holding hands: brown skin +ð¬ð¿ men holding hands: black skin +ðð» women holding hands: white skin +ððŒ women holding hands: tan skin +ððœ women holding hands: olive skin +ððŸ women holding hands: brown skin +ðð¿ women holding hands: black skin +ð®ð» police officer: white skin +ð®ðŒ police officer: tan skin +ð®ðœ police officer: olive skin +ð®ðŸ police officer: brown skin +ð®ð¿ police officer: black skin +ð°ð» person with veil: white skin +ð°ðŒ person with veil: tan skin +ð°ðœ person with veil: olive skin +ð°ðŸ person with veil: brown skin +ð°ð¿ person with veil: black skin +ð±ð» person: white skin, blond hair +ð±ðŒ person: tan skin, blond hair +ð±ðœ person: olive skin, blond hair +ð±ðŸ person: brown skin, blond hair +ð±ð¿ person: black skin, blond hair +ð²ð» person with skullcap: white skin +ð²ðŒ person with skullcap: tan skin +ð²ðœ person with skullcap: olive skin +ð²ðŸ person with skullcap: brown skin +ð²ð¿ person with skullcap: black skin +ð³ð» person wearing turban: white skin +ð³ðŒ person wearing turban: tan skin +ð³ðœ person wearing turban: olive skin +ð³ðŸ person wearing turban: brown skin +ð³ð¿ person wearing turban: black skin +ðŽð» old man: white skin +ðŽðŒ old man: tan skin +ðŽðœ old man: olive skin +ðŽðŸ old man: brown skin +ðŽð¿ old man: black skin +ðµð» old woman: white skin +ðµðŒ old woman: tan skin +ðµðœ old woman: olive skin +ðµðŸ old woman: brown skin +ðµð¿ old woman: black skin +ð¶ð» baby: white skin +ð¶ðŒ baby: tan skin +ð¶ðœ baby: olive skin +ð¶ðŸ baby: brown skin +ð¶ð¿ baby: black skin +ð·ð» construction worker: white skin +ð·ðŒ construction worker: tan skin +ð·ðœ construction worker: olive skin +ð·ðŸ construction worker: brown skin +ð·ð¿ construction worker: black skin +ðžð» princess: white skin +ðžðŒ princess: tan skin +ðžðœ princess: olive skin +ðžðŸ princess: brown skin +ðžð¿ princess: black skin +ðŒð» baby angel: white skin +ðŒðŒ baby angel: tan skin +ðŒðœ baby angel: olive skin +ðŒðŸ baby angel: brown skin +ðŒð¿ baby angel: black skin +ðð» person tipping hand: white skin +ððŒ person tipping hand: tan skin +ððœ person tipping hand: olive skin +ððŸ person tipping hand: brown skin +ðð¿ person tipping hand: black skin +ðð» guard: white skin +ððŒ guard: tan skin +ððœ guard: olive skin +ððŸ guard: brown skin +ðð¿ guard: black skin +ðð» woman dancing: white skin +ððŒ woman dancing: tan skin +ððœ woman dancing: olive skin +ððŸ woman dancing: brown skin +ðð¿ woman dancing: black skin +ð
ð» nail polish: white skin +ð
ðŒ nail polish: tan skin +ð
ðœ nail polish: olive skin +ð
ðŸ nail polish: brown skin +ð
ð¿ nail polish: black skin +ðð» person getting massage: white skin +ððŒ person getting massage: tan skin +ððœ person getting massage: olive skin +ððŸ person getting massage: brown skin +ðð¿ person getting massage: black skin +ðð» person getting haircut: white skin +ððŒ person getting haircut: tan skin +ððœ person getting haircut: olive skin +ððŸ person getting haircut: brown skin +ðð¿ person getting haircut: black skin +ðð» kiss: white skin +ððŒ kiss: tan skin +ððœ kiss: olive skin +ððŸ kiss: brown skin +ðð¿ kiss: black skin +ðð» couple with heart: white skin +ððŒ couple with heart: tan skin +ððœ couple with heart: olive skin +ððŸ couple with heart: brown skin +ðð¿ couple with heart: black skin +ðªð» flexed biceps: white skin +ðªðŒ flexed biceps: tan skin +ðªðœ flexed biceps: olive skin +ðªðŸ flexed biceps: brown skin +ðªð¿ flexed biceps: black skin +ðŽð» person in suit levitating: white skin +ðŽðŒ person in suit levitating: tan skin +ðŽðœ person in suit levitating: olive skin +ðŽðŸ person in suit levitating: brown skin +ðŽð¿ person in suit levitating: black skin +ðµð» detective: white skin +ðµðŒ detective: tan skin +ðµðœ detective: olive skin +ðµðŸ detective: brown skin +ðµð¿ detective: black skin +ðºð» man dancing: white skin +ðºðŒ man dancing: tan skin +ðºðœ man dancing: olive skin +ðºðŸ man dancing: brown skin +ðºð¿ man dancing: black skin +ðð» hand with fingers splayed: white skin +ððŒ hand with fingers splayed: tan skin +ððœ hand with fingers splayed: olive skin +ððŸ hand with fingers splayed: brown skin +ðð¿ hand with fingers splayed: black skin +ðð» middle finger: white skin +ððŒ middle finger: tan skin +ððœ middle finger: olive skin +ððŸ middle finger: brown skin +ðð¿ middle finger: black skin +ðð» vulcan salute: white skin +ððŒ vulcan salute: tan skin +ððœ vulcan salute: olive skin +ððŸ vulcan salute: brown skin +ðð¿ vulcan salute: black skin +ð
ð» person gesturing NO: white skin +ð
ðŒ person gesturing NO: tan skin +ð
ðœ person gesturing NO: olive skin +ð
ðŸ person gesturing NO: brown skin +ð
ð¿ person gesturing NO: black skin +ðð» person gesturing OK: white skin +ððŒ person gesturing OK: tan skin +ððœ person gesturing OK: olive skin +ððŸ person gesturing OK: brown skin +ðð¿ person gesturing OK: black skin +ðð» person bowing: white skin +ððŒ person bowing: tan skin +ððœ person bowing: olive skin +ððŸ person bowing: brown skin +ðð¿ person bowing: black skin +ðð» person raising hand: white skin +ððŒ person raising hand: tan skin +ððœ person raising hand: olive skin +ððŸ person raising hand: brown skin +ðð¿ person raising hand: black skin +ðð» raising hands: white skin +ððŒ raising hands: tan skin +ððœ raising hands: olive skin +ððŸ raising hands: brown skin +ðð¿ raising hands: black skin +ðð» person frowning: white skin +ððŒ person frowning: tan skin +ððœ person frowning: olive skin +ððŸ person frowning: brown skin +ðð¿ person frowning: black skin +ðð» person pouting: white skin +ððŒ person pouting: tan skin +ððœ person pouting: olive skin +ððŸ person pouting: brown skin +ðð¿ person pouting: black skin +ðð» folded hands: white skin +ððŒ folded hands: tan skin +ððœ folded hands: olive skin +ððŸ folded hands: brown skin +ðð¿ folded hands: black skin +ð£ð» person rowing boat: white skin +ð£ðŒ person rowing boat: tan skin +ð£ðœ person rowing boat: olive skin +ð£ðŸ person rowing boat: brown skin +ð£ð¿ person rowing boat: black skin +ðŽð» person biking: white skin +ðŽðŒ person biking: tan skin +ðŽðœ person biking: olive skin +ðŽðŸ person biking: brown skin +ðŽð¿ person biking: black skin +ðµð» person mountain biking: white skin +ðµðŒ person mountain biking: tan skin +ðµðœ person mountain biking: olive skin +ðµðŸ person mountain biking: brown skin +ðµð¿ person mountain biking: black skin +ð¶ð» person walking: white skin +ð¶ðŒ person walking: tan skin +ð¶ðœ person walking: olive skin +ð¶ðŸ person walking: brown skin +ð¶ð¿ person walking: black skin +ðð» person taking bath: white skin +ððŒ person taking bath: tan skin +ððœ person taking bath: olive skin +ððŸ person taking bath: brown skin +ðð¿ person taking bath: black skin +ðð» person in bed: white skin +ððŒ person in bed: tan skin +ððœ person in bed: olive skin +ððŸ person in bed: brown skin +ðð¿ person in bed: black skin +ð€ð» pinched fingers: white skin +ð€ðŒ pinched fingers: tan skin +ð€ðœ pinched fingers: olive skin +ð€ðŸ pinched fingers: brown skin +ð€ð¿ pinched fingers: black skin +ð€ð» pinching hand: white skin +ð€ðŒ pinching hand: tan skin +ð€ðœ pinching hand: olive skin +ð€ðŸ pinching hand: brown skin +ð€ð¿ pinching hand: black skin +ð€ð» sign of the horns: white skin +ð€ðŒ sign of the horns: tan skin +ð€ðœ sign of the horns: olive skin +ð€ðŸ sign of the horns: brown skin +ð€ð¿ sign of the horns: black skin +ð€ð» call me hand: white skin +ð€ðŒ call me hand: tan skin +ð€ðœ call me hand: olive skin +ð€ðŸ call me hand: brown skin +ð€ð¿ call me hand: black skin +ð€ð» raised back of hand: white skin +ð€ðŒ raised back of hand: tan skin +ð€ðœ raised back of hand: olive skin +ð€ðŸ raised back of hand: brown skin +ð€ð¿ raised back of hand: black skin +ð€ð» left-facing fist: white skin +ð€ðŒ left-facing fist: tan skin +ð€ðœ left-facing fist: olive skin +ð€ðŸ left-facing fist: brown skin +ð€ð¿ left-facing fist: black skin +ð€ð» right-facing fist: white skin +ð€ðŒ right-facing fist: tan skin +ð€ðœ right-facing fist: olive skin +ð€ðŸ right-facing fist: brown skin +ð€ð¿ right-facing fist: black skin +ð€ð» handshake: white skin +ð€ðŒ handshake: tan skin +ð€ðœ handshake: olive skin +ð€ðŸ handshake: brown skin +ð€ð¿ handshake: black skin +ð€ð» crossed fingers: white skin +ð€ðŒ crossed fingers: tan skin +ð€ðœ crossed fingers: olive skin +ð€ðŸ crossed fingers: brown skin +ð€ð¿ crossed fingers: black skin +ð€ð» love-you gesture: white skin +ð€ðŒ love-you gesture: tan skin +ð€ðœ love-you gesture: olive skin +ð€ðŸ love-you gesture: brown skin +ð€ð¿ love-you gesture: black skin +ð€Šð» person facepalming: white skin +ð€ŠðŒ person facepalming: tan skin +ð€Šðœ person facepalming: olive skin +ð€ŠðŸ person facepalming: brown skin +ð€Šð¿ person facepalming: black skin +ð€°ð» pregnant woman: white skin +ð€°ðŒ pregnant woman: tan skin +ð€°ðœ pregnant woman: olive skin +ð€°ðŸ pregnant woman: brown skin +ð€°ð¿ pregnant woman: black skin +ð€±ð» breast-feeding: white skin +ð€±ðŒ breast-feeding: tan skin +ð€±ðœ breast-feeding: olive skin +ð€±ðŸ breast-feeding: brown skin +ð€±ð¿ breast-feeding: black skin +ð€²ð» palms up together: white skin +ð€²ðŒ palms up together: tan skin +ð€²ðœ palms up together: olive skin +ð€²ðŸ palms up together: brown skin +ð€²ð¿ palms up together: black skin +ð€³ð» selfie: white skin +ð€³ðŒ selfie: tan skin +ð€³ðœ selfie: olive skin +ð€³ðŸ selfie: brown skin +ð€³ð¿ selfie: black skin +ð€Žð» prince: white skin +ð€ŽðŒ prince: tan skin +ð€Žðœ prince: olive skin +ð€ŽðŸ prince: brown skin +ð€Žð¿ prince: black skin +ð€µð» person in tuxedo: white skin +ð€µðŒ person in tuxedo: tan skin +ð€µðœ person in tuxedo: olive skin +ð€µðŸ person in tuxedo: brown skin +ð€µð¿ person in tuxedo: black skin +ð€¶ð» Mrs. Claus: white skin +ð€¶ðŒ Mrs. Claus: tan skin +ð€¶ðœ Mrs. Claus: olive skin +ð€¶ðŸ Mrs. Claus: brown skin +ð€¶ð¿ Mrs. Claus: black skin +ð€·ð» person shrugging: white skin +ð€·ðŒ person shrugging: tan skin +ð€·ðœ person shrugging: olive skin +ð€·ðŸ person shrugging: brown skin +ð€·ð¿ person shrugging: black skin +ð€žð» person cartwheeling: white skin +ð€žðŒ person cartwheeling: tan skin +ð€žðœ person cartwheeling: olive skin +ð€žðŸ person cartwheeling: brown skin +ð€žð¿ person cartwheeling: black skin +ð€¹ð» person juggling: white skin +ð€¹ðŒ person juggling: tan skin +ð€¹ðœ person juggling: olive skin +ð€¹ðŸ person juggling: brown skin +ð€¹ð¿ person juggling: black skin +ð€œð» person playing water polo: white skin +ð€œðŒ person playing water polo: tan skin +ð€œðœ person playing water polo: olive skin +ð€œðŸ person playing water polo: brown skin +ð€œð¿ person playing water polo: black skin +ð€Ÿð» person playing handball: white skin +ð€ŸðŒ person playing handball: tan skin +ð€Ÿðœ person playing handball: olive skin +ð€ŸðŸ person playing handball: brown skin +ð€Ÿð¿ person playing handball: black skin +ð¥·ð» ninja: white skin +ð¥·ðŒ ninja: tan skin +ð¥·ðœ ninja: olive skin +ð¥·ðŸ ninja: brown skin +ð¥·ð¿ ninja: black skin +ðеð» leg: white skin +ðеðŒ leg: tan skin +ðеðœ leg: olive skin +ðеðŸ leg: brown skin +ðеð¿ leg: black skin +ðжð» foot: white skin +ðжðŒ foot: tan skin +ðжðœ foot: olive skin +ðжðŸ foot: brown skin +ðжð¿ foot: black skin +ðŠžð» superhero: white skin +ðŠžðŒ superhero: tan skin +ðŠžðœ superhero: olive skin +ðŠžðŸ superhero: brown skin +ðŠžð¿ superhero: black skin +ðйð» supervillain: white skin +ðйðŒ supervillain: tan skin +ðйðœ supervillain: olive skin +ðйðŸ supervillain: brown skin +ðйð¿ supervillain: black skin +ðŠ»ð» ear with hearing aid: white skin +ðŠ»ðŒ ear with hearing aid: tan skin +ðŠ»ðœ ear with hearing aid: olive skin +ðŠ»ðŸ ear with hearing aid: brown skin +ðŠ»ð¿ ear with hearing aid: black skin +ð§ð» person standing: white skin +ð§ðŒ person standing: tan skin +ð§ðœ person standing: olive skin +ð§ðŸ person standing: brown skin +ð§ð¿ person standing: black skin +ð§ð» person kneeling: white skin +ð§ðŒ person kneeling: tan skin +ð§ðœ person kneeling: olive skin +ð§ðŸ person kneeling: brown skin +ð§ð¿ person kneeling: black skin +ð§ð» deaf person: white skin +ð§ðŒ deaf person: tan skin +ð§ðœ deaf person: olive skin +ð§ðŸ deaf person: brown skin +ð§ð¿ deaf person: black skin +ð§ð» person: white skin +ð§ðŒ person: tan skin +ð§ðœ person: olive skin +ð§ðŸ person: brown skin +ð§ð¿ person: black skin +ð§ð» child: white skin +ð§ðŒ child: tan skin +ð§ðœ child: olive skin +ð§ðŸ child: brown skin +ð§ð¿ child: black skin +ð§ð» older person: white skin +ð§ðŒ older person: tan skin +ð§ðœ older person: olive skin +ð§ðŸ older person: brown skin +ð§ð¿ older person: black skin +ð§ð» person: white skin, beard +ð§ðŒ person: tan skin, beard +ð§ðœ person: olive skin, beard +ð§ðŸ person: brown skin, beard +ð§ð¿ person: black skin, beard +ð§ð» woman with headscarf: white skin +ð§ðŒ woman with headscarf: tan skin +ð§ðœ woman with headscarf: olive skin +ð§ðŸ woman with headscarf: brown skin +ð§ð¿ woman with headscarf: black skin +ð§ð» person in steamy room: white skin +ð§ðŒ person in steamy room: tan skin +ð§ðœ person in steamy room: olive skin +ð§ðŸ person in steamy room: brown skin +ð§ð¿ person in steamy room: black skin +ð§ð» person climbing: white skin +ð§ðŒ person climbing: tan skin +ð§ðœ person climbing: olive skin +ð§ðŸ person climbing: brown skin +ð§ð¿ person climbing: black skin +ð§ð» person in lotus position: white skin +ð§ðŒ person in lotus position: tan skin +ð§ðœ person in lotus position: olive skin +ð§ðŸ person in lotus position: brown skin +ð§ð¿ person in lotus position: black skin +ð§ð» mage: white skin +ð§ðŒ mage: tan skin +ð§ðœ mage: olive skin +ð§ðŸ mage: brown skin +ð§ð¿ mage: black skin +ð§ð» fairy: white skin +ð§ðŒ fairy: tan skin +ð§ðœ fairy: olive skin +ð§ðŸ fairy: brown skin +ð§ð¿ fairy: black skin +ð§ð» vampire: white skin +ð§ðŒ vampire: tan skin +ð§ðœ vampire: olive skin +ð§ðŸ vampire: brown skin +ð§ð¿ vampire: black skin +ð§ð» merperson: white skin +ð§ðŒ merperson: tan skin +ð§ðœ merperson: olive skin +ð§ðŸ merperson: brown skin +ð§ð¿ merperson: black skin +ð§ð» elf: white skin +ð§ðŒ elf: tan skin +ð§ðœ elf: olive skin +ð§ðŸ elf: brown skin +ð§ð¿ elf: black skin +ð«
ð» person with crown: white skin +ð«
ðŒ person with crown: tan skin +ð«
ðœ person with crown: olive skin +ð«
ðŸ person with crown: brown skin +ð«
ð¿ person with crown: black skin +ð«°ð» hand with index finger and thumb crossed: white skin +ð«°ðŒ hand with index finger and thumb crossed: tan skin +ð«°ðœ hand with index finger and thumb crossed: olive skin +ð«°ðŸ hand with index finger and thumb crossed: brown skin +ð«°ð¿ hand with index finger and thumb crossed: black skin +ð«±ð» rightwards hand: white skin +ð«±ðŒ rightwards hand: tan skin +ð«±ðœ rightwards hand: olive skin +ð«±ðŸ rightwards hand: brown skin +ð«±ð¿ rightwards hand: black skin +ð«²ð» leftwards hand: white skin +ð«²ðŒ leftwards hand: tan skin +ð«²ðœ leftwards hand: olive skin +ð«²ðŸ leftwards hand: brown skin +ð«²ð¿ leftwards hand: black skin +ð«³ð» palm down hand: white skin +ð«³ðŒ palm down hand: tan skin +ð«³ðœ palm down hand: olive skin +ð«³ðŸ palm down hand: brown skin +ð«³ð¿ palm down hand: black skin +ð«Žð» palm up hand: white skin +ð«ŽðŒ palm up hand: tan skin +ð«Žðœ palm up hand: olive skin +ð«ŽðŸ palm up hand: brown skin +ð«Žð¿ palm up hand: black skin +ð«µð» index pointing at the viewer: white skin +ð«µðŒ index pointing at the viewer: tan skin +ð«µðœ index pointing at the viewer: olive skin +ð«µðŸ index pointing at the viewer: brown skin +ð«µð¿ index pointing at the viewer: black skin +ð«¶ð» heart hands: white skin +ð«¶ðŒ heart hands: tan skin +ð«¶ðœ heart hands: olive skin +ð«¶ðŸ heart hands: brown skin +ð«¶ð¿ heart hands: black skin +ð«·ð» leftwards pushing hand: white skin +ð«·ðŒ leftwards pushing hand: tan skin +ð«·ðœ leftwards pushing hand: olive skin +ð«·ðŸ leftwards pushing hand: brown skin +ð«·ð¿ leftwards pushing hand: black skin +ð«žð» rightwards pushing hand: white skin +ð«žðŒ rightwards pushing hand: tan skin +ð«žðœ rightwards pushing hand: olive skin +ð«žðŸ rightwards pushing hand: brown skin +ð«žð¿ rightwards pushing hand: black skin +ðšâðŠ family: man, boy +ðšâðŠâðŠ family: man, boy, boy +ðšâð§ family: man, girl +ðšâð§âðŠ family: man, girl, boy +ðšâð§âð§ family: man, girl, girl +ðšâð©âðŠ family: man, woman, boy +ðšâð©âðŠâðŠ family: man, woman, boy, boy +ðšâð©âð§ family: man, woman, girl +ðšâð©âð§âðŠ family: man, woman, girl, boy +ðšâð©âð§âð§ family: man, woman, girl, girl +ðšð»âð€âðšðŒ men holding hands: white skin, tan skin +ðšð»âð€âðšðœ men holding hands: white skin, olive skin +ðšð»âð€âðšðŸ men holding hands: white skin, brown skin +ðšð»âð€âðšð¿ men holding hands: white skin, black skin +ðšðŒâð€âðšð» men holding hands: tan skin, white skin +ðšðŒâð€âðšðœ men holding hands: tan skin, olive skin +ðšðŒâð€âðšðŸ men holding hands: tan skin, brown skin +ðšðŒâð€âðšð¿ men holding hands: tan skin, black skin +ðšðœâð€âðšð» men holding hands: olive skin, white skin +ðšðœâð€âðšðŒ men holding hands: olive skin, tan skin +ðšðœâð€âðšðŸ men holding hands: olive skin, brown skin +ðšðœâð€âðšð¿ men holding hands: olive skin, black skin +ðšðŸâð€âðšð» men holding hands: brown skin, white skin +ðšðŸâð€âðšðŒ men holding hands: brown skin, tan skin +ðšðŸâð€âðšðœ men holding hands: brown skin, olive skin +ðšðŸâð€âðšð¿ men holding hands: brown skin, black skin +ðšð¿âð€âðšð» men holding hands: black skin, white skin +ðšð¿âð€âðšðŒ men holding hands: black skin, tan skin +ðšð¿âð€âðšðœ men holding hands: black skin, olive skin +ðšð¿âð€âðšðŸ men holding hands: black skin, brown skin +ð©ââ€ïžâðš couple with heart: woman, man +ð©ââ€ïžâð© couple with heart: woman, woman +ð©ââ€ïžâðâðš kiss: woman, man +ð©ââ€ïžâðâð© kiss: woman, woman +ð©âðŠ family: woman, boy +ð©âðŠâðŠ family: woman, boy, boy +ð©âð§ family: woman, girl +ð©âð§âðŠ family: woman, girl, boy +ð©âð§âð§ family: woman, girl, girl +ð©âð©âðŠ family: woman, woman, boy +ð©âð©âðŠâðŠ family: woman, woman, boy, boy +ð©âð©âð§ family: woman, woman, girl +ð©âð©âð§âðŠ family: woman, woman, girl, boy +ð©âð©âð§âð§ family: woman, woman, girl, girl +ð©ð»ââ€ïžâðšð» couple with heart: woman, man, white skin +ð©ð»ââ€ïžâðšðŒ couple with heart: woman, man, white skin, tan skin +ð©ð»ââ€ïžâðšðœ couple with heart: woman, man, white skin, olive skin +ð©ð»ââ€ïžâðšðŸ couple with heart: woman, man, white skin, brown skin +ð©ð»ââ€ïžâðšð¿ couple with heart: woman, man, white skin, black skin +ð©ð»ââ€ïžâð©ð» couple with heart: woman, woman, white skin +ð©ð»ââ€ïžâð©ðŒ couple with heart: woman, woman, white skin, tan skin +ð©ð»ââ€ïžâð©ðœ couple with heart: woman, woman, white skin, olive skin +ð©ð»ââ€ïžâð©ðŸ couple with heart: woman, woman, white skin, brown skin +ð©ð»ââ€ïžâð©ð¿ couple with heart: woman, woman, white skin, black skin +ð©ð»ââ€ïžâðâðšð» kiss: woman, man, white skin +ð©ð»ââ€ïžâðâðšðŒ kiss: woman, man, white skin, tan skin +ð©ð»ââ€ïžâðâðšðœ kiss: woman, man, white skin, olive skin +ð©ð»ââ€ïžâðâðšðŸ kiss: woman, man, white skin, brown skin +ð©ð»ââ€ïžâðâðšð¿ kiss: woman, man, white skin, black skin +ð©ð»ââ€ïžâðâð©ð» kiss: woman, woman, white skin +ð©ð»ââ€ïžâðâð©ðŒ kiss: woman, woman, white skin, tan skin +ð©ð»ââ€ïžâðâð©ðœ kiss: woman, woman, white skin, olive skin +ð©ð»ââ€ïžâðâð©ðŸ kiss: woman, woman, white skin, brown skin +ð©ð»ââ€ïžâðâð©ð¿ kiss: woman, woman, white skin, black skin +ð©ð»âð€âðšðŒ woman and man holding hands: white skin, tan skin +ð©ð»âð€âðšðœ woman and man holding hands: white skin, olive skin +ð©ð»âð€âðšðŸ woman and man holding hands: white skin, brown skin +ð©ð»âð€âðšð¿ woman and man holding hands: white skin, black skin +ð©ð»âð€âð©ðŒ women holding hands: white skin, tan skin +ð©ð»âð€âð©ðœ women holding hands: white skin, olive skin +ð©ð»âð€âð©ðŸ women holding hands: white skin, brown skin +ð©ð»âð€âð©ð¿ women holding hands: white skin, black skin +ð©ðŒââ€ïžâðšð» couple with heart: woman, man, tan skin, white skin +ð©ðŒââ€ïžâðšðŒ couple with heart: woman, man, tan skin +ð©ðŒââ€ïžâðšðœ couple with heart: woman, man, tan skin, olive skin +ð©ðŒââ€ïžâðšðŸ couple with heart: woman, man, tan skin, brown skin +ð©ðŒââ€ïžâðšð¿ couple with heart: woman, man, tan skin, black skin +ð©ðŒââ€ïžâð©ð» couple with heart: woman, woman, tan skin, white skin +ð©ðŒââ€ïžâð©ðŒ couple with heart: woman, woman, tan skin +ð©ðŒââ€ïžâð©ðœ couple with heart: woman, woman, tan skin, olive skin +ð©ðŒââ€ïžâð©ðŸ couple with heart: woman, woman, tan skin, brown skin +ð©ðŒââ€ïžâð©ð¿ couple with heart: woman, woman, tan skin, black skin +ð©ðŒââ€ïžâðâðšð» kiss: woman, man, tan skin, white skin +ð©ðŒââ€ïžâðâðšðŒ kiss: woman, man, tan skin +ð©ðŒââ€ïžâðâðšðœ kiss: woman, man, tan skin, olive skin +ð©ðŒââ€ïžâðâðšðŸ kiss: woman, man, tan skin, brown skin +ð©ðŒââ€ïžâðâðšð¿ kiss: woman, man, tan skin, black skin +ð©ðŒââ€ïžâðâð©ð» kiss: woman, woman, tan skin, white skin +ð©ðŒââ€ïžâðâð©ðŒ kiss: woman, woman, tan skin +ð©ðŒââ€ïžâðâð©ðœ kiss: woman, woman, tan skin, olive skin +ð©ðŒââ€ïžâðâð©ðŸ kiss: woman, woman, tan skin, brown skin +ð©ðŒââ€ïžâðâð©ð¿ kiss: woman, woman, tan skin, black skin +ð©ðŒâð€âðšð» woman and man holding hands: tan skin, white skin +ð©ðŒâð€âðšðœ woman and man holding hands: tan skin, olive skin +ð©ðŒâð€âðšðŸ woman and man holding hands: tan skin, brown skin +ð©ðŒâð€âðšð¿ woman and man holding hands: tan skin, black skin +ð©ðŒâð€âð©ð» women holding hands: tan skin, white skin +ð©ðŒâð€âð©ðœ women holding hands: tan skin, olive skin +ð©ðŒâð€âð©ðŸ women holding hands: tan skin, brown skin +ð©ðŒâð€âð©ð¿ women holding hands: tan skin, black skin +ð©ðœââ€ïžâðšð» couple with heart: woman, man, olive skin, white skin +ð©ðœââ€ïžâðšðŒ couple with heart: woman, man, olive skin, tan skin +ð©ðœââ€ïžâðšðœ couple with heart: woman, man, olive skin +ð©ðœââ€ïžâðšðŸ couple with heart: woman, man, olive skin, brown skin +ð©ðœââ€ïžâðšð¿ couple with heart: woman, man, olive skin, black skin +ð©ðœââ€ïžâð©ð» couple with heart: woman, woman, olive skin, white skin +ð©ðœââ€ïžâð©ðŒ couple with heart: woman, woman, olive skin, tan skin +ð©ðœââ€ïžâð©ðœ couple with heart: woman, woman, olive skin +ð©ðœââ€ïžâð©ðŸ couple with heart: woman, woman, olive skin, brown skin +ð©ðœââ€ïžâð©ð¿ couple with heart: woman, woman, olive skin, black skin +ð©ðœââ€ïžâðâðšð» kiss: woman, man, olive skin, white skin +ð©ðœââ€ïžâðâðšðŒ kiss: woman, man, olive skin, tan skin +ð©ðœââ€ïžâðâðšðœ kiss: woman, man, olive skin +ð©ðœââ€ïžâðâðšðŸ kiss: woman, man, olive skin, brown skin +ð©ðœââ€ïžâðâðšð¿ kiss: woman, man, olive skin, black skin +ð©ðœââ€ïžâðâð©ð» kiss: woman, woman, olive skin, white skin +ð©ðœââ€ïžâðâð©ðŒ kiss: woman, woman, olive skin, tan skin +ð©ðœââ€ïžâðâð©ðœ kiss: woman, woman, olive skin +ð©ðœââ€ïžâðâð©ðŸ kiss: woman, woman, olive skin, brown skin +ð©ðœââ€ïžâðâð©ð¿ kiss: woman, woman, olive skin, black skin +ð©ðœâð€âðšð» woman and man holding hands: olive skin, white skin +ð©ðœâð€âðšðŒ woman and man holding hands: olive skin, tan skin +ð©ðœâð€âðšðŸ woman and man holding hands: olive skin, brown skin +ð©ðœâð€âðšð¿ woman and man holding hands: olive skin, black skin +ð©ðœâð€âð©ð» women holding hands: olive skin, white skin +ð©ðœâð€âð©ðŒ women holding hands: olive skin, tan skin +ð©ðœâð€âð©ðŸ women holding hands: olive skin, brown skin +ð©ðœâð€âð©ð¿ women holding hands: olive skin, black skin +ð©ðŸââ€ïžâðšð» couple with heart: woman, man, brown skin, white skin +ð©ðŸââ€ïžâðšðŒ couple with heart: woman, man, brown skin, tan skin +ð©ðŸââ€ïžâðšðœ couple with heart: woman, man, brown skin, olive skin +ð©ðŸââ€ïžâðšðŸ couple with heart: woman, man, brown skin +ð©ðŸââ€ïžâðšð¿ couple with heart: woman, man, brown skin, black skin +ð©ðŸââ€ïžâð©ð» couple with heart: woman, woman, brown skin, white skin +ð©ðŸââ€ïžâð©ðŒ couple with heart: woman, woman, brown skin, tan skin +ð©ðŸââ€ïžâð©ðœ couple with heart: woman, woman, brown skin, olive skin +ð©ðŸââ€ïžâð©ðŸ couple with heart: woman, woman, brown skin +ð©ðŸââ€ïžâð©ð¿ couple with heart: woman, woman, brown skin, black skin +ð©ðŸââ€ïžâðâðšð» kiss: woman, man, brown skin, white skin +ð©ðŸââ€ïžâðâðšðŒ kiss: woman, man, brown skin, tan skin +ð©ðŸââ€ïžâðâðšðœ kiss: woman, man, brown skin, olive skin +ð©ðŸââ€ïžâðâðšðŸ kiss: woman, man, brown skin +ð©ðŸââ€ïžâðâðšð¿ kiss: woman, man, brown skin, black skin +ð©ðŸââ€ïžâðâð©ð» kiss: woman, woman, brown skin, white skin +ð©ðŸââ€ïžâðâð©ðŒ kiss: woman, woman, brown skin, tan skin +ð©ðŸââ€ïžâðâð©ðœ kiss: woman, woman, brown skin, olive skin +ð©ðŸââ€ïžâðâð©ðŸ kiss: woman, woman, brown skin +ð©ðŸââ€ïžâðâð©ð¿ kiss: woman, woman, brown skin, black skin +ð©ðŸâð€âðšð» woman and man holding hands: brown skin, white skin +ð©ðŸâð€âðšðŒ woman and man holding hands: brown skin, tan skin +ð©ðŸâð€âðšðœ woman and man holding hands: brown skin, olive skin +ð©ðŸâð€âðšð¿ woman and man holding hands: brown skin, black skin +ð©ðŸâð€âð©ð» women holding hands: brown skin, white skin +ð©ðŸâð€âð©ðŒ women holding hands: brown skin, tan skin +ð©ðŸâð€âð©ðœ women holding hands: brown skin, olive skin +ð©ðŸâð€âð©ð¿ women holding hands: brown skin, black skin +ð©ð¿ââ€ïžâðšð» couple with heart: woman, man, black skin, white skin +ð©ð¿ââ€ïžâðšðŒ couple with heart: woman, man, black skin, tan skin +ð©ð¿ââ€ïžâðšðœ couple with heart: woman, man, black skin, olive skin +ð©ð¿ââ€ïžâðšðŸ couple with heart: woman, man, black skin, brown skin +ð©ð¿ââ€ïžâðšð¿ couple with heart: woman, man, black skin +ð©ð¿ââ€ïžâð©ð» couple with heart: woman, woman, black skin, white skin +ð©ð¿ââ€ïžâð©ðŒ couple with heart: woman, woman, black skin, tan skin +ð©ð¿ââ€ïžâð©ðœ couple with heart: woman, woman, black skin, olive skin +ð©ð¿ââ€ïžâð©ðŸ couple with heart: woman, woman, black skin, brown skin +ð©ð¿ââ€ïžâð©ð¿ couple with heart: woman, woman, black skin +ð©ð¿ââ€ïžâðâðšð» kiss: woman, man, black skin, white skin +ð©ð¿ââ€ïžâðâðšðŒ kiss: woman, man, black skin, tan skin +ð©ð¿ââ€ïžâðâðšðœ kiss: woman, man, black skin, olive skin +ð©ð¿ââ€ïžâðâðšðŸ kiss: woman, man, black skin, brown skin +ð©ð¿ââ€ïžâðâðšð¿ kiss: woman, man, black skin +ð©ð¿ââ€ïžâðâð©ð» kiss: woman, woman, black skin, white skin +ð©ð¿ââ€ïžâðâð©ðŒ kiss: woman, woman, black skin, tan skin +ð©ð¿ââ€ïžâðâð©ðœ kiss: woman, woman, black skin, olive skin +ð©ð¿ââ€ïžâðâð©ðŸ kiss: woman, woman, black skin, brown skin +ð©ð¿ââ€ïžâðâð©ð¿ kiss: woman, woman, black skin +ð©ð¿âð€âðšð» woman and man holding hands: black skin, white skin +ð©ð¿âð€âðšðŒ woman and man holding hands: black skin, tan skin +ð©ð¿âð€âðšðœ woman and man holding hands: black skin, olive skin +ð©ð¿âð€âðšðŸ woman and man holding hands: black skin, brown skin +ð©ð¿âð€âð©ð» women holding hands: black skin, white skin +ð©ð¿âð€âð©ðŒ women holding hands: black skin, tan skin +ð©ð¿âð€âð©ðœ women holding hands: black skin, olive skin +ð©ð¿âð€âð©ðŸ women holding hands: black skin, brown skin +ð§âð€âð§ people holding hands +ð§âð§âð§ family: adult, adult, child +ð§âð§âð§âð§ family: adult, adult, child, child +ð§âð§ family: adult, child +ð§âð§âð§ family: adult, child, child +ð§ð»ââ€ïžâðâð§ðŒ kiss: person, person, white skin, tan skin +ð§ð»ââ€ïžâðâð§ðœ kiss: person, person, white skin, olive skin +ð§ð»ââ€ïžâðâð§ðŸ kiss: person, person, white skin, brown skin +ð§ð»ââ€ïžâðâð§ð¿ kiss: person, person, white skin, black skin +ð§ð»ââ€ïžâð§ðŒ couple with heart: person, person, white skin, tan skin +ð§ð»ââ€ïžâð§ðœ couple with heart: person, person, white skin, olive skin +ð§ð»ââ€ïžâð§ðŸ couple with heart: person, person, white skin, brown skin +ð§ð»ââ€ïžâð§ð¿ couple with heart: person, person, white skin, black skin +ð§ð»âð€âð§ð» people holding hands: white skin +ð§ð»âð€âð§ðŒ people holding hands: white skin, tan skin +ð§ð»âð€âð§ðœ people holding hands: white skin, olive skin +ð§ð»âð€âð§ðŸ people holding hands: white skin, brown skin +ð§ð»âð€âð§ð¿ people holding hands: white skin, black skin +ð§ðŒââ€ïžâðâð§ð» kiss: person, person, tan skin, white skin +ð§ðŒââ€ïžâðâð§ðœ kiss: person, person, tan skin, olive skin +ð§ðŒââ€ïžâðâð§ðŸ kiss: person, person, tan skin, brown skin +ð§ðŒââ€ïžâðâð§ð¿ kiss: person, person, tan skin, black skin +ð§ðŒââ€ïžâð§ð» couple with heart: person, person, tan skin, white skin +ð§ðŒââ€ïžâð§ðœ couple with heart: person, person, tan skin, olive skin +ð§ðŒââ€ïžâð§ðŸ couple with heart: person, person, tan skin, brown skin +ð§ðŒââ€ïžâð§ð¿ couple with heart: person, person, tan skin, black skin +ð§ðŒâð€âð§ð» people holding hands: tan skin, white skin +ð§ðŒâð€âð§ðŒ people holding hands: tan skin +ð§ðŒâð€âð§ðœ people holding hands: tan skin, olive skin +ð§ðŒâð€âð§ðŸ people holding hands: tan skin, brown skin +ð§ðŒâð€âð§ð¿ people holding hands: tan skin, black skin +ð§ðœââ€ïžâðâð§ð» kiss: person, person, olive skin, white skin +ð§ðœââ€ïžâðâð§ðŒ kiss: person, person, olive skin, tan skin +ð§ðœââ€ïžâðâð§ðŸ kiss: person, person, olive skin, brown skin +ð§ðœââ€ïžâðâð§ð¿ kiss: person, person, olive skin, black skin +ð§ðœââ€ïžâð§ð» couple with heart: person, person, olive skin, white skin +ð§ðœââ€ïžâð§ðŒ couple with heart: person, person, olive skin, tan skin +ð§ðœââ€ïžâð§ðŸ couple with heart: person, person, olive skin, brown skin +ð§ðœââ€ïžâð§ð¿ couple with heart: person, person, olive skin, black skin +ð§ðœâð€âð§ð» people holding hands: olive skin, white skin +ð§ðœâð€âð§ðŒ people holding hands: olive skin, tan skin +ð§ðœâð€âð§ðœ people holding hands: olive skin +ð§ðœâð€âð§ðŸ people holding hands: olive skin, brown skin +ð§ðœâð€âð§ð¿ people holding hands: olive skin, black skin +ð§ðŸââ€ïžâðâð§ð» kiss: person, person, brown skin, white skin +ð§ðŸââ€ïžâðâð§ðŒ kiss: person, person, brown skin, tan skin +ð§ðŸââ€ïžâðâð§ðœ kiss: person, person, brown skin, olive skin +ð§ðŸââ€ïžâðâð§ð¿ kiss: person, person, brown skin, black skin +ð§ðŸââ€ïžâð§ð» couple with heart: person, person, brown skin, white skin +ð§ðŸââ€ïžâð§ðŒ couple with heart: person, person, brown skin, tan skin +ð§ðŸââ€ïžâð§ðœ couple with heart: person, person, brown skin, olive skin +ð§ðŸââ€ïžâð§ð¿ couple with heart: person, person, brown skin, black skin +ð§ðŸâð€âð§ð» people holding hands: brown skin, white skin +ð§ðŸâð€âð§ðŒ people holding hands: brown skin, tan skin +ð§ðŸâð€âð§ðœ people holding hands: brown skin, olive skin +ð§ðŸâð€âð§ðŸ people holding hands: brown skin +ð§ðŸâð€âð§ð¿ people holding hands: brown skin, black skin +ð§ð¿ââ€ïžâðâð§ð» kiss: person, person, black skin, white skin +ð§ð¿ââ€ïžâðâð§ðŒ kiss: person, person, black skin, tan skin +ð§ð¿ââ€ïžâðâð§ðœ kiss: person, person, black skin, olive skin +ð§ð¿ââ€ïžâðâð§ðŸ kiss: person, person, black skin, brown skin +ð§ð¿ââ€ïžâð§ð» couple with heart: person, person, black skin, white skin +ð§ð¿ââ€ïžâð§ðŒ couple with heart: person, person, black skin, tan skin +ð§ð¿ââ€ïžâð§ðœ couple with heart: person, person, black skin, olive skin +ð§ð¿ââ€ïžâð§ðŸ couple with heart: person, person, black skin, brown skin +ð§ð¿âð€âð§ð» people holding hands: black skin, white skin +ð§ð¿âð€âð§ðŒ people holding hands: black skin, tan skin +ð§ð¿âð€âð§ðœ people holding hands: black skin, olive skin +ð§ð¿âð€âð§ðŸ people holding hands: black skin, brown skin +ð§ð¿âð€âð§ð¿ people holding hands: black skin +ð«±ð»âð«²ðŒ handshake: white skin, tan skin +ð«±ð»âð«²ðœ handshake: white skin, olive skin +ð«±ð»âð«²ðŸ handshake: white skin, brown skin +ð«±ð»âð«²ð¿ handshake: white skin, black skin +ð«±ðŒâð«²ð» handshake: tan skin, white skin +ð«±ðŒâð«²ðœ handshake: tan skin, olive skin +ð«±ðŒâð«²ðŸ handshake: tan skin, brown skin +ð«±ðŒâð«²ð¿ handshake: tan skin, black skin +ð«±ðœâð«²ð» handshake: olive skin, white skin +ð«±ðœâð«²ðŒ handshake: olive skin, tan skin +ð«±ðœâð«²ðŸ handshake: olive skin, brown skin +ð«±ðœâð«²ð¿ handshake: olive skin, black skin +ð«±ðŸâð«²ð» handshake: brown skin, white skin +ð«±ðŸâð«²ðŒ handshake: brown skin, tan skin +ð«±ðŸâð«²ðœ handshake: brown skin, olive skin +ð«±ðŸâð«²ð¿ handshake: brown skin, black skin +ð«±ð¿âð«²ð» handshake: black skin, white skin +ð«±ð¿âð«²ðŒ handshake: black skin, tan skin +ð«±ð¿âð«²ðœ handshake: black skin, olive skin +ð«±ð¿âð«²ðŸ handshake: black skin, brown skin +ðââ¡ïž person running facing right +ðð»ââ¡ïž person running facing right: white skin +ððŒââ¡ïž person running facing right: tan skin +ððœââ¡ïž person running facing right: olive skin +ððŸââ¡ïž person running facing right: brown skin +ðð¿ââ¡ïž person running facing right: black skin +ðšââïž man health worker +ðšââïž man judge +ðšââïž man pilot +ðšâðŸ man farmer +ðšâð³ man cook +ðšâðŒ man feeding baby +ðšâð man student +ðšâð€ man singer +ðšâðš man artist +ðšâð« man teacher +ðšâð man factory worker +ðšâð» man technologist +ðšâðŒ man office worker +ðšâð§ man mechanic +ðšâð¬ man scientist +ðšâð man astronaut +ðšâð man firefighter +ðšâðŠ¯ man with white cane +ðšâðНââ¡ïž man with white cane facing right +ðšâðŠŒ man in motorized wheelchair +ðšâðŠŒââ¡ïž man in motorized wheelchair facing right +ðšâðŠœ man in manual wheelchair +ðšâðŠœââ¡ïž man in manual wheelchair facing right +ðšð»ââïž man health worker: white skin +ðšð»ââïž man judge: white skin +ðšð»ââïž man pilot: white skin +ðšð»âðŸ man farmer: white skin +ðšð»âð³ man cook: white skin +ðšð»âðŒ man feeding baby: white skin +ðšð»âð man student: white skin +ðšð»âð€ man singer: white skin +ðšð»âðš man artist: white skin +ðšð»âð« man teacher: white skin +ðšð»âð man factory worker: white skin +ðšð»âð» man technologist: white skin +ðšð»âðŒ man office worker: white skin +ðšð»âð§ man mechanic: white skin +ðšð»âð¬ man scientist: white skin +ðšð»âð man astronaut: white skin +ðšð»âð man firefighter: white skin +ðšð»âðŠ¯ man with white cane: white skin +ðšð»âðНââ¡ïž man with white cane facing right: white skin +ðšð»âðŠŒ man in motorized wheelchair: white skin +ðšð»âðŠŒââ¡ïž man in motorized wheelchair facing right: white skin +ðšð»âðŠœ man in manual wheelchair: white skin +ðšð»âðŠœââ¡ïž man in manual wheelchair facing right: white skin +ðšðŒââïž man health worker: tan skin +ðšðŒââïž man judge: tan skin +ðšðŒââïž man pilot: tan skin +ðšðŒâðŸ man farmer: tan skin +ðšðŒâð³ man cook: tan skin +ðšðŒâðŒ man feeding baby: tan skin +ðšðŒâð man student: tan skin +ðšðŒâð€ man singer: tan skin +ðšðŒâðš man artist: tan skin +ðšðŒâð« man teacher: tan skin +ðšðŒâð man factory worker: tan skin +ðšðŒâð» man technologist: tan skin +ðšðŒâðŒ man office worker: tan skin +ðšðŒâð§ man mechanic: tan skin +ðšðŒâð¬ man scientist: tan skin +ðšðŒâð man astronaut: tan skin +ðšðŒâð man firefighter: tan skin +ðšðŒâðŠ¯ man with white cane: tan skin +ðšðŒâðНââ¡ïž man with white cane facing right: tan skin +ðšðŒâðŠŒ man in motorized wheelchair: tan skin +ðšðŒâðŠŒââ¡ïž man in motorized wheelchair facing right: tan skin +ðšðŒâðŠœ man in manual wheelchair: tan skin +ðšðŒâðŠœââ¡ïž man in manual wheelchair facing right: tan skin +ðšðœââïž man health worker: olive skin +ðšðœââïž man judge: olive skin +ðšðœââïž man pilot: olive skin +ðšðœâðŸ man farmer: olive skin +ðšðœâð³ man cook: olive skin +ðšðœâðŒ man feeding baby: olive skin +ðšðœâð man student: olive skin +ðšðœâð€ man singer: olive skin +ðšðœâðš man artist: olive skin +ðšðœâð« man teacher: olive skin +ðšðœâð man factory worker: olive skin +ðšðœâð» man technologist: olive skin +ðšðœâðŒ man office worker: olive skin +ðšðœâð§ man mechanic: olive skin +ðšðœâð¬ man scientist: olive skin +ðšðœâð man astronaut: olive skin +ðšðœâð man firefighter: olive skin +ðšðœâðŠ¯ man with white cane: olive skin +ðšðœâðНââ¡ïž man with white cane facing right: olive skin +ðšðœâðŠŒ man in motorized wheelchair: olive skin +ðšðœâðŠŒââ¡ïž man in motorized wheelchair facing right: olive skin +ðšðœâðŠœ man in manual wheelchair: olive skin +ðšðœâðŠœââ¡ïž man in manual wheelchair facing right: olive skin +ðšðŸââïž man health worker: brown skin +ðšðŸââïž man judge: brown skin +ðšðŸââïž man pilot: brown skin +ðšðŸâðŸ man farmer: brown skin +ðšðŸâð³ man cook: brown skin +ðšðŸâðŒ man feeding baby: brown skin +ðšðŸâð man student: brown skin +ðšðŸâð€ man singer: brown skin +ðšðŸâðš man artist: brown skin +ðšðŸâð« man teacher: brown skin +ðšðŸâð man factory worker: brown skin +ðšðŸâð» man technologist: brown skin +ðšðŸâðŒ man office worker: brown skin +ðšðŸâð§ man mechanic: brown skin +ðšðŸâð¬ man scientist: brown skin +ðšðŸâð man astronaut: brown skin +ðšðŸâð man firefighter: brown skin +ðšðŸâðŠ¯ man with white cane: brown skin +ðšðŸâðНââ¡ïž man with white cane facing right: brown skin +ðšðŸâðŠŒ man in motorized wheelchair: brown skin +ðšðŸâðŠŒââ¡ïž man in motorized wheelchair facing right: brown skin +ðšðŸâðŠœ man in manual wheelchair: brown skin +ðšðŸâðŠœââ¡ïž man in manual wheelchair facing right: brown skin +ðšð¿ââïž man health worker: black skin +ðšð¿ââïž man judge: black skin +ðšð¿ââïž man pilot: black skin +ðšð¿âðŸ man farmer: black skin +ðšð¿âð³ man cook: black skin +ðšð¿âðŒ man feeding baby: black skin +ðšð¿âð man student: black skin +ðšð¿âð€ man singer: black skin +ðšð¿âðš man artist: black skin +ðšð¿âð« man teacher: black skin +ðšð¿âð man factory worker: black skin +ðšð¿âð» man technologist: black skin +ðšð¿âðŒ man office worker: black skin +ðšð¿âð§ man mechanic: black skin +ðšð¿âð¬ man scientist: black skin +ðšð¿âð man astronaut: black skin +ðšð¿âð man firefighter: black skin +ðšð¿âðŠ¯ man with white cane: black skin +ðšð¿âðНââ¡ïž man with white cane facing right: black skin +ðšð¿âðŠŒ man in motorized wheelchair: black skin +ðšð¿âðŠŒââ¡ïž man in motorized wheelchair facing right: black skin +ðšð¿âðŠœ man in manual wheelchair: black skin +ðšð¿âðŠœââ¡ïž man in manual wheelchair facing right: black skin +ð©ââïž woman health worker +ð©ââïž woman judge +ð©ââïž woman pilot +ð©âðŸ woman farmer +ð©âð³ woman cook +ð©âðŒ woman feeding baby +ð©âð woman student +ð©âð€ woman singer +ð©âðš woman artist +ð©âð« woman teacher +ð©âð woman factory worker +ð©âð» woman technologist +ð©âðŒ woman office worker +ð©âð§ woman mechanic +ð©âð¬ woman scientist +ð©âð woman astronaut +ð©âð woman firefighter +ð©âðŠ¯ woman with white cane +ð©âðНââ¡ïž woman with white cane facing right +ð©âðŠŒ woman in motorized wheelchair +ð©âðŠŒââ¡ïž woman in motorized wheelchair facing right +ð©âðŠœ woman in manual wheelchair +ð©âðŠœââ¡ïž woman in manual wheelchair facing right +ð©ð»ââïž woman health worker: white skin +ð©ð»ââïž woman judge: white skin +ð©ð»ââïž woman pilot: white skin +ð©ð»âðŸ woman farmer: white skin +ð©ð»âð³ woman cook: white skin +ð©ð»âðŒ woman feeding baby: white skin +ð©ð»âð woman student: white skin +ð©ð»âð€ woman singer: white skin +ð©ð»âðš woman artist: white skin +ð©ð»âð« woman teacher: white skin +ð©ð»âð woman factory worker: white skin +ð©ð»âð» woman technologist: white skin +ð©ð»âðŒ woman office worker: white skin +ð©ð»âð§ woman mechanic: white skin +ð©ð»âð¬ woman scientist: white skin +ð©ð»âð woman astronaut: white skin +ð©ð»âð woman firefighter: white skin +ð©ð»âðŠ¯ woman with white cane: white skin +ð©ð»âðНââ¡ïž woman with white cane facing right: white skin +ð©ð»âðŠŒ woman in motorized wheelchair: white skin +ð©ð»âðŠŒââ¡ïž woman in motorized wheelchair facing right: white skin +ð©ð»âðŠœ woman in manual wheelchair: white skin +ð©ð»âðŠœââ¡ïž woman in manual wheelchair facing right: white skin +ð©ðŒââïž woman health worker: tan skin +ð©ðŒââïž woman judge: tan skin +ð©ðŒââïž woman pilot: tan skin +ð©ðŒâðŸ woman farmer: tan skin +ð©ðŒâð³ woman cook: tan skin +ð©ðŒâðŒ woman feeding baby: tan skin +ð©ðŒâð woman student: tan skin +ð©ðŒâð€ woman singer: tan skin +ð©ðŒâðš woman artist: tan skin +ð©ðŒâð« woman teacher: tan skin +ð©ðŒâð woman factory worker: tan skin +ð©ðŒâð» woman technologist: tan skin +ð©ðŒâðŒ woman office worker: tan skin +ð©ðŒâð§ woman mechanic: tan skin +ð©ðŒâð¬ woman scientist: tan skin +ð©ðŒâð woman astronaut: tan skin +ð©ðŒâð woman firefighter: tan skin +ð©ðŒâðŠ¯ woman with white cane: tan skin +ð©ðŒâðНââ¡ïž woman with white cane facing right: tan skin +ð©ðŒâðŠŒ woman in motorized wheelchair: tan skin +ð©ðŒâðŠŒââ¡ïž woman in motorized wheelchair facing right: tan skin +ð©ðŒâðŠœ woman in manual wheelchair: tan skin +ð©ðŒâðŠœââ¡ïž woman in manual wheelchair facing right: tan skin +ð©ðœââïž woman health worker: olive skin +ð©ðœââïž woman judge: olive skin +ð©ðœââïž woman pilot: olive skin +ð©ðœâðŸ woman farmer: olive skin +ð©ðœâð³ woman cook: olive skin +ð©ðœâðŒ woman feeding baby: olive skin +ð©ðœâð woman student: olive skin +ð©ðœâð€ woman singer: olive skin +ð©ðœâðš woman artist: olive skin +ð©ðœâð« woman teacher: olive skin +ð©ðœâð woman factory worker: olive skin +ð©ðœâð» woman technologist: olive skin +ð©ðœâðŒ woman office worker: olive skin +ð©ðœâð§ woman mechanic: olive skin +ð©ðœâð¬ woman scientist: olive skin +ð©ðœâð woman astronaut: olive skin +ð©ðœâð woman firefighter: olive skin +ð©ðœâðŠ¯ woman with white cane: olive skin +ð©ðœâðНââ¡ïž woman with white cane facing right: olive skin +ð©ðœâðŠŒ woman in motorized wheelchair: olive skin +ð©ðœâðŠŒââ¡ïž woman in motorized wheelchair facing right: olive skin +ð©ðœâðŠœ woman in manual wheelchair: olive skin +ð©ðœâðŠœââ¡ïž woman in manual wheelchair facing right: olive skin +ð©ðŸââïž woman health worker: brown skin +ð©ðŸââïž woman judge: brown skin +ð©ðŸââïž woman pilot: brown skin +ð©ðŸâðŸ woman farmer: brown skin +ð©ðŸâð³ woman cook: brown skin +ð©ðŸâðŒ woman feeding baby: brown skin +ð©ðŸâð woman student: brown skin +ð©ðŸâð€ woman singer: brown skin +ð©ðŸâðš woman artist: brown skin +ð©ðŸâð« woman teacher: brown skin +ð©ðŸâð woman factory worker: brown skin +ð©ðŸâð» woman technologist: brown skin +ð©ðŸâðŒ woman office worker: brown skin +ð©ðŸâð§ woman mechanic: brown skin +ð©ðŸâð¬ woman scientist: brown skin +ð©ðŸâð woman astronaut: brown skin +ð©ðŸâð woman firefighter: brown skin +ð©ðŸâðŠ¯ woman with white cane: brown skin +ð©ðŸâðНââ¡ïž woman with white cane facing right: brown skin +ð©ðŸâðŠŒ woman in motorized wheelchair: brown skin +ð©ðŸâðŠŒââ¡ïž woman in motorized wheelchair facing right: brown skin +ð©ðŸâðŠœ woman in manual wheelchair: brown skin +ð©ðŸâðŠœââ¡ïž woman in manual wheelchair facing right: brown skin +ð©ð¿ââïž woman health worker: black skin +ð©ð¿ââïž woman judge: black skin +ð©ð¿ââïž woman pilot: black skin +ð©ð¿âðŸ woman farmer: black skin +ð©ð¿âð³ woman cook: black skin +ð©ð¿âðŒ woman feeding baby: black skin +ð©ð¿âð woman student: black skin +ð©ð¿âð€ woman singer: black skin +ð©ð¿âðš woman artist: black skin +ð©ð¿âð« woman teacher: black skin +ð©ð¿âð woman factory worker: black skin +ð©ð¿âð» woman technologist: black skin +ð©ð¿âðŒ woman office worker: black skin +ð©ð¿âð§ woman mechanic: black skin +ð©ð¿âð¬ woman scientist: black skin +ð©ð¿âð woman astronaut: black skin +ð©ð¿âð woman firefighter: black skin +ð©ð¿âðŠ¯ woman with white cane: black skin +ð©ð¿âðНââ¡ïž woman with white cane facing right: black skin +ð©ð¿âðŠŒ woman in motorized wheelchair: black skin +ð©ð¿âðŠŒââ¡ïž woman in motorized wheelchair facing right: black skin +ð©ð¿âðŠœ woman in manual wheelchair: black skin +ð©ð¿âðŠœââ¡ïž woman in manual wheelchair facing right: black skin +ð¶ââ¡ïž person walking facing right +ð¶ð»ââ¡ïž person walking facing right: white skin +ð¶ðŒââ¡ïž person walking facing right: tan skin +ð¶ðœââ¡ïž person walking facing right: olive skin +ð¶ðŸââ¡ïž person walking facing right: brown skin +ð¶ð¿ââ¡ïž person walking facing right: black skin +ð§ââ¡ïž person kneeling facing right +ð§ð»ââ¡ïž person kneeling facing right: white skin +ð§ðŒââ¡ïž person kneeling facing right: tan skin +ð§ðœââ¡ïž person kneeling facing right: olive skin +ð§ðŸââ¡ïž person kneeling facing right: brown skin +ð§ð¿ââ¡ïž person kneeling facing right: black skin +ð§ââïž health worker +ð§ââïž judge +ð§ââïž pilot +ð§âðŸ farmer +ð§âð³ cook +ð§âðŒ person feeding baby +ð§âð Mx Claus +ð§âð student +ð§âð€ singer +ð§âðš artist +ð§âð« teacher +ð§âð factory worker +ð§âð» technologist +ð§âðŒ office worker +ð§âð§ mechanic +ð§âð¬ scientist +ð§âð astronaut +ð§âð firefighter +ð§âðŠ¯ person with white cane +ð§âðНââ¡ïž person with white cane facing right +ð§âðŠŒ person in motorized wheelchair +ð§âðŠŒââ¡ïž person in motorized wheelchair facing right +ð§âðŠœ person in manual wheelchair +ð§âðŠœââ¡ïž person in manual wheelchair facing right +ð§ð»ââïž health worker: white skin +ð§ð»ââïž judge: white skin +ð§ð»ââïž pilot: white skin +ð§ð»âðŸ farmer: white skin +ð§ð»âð³ cook: white skin +ð§ð»âðŒ person feeding baby: white skin +ð§ð»âð Mx Claus: white skin +ð§ð»âð student: white skin +ð§ð»âð€ singer: white skin +ð§ð»âðš artist: white skin +ð§ð»âð« teacher: white skin +ð§ð»âð factory worker: white skin +ð§ð»âð» technologist: white skin +ð§ð»âðŒ office worker: white skin +ð§ð»âð§ mechanic: white skin +ð§ð»âð¬ scientist: white skin +ð§ð»âð astronaut: white skin +ð§ð»âð firefighter: white skin +ð§ð»âðŠ¯ person with white cane: white skin +ð§ð»âðНââ¡ïž person with white cane facing right: white skin +ð§ð»âðŠŒ person in motorized wheelchair: white skin +ð§ð»âðŠŒââ¡ïž person in motorized wheelchair facing right: white skin +ð§ð»âðŠœ person in manual wheelchair: white skin +ð§ð»âðŠœââ¡ïž person in manual wheelchair facing right: white skin +ð§ðŒââïž health worker: tan skin +ð§ðŒââïž judge: tan skin +ð§ðŒââïž pilot: tan skin +ð§ðŒâðŸ farmer: tan skin +ð§ðŒâð³ cook: tan skin +ð§ðŒâðŒ person feeding baby: tan skin +ð§ðŒâð Mx Claus: tan skin +ð§ðŒâð student: tan skin +ð§ðŒâð€ singer: tan skin +ð§ðŒâðš artist: tan skin +ð§ðŒâð« teacher: tan skin +ð§ðŒâð factory worker: tan skin +ð§ðŒâð» technologist: tan skin +ð§ðŒâðŒ office worker: tan skin +ð§ðŒâð§ mechanic: tan skin +ð§ðŒâð¬ scientist: tan skin +ð§ðŒâð astronaut: tan skin +ð§ðŒâð firefighter: tan skin +ð§ðŒâðŠ¯ person with white cane: tan skin +ð§ðŒâðНââ¡ïž person with white cane facing right: tan skin +ð§ðŒâðŠŒ person in motorized wheelchair: tan skin +ð§ðŒâðŠŒââ¡ïž person in motorized wheelchair facing right: tan skin +ð§ðŒâðŠœ person in manual wheelchair: tan skin +ð§ðŒâðŠœââ¡ïž person in manual wheelchair facing right: tan skin +ð§ðœââïž health worker: olive skin +ð§ðœââïž judge: olive skin +ð§ðœââïž pilot: olive skin +ð§ðœâðŸ farmer: olive skin +ð§ðœâð³ cook: olive skin +ð§ðœâðŒ person feeding baby: olive skin +ð§ðœâð Mx Claus: olive skin +ð§ðœâð student: olive skin +ð§ðœâð€ singer: olive skin +ð§ðœâðš artist: olive skin +ð§ðœâð« teacher: olive skin +ð§ðœâð factory worker: olive skin +ð§ðœâð» technologist: olive skin +ð§ðœâðŒ office worker: olive skin +ð§ðœâð§ mechanic: olive skin +ð§ðœâð¬ scientist: olive skin +ð§ðœâð astronaut: olive skin +ð§ðœâð firefighter: olive skin +ð§ðœâðŠ¯ person with white cane: olive skin +ð§ðœâðНââ¡ïž person with white cane facing right: olive skin +ð§ðœâðŠŒ person in motorized wheelchair: olive skin +ð§ðœâðŠŒââ¡ïž person in motorized wheelchair facing right: olive skin +ð§ðœâðŠœ person in manual wheelchair: olive skin +ð§ðœâðŠœââ¡ïž person in manual wheelchair facing right: olive skin +ð§ðŸââïž health worker: brown skin +ð§ðŸââïž judge: brown skin +ð§ðŸââïž pilot: brown skin +ð§ðŸâðŸ farmer: brown skin +ð§ðŸâð³ cook: brown skin +ð§ðŸâðŒ person feeding baby: brown skin +ð§ðŸâð Mx Claus: brown skin +ð§ðŸâð student: brown skin +ð§ðŸâð€ singer: brown skin +ð§ðŸâðš artist: brown skin +ð§ðŸâð« teacher: brown skin +ð§ðŸâð factory worker: brown skin +ð§ðŸâð» technologist: brown skin +ð§ðŸâðŒ office worker: brown skin +ð§ðŸâð§ mechanic: brown skin +ð§ðŸâð¬ scientist: brown skin +ð§ðŸâð astronaut: brown skin +ð§ðŸâð firefighter: brown skin +ð§ðŸâðŠ¯ person with white cane: brown skin +ð§ðŸâðНââ¡ïž person with white cane facing right: brown skin +ð§ðŸâðŠŒ person in motorized wheelchair: brown skin +ð§ðŸâðŠŒââ¡ïž person in motorized wheelchair facing right: brown skin +ð§ðŸâðŠœ person in manual wheelchair: brown skin +ð§ðŸâðŠœââ¡ïž person in manual wheelchair facing right: brown skin +ð§ð¿ââïž health worker: black skin +ð§ð¿ââïž judge: black skin +ð§ð¿ââïž pilot: black skin +ð§ð¿âðŸ farmer: black skin +ð§ð¿âð³ cook: black skin +ð§ð¿âðŒ person feeding baby: black skin +ð§ð¿âð Mx Claus: black skin +ð§ð¿âð student: black skin +ð§ð¿âð€ singer: black skin +ð§ð¿âðš artist: black skin +ð§ð¿âð« teacher: black skin +ð§ð¿âð factory worker: black skin +ð§ð¿âð» technologist: black skin +ð§ð¿âðŒ office worker: black skin +ð§ð¿âð§ mechanic: black skin +ð§ð¿âð¬ scientist: black skin +ð§ð¿âð astronaut: black skin +ð§ð¿âð firefighter: black skin +ð§ð¿âðŠ¯ person with white cane: black skin +ð§ð¿âðНââ¡ïž person with white cane facing right: black skin +ð§ð¿âðŠŒ person in motorized wheelchair: black skin +ð§ð¿âðŠŒââ¡ïž person in motorized wheelchair facing right: black skin +ð§ð¿âðŠœ person in manual wheelchair: black skin +ð§ð¿âðŠœââ¡ïž person in manual wheelchair facing right: black skin +â¹ð»ââïž woman bouncing ball: white skin +â¹ð»ââïž man bouncing ball: white skin +â¹ðŒââïž woman bouncing ball: tan skin +â¹ðŒââïž man bouncing ball: tan skin +â¹ðœââïž woman bouncing ball: olive skin +â¹ðœââïž man bouncing ball: olive skin +â¹ðŸââïž woman bouncing ball: brown skin +â¹ðŸââïž man bouncing ball: brown skin +â¹ð¿ââïž woman bouncing ball: black skin +â¹ð¿ââïž man bouncing ball: black skin +â¹ïžââïž woman bouncing ball +â¹ïžââïž man bouncing ball +ðââïž woman running +ðââïžââ¡ïž woman running facing right +ðââïž man running +ðââïžââ¡ïž man running facing right +ðð»ââïž woman running: white skin +ðð»ââïžââ¡ïž woman running facing right: white skin +ðð»ââïž man running: white skin +ðð»ââïžââ¡ïž man running facing right: white skin +ððŒââïž woman running: tan skin +ððŒââïžââ¡ïž woman running facing right: tan skin +ððŒââïž man running: tan skin +ððŒââïžââ¡ïž man running facing right: tan skin +ððœââïž woman running: olive skin +ððœââïžââ¡ïž woman running facing right: olive skin +ððœââïž man running: olive skin +ððœââïžââ¡ïž man running facing right: olive skin +ððŸââïž woman running: brown skin +ððŸââïžââ¡ïž woman running facing right: brown skin +ððŸââïž man running: brown skin +ððŸââïžââ¡ïž man running facing right: brown skin +ðð¿ââïž woman running: black skin +ðð¿ââïžââ¡ïž woman running facing right: black skin +ðð¿ââïž man running: black skin +ðð¿ââïžââ¡ïž man running facing right: black skin +ðââïž woman surfing +ðââïž man surfing +ðð»ââïž woman surfing: white skin +ðð»ââïž man surfing: white skin +ððŒââïž woman surfing: tan skin +ððŒââïž man surfing: tan skin +ððœââïž woman surfing: olive skin +ððœââïž man surfing: olive skin +ððŸââïž woman surfing: brown skin +ððŸââïž man surfing: brown skin +ðð¿ââïž woman surfing: black skin +ðð¿ââïž man surfing: black skin +ðââïž woman swimming +ðââïž man swimming +ðð»ââïž woman swimming: white skin +ðð»ââïž man swimming: white skin +ððŒââïž woman swimming: tan skin +ððŒââïž man swimming: tan skin +ððœââïž woman swimming: olive skin +ððœââïž man swimming: olive skin +ððŸââïž woman swimming: brown skin +ððŸââïž man swimming: brown skin +ðð¿ââïž woman swimming: black skin +ðð¿ââïž man swimming: black skin +ðð»ââïž woman lifting weights: white skin +ðð»ââïž man lifting weights: white skin +ððŒââïž woman lifting weights: tan skin +ððŒââïž man lifting weights: tan skin +ððœââïž woman lifting weights: olive skin +ððœââïž man lifting weights: olive skin +ððŸââïž woman lifting weights: brown skin +ððŸââïž man lifting weights: brown skin +ðð¿ââïž woman lifting weights: black skin +ðð¿ââïž man lifting weights: black skin +ðïžââïž woman lifting weights +ðïžââïž man lifting weights +ðð»ââïž woman golfing: white skin +ðð»ââïž man golfing: white skin +ððŒââïž woman golfing: tan skin +ððŒââïž man golfing: tan skin +ððœââïž woman golfing: olive skin +ððœââïž man golfing: olive skin +ððŸââïž woman golfing: brown skin +ððŸââïž man golfing: brown skin +ðð¿ââïž woman golfing: black skin +ðð¿ââïž man golfing: black skin +ðïžââïž woman golfing +ðïžââïž man golfing +ð®ââïž woman police officer +ð®ââïž man police officer +ð®ð»ââïž woman police officer: white skin +ð®ð»ââïž man police officer: white skin +ð®ðŒââïž woman police officer: tan skin +ð®ðŒââïž man police officer: tan skin +ð®ðœââïž woman police officer: olive skin +ð®ðœââïž man police officer: olive skin +ð®ðŸââïž woman police officer: brown skin +ð®ðŸââïž man police officer: brown skin +ð®ð¿ââïž woman police officer: black skin +ð®ð¿ââïž man police officer: black skin +ð¯ââïž women with bunny ears +ð¯ââïž men with bunny ears +ð°ââïž woman with veil +ð°ââïž man with veil +ð°ð»ââïž woman with veil: white skin +ð°ð»ââïž man with veil: white skin +ð°ðŒââïž woman with veil: tan skin +ð°ðŒââïž man with veil: tan skin +ð°ðœââïž woman with veil: olive skin +ð°ðœââïž man with veil: olive skin +ð°ðŸââïž woman with veil: brown skin +ð°ðŸââïž man with veil: brown skin +ð°ð¿ââïž woman with veil: black skin +ð°ð¿ââïž man with veil: black skin +ð±ââïž woman: blond hair +ð±ââïž man: blond hair +ð±ð»ââïž woman: white skin, blond hair +ð±ð»ââïž man: white skin, blond hair +ð±ðŒââïž woman: tan skin, blond hair +ð±ðŒââïž man: tan skin, blond hair +ð±ðœââïž woman: olive skin, blond hair +ð±ðœââïž man: olive skin, blond hair +ð±ðŸââïž woman: brown skin, blond hair +ð±ðŸââïž man: brown skin, blond hair +ð±ð¿ââïž woman: black skin, blond hair +ð±ð¿ââïž man: black skin, blond hair +ð³ââïž woman wearing turban +ð³ââïž man wearing turban +ð³ð»ââïž woman wearing turban: white skin +ð³ð»ââïž man wearing turban: white skin +ð³ðŒââïž woman wearing turban: tan skin +ð³ðŒââïž man wearing turban: tan skin +ð³ðœââïž woman wearing turban: olive skin +ð³ðœââïž man wearing turban: olive skin +ð³ðŸââïž woman wearing turban: brown skin +ð³ðŸââïž man wearing turban: brown skin +ð³ð¿ââïž woman wearing turban: black skin +ð³ð¿ââïž man wearing turban: black skin +ð·ââïž woman construction worker +ð·ââïž man construction worker +ð·ð»ââïž woman construction worker: white skin +ð·ð»ââïž man construction worker: white skin +ð·ðŒââïž woman construction worker: tan skin +ð·ðŒââïž man construction worker: tan skin +ð·ðœââïž woman construction worker: olive skin +ð·ðœââïž man construction worker: olive skin +ð·ðŸââïž woman construction worker: brown skin +ð·ðŸââïž man construction worker: brown skin +ð·ð¿ââïž woman construction worker: black skin +ð·ð¿ââïž man construction worker: black skin +ðââïž woman tipping hand +ðââïž man tipping hand +ðð»ââïž woman tipping hand: white skin +ðð»ââïž man tipping hand: white skin +ððŒââïž woman tipping hand: tan skin +ððŒââïž man tipping hand: tan skin +ððœââïž woman tipping hand: olive skin +ððœââïž man tipping hand: olive skin +ððŸââïž woman tipping hand: brown skin +ððŸââïž man tipping hand: brown skin +ðð¿ââïž woman tipping hand: black skin +ðð¿ââïž man tipping hand: black skin +ðââïž woman guard +ðââïž man guard +ðð»ââïž woman guard: white skin +ðð»ââïž man guard: white skin +ððŒââïž woman guard: tan skin +ððŒââïž man guard: tan skin +ððœââïž woman guard: olive skin +ððœââïž man guard: olive skin +ððŸââïž woman guard: brown skin +ððŸââïž man guard: brown skin +ðð¿ââïž woman guard: black skin +ðð¿ââïž man guard: black skin +ðââïž woman getting massage +ðââïž man getting massage +ðð»ââïž woman getting massage: white skin +ðð»ââïž man getting massage: white skin +ððŒââïž woman getting massage: tan skin +ððŒââïž man getting massage: tan skin +ððœââïž woman getting massage: olive skin +ððœââïž man getting massage: olive skin +ððŸââïž woman getting massage: brown skin +ððŸââïž man getting massage: brown skin +ðð¿ââïž woman getting massage: black skin +ðð¿ââïž man getting massage: black skin +ðââïž woman getting haircut +ðââïž man getting haircut +ðð»ââïž woman getting haircut: white skin +ðð»ââïž man getting haircut: white skin +ððŒââïž woman getting haircut: tan skin +ððŒââïž man getting haircut: tan skin +ððœââïž woman getting haircut: olive skin +ððœââïž man getting haircut: olive skin +ððŸââïž woman getting haircut: brown skin +ððŸââïž man getting haircut: brown skin +ðð¿ââïž woman getting haircut: black skin +ðð¿ââïž man getting haircut: black skin +ðµð»ââïž woman detective: white skin +ðµð»ââïž man detective: white skin +ðµðŒââïž woman detective: tan skin +ðµðŒââïž man detective: tan skin +ðµðœââïž woman detective: olive skin +ðµðœââïž man detective: olive skin +ðµðŸââïž woman detective: brown skin +ðµðŸââïž man detective: brown skin +ðµð¿ââïž woman detective: black skin +ðµð¿ââïž man detective: black skin +ðµïžââïž woman detective +ðµïžââïž man detective +ð
ââïž woman gesturing NO +ð
ââïž man gesturing NO +ð
ð»ââïž woman gesturing NO: white skin +ð
ð»ââïž man gesturing NO: white skin +ð
ðŒââïž woman gesturing NO: tan skin +ð
ðŒââïž man gesturing NO: tan skin +ð
ðœââïž woman gesturing NO: olive skin +ð
ðœââïž man gesturing NO: olive skin +ð
ðŸââïž woman gesturing NO: brown skin +ð
ðŸââïž man gesturing NO: brown skin +ð
ð¿ââïž woman gesturing NO: black skin +ð
ð¿ââïž man gesturing NO: black skin +ðââïž woman gesturing OK +ðââïž man gesturing OK +ðð»ââïž woman gesturing OK: white skin +ðð»ââïž man gesturing OK: white skin +ððŒââïž woman gesturing OK: tan skin +ððŒââïž man gesturing OK: tan skin +ððœââïž woman gesturing OK: olive skin +ððœââïž man gesturing OK: olive skin +ððŸââïž woman gesturing OK: brown skin +ððŸââïž man gesturing OK: brown skin +ðð¿ââïž woman gesturing OK: black skin +ðð¿ââïž man gesturing OK: black skin +ðââïž woman bowing +ðââïž man bowing +ðð»ââïž woman bowing: white skin +ðð»ââïž man bowing: white skin +ððŒââïž woman bowing: tan skin +ððŒââïž man bowing: tan skin +ððœââïž woman bowing: olive skin +ððœââïž man bowing: olive skin +ððŸââïž woman bowing: brown skin +ððŸââïž man bowing: brown skin +ðð¿ââïž woman bowing: black skin +ðð¿ââïž man bowing: black skin +ðââïž woman raising hand +ðââïž man raising hand +ðð»ââïž woman raising hand: white skin +ðð»ââïž man raising hand: white skin +ððŒââïž woman raising hand: tan skin +ððŒââïž man raising hand: tan skin +ððœââïž woman raising hand: olive skin +ððœââïž man raising hand: olive skin +ððŸââïž woman raising hand: brown skin +ððŸââïž man raising hand: brown skin +ðð¿ââïž woman raising hand: black skin +ðð¿ââïž man raising hand: black skin +ðââïž woman frowning +ðââïž man frowning +ðð»ââïž woman frowning: white skin +ðð»ââïž man frowning: white skin +ððŒââïž woman frowning: tan skin +ððŒââïž man frowning: tan skin +ððœââïž woman frowning: olive skin +ððœââïž man frowning: olive skin +ððŸââïž woman frowning: brown skin +ððŸââïž man frowning: brown skin +ðð¿ââïž woman frowning: black skin +ðð¿ââïž man frowning: black skin +ðââïž woman pouting +ðââïž man pouting +ðð»ââïž woman pouting: white skin +ðð»ââïž man pouting: white skin +ððŒââïž woman pouting: tan skin +ððŒââïž man pouting: tan skin +ððœââïž woman pouting: olive skin +ððœââïž man pouting: olive skin +ððŸââïž woman pouting: brown skin +ððŸââïž man pouting: brown skin +ðð¿ââïž woman pouting: black skin +ðð¿ââïž man pouting: black skin +ð£ââïž woman rowing boat +ð£ââïž man rowing boat +ð£ð»ââïž woman rowing boat: white skin +ð£ð»ââïž man rowing boat: white skin +ð£ðŒââïž woman rowing boat: tan skin +ð£ðŒââïž man rowing boat: tan skin +ð£ðœââïž woman rowing boat: olive skin +ð£ðœââïž man rowing boat: olive skin +ð£ðŸââïž woman rowing boat: brown skin +ð£ðŸââïž man rowing boat: brown skin +ð£ð¿ââïž woman rowing boat: black skin +ð£ð¿ââïž man rowing boat: black skin +ðŽââïž woman biking +ðŽââïž man biking +ðŽð»ââïž woman biking: white skin +ðŽð»ââïž man biking: white skin +ðŽðŒââïž woman biking: tan skin +ðŽðŒââïž man biking: tan skin +ðŽðœââïž woman biking: olive skin +ðŽðœââïž man biking: olive skin +ðŽðŸââïž woman biking: brown skin +ðŽðŸââïž man biking: brown skin +ðŽð¿ââïž woman biking: black skin +ðŽð¿ââïž man biking: black skin +ðµââïž woman mountain biking +ðµââïž man mountain biking +ðµð»ââïž woman mountain biking: white skin +ðµð»ââïž man mountain biking: white skin +ðµðŒââïž woman mountain biking: tan skin +ðµðŒââïž man mountain biking: tan skin +ðµðœââïž woman mountain biking: olive skin +ðµðœââïž man mountain biking: olive skin +ðµðŸââïž woman mountain biking: brown skin +ðµðŸââïž man mountain biking: brown skin +ðµð¿ââïž woman mountain biking: black skin +ðµð¿ââïž man mountain biking: black skin +ð¶ââïž woman walking +ð¶ââïžââ¡ïž woman walking facing right +ð¶ââïž man walking +ð¶ââïžââ¡ïž man walking facing right +ð¶ð»ââïž woman walking: white skin +ð¶ð»ââïžââ¡ïž woman walking facing right: white skin +ð¶ð»ââïž man walking: white skin +ð¶ð»ââïžââ¡ïž man walking facing right: white skin +ð¶ðŒââïž woman walking: tan skin +ð¶ðŒââïžââ¡ïž woman walking facing right: tan skin +ð¶ðŒââïž man walking: tan skin +ð¶ðŒââïžââ¡ïž man walking facing right: tan skin +ð¶ðœââïž woman walking: olive skin +ð¶ðœââïžââ¡ïž woman walking facing right: olive skin +ð¶ðœââïž man walking: olive skin +ð¶ðœââïžââ¡ïž man walking facing right: olive skin +ð¶ðŸââïž woman walking: brown skin +ð¶ðŸââïžââ¡ïž woman walking facing right: brown skin +ð¶ðŸââïž man walking: brown skin +ð¶ðŸââïžââ¡ïž man walking facing right: brown skin +ð¶ð¿ââïž woman walking: black skin +ð¶ð¿ââïžââ¡ïž woman walking facing right: black skin +ð¶ð¿ââïž man walking: black skin +ð¶ð¿ââïžââ¡ïž man walking facing right: black skin +ð€Šââïž woman facepalming +ð€Šââïž man facepalming +ð€Šð»ââïž woman facepalming: white skin +ð€Šð»ââïž man facepalming: white skin +ð€ŠðŒââïž woman facepalming: tan skin +ð€ŠðŒââïž man facepalming: tan skin +ð€Šðœââïž woman facepalming: olive skin +ð€Šðœââïž man facepalming: olive skin +ð€ŠðŸââïž woman facepalming: brown skin +ð€ŠðŸââïž man facepalming: brown skin +ð€Šð¿ââïž woman facepalming: black skin +ð€Šð¿ââïž man facepalming: black skin +ð€µââïž woman in tuxedo +ð€µââïž man in tuxedo +ð€µð»ââïž woman in tuxedo: white skin +ð€µð»ââïž man in tuxedo: white skin +ð€µðŒââïž woman in tuxedo: tan skin +ð€µðŒââïž man in tuxedo: tan skin +ð€µðœââïž woman in tuxedo: olive skin +ð€µðœââïž man in tuxedo: olive skin +ð€µðŸââïž woman in tuxedo: brown skin +ð€µðŸââïž man in tuxedo: brown skin +ð€µð¿ââïž woman in tuxedo: black skin +ð€µð¿ââïž man in tuxedo: black skin +ð€·ââïž woman shrugging +ð€·ââïž man shrugging +ð€·ð»ââïž woman shrugging: white skin +ð€·ð»ââïž man shrugging: white skin +ð€·ðŒââïž woman shrugging: tan skin +ð€·ðŒââïž man shrugging: tan skin +ð€·ðœââïž woman shrugging: olive skin +ð€·ðœââïž man shrugging: olive skin +ð€·ðŸââïž woman shrugging: brown skin +ð€·ðŸââïž man shrugging: brown skin +ð€·ð¿ââïž woman shrugging: black skin +ð€·ð¿ââïž man shrugging: black skin +ð€žââïž woman cartwheeling +ð€žââïž man cartwheeling +ð€žð»ââïž woman cartwheeling: white skin +ð€žð»ââïž man cartwheeling: white skin +ð€žðŒââïž woman cartwheeling: tan skin +ð€žðŒââïž man cartwheeling: tan skin +ð€žðœââïž woman cartwheeling: olive skin +ð€žðœââïž man cartwheeling: olive skin +ð€žðŸââïž woman cartwheeling: brown skin +ð€žðŸââïž man cartwheeling: brown skin +ð€žð¿ââïž woman cartwheeling: black skin +ð€žð¿ââïž man cartwheeling: black skin +ð€¹ââïž woman juggling +ð€¹ââïž man juggling +ð€¹ð»ââïž woman juggling: white skin +ð€¹ð»ââïž man juggling: white skin +ð€¹ðŒââïž woman juggling: tan skin +ð€¹ðŒââïž man juggling: tan skin +ð€¹ðœââïž woman juggling: olive skin +ð€¹ðœââïž man juggling: olive skin +ð€¹ðŸââïž woman juggling: brown skin +ð€¹ðŸââïž man juggling: brown skin +ð€¹ð¿ââïž woman juggling: black skin +ð€¹ð¿ââïž man juggling: black skin +ð€Œââïž women wrestling +ð€Œââïž men wrestling +ð€œââïž woman playing water polo +ð€œââïž man playing water polo +ð€œð»ââïž woman playing water polo: white skin +ð€œð»ââïž man playing water polo: white skin +ð€œðŒââïž woman playing water polo: tan skin +ð€œðŒââïž man playing water polo: tan skin +ð€œðœââïž woman playing water polo: olive skin +ð€œðœââïž man playing water polo: olive skin +ð€œðŸââïž woman playing water polo: brown skin +ð€œðŸââïž man playing water polo: brown skin +ð€œð¿ââïž woman playing water polo: black skin +ð€œð¿ââïž man playing water polo: black skin +ð€Ÿââïž woman playing handball +ð€Ÿââïž man playing handball +ð€Ÿð»ââïž woman playing handball: white skin +ð€Ÿð»ââïž man playing handball: white skin +ð€ŸðŒââïž woman playing handball: tan skin +ð€ŸðŒââïž man playing handball: tan skin +ð€Ÿðœââïž woman playing handball: olive skin +ð€Ÿðœââïž man playing handball: olive skin +ð€ŸðŸââïž woman playing handball: brown skin +ð€ŸðŸââïž man playing handball: brown skin +ð€Ÿð¿ââïž woman playing handball: black skin +ð€Ÿð¿ââïž man playing handball: black skin +ðŠžââïž woman superhero +ðŠžââïž man superhero +ðŠžð»ââïž woman superhero: white skin +ðŠžð»ââïž man superhero: white skin +ðŠžðŒââïž woman superhero: tan skin +ðŠžðŒââïž man superhero: tan skin +ðŠžðœââïž woman superhero: olive skin +ðŠžðœââïž man superhero: olive skin +ðŠžðŸââïž woman superhero: brown skin +ðŠžðŸââïž man superhero: brown skin +ðŠžð¿ââïž woman superhero: black skin +ðŠžð¿ââïž man superhero: black skin +ðйââïž woman supervillain +ðйââïž man supervillain +ðйð»ââïž woman supervillain: white skin +ðйð»ââïž man supervillain: white skin +ðйðŒââïž woman supervillain: tan skin +ðйðŒââïž man supervillain: tan skin +ðйðœââïž woman supervillain: olive skin +ðйðœââïž man supervillain: olive skin +ðйðŸââïž woman supervillain: brown skin +ðйðŸââïž man supervillain: brown skin +ðйð¿ââïž woman supervillain: black skin +ðйð¿ââïž man supervillain: black skin +ð§ââïž woman standing +ð§ââïž man standing +ð§ð»ââïž woman standing: white skin +ð§ð»ââïž man standing: white skin +ð§ðŒââïž woman standing: tan skin +ð§ðŒââïž man standing: tan skin +ð§ðœââïž woman standing: olive skin +ð§ðœââïž man standing: olive skin +ð§ðŸââïž woman standing: brown skin +ð§ðŸââïž man standing: brown skin +ð§ð¿ââïž woman standing: black skin +ð§ð¿ââïž man standing: black skin +ð§ââïž woman kneeling +ð§ââïžââ¡ïž woman kneeling facing right +ð§ââïž man kneeling +ð§ââïžââ¡ïž man kneeling facing right +ð§ð»ââïž woman kneeling: white skin +ð§ð»ââïžââ¡ïž woman kneeling facing right: white skin +ð§ð»ââïž man kneeling: white skin +ð§ð»ââïžââ¡ïž man kneeling facing right: white skin +ð§ðŒââïž woman kneeling: tan skin +ð§ðŒââïžââ¡ïž woman kneeling facing right: tan skin +ð§ðŒââïž man kneeling: tan skin +ð§ðŒââïžââ¡ïž man kneeling facing right: tan skin +ð§ðœââïž woman kneeling: olive skin +ð§ðœââïžââ¡ïž woman kneeling facing right: olive skin +ð§ðœââïž man kneeling: olive skin +ð§ðœââïžââ¡ïž man kneeling facing right: olive skin +ð§ðŸââïž woman kneeling: brown skin +ð§ðŸââïžââ¡ïž woman kneeling facing right: brown skin +ð§ðŸââïž man kneeling: brown skin +ð§ðŸââïžââ¡ïž man kneeling facing right: brown skin +ð§ð¿ââïž woman kneeling: black skin +ð§ð¿ââïžââ¡ïž woman kneeling facing right: black skin +ð§ð¿ââïž man kneeling: black skin +ð§ð¿ââïžââ¡ïž man kneeling facing right: black skin +ð§ââïž deaf woman +ð§ââïž deaf man +ð§ð»ââïž deaf woman: white skin +ð§ð»ââïž deaf man: white skin +ð§ðŒââïž deaf woman: tan skin +ð§ðŒââïž deaf man: tan skin +ð§ðœââïž deaf woman: olive skin +ð§ðœââïž deaf man: olive skin +ð§ðŸââïž deaf woman: brown skin +ð§ðŸââïž deaf man: brown skin +ð§ð¿ââïž deaf woman: black skin +ð§ð¿ââïž deaf man: black skin +ð§ââïž man: beard +ð§ð»ââïž man: white skin, beard +ð§ðŒââïž man: tan skin, beard +ð§ðœââïž man: olive skin, beard +ð§ðŸââïž man: brown skin, beard +ð§ð¿ââïž man: black skin, beard +ð§ââïž woman in steamy room +ð§ââïž man in steamy room +ð§ð»ââïž woman in steamy room: white skin +ð§ð»ââïž man in steamy room: white skin +ð§ðŒââïž woman in steamy room: tan skin +ð§ðŒââïž man in steamy room: tan skin +ð§ðœââïž woman in steamy room: olive skin +ð§ðœââïž man in steamy room: olive skin +ð§ðŸââïž woman in steamy room: brown skin +ð§ðŸââïž man in steamy room: brown skin +ð§ð¿ââïž woman in steamy room: black skin +ð§ð¿ââïž man in steamy room: black skin +ð§ââïž woman climbing +ð§ââïž man climbing +ð§ð»ââïž woman climbing: white skin +ð§ð»ââïž man climbing: white skin +ð§ðŒââïž woman climbing: tan skin +ð§ðŒââïž man climbing: tan skin +ð§ðœââïž woman climbing: olive skin +ð§ðœââïž man climbing: olive skin +ð§ðŸââïž woman climbing: brown skin +ð§ðŸââïž man climbing: brown skin +ð§ð¿ââïž woman climbing: black skin +ð§ð¿ââïž man climbing: black skin +ð§ââïž woman in lotus position +ð§ââïž man in lotus position +ð§ð»ââïž woman in lotus position: white skin +ð§ð»ââïž man in lotus position: white skin +ð§ðŒââïž woman in lotus position: tan skin +ð§ðŒââïž man in lotus position: tan skin +ð§ðœââïž woman in lotus position: olive skin +ð§ðœââïž man in lotus position: olive skin +ð§ðŸââïž woman in lotus position: brown skin +ð§ðŸââïž man in lotus position: brown skin +ð§ð¿ââïž woman in lotus position: black skin +ð§ð¿ââïž man in lotus position: black skin +ð§ââïž woman mage +ð§ââïž man mage +ð§ð»ââïž woman mage: white skin +ð§ð»ââïž man mage: white skin +ð§ðŒââïž woman mage: tan skin +ð§ðŒââïž man mage: tan skin +ð§ðœââïž woman mage: olive skin +ð§ðœââïž man mage: olive skin +ð§ðŸââïž woman mage: brown skin +ð§ðŸââïž man mage: brown skin +ð§ð¿ââïž woman mage: black skin +ð§ð¿ââïž man mage: black skin +ð§ââïž woman fairy +ð§ââïž man fairy +ð§ð»ââïž woman fairy: white skin +ð§ð»ââïž man fairy: white skin +ð§ðŒââïž woman fairy: tan skin +ð§ðŒââïž man fairy: tan skin +ð§ðœââïž woman fairy: olive skin +ð§ðœââïž man fairy: olive skin +ð§ðŸââïž woman fairy: brown skin +ð§ðŸââïž man fairy: brown skin +ð§ð¿ââïž woman fairy: black skin +ð§ð¿ââïž man fairy: black skin +ð§ââïž woman vampire +ð§ââïž man vampire +ð§ð»ââïž woman vampire: white skin +ð§ð»ââïž man vampire: white skin +ð§ðŒââïž woman vampire: tan skin +ð§ðŒââïž man vampire: tan skin +ð§ðœââïž woman vampire: olive skin +ð§ðœââïž man vampire: olive skin +ð§ðŸââïž woman vampire: brown skin +ð§ðŸââïž man vampire: brown skin +ð§ð¿ââïž woman vampire: black skin +ð§ð¿ââïž man vampire: black skin +ð§ââïž mermaid +ð§ââïž merman +ð§ð»ââïž mermaid: white skin +ð§ð»ââïž merman: white skin +ð§ðŒââïž mermaid: tan skin +ð§ðŒââïž merman: tan skin +ð§ðœââïž mermaid: olive skin +ð§ðœââïž merman: olive skin +ð§ðŸââïž mermaid: brown skin +ð§ðŸââïž merman: brown skin +ð§ð¿ââïž mermaid: black skin +ð§ð¿ââïž merman: black skin +ð§ââïž woman elf +ð§ââïž man elf +ð§ð»ââïž woman elf: white skin +ð§ð»ââïž man elf: white skin +ð§ðŒââïž woman elf: tan skin +ð§ðŒââïž man elf: tan skin +ð§ðœââïž woman elf: olive skin +ð§ðœââïž man elf: olive skin +ð§ðŸââïž woman elf: brown skin +ð§ðŸââïž man elf: brown skin +ð§ð¿ââïž woman elf: black skin +ð§ð¿ââïž man elf: black skin +ð§ââïž woman genie +ð§ââïž man genie +ð§ââïž woman zombie +ð§ââïž man zombie +ðšâðŠ° man: red hair +ðšâðŠ± man: curly hair +ðšâðŠ² man: bald +ðšâðŠ³ man: white hair +ðšð»âðŠ° man: white skin, red hair +ðšð»âðŠ± man: white skin, curly hair +ðšð»âðŠ² man: white skin, bald +ðšð»âðŠ³ man: white skin, white hair +ðšðŒâðŠ° man: tan skin, red hair +ðšðŒâðŠ± man: tan skin, curly hair +ðšðŒâðŠ² man: tan skin, bald +ðšðŒâðŠ³ man: tan skin, white hair +ðšðœâðŠ° man: olive skin, red hair +ðšðœâðŠ± man: olive skin, curly hair +ðšðœâðŠ² man: olive skin, bald +ðšðœâðŠ³ man: olive skin, white hair +ðšðŸâðŠ° man: brown skin, red hair +ðšðŸâðŠ± man: brown skin, curly hair +ðšðŸâðŠ² man: brown skin, bald +ðšðŸâðŠ³ man: brown skin, white hair +ðšð¿âðŠ° man: black skin, red hair +ðšð¿âðŠ± man: black skin, curly hair +ðšð¿âðŠ² man: black skin, bald +ðšð¿âðŠ³ man: black skin, white hair +ð©âðŠ° woman: red hair +ð©âðŠ± woman: curly hair +ð©âðŠ² woman: bald +ð©âðŠ³ woman: white hair +ð©ð»âðŠ° woman: white skin, red hair +ð©ð»âðŠ± woman: white skin, curly hair +ð©ð»âðŠ² woman: white skin, bald +ð©ð»âðŠ³ woman: white skin, white hair +ð©ðŒâðŠ° woman: tan skin, red hair +ð©ðŒâðŠ± woman: tan skin, curly hair +ð©ðŒâðŠ² woman: tan skin, bald +ð©ðŒâðŠ³ woman: tan skin, white hair +ð©ðœâðŠ° woman: olive skin, red hair +ð©ðœâðŠ± woman: olive skin, curly hair +ð©ðœâðŠ² woman: olive skin, bald +ð©ðœâðŠ³ woman: olive skin, white hair +ð©ðŸâðŠ° woman: brown skin, red hair +ð©ðŸâðŠ± woman: brown skin, curly hair +ð©ðŸâðŠ² woman: brown skin, bald +ð©ðŸâðŠ³ woman: brown skin, white hair +ð©ð¿âðŠ° woman: black skin, red hair +ð©ð¿âðŠ± woman: black skin, curly hair +ð©ð¿âðŠ² woman: black skin, bald +ð©ð¿âðŠ³ woman: black skin, white hair +ð§âðŠ° person: red hair +ð§âðŠ± person: curly hair +ð§âðŠ² person: bald +ð§âðŠ³ person: white hair +ð§ð»âðŠ° person: white skin, red hair +ð§ð»âðŠ± person: white skin, curly hair +ð§ð»âðŠ² person: white skin, bald +ð§ð»âðŠ³ person: white skin, white hair +ð§ðŒâðŠ° person: tan skin, red hair +ð§ðŒâðŠ± person: tan skin, curly hair +ð§ðŒâðŠ² person: tan skin, bald +ð§ðŒâðŠ³ person: tan skin, white hair +ð§ðœâðŠ° person: olive skin, red hair +ð§ðœâðŠ± person: olive skin, curly hair +ð§ðœâðŠ² person: olive skin, bald +ð§ðœâðŠ³ person: olive skin, white hair +ð§ðŸâðŠ° person: brown skin, red hair +ð§ðŸâðŠ± person: brown skin, curly hair +ð§ðŸâðŠ² person: brown skin, bald +ð§ðŸâðŠ³ person: brown skin, white hair +ð§ð¿âðŠ° person: black skin, red hair +ð§ð¿âðŠ± person: black skin, curly hair +ð§ð¿âðŠ² person: black skin, bald +ð§ð¿âðŠ³ person: black skin, white hair +âïžâð¥ broken chain +â€ïžâð¥ heart on fire +â€ïžâ𩹠mending heart +ðâð« brown mushroom +ðâð© lime +ðŽââ ïž pirate flag +ðâ⬠black cat +ðâðŠº service dog +ðŠâ⬠black bird +ðŠâð¥ phoenix +ð»ââïž polar bear +ðïžâðšïž eye in speech bubble +ð®âðš face exhaling +ðµâð« face with spiral eyes +ð¶âð«ïž face in clouds +ðââïž head shaking horizontally +ðââïž head shaking vertically ಠ_ಠnot amused face ( ͡° ÍÊ Í¡Â°) lenny face (â_Êâ) wide eyes face diff --git a/dotfiles/.profile b/dotfiles/.profile index 12dfd13..2a7e186 100644 --- a/dotfiles/.profile +++ b/dotfiles/.profile @@ -1,13 +1,11 @@ -export PATH=$PATH:$HOME/.local/bin +export PATH=$PATH:$HOME/.local/bin:$HOME/docs/scripts # Wayland-specific -#export GDK_BACKEND=wayland +export GDK_BACKEND=wayland export EGL_PLATFORM=wayland export CLUTTER_PLATFORM=wayland export SDL_VIDEODRIVER=wayland -export QT_QPA_PLATFORM=wayland-egl export QT_WAYLAND_DISABLE_WINDOWDECORATION=0 -export QT_QPA_PLATFORMTHEME="qt5ct" export _JAVA_AWT_WM_NONREPARENTING=1 export MOZ_ENABLE_WAYLAND=1 # Fixes Qt's webview scaling @@ -46,6 +44,7 @@ export GTK2_RC_FILES="$XDG_CONFIG_HOME/gtk-2.0/gtkrc-2.0" export GOPATH="$XDG_DATA_HOME/go" export PATH=$PATH:$GOPATH/bin export NOTMUCH_CONFIG="$XDG_CONFIG_HOME/notmuchrc" +export TEXMFHOME="$XDG_DATA_HOME/texmf" eval "$(dircolors "$HOME/.config/dir_colors")" . "$HOME/.config/lf/icons" |
