diff options
Diffstat (limited to 'dotfiles')
60 files changed, 3998 insertions, 406 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..d73a99d --- /dev/null +++ b/dotfiles/.config/DankMaterialShell/plugin_settings.json @@ -0,0 +1,14 @@ +{ + "powerUsagePlugin": { + "enabled": true, + "refreshInterval": 2, + "selectedPopout": "processList" + }, + "emojiLauncher": { + "enabled": true + }, + "calculator": { + "enabled": true, + "trigger": "=" + } +}
\ 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..f485de6 --- /dev/null +++ b/dotfiles/.config/DankMaterialShell/settings.json @@ -0,0 +1,657 @@ +{ + "currentThemeName": "dynamic", + "currentThemeCategory": "dynamic", + "customThemeFile": "/home/yaroslav/.config/DankMaterialShell/themes/steamDeck/theme.json", + "registryThemeVariants": { + "modus": { + "dark": { + "flavor": "vivendi", + "accent": "blue" + } + }, + "amoledBlack": { + "dark": { + "flavor": "black", + "accent": "white" + } + } + }, + "matugenScheme": "scheme-rainbow", + "runUserMatugenTemplates": true, + "matugenTargetMonitor": "", + "popupTransparency": 0.7, + "dockTransparency": 1, + "widgetBackgroundColor": "sth", + "widgetColorMode": "default", + "controlCenterTileColorMode": "primary", + "buttonColorMode": "primary", + "cornerRadius": 6, + "niriLayoutGapsOverride": 6, + "niriLayoutRadiusOverride": 1, + "niriLayoutBorderSize": 3, + "hyprlandLayoutGapsOverride": -1, + "hyprlandLayoutRadiusOverride": -1, + "hyprlandLayoutBorderSize": -1, + "mangoLayoutGapsOverride": -1, + "mangoLayoutRadiusOverride": -1, + "mangoLayoutBorderSize": -1, + "use24HourClock": true, + "showSeconds": true, + "padHours12Hour": false, + "useFahrenheit": false, + "windSpeedUnit": "kmh", + "nightModeEnabled": false, + "animationSpeed": 4, + "customAnimationDuration": 111, + "syncComponentAnimationSpeeds": true, + "popoutAnimationSpeed": 1, + "popoutCustomAnimationDuration": 150, + "modalAnimationSpeed": 1, + "modalCustomAnimationDuration": 150, + "enableRippleEffects": true, + "blurEnabled": true, + "blurForegroundLayers": true, + "blurLayerOutlineOpacity": 0.4, + "blurBorderColor": "outline", + "blurBorderCustomColor": "#ffffff", + "blurBorderOpacity": 0.35, + "wallpaperFillMode": "Fill", + "blurredWallpaperLayer": true, + "blurWallpaperOnOverview": false, + "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, + "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, + "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, + "workspaceFollowFocus": false, + "showOccupiedWorkspacesOnly": false, + "reverseScrolling": false, + "dwlShowAllTags": false, + "workspaceColorMode": "default", + "workspaceOccupiedColorMode": "none", + "workspaceUnfocusedColorMode": "default", + "workspaceUrgentColorMode": "default", + "workspaceFocusedBorderEnabled": false, + "workspaceFocusedBorderColor": "primary", + "workspaceFocusedBorderThickness": 2, + "workspaceNameIcons": {}, + "waveProgressEnabled": false, + "scrollTitleEnabled": true, + "audioVisualizerEnabled": true, + "audioScrollMode": "volume", + "audioWheelScrollAmount": 2, + "clockCompactMode": false, + "focusedWindowCompactMode": false, + "runningAppsCompactMode": true, + "barMaxVisibleApps": 0, + "barMaxVisibleRunningApps": 0, + "barShowOverflowBadge": true, + "appsDockHideIndicators": false, + "appsDockColorizeActive": false, + "appsDockActiveColorMode": "primary", + "appsDockEnlargeOnHover": false, + "appsDockEnlargePercentage": 125, + "appsDockIconSizePercentage": 100, + "keyboardLayoutNameCompactMode": false, + "runningAppsCurrentWorkspace": true, + "runningAppsGroupByApp": false, + "runningAppsCurrentMonitor": false, + "appIdSubstitutions": [], + "centeringMode": "index", + "clockDateFormat": "yyyy年MM月dd日", + "lockDateFormat": "ddd d MMM yyyy", + "greeterRememberLastSession": true, + "greeterRememberLastUser": true, + "greeterEnableFprint": false, + "greeterEnableU2f": false, + "greeterWallpaperPath": "", + "mediaSize": 1, + "appLauncherViewMode": "list", + "spotlightModalViewMode": "list", + "browserPickerViewMode": "grid", + "browserUsageHistory": {}, + "appPickerViewMode": "grid", + "filePickerUsageHistory": {}, + "sortAppsAlphabetically": false, + "appLauncherGridColumns": 4, + "spotlightCloseNiriOverview": true, + "spotlightSectionViewModes": {}, + "appDrawerSectionViewModes": {}, + "niriOverviewOverlayEnabled": true, + "dankLauncherV2Size": "medium", + "dankLauncherV2BorderEnabled": true, + "dankLauncherV2BorderThickness": 2, + "dankLauncherV2BorderColor": "outline", + "dankLauncherV2ShowFooter": true, + "dankLauncherV2UnloadOnClose": true, + "useAutoLocation": false, + "weatherEnabled": true, + "networkPreference": "auto", + "iconTheme": "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, + "notepadUseMonospace": true, + "notepadFontFamily": "", + "notepadFontSize": 14, + "notepadShowLineNumbers": false, + "notepadTransparencyOverride": -1, + "notepadLastCustomTransparency": 0.7, + "soundsEnabled": true, + "useSystemSoundTheme": true, + "soundNewNotification": true, + "soundVolumeChanged": false, + "soundPluggedIn": true, + "acMonitorTimeout": 0, + "acLockTimeout": 0, + "acSuspendTimeout": 0, + "acSuspendBehavior": 0, + "acProfileName": "", + "batteryMonitorTimeout": 0, + "batteryLockTimeout": 0, + "batterySuspendTimeout": 0, + "batterySuspendBehavior": 0, + "batteryProfileName": "", + "batteryChargeLimit": 100, + "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, + "matugenTemplateEquibop": false, + "matugenTemplateGhostty": false, + "matugenTemplateKitty": true, + "matugenTemplateFoot": true, + "matugenTemplateAlacritty": true, + "matugenTemplateNeovim": false, + "matugenTemplateWezterm": false, + "matugenTemplateDgop": true, + "matugenTemplateKcolorscheme": true, + "matugenTemplateVscode": false, + "matugenTemplateEmacs": false, + "matugenTemplateZed": false, + "showDock": false, + "dockAutoHide": false, + "dockSmartAutoHide": false, + "dockGroupByApp": true, + "dockOpenOnOverview": true, + "dockPosition": 1, + "dockSpacing": 4, + "dockBottomGap": -8, + "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, + "notificationOverlayEnabled": false, + "notificationPopupShadowEnabled": true, + "notificationPopupPrivacyMode": false, + "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", + "lockScreenActiveMonitor": "all", + "lockScreenInactiveColor": "#000000", + "lockScreenNotificationMode": 2, + "hideBrightnessSlider": false, + "notificationTimeoutLow": 5000, + "notificationTimeoutNormal": 5000, + "notificationTimeoutCritical": 0, + "notificationCompactMode": false, + "notificationPopupPosition": 0, + "notificationAnimationSpeed": 1, + "notificationCustomAnimationDuration": 400, + "notificationHistoryEnabled": true, + "notificationHistoryMaxCount": 50, + "notificationHistoryMaxAgeDays": 7, + "notificationHistorySaveLow": true, + "notificationHistorySaveNormal": true, + "notificationHistorySaveCritical": true, + "notificationRules": [], + "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, + "updaterUseCustomCommand": false, + "updaterCustomCommand": "", + "updaterTerminalAdditionalParams": "", + "displayNameMode": "system", + "screenPreferences": {}, + "showOnLastDisplay": {}, + "niriOutputSettings": {}, + "hyprlandOutputSettings": {}, + "displayProfiles": {}, + "activeDisplayProfile": {}, + "displayProfileAutoSelect": false, + "displayShowDisconnected": false, + "displaySnapToEdge": true, + "barConfigs": [ + { + "id": "default", + "name": "Main Bar", + "enabled": true, + "position": 0, + "screenPreferences": [ + "all" + ], + "showOnLastDisplay": true, + "leftWidgets": [ + { + "id": "launcherButton", + "enabled": true + }, + { + "id": "clock", + "enabled": true + }, + { + "id": "weather", + "enabled": true + }, + { + "id": "workspaceSwitcher", + "enabled": true + }, + { + "id": "music", + "enabled": true, + "mediaSize": 2 + }, + { + "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": "keyboard_layout_name", + "enabled": true, + "keyboardLayoutNameCompactMode": true + }, + { + "id": "cpuUsage", + "enabled": true, + "minimumWidth": true + }, + { + "id": "cpuTemp", + "enabled": true, + "minimumWidth": true + }, + { + "id": "memUsage", + "enabled": true, + "minimumWidth": true, + "showSwap": false + }, + { + "id": "powerUsagePlugin", + "enabled": true + }, + { + "id": "battery", + "enabled": true + }, + { + "id": "notificationButton", + "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": 4, + "bottomGap": 0, + "transparency": 0.89, + "widgetTransparency": 1, + "squareCorners": true, + "noBackground": false, + "maximizeWidgetIcons": false, + "maximizeWidgetText": false, + "removeWidgetPadding": false, + "widgetPadding": 8, + "gothCornersEnabled": false, + "gothCornerRadiusOverride": false, + "gothCornerRadiusValue": 12, + "borderEnabled": true, + "borderColor": "secondary", + "borderOpacity": 1, + "borderThickness": 1, + "widgetOutlineEnabled": false, + "widgetOutlineColor": "primary", + "widgetOutlineOpacity": 1, + "widgetOutlineThickness": 1, + "fontScale": 1.1, + "iconScale": 1.1, + "autoHide": false, + "autoHideDelay": 250, + "showOnWindowsOpen": false, + "openOnOverview": true, + "visible": true, + "popupGapsAuto": true, + "popupGapsManual": 4, + "maximizeDetection": true, + "scrollEnabled": true, + "scrollXBehavior": "column", + "scrollYBehavior": "workspace", + "shadowIntensity": 0, + "shadowOpacity": 39, + "shadowColorMode": "text", + "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": "?" + } + }, + "clipboardEnterToPaste": false, + "launcherPluginVisibility": { + "calculator": { + "allowWithoutTrigger": true + } + }, + "launcherPluginOrder": [], + "configVersion": 5 +}
\ No newline at end of file diff --git a/dotfiles/.config/alacritty/alacritty.toml b/dotfiles/.config/alacritty/alacritty.toml index 93aaf56..a91ca9b 100644 --- a/dotfiles/.config/alacritty/alacritty.toml +++ b/dotfiles/.config/alacritty/alacritty.toml @@ -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/beets/config.yaml b/dotfiles/.config/beets/config.yaml index f6f2a28..b5eb190 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 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..c6f9ba6 100644 --- a/dotfiles/.config/mimeapps.list +++ b/dotfiles/.config/mimeapps.list @@ -1,6 +1,7 @@ [Default Applications] application/pdf=org.pwmt.zathura.desktop; application/epub+zip=org.pwmt.zathura.desktop; +application/x-fictionbook+xml=org.pwmt.zathura.desktop; application/rdf+xml=org.qutebrowser.qutebrowser.desktop; application/xhtml+xml=org.qutebrowser.qutebrowser.desktop; application/xml=org.qutebrowser.qutebrowser.desktop; 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 f3eb4db..cd1f636 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,50 +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 - //mode "2560x1440@165.000" +overview { + zoom 0.33 + backdrop-color "#00807F" } // Settings that influence how windows are positioned and sized. @@ -116,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 @@ -203,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 } @@ -250,24 +211,32 @@ layout { // off // hide-when-single-tab place-within-column - gap 3 - width 6 + gap 0 + width 10 length total-proportion=0.8 // position "bottom" - gaps-between-tabs 3 - // corner-radius 8 - active-color "#99d0b5" - // inactive-color "gray" - active-gradient from="#1f5c9a" to="#99d0b5" angle=180 - inactive-gradient from="#252832" to="#676775" angle=180 + 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. @@ -295,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 @@ -306,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 { @@ -324,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=r#"^[aA]+lacritty"# match app-id="Mattermost" + match app-id="org.telegram.desktop" + + default-column-width { fixed 770; } + + background-effect { + blur true + xray false + } +} + +window-rule { + match app-id="org.pwmt.zathura" - default-column-width { proportion 0.31; } + 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. @@ -361,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. @@ -415,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"; } @@ -516,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 @@ -598,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. @@ -610,12 +608,12 @@ 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; } @@ -626,34 +624,16 @@ binds { // rather than stacked on top of each other. Mod+W { toggle-column-tabbed-display; } - // 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"; } - 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+F12 { spawn "rofi" "-show" "tz" "-modi" "tz:rofitz"; } @@ -666,6 +646,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"; } @@ -676,6 +657,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 216120f..403da07 100644 --- a/dotfiles/.config/waybar/config +++ b/dotfiles/.config/waybar/config @@ -1,225 +1,28 @@ // vim: filetype=json -{ +[{ "layer": "top", - "height": 36, + "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", - "max-length": 80 - }, - "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 1871a66..7f8c7ba 100644 --- a/dotfiles/.config/waybar/style.css +++ b/dotfiles/.config/waybar/style.css @@ -3,65 +3,26 @@ 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/.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..7c644f6 100755 --- a/dotfiles/.local/bin/mailsync +++ b/dotfiles/.local/bin/mailsync @@ -39,7 +39,7 @@ do done if [ $thereis = 1 ]; then - mpv --really-quiet "$HOME/.local/share/soundalerts/mail.ogg" + mpv --keep-open=no --really-quiet "$HOME/.local/share/soundalerts/mail.ogg" killall -43 waybar fi 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/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/.profile b/dotfiles/.profile index 12dfd13..5d595ba 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 |
